| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- EKS 클러스터
- Kubernetes
- 메탈LB
- 그라파나 대시보드
- SAA 합격 후기
- 로드밸런서 컨트롤러
- livenessPorbe
- 딥레이서
- kubernetes 동작 원리
- EFS CSI Driver
- 그라파나 시각화
- 쿠버네티스 컴포넌트
- helm
- blue-green
- AWS 딥레이서
- Aurora cluster
- 쿠버네티스
- LoadBalancer Controller
- Firelens
- github action 사용법
- Solution Architecture
- grafana on kubernetes
- jenkins
- 깃허브 액션
- Kubernets on Jenkins
- 딥레이서 보상함수
- headless service
- 솔데스크
- terraform
- Prometheus install
mingming
ECS 컨테이너 서비스 인프라 구축 및 Codepipeline 배포 자동화 본문
Architecture

아키텍쳐 소개
ECS를 이용한 컨테이너 기반의 웹 애플리케이션 인프라 구축 아키텍쳐입니다. 모든 내부 통신은 VPCE를 통한 private link를 이용해 이루어지며, Bastion Host를 통해 DB 유지보수 및 내부 관리가 가능합니다.
요구사항
1. 유연한 확장 가능한 인프라 구축
2. 각 계층별 적절한 보안 대책
3. CI/CD 파이프라인 구축을 통한 배포 자동화
BaseInfra
1. Terraform을 통한 인프라 구축
Terraform은 코드형 인프라 도구로서 서버 운영 및 관리를 자동화할 수 있고, 배포 속도가 빠르며, 리소스 관리에 용이하고, 다양한 Provider를 제공해 호환성이 좋습니다.
s3 버켓 Backend 설정을 통해 상태저장파일을 안전하게 저장할 수 있습니다.
2. 트래픽 흐름

클라이언트가 웹 애플리케이션에 접속하게 되면 외부에 공개되어 있는 Frontend ALB에 트래픽이 전달되고, Frontend-app 에 트래픽이 라우팅됩니다. 내부설정에 의해 BackendHost로 등록되어 있는 Backend ALB로 트래픽이 전달되고, Backend-app으로 라우팅 되어 웹 애플리케이션이 클라이언트에게 제공됩니다.
3. 보안그룹


이중보안그룹을 이용해 트래픽을 제한 했습니다. 총 6개의 보안그룹을 생성하고 인바운트 규칙 source를 보안그룹으로 설정하여 불필요한 트래픽을 차단했습니다.
4. VPCE

VPC Endpoint를 통해 AWS 내부 리소스 접근시 Private Link로 안전하게 통신가능하도록 구현했습니다.
5. WAF Rule

Frontend에 연결된 ALB에 WAF Rule을 부착하여 보안을 강화합니다. 총 다섯개의 AWS Managed Rule을 사용했습니다.
| 분류 | 대상 관리형 규칙 | 설명 |
| AWS managed rule groups | Amazon IP reputation list | 봇이나 위험한 IP 차단하여 악성 액터가 취약한 애플리케이션을 발견하는 위험을 줄일 수 있습니다. |
| AWS managed rule groups | Anonymous IP list | 애플리케이션에서 자신의 ID를 숨기려고 하는 최종 사용자를 필터링 하는 경우 유용합니다. |
| AWS managed rule groups | Core rule set | OWSAP 에서 정의한 웹 취약점을 확인하고 차단하는데 유용합니다. |
| AWS managed rule groups | Known bad inputs | 악의적인 공격자가 취약한 애플리케이션을 발견할 위험을 줄일 수 있습니다. |
| AWS managed rule groups | SQL database | SQL injection을 막을 수 있습니다. |
APPLICATION


1. Frontend
Frontend는 Blitz.js를 이용한 Reack 웹 애플리케이션입니다. Blitz.js 는 Ruby on Rails를 목표로 개발된 풀 스택 React 프레임 워크 입니다. 내부 구성요소는 기본적으로 Next.js가 이용됩니다.
2. Backend
백엔드는 echo 프레임워크를 이용한 Go 언어 API 서버 입니다.
ECS CI/CD
1. ECS

태스크정의 생성, 생성된 태스크정의 기반으로 서비스를 생성합니다. 컨테이너 정의가 업데이트 되면 ControlPlane에서 해당 수정사항을 인지 후 컨테이너 배포를 지시합니다. 이때 ECR의 이미지를 가져와 컨테이너를 실행합니다.
2. AutoScaling

대상 추적정책을 생성해 CPU 평균 사용률 60% 이상이면 알람이 전송되고 정책에 맞게 스케일 아웃 되도록 설정했습니다.
부하테스트
Apache HTTP server benchmarking tool(ab)를 이용해 부하테스트를 진행합니다.
ab -n 1000000 -c 20 <backenddns>
100만건의 요청을 20개씩 백엔드로 전달하는 명령어 입니다.
3. BlueGreen deploy

Frontend는 ECS Task , Backend는 ECS Service로 구현했습니다. Frontend는 단일 태스크로 구성되어 있고, Backend는 Service로 구성되어 있습니다. CodeDeploy를 통해 블루그린 배포하도록 구성했습니다. CodePipeline에 의해서 변경 사항을 감지 되면 빌드가 시작되고 빌드된 결과물을 CodeDeploy를 통해 배포하게 됩니다.
4. CI/CD

현재 프로젝트에선 Backend만 CodePipeline을 이용한 CI/CD 파이프라인을 구축했습니다.
CodeSeries 에서 CodeBuild와 CodeDeploy는 각각 buildspec.yaml , appspec.yaml 파일에 의해서 실행됩니다.
해당 파일은 빌드와 배포 프로세스를 정의하는 파일입니다. 두 파일 모두 소스코드 레포지토리에 포함되어 있어야 합니다.
CodePipeline 작동 순서
1. 코드 커밋에 push가 되면 CloudWatch Events에 이벤트가 발행됩니다.
2. CloudWatch Events에 의해서 변경사항을 감지하고 CodePipeline이 시작됩니다.
3. 소스 스테이지 : CodeCommit 으로부터 소스 코드를 가져옵니다
4. 빌드 스테이지 : 소스 코드를 컴파일 하거나 빌드해 애플리케이션 또는 아티팩트를 생성합니다.
5. 배포 스테이지: 빌드된 애플리케이션을 ECS에 배포합니다.애플리케이션은 Blue/Green 방식으로 배포됩니다.
Firelens

1. Firelens
ECS 및 Fargate를 통해 실행되는 컨테이너 로그를 수집하고 전송 가공하는 기능을 제공하는 서비스입니다.
ECS 와 함께 사용할 수 있는 기본 로그 드라이버로 지원됩니다.
2. Fluent bit
로그데이터를 수집하고, 가공한 다음 원하는 대상으로 전송하는 역할을 수행합니다.
여러 로그 저장소 또는 분석 도구로 로그 데이터를 전송할 수 있습니다.
현재 프로젝트에서 Firelens를 통해 백엔드 컨테이너의 로그 라우팅을구성하고 Fluent bit를 통해 해당 로그정보를 S3 버켓에 저장하도록 구성했습니다.
Bastion

1. System Manager
ECS/Fargate Bastion 컨테이너를 구축해 인프라 내부를 및 DB 유지보수 할 수 있도록 했습니다. Amazon Linux2 를 베이스 이미지로하는 컨테이너 이미지를 생성 후 컨테이너를 실행해줍니다.
Session Manager을 통해 해당 컨테이너로 접속하며 IAM 사용자의 인증정보가 사용됩니다. System Manager를 통해 프라이빗 서브넷에 위치한 Bastion Container에 접속가능하게 됩니다.
GitHub - Minki-An/Terraform_ECS
Contribute to Minki-An/Terraform_ECS development by creating an account on GitHub.
github.com
'AWS Service' 카테고리의 다른 글
| AWS SCT & DMS 이기종 데이터베이스 마이그레이션 (0) | 2024.02.10 |
|---|---|
| MSA 리팩토링과 클라우드 마이그레이션 (4) | 2023.08.21 |
| 멀티 리전 & 하이브리드 환경 인프라 구축 (5) | 2023.08.09 |
| 솔데스크 Deepracer 경진대회 (0) | 2023.08.09 |