hanghae99/TIL

[항해 취업코스] 취준 기록 7일차

욘아리 2024. 3. 12. 16:32

📌 프로젝트 관련 예상 질문

 

1. 세션 기반의 인증 방식과 토큰(JWT)기반의 인증 방식에 대해 설명하고 JWT를 이용한 인증 방식의 장점을 설명해주세요.

  • 세션 기반의 인증 방식은 사용자의 인증 정보를 서버의 세션 저장소에 저장하는 방식입니다. 사용자가 로그인을 하면, 서버는 세션 저장소에 해당 인증 정보를 저장하고, 해당 세션의 식별자인 Session ID를 발급합니다. 발급된 Session ID는 브라우저에 쿠키 형태로 저장되지만, 실제 인증 정보는 서버에 저장되어 있습니다. 브라우저는 인증 절차를 마친 이후의 요청마다 HTTP 쿠키 헤더에 Session ID를 함께 서버로 전송합니다. 서버는 Session ID에 해당하는 세션 정보를 확인하고 존재한다면 해당 사용자를 인증된 사용자로 판단합니다.
  • 토큰(JWT) 기반의 인증 방식은 인증 정보를 서버가 아닌 클라이언트가 직접 보관하는 방식입니다. JWT가 일반적으로 사용되고, 사용자가 로그인하면, 서버는 사용자의 인증 정보가 포함된 토큰을 생성하고 사용자에게 전달합니다. 이후 사용자는 서버에 요청을 보낼 때마다 이 토큰을 함께 보내어 인증하게 됩니다.
    • JWT는 클라이언트 측에서 인증 정보를 관리하므로, 서버 확장(특히 수평 확장) 시 세션 불일치 문제가 발생하지 않습니다. 이는 웹 어플리케이션을 확장하는 데 있어 큰 이점을 제공합니다.
    • JWT는 서버가 사용자 인증 정보를 저장할 필요가 없어, HTTP의 비상태성을 그대로 활용할 수 있습니다. 이는 서버의 메모리 부담을 줄여주며, 각 요청을 독립적으로 처리할 수 있게 해 줍니다.
    • 사용자의 수가 증가하더라도, 서버는 인증 데이터를 직접 관리하지 않기 때문에 부하가 증가하지 않습니다. 이는 서비스의 성능과 안정성을 유지하는 데 도움이 됩니다.

 

2. Client의 쿠키, 세션, 로컬 저장소에 대해 알고 계신 만큼 설명해주세요.

  • 쿠키(Cookies)는 서버가 사용자의 웹 브라우저에 저장하는 작은 텍스트 파일입니다. 주로 인증, 세션 관리(사용자의 로그인 상태 유지), 사용자 선호 설정의 저장 등에 사용됩니다. 쿠키는 사용자가 웹 사이트를 재방문할 때마다 해당 서버에 의해 읽혀, 개인화된 사용자 경험을 제공할 수 있습니다. 하지만 쿠키는 크기에 제한이 있고, 모든 HTTP 요청마다 서버로 전송되므로, 필요 이상의 데이터를 저장하거나 전송하는 것은 비효율적일 수 있습니다.
  • 세션 저장소(Session Storage)는 브라우저를 종료하면 정보가 사라지는, 비교적 짧은 기간 동안 데이터를 저장합니다. 웹 페이지의 세션 동안만 정보를 유지하고 싶을 때 유용하며, 사용자가 브라우저나 탭을 닫으면 저장된 데이터도 함께 사라집니다.
  • 로컬 저장소(Local Storage)는 웹 어플리케이션의 데이터를 사용자의 브라우저에 장기간 저장할 수 있게 해 줍니다. 세션 저장소와 다르게 브라우저 세션이 종료되어도 데이터가 사라지지 않습니다. 또한, 쿠키와 달리 서버로 자동 전송되지 않으며, 더 큰 데이터를 저장할 수 있습니다. 이를 통해 사용자의 설정이나 애플리케이션의 상태 등을 저장할 때 유용합니다.

 

3. Restful API에 대해 알고 계신 만큼 설명해주세요.

  • Restful API는 웹 개발에서 중요한 역할을 하는 대표적인 웹 API 설계 스타일 중 하나입니다. REST 아키텍처 스타일을 따르면서 간결하고 유연한 인터페이스를 통해 웹 자원을 효과적으로 사용, 관리, 연동할 수 있는 방법을 제공합니다.
  • 주요 특징
    • 유니폼 인터페이스 : 표준화된 인터페이스를 통해 통신합니다. 예를 들어, CRUD 연산은 HTTP 메서드로 표현됩니다.
    • 주소 지정 가능 : 모든 자원(Resource)은 고유한 URI를 통해 식별됩니다.
    • 연결성 : 자원들 간의 연결을 통해, 클라이언트는 한 자원에서 다른 자원으로 접근할 수 있습니다.
    • 상태 전이 : 애플리케이션이 상태를 전환하기 위해서는 정해진 HTTP 메서드와 원칙에 따라 요청을 보내고 적절한 응답을 받아야 합니다.

 

4. HTTP METHOD 에 대해서 아는만큼, 중요하다고 생각하는 순서로 설정해주세요. 

  • 웹 개발에서는 클라이언트와 서버 간의 통신을 위해 다양한 HTTP 메서드를 사용합니다. 이 메서드들은 웹 API의 설계와 기능성에 중요한 역할을 합니다. 중요하다고 생각하는 순서로 설정해 보면, GET, POST, PUT/PATCH, DELETE 순입니다. 각각의 메서드는 자원(Resource)에 대한 다른 작업을 수행하는 데 사용됩니다.
  • GET: 서버로부터 정보를 조회하는 데 사용됩니다. 가장 기본적인 메서드로, 데이터를 받아오는 데 중요합니다.
  • POST: 새로운 자원을 생성할 때 사용됩니다.
  • PUT/PATCH: 기존 자원을 수정할 때 주로 사용됩니다.
  • DELETE: 기존의 자원을 삭제하는 데 사용됩니다. 자원의 제거가 필요할 때 중요합니다.

 

5. HTTP 메서드 PUT과 PATCH의 차이점에 대해 설명해주세요.

  • PUT 메서드는 대상 자원의 전체를 대체하기 위해 사용됩니다. 이는 클라이언트가 자원의 완전한 새 버전을 제공해야 한다는 것을 의미합니다. PUT 요청은 멱등성을 가집니다. 즉, 같은 요청을 여러 번 수행해도 동일한 결과를 가져옵니다.
  • PATCH 메서드는 자원의 부분적인 변경을 위해 사용됩니다. 클라이언트는 변경하고자 하는 필드만 전송하면 됩니다. PATCH 요청은 멱등성을 가질 수 있지만, 메서드의 사용에 따라 결과가 달라질 수 있습니다.

 

항해 개발자 취업 리부트 코스를 수강하고 작성한 콘텐츠 입니다.

https://hanghae99.spartacodingclub.kr/reboot

 

IT 커리어 성장 코스 항해99, 첫 취업부터 현직자 코스까지

항해99는 실무에 집중합니다. 최단기간에 개발자/PM으로 취업하고, 현직자 코스로 폭발 성장을 이어가세요. 실전 프로젝트, 포트폴리오 멘토링, 모의 면접까지.

hanghae99.spartacodingclub.kr

 

참고 자료

https://hudi.blog/session-based-auth-vs-token-based-auth/