레벨 1
SSAFY를 졸업한 수료생이라면 이것은 반드시!
JWT
- 웹 표준으로서 두 개체에서 JSON객체를 사용해 가볍고 자가 수용적인 방식으로 정보를 안정성 있게 전달.
- Stateless 하기 때문에 대용량 분산 구조에서 사용하기에 적합.
- Mobile환경에서는 안전한 영역에 JWT를 보관함.
- Redis에 JWT Token을 보관해 사용하는 경우가 많음.
- 토큰 기반의 인증 시스템에서 주로 사용.
- 주로 회원 인증이나 정보 전달에 사용된다.
Docker
- 컨테이너 기반의 오픈소스 가상화 플랫폼.
- 리눅스 컨테이너를 사용해 프로세스를 격리시키기 때문에 가볍고 빠르게 동작함.
- 동일한 프로그램을 여러 서버에 배포하는 것이 가능함.
- 이미지를 생성해서 공휴하는 것이 가능함.
- Jenkins와 더불어 BE, FE배포에 사용할 수 있음.
레벨 2
프로젝트의 방향성과 같다면 써볼 수 있는 것들.
자소서, 포폴에 쓰면 좋을 기술들.
JPA
- 대부분의 서버 개발에서 활용중.
- 레거시에만 Mybatis를 사용하고 있고 JPA를 많이 넘어가는 정도.
- Java를 위한 영속성 관리와 ORM을 위한 표준 기술.
- SQL중심적 개발의 문제점을 해소.
- 지루한 코드의 반복(Mybatis의 단점)을 없애 생산성을 높임.
(쿼리의 95%는 지루하게 반복되는 CRUD) - 예) Mybatis를 사용하고 있었는데 새로운 칼럼이 한 개 추가되었을 땐 쿼리를 수정해야 하고,
이때 잘못된 문법으로 수정하게 되면 오류 발생.. - 자소서에 최근 트렌드에 대해 이해하고 있다는 강한 시그널을 보낼 수 있음.
면접관의 질문
Django와 Spring 사용해보셨네요? 두 개를 비교하여 답변해주세요.
Websocket
- 동시성을 사용해야 할/실시간으로 상호작용하는 웹서비스 기능이 있을 때(예: 채팅) 사용하는 기술
- 연결을 맺는 비용이 크기 때문에 연결을 만들어 두고 계속해서 사용하는 방법
- 실제 회사에서도 자주 쓰는 기술
- 지속적으로 서버와 통신이 필요한 기능(알림, 채팅 등)을 구현하기에 적합
- 브라우저의 버전에 따라 Websocket을 지원하지 않는 경우가 있기 때문에 socket.io란 라이브러리를 주로 사용
- Redis와 함께 쓰면 좋다
빠르고 메모리 기반의 실시간성에 적합한 Redis기 때문에 적합. Redis의 subscribe와 publish라는 기능과 웹소켓을 함께 쓰면 좋다. - 면접관에게 어필하기 좋은 기술 스택
Redis
- 메모리기반의 Key-value 데이터 베이스.
- 메모리를 사용하고 Key-value 구조기 때문에 대단히 빠르다.
- 만료일을 지정해서 저장하는 기능이 있기 때문에 JWT나 채팅을 저장할 때 사용하면 좋다.
개발자가 만료일을 지정해서 저장하는 기능을 직접 만들 필요 없다. - 과도한 사용자의 요청을 count 해서 막는 방법은?
Jenkins
- CI를 위한 도구.
- Git과 같은 형상 관리 도구에서 변경이 감지되면 자동으로 빌드해주는 것이 가능.
- 빌드 후 Pipeline을 통해 정적 분석/자동화 테스트를 수행한다.
- 분석과 테스트가 종료되면 개발 서버에 Delpoy 하거나 개발 서버와 동일한 결과물로 상용 서버에 Deploy 한다.
Spring Batch
- Batch(일괄처리) 작업을 수행해주는 Spring Module.
예) 배달의 민족에서 매일 0시에 하루 매출을 정산. - Quartz나 Spring Scheduler등과 함께 사용한다.
- 정기적으로 수행해야 하는 대용량 데이터 처리가 있다면 Batch를 사용해보자.
- LINE에서 실제 Spring Batch를 사용하고 있음.
'📜 TIL' 카테고리의 다른 글
[Word] 표에 들어간 글자 위로 쏠림현상 해결하는 방법 (0) | 2022.09.06 |
---|---|
IIoT, 산업 사물 인터넷 (2) | 2021.12.20 |
RESTful API란? (0) | 2021.10.18 |
Nginx란? (생활코딩 스크랩 및 일부 수정) (0) | 2021.10.14 |
배포 하며 참고했던 여러 사이트 및 명령어 (0) | 2021.10.12 |