SAA 자격증 시험을 준비하면서 최종 프로젝트 아키텍처에서 프론트엔드 서버 구성을 더 효율적으로 개선할 수 있다는 걸 알게 됐다. 그래서 이번 글에서는 공부했던 내용을 토대로 아키텍처를 보완해보려 한다.
이 아키텍처의 흐름을 정리해보면 다음과 같다.
1. CI/CD 파이프라인
2. IaC
3. 클러스터 및 노드 구성
4. 보안
5. 정적 데이터 및 데이터베이스
6. 모니터링 및 알림 시스템
기존에는 프론트엔드(WEB) 어플리케이션을 EKS 내부 Pod에서 실행했지만, React 어플리케이션은 정적 자산이기 때문에 EKS pod에서 실행할 필요가 없다. S3 정적 호스팅 + CloudFront 구조로 전환하는 것이 더 효율적이다.
사용자는 오직 CloudFront + S3로 배포된 정적 웹 앱에 접근하며, 웹 앱이 동적으로 백엔드 API를 호출한다.
사용자 ─▶ CloudFront (정적 자산) ─▶ S3 (React)
↓
웹 앱에서 동적 API 요청 발생
↓
ALB ─▶ 백엔드 서버 (EKS)
↓
RDS 등 데이터 계층
CloudFront 오리진 구성
/api/*
같은 API 요청 전용 경로를 처리이를 위해 CloudFront에서 오리진 기반 라우팅 설정을 사용하여 경로별로 요청을 분기 처리한다.
보안 구성
바뀐 부분을 중심으로 하여 구상도를 다시 만들어보았다. 하나하나 세세하게 반영하면 너무 오래 걸려서....
이번 글에서는 파이널 프로젝트 당시 구성했던 아키텍처를 기반으로 전체 시스템을 재구성해보았다. 당시에 인프라를 CloudFormation으로 관리했는데, Terraform을 활용하지 못한 점이 아쉬움으로 남았다. 남은 기간 동안 Terraform을 좀 더 공부해서 Terraform 기반으로 아키텍처를 다시 배포해보아야겠다.