[Daily Contents] 프로젝트에 유용한 기술 스택


레벨 1 - 싸피를 수료했으면 이 정도는?

JWT

    1. Header
    1. Payload
    1. 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 등을 써 보았다!

댓글남기기