본문 바로가기

CloudFront CloudFront 는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 AWS 의 CDN 서비스이다. 전 세계 주요지역에 CloudFront POP(엣지 로케이션) 이 위치하고 있어 해당 캐시 서버에서 오리진(EC2 인스턴스나 ELB, S3 버킷 등) 의 파일을 받아 클라이언트에게 빠르게 응답하는 기능을 한다. 캐시 서버는 오리진(origin)으로부터 파일을 캐시하고 나면 해당 파일이 수정되기 전까지는 오리진에 연결하지 않고 빠르게 클라이언트에 응답할 수 있다. CloudFront 는 이미지나 동영상 등의 리소스가 보관된 S3 를 오리진으로 설정하는 것이 일반적이며, 운영시 꼭 필요한 서비스 중 하나이다. CloudFront 의 설정..
Amazon EKS Amazon EKS 는 AWS 에서 Kubernetes 를 손쉽게 실행하도록 하는 관리형 서비스이다. EKS 는 여러 가용 영역에서 Kubernetes 제어 플레인 인스턴스를 실행하고 관리하여 고가용성을 보장한다. 또한 오픈 소스 Kubernetes 소프트웨어의 최신 버전을 실행하므로 Kubernetes 의 모든 기존 플러그인과 도구를 사용할 수 있다. EKS 는 ECR, ELB, IAM, VPC 등의 AWS 서비스와도 통합되어 확장성과 보안을 제공한다. 아래는 EKS 를 사용하여 어플리케이션을 배포하는 일련의 플로우이다. 클러스터의 VPC / IAM / Security Groups 생성로컬에 AWS CLI / kubectl / IAM Authenticator 설치EKS 클러스터 생성kubeconfig ..
AWS VPC 시나리오 AWS 에서 VPC 마법사로 생성할 수 있는 VPC 시나리오로 다음의 4가지를 제공한다.public 서브넷만 있는 VPCpublic 및 private 서브넷이 있는 VPCpublic 및 private 서브넷이 있고 VPN 액세스를 제공하는 VPCprivate 서브넷만 있고 VPN 액세스를 제공하는 VPC 이 4가지의 VPC 구성을 알고나면 어떤 커스텀 VPC 구성도 가능하다. 하나씩 살펴보자. 1. public 서브넷만 있는 VPC 위 그림에는 다음 정보가 포함된다.vpc : 10.0.0.0/16public subnet : 10.0.0.0/24ec2 : 10.0.0.6 (EIP: 198.51.100.2)router : 10.0.0.0/16(local), 0.0.0.0/0(igw-id)internet ga..
CodeStar 특정 프로그래밍 언어로 개발/빌드/배포 환경을 미리 구성된 템플릿을 사용하여 빠르게 구축해 주는 서비스이다. 예를 들어, Laravel 로 PHP 개발을 하려 한다면, EC2 / Git / CodeBuild / CodeDeploy / CodePipeline 등을 미리 구성해 주며 git 에 push 만 하면 자동 배포되어 결과를 확인할 수 있다. 그리고 제공되는 대시보드에서 프로젝트의 개발/빌드/배포 등의 이벤트 현황을 즉시 확인할 수 있다. 아무래도 미리 준비된 템플릿으로 빠르게 구성되는 장점은 있지만, 언어나 프레임워크의 버전, 서버종류 등의 선택이 제한적인 단점 때문에 사용할 일이 있을지는 모르겠다. CodeStar 는... CodeStar 는 AWS 를 기반으로 애플리케이션을 빠르게 개발, 빌드,..
ECS with gradle 개발 중에는 Java + Gradle 프로젝트에서 결과물을 확인하기 위해, ssh 플러그인을 사용해 개발 서버에 배포하고 있다. 실서버 ECS 배포를 위해 이미지를 만들고 ECR 에 푸시하고 Task 를 배포하는 플러그인이 있나 열심히 검색해 보았으나, 음... 생각만큼 지원이 덜 되어 있는거 같아 그냥 AWS Cli 명령으로 도배했다. 난 포기했지만 생각 있으면 써보시길... 'com.bmuschko.docker-remote-api''com.patdouble.awsecr' build.gradle 로 처리하려는 것들을 나열해 봤다. 인스턴스 수량 증가Docker 이미지 빌드기존 ECR latest 이미지 태그 변경 -> backup이미지 ECR 로 푸시서비스 업데이트 (배포)인스턴스 수량 감소 이 모든걸..
ECS logs / alarms ECS 를 사용하면 인스턴스에 docker / ecs / container 등에 대한 로그가 생성된다. CloudWatch Logs 로 로그 정보를 전송하면 컨테이너의 로그 용량 관리를 하지 않아도 된다. 인스턴스에서 CloudWatch Logs 에 로그 정보를 전송하도록 구성할 수도 있지만, 인스턴스 수 조정이 빈번하다면 해당 에이전트를 계속해서 설치하고 구성하는 것이 번거로울 수 있다. 이 경우에는 ECS 의 Task 정의에서 awslogs 로그 드라이버를 활성화하여 CloudWatch Logs 를 설정하는 방법이 있다. Awslogs 설정 CloudWatch Logs 에 로그를 쌓기 위해서는 로그가 분류될 로그 그룹을 만들어야 한다. CloudWatch 콘솔이나 AWS CLI 를 사용하던지 간편하게..
ECS Deployment strategy 배포 자동화 스크립트를 만들기 전에 가장 궁금했던 것은 배포 전략(?) 이었다.예를 들어 로드 밸런서에 인스턴스 2 대를 운영 중이라면, 3 가지 정도의 배포 방법을 생각할 수 있다. 인스턴스를 2 대 이용할 경우, A 인스턴스를 중단하고 새로 배포 후, B 인스턴스를 중단하고 새로 배포하는 방법이 있을 수 있다.인스턴스를 2 대에서 2 대를 추가할 경우, C/D 인스턴스에 새로 배포 후, A/B 인스턴스를 중단하는 방법이 있을 수 있다.인스턴스를 2 대에서 1 대를 추가할 경우, C 인스턴스에 새로 배포 후에, A 나 B 인스턴스를 중단하든 그 반대로 하든... 아무튼... Service 설정에 보면 Replica 전략에서 배포구성에 관한 옵션이 두가지 있다. minimumHealthyPercent 와..
ECS 배포 드디어 ECS 마지막 단계인 배포다. ㅋㅋ 지금까지 Docker Image 를 만들었고, Docker Image 를 ECR 에 푸시했고, 해당 이미지를 Task 정의에 할당했고, Task 정의를 Cluster 의 인스턴스에서 실행해 보았다. 제목의 ECS 배포란 말은 Cluster 의 인스턴스에서 Task 정의를 실행한 것을 말한다. 정확한 표현으로는 단지 Task 실행이다. ^^ 이미 Task 정의를 Cluster 에서 직접 시켜봤으니 사실상 배포를 해 본 셈이다. 실제 웹서버 운영이라면 Auto scaling 이나 Load Balancing 을 붙이게 되는데 이것은 Cluster 의 Service 를 생성하여 설정할 수 있다. * Service 가 해주는 일- Auto scaling 이나 Load B..