To-Do-List 웹 사이트를 Amazon EKS와 DynamoDB를 사용하여 구축하는 사례
개요
이 프로젝트는 Amazon EKS(Amazon Elastic Kubernetes Service)를 활용하여 확장 가능하고 관리 가능한 To-Do-List 웹 애플리케이션을 구축하는 것입니다. 이 애플리케이션은 사용자로부터 할 일 목록을 받아 DynamoDB에 저장하고, 웹 인터페이스를 통해 목록을 관리할 수 있도록 설계됩니다.
구성 요소
- Amazon EKS 클러스터: Kubernetes 클러스터를 사용하여 애플리케이션을 컨테이너로 배포하고 관리합니다.
- DynamoDB: NoSQL 데이터베이스인 DynamoDB를 사용하여 To-Do 목록 데이터를 저장하고 검색합니다.
- AWS Load Balancer Controller: 외부 트래픽을 애플리케이션에 전달하기 위한 로드 밸런서를 관리합니다.
- AWS Fargate: EKS에서 관리하는 서버리스 컴퓨팅 서비스로, 애플리케이션 컨테이너를 실행합니다.
- CloudWatch 및 Container Insights: 애플리케이션 모니터링과 로그 수집을 위해 사용됩니다.
- Frontend (React 또는 Angular): 사용자가 To-Do 목록을 관리할 수 있는 웹 인터페이스를 제공합니다.
구축 단계
- EKS 클러스터 설정
- AWS Management Console에서 EKS 클러스터를 생성하고, 필요에 따라 노드 그룹을 구성합니다.
- Fargate를 사용하여 서버리스 클러스터 환경을 구성합니다.
- DynamoDB 테이블 생성
- To-Do 항목을 저장할 DynamoDB 테이블을 생성합니다.
- 테이블의 기본 키로
user_id
와 task_id
를 설정하여 사용자의 각 할 일 항목을 고유하게 관리합니다.
- 백엔드 API 개발
- Python(Flask) 또는 Node.js(Express)를 사용하여 API를 개발합니다.
- 이 API는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 처리하며, DynamoDB와 통신하여 데이터를 저장하거나 검색합니다.
- 프론트엔드 개발
- React 또는 Angular를 사용하여 사용자가 To-Do 항목을 추가, 수정, 삭제할 수 있는 웹 인터페이스를 개발합니다.
- 프론트엔드는 백엔드 API와 통신하여 데이터를 주고받습니다.
- 컨테이너화 및 배포
- 프론트엔드와 백엔드 애플리케이션을 각각 Docker 컨테이너로 빌드합니다.
- 이 컨테이너 이미지를 Amazon ECR(EKS 클러스터용 Docker 레지스트리)에 푸시합니다.
- Kubernetes 매니페스트 파일(Deployment, Service)을 작성하여 EKS 클러스터에 애플리케이션을 배포합니다.
- 로드 밸런서 및 네트워킹 설정
- AWS Load Balancer Controller를 사용하여 외부 트래픽을 처리할 로드 밸런서를 생성하고 설정합니다.
- 적절한 Ingress 리소스를 사용하여 웹 애플리케이션의 외부 접근을 허용합니다.
- 모니터링 및 로깅 설정
- Amazon CloudWatch와 Container Insights를 설정하여 애플리케이션의 성능과 로그를 모니터링합니다.
- 문제가 발생할 경우 경고를 설정하여 빠르게 대응할 수 있도록 합니다.