본문 바로가기
개발/개발자 취업준비

[개발자 기술면접] 대용량 트래픽, ORM, JWT, OAuth, 클래스형과 함수형

by 코딩하는짱구 2023. 9. 14.
반응형

주니어 개발자에게 기대되는 것은 실력보다도 CS지식, 그리고 본인이 쓰는 언어에 대한 이해라고 한다. 취업을 준비하며 매일 매일 5개 이상의 기술면접 관련 질문을 정리하기로 했다.

[개발자 기술면접] 대용량 트래픽, ORM, JWT, OAuth, 클래스형과 함수형

1.대용량 트래픽이 발생할 시 어떻게 대응해야 하나요?

2.ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

3.JWT, Refresh, Access Token에 대해서 설명해주세요.

4.OAuth에 대해서 설명해주세요.

5.클래스형과 함수형의 차이를 설명해주세요. 어떤 방식을 주로 사용하였고 그 이유가 뭔지 답변해주세요.

추천글

위의 목차를 클릭하면 해당 글로 자동 이동 합니다.

 

1. 대용량 트래픽이 발생할 시 어떻게 대응해야 하나요?

나의대답: 다수의 접속자가 보내는 대량의 요청을 핸들링하지 못하면 서버에 과부하가 걸려서 응답이 느려지거나 서버가 터지게 된다. 대용량 트래픽을 핸들링하기 위해 로드밸런싱을 적용할 수 있다. 로드밸런싱이란 서버를 여러개로 나누어 요청을 분산시키는 것이다. 

모범답안: 로드밸런서를 통해 트래픽을 분산시켜서 부하를 분산시킨다. 또한 데이터베이스 쿼리를 최적화하고 인덱스와 캐싱을 사용하여 사용자에게 콘텐츠를 빠르게 제공할 수 있다. 

 

 

2. ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

나의대답: 아직 그런 경우를 경험하지 못해서 해결방법은 잘 모르겠다. 

모범답안: 성능 저하의 원인을 찾아서 하나의 쿼리는 하나의 목적만을 구하게 수정하거나, 인덱스를 추가하여 최적화 합니다.  또한 원시 SQL쿼리를 사용하는 방법이 있습니다. 

 

 

3. JWT, Refresh, Access Token에 대해서 설명해주세요.

나의대답: Json web token은 유효성 검증을 위한 도구로, 사용자 token 을 header에 담아 보내 사용자를 인증하는 방법이다. Refresh token은 보안 강화를 위한 token이다. 기존에 access token만 발행하는 방식은 token이 탈취되었을때 방어할 방법이 없다. 하지만 Refresh token을 통해 access token을 발행하는 방식을 택한다면 서버에 저장된 Refresh의 유효성을 확인 후, access token을 발급하고 위험한 상황엔 삭제할 수 있어서 보안이 강화된다..?

모범답안: JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Web Token이다. 사용자가 로그인에 성공하면, 서버는 해당 사용자에게 Access token을 발급한다. 이 토큰은 주로 짧은 유효기간을 가지며, 보안에 취약하다. 이를 보완하기 위해 Refresh token을 사용하는데, 이 토큰은 Access token의 갱신을 위한 토큰이다. 사용자가 로그인에 성공하면 서버는 함께 Refresh token을 발급하고 Access token의 유효기간이 만료되면 클라이언트는 Refresh token을 사용하여 새로운 Access token을 발급받는다.

--> Refresh token을 사용하는 이유: 재로그인을 하지 않아도 Access token을 갱신할 수 있게하고 JWT 유출 문제를 해결하기 위함

--> Access token의 한계점 : 단독으로 사용하면 재발급 시 로그인을 해야함, 만료시간을 짧게하면 재로그인을 자주해야하며, 만료시간을 길게하면 보안문제가 발생한다.

**JWT는 Stateless 한 방식이기 때문에 서버측에서는 이 토큰을 갖고 있는 클라이언트가 정말 클라이언트 본인이 맞는지 확인할 수 없다. (State 의 주도권을 서버가 가지고 있지 않다) 때문에, 탈취당했다고 하더라도 토큰 자체를 파기할 수 없다.  그래서 Refresh token이라는 추가적인 토큰을 활용한다. 이 Refresh token은 사용자 인증이 아닌 새로운 Access token을 생성하는 용도로만 사용된다. 공격자가 Access token을 탈취하더라도 짧은 유효기간이 지나면 사용할 수 없게 하여 피해를 최소화한다. --> Refresh token이 없기 때문에 공격자는 Access token을 재발급 받을 수 없다.

**잦은 로그아웃 -> Refresh token을 사용하여 Access token을 갱신하여 재로그인 주기를 늘릴 수 있다.

 

JWT 토큰의 구조

 

 

 

4. OAuth에 대해서 설명해주세요.

OAuth란 Open Authorization, 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜.

간단하게 인증과 권한을 획득하는 것, 별도의 회원가입 없이 로그인을 제공하는 플랫폼의 아이디만 있으면 서비스를 이용할 수 있게 하는 것. OAuth는 다른 웹서비스 또는 앱간에 사용자 데이터 및 리소스에 대한 안전한 접근을 제공하고, 사용자의 비밀번호를 공유하지 않고도 리소스에 접근하게 해준다. OAuth 2.0이 가장 널리 사용된다.

 

별도의 회원가입 없이 서비스 이용가능ㅇㅇ

사용하는 이유 : 개인정보를 여러 곳에 입력하는 것은 보안적으로 위험하다. 

 

 

5. 클래스형과 함수형의 차이를 설명해주세요. 어떤 방식을 주로 사용하였고 그 이유가 뭔지 답변해주세요.

 

 

 

추천글

https://velog.io/@elma98/%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91%EB%8C%80%EB%B9%84-%EB%A9%B4%EC%A0%91-%EC%98%88%EC%83%81-%EC%A7%88%EB%AC%B8-2%ED%8E%B8%EB%AF%B8%EC%99%84%EC%84%B1

 

[기술면접대비] 면접 예상 질문 정리 2편(미완성)

Q1. 대용량 트래픽을 어떻게 처리할 것인지A:scale-out \- 서버의 개수를 늘려서 많은 트래픽을 여러 서버가 나눠서 처리하는 방법. '수평 스케일' \- 클라이언트 요청을 어떤 서버에서 처리할 것인지

velog.io

https://puleugo.tistory.com/154

 

Refresh Token을 사용하는 이유(Feat. Redis)

개요 리프레시 토큰을 Redis에 저장한다는 사례를 들어서 직접 구현해봤습니다. Token Based Authenticaion, Refresh Token을 공부해보았습니다. 결론: 해당 방식은 비효율적이고 보안적 가치가 없는 방식이

puleugo.tistory.com

 

반응형