· inner-circle

Spring Boot (Kotlin, Gradle) + Docker 를 AWS 배포해보자

컨테이너 서비스를 비교해 Fargate를 고른 이유부터 시작해, JWT 검증용 레디스 캐시와 외부 통신(NAT), 이미지 관리, 상태 점검을 하나씩 붙여가며 배포 자동화와 클라우드 구조를 키워간 설계 기록.

작성날짜: 24.08.29 (업데이트 날짜: 24.09.11)

상황

  • 커머스 서비스와 동일하게 Fargate 이용한 배포 진행
  • 가격 효율

컨테이너 서버 비교

image

배포 자동화 초기 설계 (커머스 관리자 서비스 기준)

담당 서버 개발 파트가 관리자이기에 관리자 기준으로만 생각 (관리자 서비스는 별도 배포 구축)

image

추가 구성 필요

  • AWS CloudWatch
  • 배포 완료 알림 구축

🚚… 이어서

클라우드 구조를 설계해보자

커머스 팀프로젝트와 별개로 개인적으로 관심있어 설계를 진행했습니다! 🔥

1. 커머스 프로젝트의 요청 프로세스를 살펴보자

image
  • 여기서 인증 요청 처리는? 클라우드 기술로만으로 해결 시도
  • 인증 이외에도 CSRF 키 처리도 가능

2. 본격적으로 설계해보자

image
  • 뭔가 부족하다. 단순히 JWT 검증만 진행?
  • 별도의 캐시 데이터로 처리하고 싶음
  • 추가로 내부 서비스가 외부 서비스와의 통신이 필요한 경우는?

3. 캐시, 외부 통신 구조를 더해보자

image
  • 이렇게 되면 토큰 검증은 레디스
  • 외부 통신은 NAT 를 이용해 하게 됨
  • 프로젝트에서 이미지 관리도 필요! 다시 설계해보자

4. 이미지 관리 기능을 더하다

image
  • 정답은 없지만, CDN 역할과 정적 컨텐츠 관리를 추가
  • 이미지 URL을 위한 도메인 설정까지 진행

5. 내부 서비스의 상태를 알고 싶다

image
  • CloudWatch를 이용해보자

회고

  • 설계에는 정답이 없지만 기본적인 AWS 기능을 최대한 공부해서 설계를 진행
  • 설계하는 과정에서 시스템 구조 전반적인 인프라 지식을 획득 할 수 있었음
  • 다음에는 실제 클라우드 상 설계한 구조로 배포를 해보자

참고문헌