[Daily Contents] 프로젝트에 유용한 기술 스택
레벨 1 - 싸피를 수료했으면 이 정도는?
JWT
-
- Header
-
- Payload
-
- Signature
- JSON Web Token은 웹표준(RFC-7519)으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자기수용적인 (self-contained) 방식으로 정보를 안정성 있게 전달.
- Stateless 하기 때문에 대용량 분산 구조에서 사용하기에 적합함.
- Mobile 환경에서는 안전한 영역에 JWT를 보관함.
- Whitelist가 필요한 경우 Redis에 JWT Token을 보관해서 사용하기도함.
TypeScript
- TypeScript는 JavaScript에 Type 표기를 할 수 있도록(type annotation) 한 JavaScript의 superest
- Microsoft에서 지원
- 놀라운 생산성의 향상(코드 어시스트 지원!)
- Type을 통해 미리 오류를 방지할 수 있음
- Class 기반의 언어에서 사용하던 코딩 패턴을 사용 가능함.
Docker
- 컨테이너 기반의 오픈소스 가상화 플랫폼
- 리눅스 컨테이너를 사용해서 프로세스를 격리시키기 때문에 가볍고 빠르게 동작함
- 동일한 프로그램을 여러 서버에 배포하는 것이 가능함
- 이미지를 생성해서 공유하는 것이 가능함
- Jenkins와 더불어 BE, FE 배포에 사용해보자
- kubernetes
레벨 2 - 프로젝트와 맞다면 써 보자
면접관의 날카로운 질문
- 왜 해야 합니까 이걸??
JPA(Java Persistence API)
- JPA는 Java를 위한 영속성(Persistence) 관리와 ORM을 위한 표준 기술
- SQL 중심적인 개발의 문제점을 해소
- 지루한 코드의 반복을 없애서 생산성을 높인다!(쿼리의 90%는 지루하게 반복되는 CRUD)
- MyBatis를 사용하고 있었는데 새로운 column이 하나 추가되었다. 여러 개의 쿼리를 수정해야 하는데 쿼리 하나를 수정하는 걸 깜박했다면?
- 자기소개서에 최근의 트랜드에 대해서 이해하고 있다는 강한 시그널이 될 수 있다
React
- 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
- 기업에서 Vue.js보다 선호
- Vue와 React를 어설프게 두 가지 하나를 하는 것보다 확실히 하나를 더 잘하는 것이 좋다.
- “Vue와 React를 다 해보셨네요? 두 경우의 장단점을 말씀해 주세요.”
- “ㄷㄷㄷㄷㄷ”
- 공식 문서를 중심으로 공부해보자
MongoDB
여기서 문제 - NoSQL이란?
SQL이 없는거요. 나가
- Document Oriented Database
- “Not Only SQL”
- Document는 Key-value pair로 이루어져 있고 Collection은 그 Document의 그룹이고 Database는 Collection들의 물리적인 컨테이너이다.
{
"\_id": ObjectId("5099803df3f4948bd2f98391"),
"username": "velopert",
"name": { first: "M.J", last: "Kim" }
}
websocket
- Client – Handshake(HTTP Upgrade) –» Server
- Client «– Handshake(HTTP Upgrade) – Server
- Client «– Bidirectional Messages –» Server
-
Client «– One side closes channel –» Server
- 실시간으로 상호작용하는 웹 서비스를 만드는 표준 기술
- 연결을 맺는 비용이 가장 크기 때문에, 연결을 만들어 놓고 계속해서 사용하는 방법
- 지속적으로 서버와 통신이 필요한 기능(알림, 채팅 등)을 구현하기에 적합
- 브라우저의 버전에 따라서 websocket을 지원하지 않는 경우가 있기 때문에 socket.io라는 라이브러리를 주로 사용
- Redis와 함께 쓰면 좋다
- 면접관에게 어필하기 좋은 기술 스택
Redis
- Remote Dictionary Server
- 메모리 기반의 Key-value 데이터베이스
- 메모리를 사용하기 때문에 + Key-value 구조이기 때문에 대단히 빠르다!
- 만료일을 지정해서 저장하는 기능이 있기 때문에 JWT나 채팅을 저장할 때 사용하면 좋다
- 과도한 사용자의 요청을 count해서 막는 방법은?
Jenkins
- Continuous Integration를 위한 도구
- Git과 같은 형상 관리 도구에서 변경이 감지되면 자동으로 빌드해주는 것이 가능
- 빌드 후에 Pipeline을 통해서 정적 분석/자동화 테스트를 수행(소나큐브 등)
- 분석과 테스트가 종료되면 개발 서버에 Depoly하거나 개발 서버와 동일한 결과물로 상용 서버에 Depoly
Spring Batch
- Batch(일괄 처리) 작업을 수행해주는 Spring Module
- ex) 배달의 민족에서 매일 0시에 하루 매출을 정산한다면?
- Quartz나 Spring Schedular 등과 함께 사용
- 정기적으로 수행해야 하는 대용량 데이터 처리가 있다면 Batch를 사용해보다
- vs crontab?
Tip
- React 상태관리
- Redux : React 개발자가 만들었다!
- Recoil : Next.js 등을 써 보았다!
댓글남기기