[기술면접] 220210

박채은·2023년 2월 10일
0

회고록

목록 보기
7/8

4) 세션과 토큰 인증 방식 중 각각의 장단점을 말씀해 주세요.

https://fierycoding.tistory.com/69

세션

  • 장점
    • 서버에 저장하기 때문에 관리가 매우 편하고 효율적이다.
    • 구현이 명확하며 실제 서버에서 로그인 상태를 확인하기 유용하다.
  • 단점
    • 서버에 저장되기 때문에 클라이언트 수가 많으면 서버에 부하가 심하다.
    • 멀티 디바이스 환경(모바일, 공동 사용 등)에서 로그인 시, 중복 로그인 처리가 되지 않는다.

토큰

  • 장점
    • 클라이언트에 토큰이 저장되어 있기 때문에 서버에 부담이 되지 않으며 Scale에 있어 대비책을 고려할 필요가 없다.
    • 멀티 디바이스 환경에 대한 부담이 없다.
  • 단점
    • 구현하기 어렵다.
    • 웹 브라우저 측(local storage, 혹은 쿠키 등)에 저장되기 때문에 공격에 노출될 가능성이 더 큽니다.

즉 세션, 토큰의 장단점은 각각 안정성과 확장성이 될 것 입니다.
세션은 서버에 저장되어 안전하나 하나의 서버에만 저장되어 있기 때문에 확장성이 좋지 않고,
토큰은 클라이언트에 저장되어 확장성이 좋으나 안정성은 떨어집니다.

(서비스들은 서버의 과부하를 줄이기 위해서 여러 서버를 두고 사용하는데, 내가 요청한 request마다 내가 접속하는 서버가 달라질 수 있다.
이때 세션을 사용하면 서버가 달라질 때마다 해당 서버에는 세션 정보가 없기 때문에 다시 로그인을 해줘야 합니다.
이를 해결할 수 있는 방법도 있지만 그 방법보다 토큰을 이용하는 것이 더 편리하기 때문에 웹 사이트에서는 토큰을 주로 이용한다.)


5) HTTP와 HTTPS 각각에 대해 설명하고 둘의 차이점을 말씀해 주세요.

https://www.ascentkorea.com/difference-between-http-and-https/#:~:text=%EB%94%B0%EB%9D%BC%EC%84%9C%20HTTPS%EB%8A%94%20HTTP%EB%B3%B4%EB%8B%A4,%EA%B3%84%EC%B8%B5%20%EB%B3%B4%EC%95%88

HTTP(HyperText Transfer Protocol)는 하이퍼 텍스트 전송 프로토콜으로, 웹 서버와 웹 브라우저 상호 간의 데이터 전송을 위한 프로토콜입니다.

HTTPS는 HTTP에 S가 하나 붙어있는데요.
이때 S는 SSL 인증서를 의미합니다.
HTTPS는 SSL(Secure Socket Layer) 인증서를 사용하는 HTTP입니다.
SSL(또는 TLS) 인증서는 일반 HTTP 요청 및 응답을 암호화합니다.
따라서 HTTPS는 HTTP보다 더 안전한 보안용 프로토콜이라고 할 수 있습니다.

HTTP와 HTTPS의 유일한 차이점은 HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 있다는 것입니다.
(이를 TLS(전송 계층 보안) 프로토콜이라고 합니다.)
따라서 모든 유형의 데이터는 변경되거나 손상될 수 없는 HTTPS 사이트를 통해 전달되며 제3자로부터 보호됩니다.


13) CI/CD가 무엇이라고 생각하시나요? CI와 CD의 차이점이 무엇인지 설명해 주세요.


출처 : https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://seosh817.tistory.com/104

CI/CD는 자동화를 통해서 애플리케이션을 더욱 짧은 주기로 사용자에서 제공하는 방법입니다.

CI는 Continuous Integration, 지속적인 통합을 말합니다.
간단하게 말하자면, build -> test -> merge까지의 작업을 자동화한 것이라고 할 수 있습니다.
애플리케이션의 코드가 변경됐을 때, 정기적으로 빌드 및 테스트를 거쳐서 리포지토리에 병합해줍니다.

여러 개발자들이 각자 작업을 진행하잖아요.
이때 작업해놓은 모든 분기 소스 코드들을 병합해줘야 하는데 분기가 여러 개다 보니까 반복적으로 병합해줘야 하는 번거로움이 존재합니다.
CI를 통해서 반복적인 병합 작업을 자동화하여 수월하게 진행할 수 있고, 자동화된 테스트로 인해 제대로 병합되었는지 확인할 수 있어 충돌로 인해 발생하는 문제를 빠르게 캐치하고 해결할 수 있습니다.

CD는 Continuous Delivery 또는 Deployment, 즉 지속적인 서비스 제공 또는 배포를 말합니다.
지속적인 제공이란, 변경된 사항들을 리포지토리에 자동으로 릴리즈하는 것을 말하고,
지속적인 배포란, 리포지토리에서 프로덕션 환경(사용자가 사용 가능한 환경)까지 자동으로 릴리스하는 것을 말합니다.

CI에서 코드 병합 후에, "지속적인 제공"을 통해서 리포지토리에 코드를 릴리즈할 수 있고 그 코드를 "지속적인 배포"를 통해서 프로덕션 환경에 자동으로 릴리즈합니다.


인증과 인가의 차이에 대해 설명해 주세요.

Spring Security의 인증 처리 흐름에 대해 설명해 주세요.

Spring Security의 인가 처리 흐름에 대해 설명해 주세요.

0개의 댓글