2024/12 19

[AWS] 솔루션 설계자 관점의 Serverless

Serverless서버리스 서비스를 사용하는 개발자는 서버를 관리할 필요가 없다.서버가 없다는 것이 아니라 관리할 필요가 없다는 뜻이다.원래 서버리스는 FaaS(Function as a Service)를 뜻했지만 지금은 더 많은 것을 의미한다. - 원격 관리되는 것을 모두 포함한다. - 데이터베이스, 메시징, 스토리지 등 서버를 프로비저닝 하지 않는 모든 것들을 포함한다.서버리스란, 서버가 없는 게 아니라 서버가 보이지 않거나 서버를 프로비저닝 하지 않는 것이다. Serverless in AWSAWS LambdaDynamoDBAWS CognitoAWS API GatewayAmazon S3AWS Kinesis Data FirehoseAurora ServerlessStep FunctionsFargateAWS..

[AWS] AWS's containers - AWS App2Container (A2C)

AWS App2ContainerJava 및 .NET 웹 애플리케이션을 Docker 컨테이너로 마이그레이션하고 현대화하는데 사용되는 CLI 도구이다.마이그레이션을 하고 싶다고 가정해 보면 이를 Lift-and-shift라고 하는데, bare metal, 가상 머신 등 온프레미스에서 앱을 실행한 후, AWS로 마이그레이션하는 방식이다.현대화를 가속화하되, 코드를 변경하지 않고 이러한 방식으로 레거시 앱을 아무 코드변경 없이 클라우드로 마이그레이션하는 것이다.컴퓨팅, 네트워크 등을 위한 CloudFormation 템플릿을 생성한다.또한 생성된 Docker 컨테이너를 Amazon ECR에 등록하며, ECS, EKS 또는 App Runner에 배포하도록 선택할 수 있다.사전 구축된 CI/CD 파이프라인도 지원한다..

[AWS] AWS's containers - App Runner

AWS App Runner완전 관리형 서비스로 규모에 따라 웹 애플리케이션, API 배포를 돕는다.  - 이 서비스로 누구나 AWS에 배포를 할 수 있다.인프라나 컨테이너, 소스 코드 등을 알 필요가 전혀 없다.  - 소스 코드나 Docker 컨테이너 이미지를 가지고 원하는 구성을 설정한다.  - vCPU의 수나 컨테이너 메모리의 크기 오토 스케일링 여부 상태 확인을 설정하면 된다.  - 웹 애플리케이션이나 API에 들어갈 기본 설정을 설정하는 것이다.다음 작업은 자동으로 이루어진다.  - App Runner 서비스가 웹 앱을 빌드하고 배포한다.  - 컨테이너가 생성되고 배포된다.API나 웹 앱이 배포된 다음엔 URL을 통해 바로 액세스할 수 있다.이처럼 배후에서 어떤 작업이 이뤄지는지 전혀 몰라도 배포..

[AWS] AWS's containers - EKS

Amazon EKSElastic Kubernetes Service의 약자이다.AWS에 관리형 Kubernetes 클러스터를 실행할 수 있는 서비스이다.Kubernetes는 오픈 소스 시스템으로 Docker로 컨테이너화한 애플리케이션의 자동 배포, 확장, 관리를 지원한다.컨테이너를 실행한다는 목적은 ECS와 비슷하지만 사용하는 API가 다르다.ECS는 오픈 소스가 아닌 반면 Kubernetes는 오픈 소스이고, 여러 클라우드 제공자가 사용하므로 표준화를 기대할 수 있다.두 가지 실행 모드가 있다.  - EC2 시작모드 : EC2 인스턴스에서처럼 작업자 모드를 배포할 때 사용한다.  - Fargate 모드 : EKS 클러스터에 서버리스 컨테이너를 배포할 때 사용한다.사용 사례  - 회사가 온프레미스나 클라우..

[AWS] AWS's containers - ECR

Amazon ECRElastic Container Registry의 줄임말이다.AWS에 도커 이미지를 저장하고 관리하는 데 사용된다.Docker Hub 등의 온라인 저장소를 활용하기도 하고, 이미지를 Amazon ECR에도 저장할 수 있다.두 가지 옵션이 있다.  - 첫 번째 : 계정에 한해 이미지를 비공개로 저장하는데 여러 계정으로 설정할 수 있다.  - 두 번째 : 퍼블릭 저장소를 사용해 Amazon ECR Public Gallery에 게시하는 방법이 있다.ECR은 Amazon ECS와 완전히 통합되어 있고, 이미지는 백그라운드에서 Amazon S3에 저장된다.ECR 저장소에 여러 도커 이미지가 있는데 ECS 클러스터의 EC2 인스턴스에 이미지를 끌어오기 위해서는 EC2 인스턴스에 IAM 역할을 지정..

[AWS] AWS's containers - ECS 솔루션 아키텍트

Amazon ECS를 사용할 때, 접할 수 있는 몇가지 솔루션 아키텍처에 대해 알아보자. ECS tasks invoked by Event Bridge첫 번째는 EventBridge에 의해 호출된 ECS 태스크이다.예를 들어, Amazon ECS 클러스터가 있고, 그걸 AWS Fargate가 지원하고 있다. S3 버킷이 있고, 사용자들은 객체들을 우리 S3 버킷에 업로드할 것이다. 이 S3 버킷은 예를 들어 Amazon EventBridge와 통합되어서 모든 이벤트를 전송할 수있다. 그리고 Amazon EventBridge는 항상 ECS 태스크를 실행하기 위한 규칙을 갖고 있을 수 있다. 이제 ECS 태스크가 생성될 것이고, 그것에 관련된 ECS 태스크 역할이 있을 것이다. 태스크 자체로부터 직접 객체를 ..

[AWS] AWS's containers - ECS Service Auto Scaling

ECS Service Auto Scaling태스크 수를 자동으로 늘리거나 줄일 수 있다.ECS 서비스의 CPU 사용률을 확장할 수 있고, 메모리 사용률 즉 ECS 서비스의 RAM이나 ALB 관련 지표인 타겟당 요청 수를 확장할 수 있다.세 개의 지표만 기억하면 다양한 오토 스케일링을 설정할 수 있다.특정 타겟을 추적하는 대상 추적(Target Tracking) 스케일링이나 단계(Step) 스케일링 혹은 ECS 서비스 확장을 설정하는 예약(Scheduled) 스케일링 등이 있다.EC2 시작유형이라면 태스크 레벨에서의 ECS 서비스 확장이 EC2 인스턴스 클러스터의 확장과 다르다는 사실을 기억해야 한다.따라서, EC2 오토 스케일링이 필요하지 않다면, 백엔드에 EC2 인스턴스가 없다면 Fargate를 사용하..

[AWS] AWS's containers - ECS

Amazon ECS(Elastic Container Service)AWS에서 컨테이너를 실행하면 ECS 클러스터에서 ECS 태스크를 실행하는 것이다.EC2 Launch 유형으로 EC2 클러스터를 사용할 때는 인프라를 직접 프로비저닝하고 유지해야 한다.ECS 및 ECS 클러스터가 여러 EC2 인스턴스로 구성되는데, ECS 인스턴스는 특별하게 각각 ECS Agent를 실행해야 한다.그럼 ECS 에이전트가 각각의 EC2 인스턴스를 Amazon ECS 서비스와 지정된 ECS 클러스터에 등록한다.이후에 ECS 태스크를 수행하기 시작하면 AWS가 컨테이너를 시작하거나 멈출 것이다. - 즉, 새 도커 컨테이너가 생기면 도식에서 볼 수 있듯 시간에 따라 EC2 인스턴스에 지정될 것이다.ECS 태스크를 시작하거나 멈추면..

[AWS] AWS's containers

What is Docker?도커는 앱 배포를 위한 소프트웨어 개발 플랫폼이고, 컨테이너 기술이다.컨테이너에 앱이 패키징되는데 컨테이너는 표준화되어 있어서 아무 운영체제에나 실행할 수 있다.앱이 컨테이너에 패키징되면 어느 운영체제에서든 같은 방식으로 실행된다.행위 특성도 예측 가능해서 작업을 덜어주고 유지 및 배포가 쉽고 언어, 운영체제, 기술에 상관 없이 실행이 가능하다.사용 사례  - 마이크로서비스 아키텍처가 있다.  - 온프레미스에서 클라우드로 앱을 리프트-앤-시프트하기도 하고 컨텐이너를 실행하는 어떤 경우에도 사용할 수 있다. Docker on an OS도커는 운영체제에서 어떻게 작동할까?우선 서버가 있고, EC2 인스턴스를 예를 들었는데 어떤 유형의 서버든 똑같다.도커 에이전트를 실행하면 도커 컨..