1. 대용량 트래픽 발생 시 어떻게 대응해야 하나요?
1) 스케일 업 과 스케일 아웃
(1) 스케일 업
a) 기존 서버의 사양을 업그레이드하여 시스템을 확장하는 것
b) 하나의 서버의 사양을 업그레이드하기 때문에 수직 스케일로 불리기도함
c) 장점
(a) 추가적인 네트워크 연결 없이 용량 증강 가능
(b) 스케일 아웃보다 관리 비용이나 운영 이슈가 적고, 사양만 올리면 되기 때문에 비교적 간단함
(c) 서버의 개수가 1대이므로 데이터의 일관성이 유지됨
d) 단점
(a) 하드웨어적 비용부담이 크고, 허용 범위가 정해저 있으므로 성능 향상에 한계가 있다
(b) 서버 한대가 부담하는 양이 많고, 문제가 생기면 다운타임이 발생한다
(2) 스케일 아웃
a) 하나의 장비에서 서버를 여러 대 추가하여 시스템을 확장하는 것
b) 서버가 여러대로 나누어 지기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 로드밸런싱이 필수적으로
동반되어야 함
c) 여러 대의 서버로 나눠 시스템을 확장하기 때문에 수평 스케일로 불리기도 함
d) 장점
(a) 확장의 유연성, 수평확장 가능, 서버를 필요한 만큼 도입 가능, 필요한 만큼 서버를 추가해 용량과
성능 확장 가능
(b) 읽기 / 쓰기가 여러 대의 서버에 분산 처리
(c) 장애 발생시 전면 장애의 가능성이 적고 서버 사용으로 인한 비용 부담이 적다
e) 단점
(a) 여러 노드를 연결해 병렬 컴퓨팅 환경을 구성하고 유지하려면 아키텍처에 대한 높은 이해도가 요구됨
(b) 서버의 수가 늘어날수록 관리가 힘들어지는 부분이 있음
(c) 아키텍처의 설계 단계에서부터 고려되어야 할 필요가 있음
(d) 여러 노드에 부하를 균등하게 분산시키기 위해 로드 밸런싱이 필요
2) 캐싱
캐시 영역으로 데이터를 가지고와서 접근하는 방식으로 메모리상에 있는 데이터를 연산할 경우,
이 연산을 더 빠른 CPU 메모리 영역으로 가져와 처리를 수행한다
캐시를 통해 자주 사용되는 데이터 또는 페이지를 메모리에 저장해둠으로써 서버의 과부화를 감소시킬 수 있다
3) 비동기 처리
처리 시간이 오래걸리는 작업과 즉시 처리되어야 하는 작업을 분리하고 오래 걸리는 작업을 처리하는 동시에
병렬적으로 그 외의 작업을 함께 처리해서 시스템 전체의 부하를 감소시킴
4) 재해 복구 시스템
(1) 미러 사이트
a) 메인 시스템과 동일 환경 구축 + 동기화
b) 복구 목표시간이 분단위로 짧다
(2) 핫 사이트
a) 메인 시스템과 동일 환경 구축
b) 평소에는 대기 상태로 운영
(3) 웜 사이트
a) 중요성이 높은 데이터만 부분 저장
(4) 쿨 사이트
a) 단순 데이터 저장
b) 주로 보완책으로 사용
* 로드 밸런싱
로드 밸런서로 여러 서버에 트래픽(서버 부하)을 고르게 분산시켜줌
2. ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는 게 좋을까요?
JPA 같은 ORM 은 정적인 상황에서 사용하는 것을 권장하기 때문에 복잡한 쿼리와 동적 쿼리에 대한 문제가
발생할 수있다 그럴때는 문자열 형태로 직접 쿼리문을 작성하는 JPQL 이나 자바 코드로 작성하는 QueryDSL을
사용하면 좋다
* ORM
어플리케이션과 데이터베이스 연결시 어플리케이션 개발 언어로 데이터베이스를 접근 할 수 있게 해주는 툴
3. GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요.
1) GET
(1) 개념
요청하는 데이터가 HTTP URL의 일부로 포함되어 전송 된다 일반적으로 조회 작업에 사용됨
(2) 데이터 흐름
a) 사용자가 브라우저에서 URL 을 입력하거나 링크 클릭
b) 브라우저가 해당 URL 에 포함된 파라미터와 함께 서버에 요청 보냄
c) 서버가 요청을 처리하고 필요한 정보를 응답으로 보냄
d) 브라우저가 응답을 받아 사용자에게 표시함
2) POST
(1) 개념
요청 데이터를 HTTP 본문에 담아 전송하며, 서버의 상태를 변경하고나 데이터를 추가하는 작업에 사용됨
(2) 데이터 흐름
a) 사용자가 웹 폼에 데이터를 입력하고 제출 버튼 클릭
b) 브라우저가 데이터를 HTTP 본문에 담아 서버에 요청 전송
c) 서버가 요청을 처리하고, 결과를 확인하거나 필요한 정보를 응답으로 보냄
d) 브라우저가 응답을 받아 사용자에게 표시하거나 다른 동작을 수행
4. OSI 7계층에 대해 아는 대로 설명해주세요.
1) OSI 7계층 이란?
네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구에서 정의한 네트워크 표준모델이며 각 계층을
지날 때 마다 각 계층에서 Header 가 붙게 되고 수신측은 역순으로 Header 를 분석함
2) 7계층
(1) 1계층 - 물리계층
a) 전기적, 기계적 기능적인 특성을 이용해서 통신 케이블로 데이터를 전송하는 물리적인 장비
b) 데이터 전기적인 신호 (0, 1)로 변환해서 주고받는 기능만 함
c) 사용되는 통신단위는 비트(BIT) 이며 이것은 1과 0으로 나타내어지는 즉 전기적으로 On, Off 상태
d) 장비 : 통신케이블, 리피터, 허브 등
(2) 2계층 - 데이터링크 계층
a) 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 통신의 흐름을 관리
b) 프레임에 물리적 주소(MAC Address) 를 부여하고 에러검출, 재전송, 흐름제어를 수행
c) 전송 단위는 프레임(Frame)
d) 장비 : 브리지, 스위치, 이더넷 등(여기서 주로 MAC 주소 사용)
(3) 3계층 - 네트워크 계층
a) 데이터를 목적지까지 가장 안전하고 빠르게 전달
b) 라우터를 통해 경로를 선택하고 주소를 정하고(IP) 경로(Route)에 따라 패킷을 전달 > IP 헤더 붙음
c) 전송 단위는 패킷(Packet)
d) 장비 : 라우터
(4) 4계층 - 전송 계층
a) port 번호, 전송방식(TCP/UDP) 결정 > TCP 헤더 붙음
TCP : 신뢰성, 연결지향적
UDP : 비신뢰성, 비연결성, 실시간
b) 두 지점간의 신뢰성 있는 데이터를 주고 받게 해주는 역활
c) 신호를 분산하고 다시 합치는 과정을 통해서 에러와 경로를 제어
(5) 5계층 - 세션 계층
a) 주 지점건의 프로세스 및 통신하는 호스트 간의 연결 유지
b) TCP/IP 세션 체결, 포트번호를 기반으로 통신 세션 구성
c) API, Soket
(6) 6계층 - 표현 계층
a) 전송하는 데이터의 표현방식을 결정 (ex. 데이터변환, 압축, 암호화 등)
b) 파일 인코딩, 명렁어를 포장, 압축, 암호화
c) JPEG, MPEG, GIF, ASCII 등
(7) 7계층 - 응용 계층
a) 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행 (ex. explore, chrome 등)
b) HTTP, FTP, SMFP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있다
5. 세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.
1) 세션의 경우 Cooke 헤더에 세션 ID 만 보내면 되므로 트래픽을 적게 사용하나 토큰은 사용자 인증정보와
발급시각, 만료시각, ID 등 담겨있는 정보가 비대하므로 더 많은 네트워크 트래픽을 사용함
2) 세션은 모든 인증 정보를 서버에서 관리하기 때문에 보안 측면에서 유리함 세션 ID 가 헤커에게 탈취된다 해도
서버측에서 해당 세션을 무효처리 하면 됨 하지만 토큰은 서버가 트래킹하지않고 클라이언트가 모든 인증 정보를
가지고 있기 때문에 해커에게 탈취되면 토큰이 만료되기 전까지는 속수무책이다
3) 일반적으로 웹 어플리케이션 서버 확장방식은 수평 확증알 사용한다 여러대의 서버가 요청을 처리하게 되는데
별도의 작업을 하지 않으면 세션 방식은 세션 불일치 문제를 겪게되기 때문에 Sicky Session, Session Clustering,
세션 스트리지 외부 분리 등의 작업을 해주어야 한다 하지만 토큰은 서버가 직접 인증 방식을 저장하지 않고
클라이언트가 저장하는 방식이기 때문에 세션 불일치 문제로부터 자유롭다 이런 특징으로 HTTP 의 비상태성을
그대로 활용할 수 있고 따라서 높은 확장성을 가질 수 있다
4) 세션은 서비스가 세션 데이터를 직접 저장하고 관리하므로 양이 많아질 수록 서버에 부담이 증가한다 하지만 토큰은
클라이언트가 인정 데이터를 직접 가지고 있기 때문에 유저의 수가 얼마가 되던 서버의 부담이 증가하지 않는다
6. JWT, Refresh, Access Token에 대해서 설명해주세요.
1) JWT
(1) 인증에 필요한 정보들을 암호화 시킨 토큰을 말한다 사용자는 Access Token 을 HTTP 헤더에 실어 서버로 보낸다
(2) 토큰을 만들기 위해서는 크게 3가지가 필요하다
a) Header : 정보를 암호화 할 방식, 타입등이 들어감
b) Payload : 서버에서 보낼 데이터가 들어간다 일반적으로 유저의 고유 ID 값, 유효기간이 들어감
c) Verify Signature : Base64 방식으로 인코딩한 Header, Payload 그리고 SECRET KEY 를 더한 후 서명된다
(3) 인증 방식
a) 사용자 로그인
b) 서버에서 계정 정보를 읽어 사용자 확인 후 고유 ID 값 부여후 기타 정보와 함께 Payload 에 넣는다
c) JWT 토큰의 유효기간 설정
d) 서버에서 암호화할 SECREY KEY 를 이용해 ACCESS TOKEN 발급
e) 서버에서 해당 토큰의 Verigy Signature 를 SECRET KEY 로 복호화 후, 조작 여부, 유효기간 확인
f) 검증 완료시 Payload 를 디코딩 하여 사용자의 ID 에 맞는 데이터를 가지고옴
2) Access Token
(1) 보호된 정보들에 접근할 수 있는 권한 부여에 사용
(2) 권한을 부여 받는데 필요하지만 해커에 의해 탈취되는 것을 방지하기위해 만료기간을 짧게 주고 오랫동안
사용할 수 없게 한다
3) Refresh Token
(1) Access Token을 보완하기 위해 나온 것 JWT의 일종으로 재발급에 관여한다
(2) 만료된 Access Token 을 서버에 보내면 서버는 같이 보내진 Refresh Token 을 DB 에 있는 것과 비교해서
일치하면 Access Token 을 재발급 한다 사용자가 로그아웃을 하면 저장소에서 Refresh Token 을 삭제하여
사용이 불가능 하도록하고 로그인하면 서버에서 다시 재발급 하여 DB 에 저장한다
7. OAuth에 대해서 설명해주세요.
1) OAuth 란?
인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나
애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는 접근 위임을 위한 개방형 표준
2) 구성요소
(1) Resourve Owner : 웹 서비스를 이용하려는 유저, 자원(개인정보)을 소유하는자, 사용하는자
(2) Client : 자사 또는 개인이 만든 애필리케이션 서버
(3) Authorization Server : 권한을 부여(인증에 사용할 아이템을 제공해주는) 해주는 서버
사용자는 이 서버로 ID, PW 를 넘겨 Authorization Code를 발급 받을 수 있다
Client 는 이 서버로 Authorization Code 을 넘겨 Token 을 발급 받을 수 있다
(4) Resource Server : 사용자의 개인정보를 가지고 있는 애플리케이션 (Google, Kakao 등) 회사 서버
Client 는 Token 을 이 서버로 넘겨 개인정보를 응답 받을 수 있다.
(5) Access Token : 자원에 대한 접근 권한을 Resource Owner 가 인가하였음을 나타내는 자격 증명
Client 는 Authorization Server 로 부터 Access Token 과 Refresh Token 을 함께 부여 받음
(6) Refresh Token : Access Token 은 보안상 만료기간이 짧기 때문에 얼마 지나지 않아 만료되면 사용자는
로그인을 다시 시도해야 한다 하지만 Refresh Token 을 통해 Access Token 을 재발급 받을 수 있다
8. HTTP 상태 코드에 대해서 설명해주세요.
1) HTTP 상태 코드란?
클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로, 상태 코드에 따라 요청의 성공 / 실패 여부를 판단
2) HTTP 상태 코드 분류
(1) 1xx (Informational) 조건부 응답
요청이 수신되어 처리중을 의미
(2) 2xx (Successful) 성공
요청을 정상적으로 처리 했음을 의미
(3) 3xx (Redirection) 리다이렉션 완료
요청 완료를 위해 추가 작업 조치가 필요함 주로 리다이렉트를 할 때 많이 사용됨
(4) 4xx (Client Error) 요청 오류
클라이언트 오류(잘못된 문법 등) 으로 인해 서버가 요청을 처리할 수 없음을 의미
(5) 5xx (Server Error) 서버 오류
서버 오류로 인해 서버가 정상 요청을 처리하지 못함을 의미
'항해99 기술면접 대비' 카테고리의 다른 글
23.11.16 항해 99 16기 기술면접 대비 (0) | 2023.11.16 |
---|---|
23.11.03 항해 99 16기 기술면접 대비 (0) | 2023.11.03 |
23.10.26 항해 99 16기 기술면접 대비 (0) | 2023.10.26 |
23.10.25 항해 99 16기 기술면접 대비 (1) | 2023.10.25 |
23.10.24 항해 99 16기 기술면접 대비 (1) | 2023.10.24 |