기술면접 준비 3

Jiwontwopunch·2021년 12월 27일
0

스터디

목록 보기
4/16
post-thumbnail

쿠키와 세션에 대해 설명하라

  • 쿠키 : 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어 있는 작은 데이터 파일. 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다. 300개까지 쿠키 저장이 가능하고 하나의 도메인당 20개의 값만 가질 수 있고 하나의 쿠키값은 4KB까지 저장 가능하다. 쿠키는 사용자가 따로 요청하지 않아도 브라우저가 request시에 request header를 넣어서 자동으로 서버에 전송한다.
    예시) 쇼핑몰의 장바구니 기능
  • 세션 : 세션은 쿠키를 기반으로 하지만 사용자 정보 파일을 브라우저 저장하는 쿠키와 달리 서버측에서 관리한다. 서버에서는 클라이언트를 구분하기 위해 세션ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다. 클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는 데 이것이 세션ID이다.
    예시) 로그인같이 보안상 중요한 작업을 수행할 때 사용

CORS? Cross-Origin Resource Sharing

교차 출처 리소스 공유는 다른 출처 리소스 공유라고 이해하는게 더 편하다. 추가 HTTP 헤더를 사용하여 한 출처에서 실행 중인 웹 어플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 보안상의 이유로 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. 자바스크립트에서는 CORS 에러 확인은 개발자도구의 console.log나 네트워크로 확인한다.

웹 브라우저에서 서버로 요청했을 때 흐름 설명

브라우저의 URL 파싱 → HSTS 목록 조회 → URL을 IP주소로 변환 → 라우터를 통해 해당 서버의 게이트웨이까지 이동 → ARP를 통해 IP주소를 MAC주소로 변환 → 대상 서버와 TCP 소켓 연결 → HTTP 프로토콜로 요청,응답 → 브라우저에서 응답을 해석

  • HSTS : 웹 사이트 접속 시 HTTPS만 사용하도록 강제하는 기술
  • ARP : 주소 결정 프로토콜 Address Resolution Protocol, 네트워크 상에서 IP주소를 물리적 네트워크 주소로 대응시키기 위해 사용되는 프로토콜

웹 서버와 웹 어플리케이션 서버(WAS)의 차이

우선 WS와 WAS로 나누는 이유는 효율성 때문이다.

  • 웹 서버 WS : 정적인 컨텐츠를 제공한다. 단순 HTML 문서, CSS, JS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠들..
  • 웹 어플리케이션 서버 WAS : 웹 서버 + 웹 컨테이너, 웹 서버 단독으로는 처리할 수 없는 데이터베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다. WAS도 정적컨텐츠를 제공할 수 있지만 더 빠른 서비스를 위해서 웹 서버와 역할을 구분

REST, REST API, RESTful API

  • REST : 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
  • REST API : 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하고 REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있다.
  • RESTful : RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다. ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다.

API Gateway

최근 서비스는 작은 단위의 서비스로 나누어 개발하면서 서비스의 복잡도를 줄이고 변경에 따른 영향도 최소화한다. API Gateway를 사용하면 통합적으로 엔드포인트와 REST API를 관리할 수 있다. 모든 클라이언트는 각 서비스의 엔드포인트 대신 API Gateway로 요청을 전달한다. API에 대한 인증과 인가기능을 가지고 있으며, 메시지의 내용에 따라 어플리케이션 내부에 있는 마이크로서비스로 라우팅하는 역할을 담당한다.

  • 엔드포인트 : API가 서버에서 자원에 접근할 수 있도록 하는 URL(POST, GET, PUT, DELETE)

API Gateway가 다운되면 모든 API를 사용 못 할지도 모르는데 어떤 방안을 마련해야 할까?

API 캐싱을 켜서 엔드포인트에 대한 호출 수를 줄인다.
(보충 필요..)

참고사이트
https://interconnection.tistory.com/74
https://velog.io/@pilyeooong/%EC%9B%B9-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%97%90%EC%84%9C-%EC%84%9C%EB%B2%84%EA%B9%8C%EC%A7%80%EC%9D%98-%ED%9D%90%EB%A6%84
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

0개의 댓글