Skip to content

Tiary

한국소프트웨어산업협회 주관 [회원사 채용연계형 MSA기반 Full Stack 개발 전문가 양성과정 3차]

3차 프로젝트 (11/24~12/27)


Tiary

  • 팀명 : ToT
  • 팀원 : 유승희(팀장), 김민지, 김진수, 노은기, 송기영

서비스 소개

자유로운 소통을 중시하며 후원을 통해 좋은 퀄리티의 게시글을 장려하는 커뮤니티 사이트로

누구나 작가가 될 수 있는 서비스입니다.


Team Rule + Tool

github jira slack notion googledrive figma erdcloud

  1. 늦을 때는 늦는다고 미리 연락주기
  2. 연락은 오전 9시 ~ 오후 9시 사이로!
  3. 매주 월요일 오전 9시는 스프린트 계획 회의
  4. 매주 금요일 오후 5시는 스프린트 회고 회의


Technical Skills

Backend

spring springboot jpa mysql aws docker

Frontend

css3 html5 javascript vuejs tailwindcss


구현 기능 ⚒

JWT

Access Token + Refresh Token

-> Cookie/Session/Token/JWT 정리

(Acceess Token만 사용할 때) 사용자의 로그인이 성공하면,

  1. Access Token은 Response의 Header를 통해 클라이언트로 전달됩니다.
  2. 전달된 Access Token은 사용자의 Local Storage에 저장됩니다.
  3. 클라이언트에서는 저장된 Access Token을 통해 사용자의 정보를 추출 및 관리합니다

그러나 JWT는 stateless하므로 Access Token이 제3자에게 유출될 경우 토큰을 무효화시키기 어렵습니다. 피해를 줄이기 위해서는 Access Token의 유효기간을 짧게 하는 것이 좋지만, 이렇게 되면 만료 시 다시 로그인 해야 하는 불편함을 자주 느끼게 됩니다.

그렇기 때문에 만료 시 새로운 Access Token을 받아올 수 있도록 하는 Refresh Token을 구현했습니다. Access Token의 유효기간은 짧게 가져가면서 Refresh Token의 유효기간은 길게 가져감으로써 로그인이 오랜 기간 유지될 수 있게 합니다.

Refresh Token을 구현하는 방법으로는 아래 두 방식을 생각했습니다.

  1. Redis를 이용한 Refresh Token 검증
  2. Cookie를 이용한 Refresh Token 검증

고민한 결과,

  • 정해진 시간이 지나면 사라짐
  • 클라이언트가 저장하고 있기에 관리 및 개발이 용이하다고 생각됨 (+ 개발 시간이 부족한 상황)
  • HttpOnly를 설정하여 XSS로부터 안전함

이러한 이유로 Cookie에 저장했습니다.

따라서 사용자의 로그인이 성공하면,

  1. Access Token은 Response의 Header를 통해 클라이언트로 전달됩니다.
  2. Refresh Token은 사용자의 Cookie를 저장됩니다.
  3. 전달된 Access Token은 사용자의 Local Storage에 저장됩니다.
  4. 클라이언트에서는 저장된 Access Token을 통해 사용자의 정보를 추출 및 관리합니다
참고

OAuth2.0 (Naver + Google)

참고

Monitoring

배포한 서비스의 상태를 체크하기 위해 모니터링 시스템을 구축했습니다.

Monitoring Archi

Prometheus는 서버의 각종 metric을 수집하는 시계열 DB이고, Grafana는 수집된 시계열 데이터를 시각화합니다. 여기서 사용한 Grafana 템플릿은 Spring Boot 3.x Statistics입니다.

spring Boot에서 제공하는 Actuator 모듈을 활용하여 Prometheus가 애플리케이션의 각종 metric을 수집하는 과정을 간단히 구현했습니다.

Monitoring

참고

MSA

교육 시간에 배운 SpringCloud를 이용하여 MSA 방식의 서비스 구조를 구현했습니다.

아키텍처는 아래와 같으며, 도커를 이용해 컨테이너화하여 AWS EC2에 배포했습니다.

application.yml, docker-compose, 배포 과정 등의 설명은 Tiary-MSA-Guide에서 보실 수 있습니다.

Architecture

참고

Comments