AWS/AWS

[AWS] 컨테이너

코딩하는 도람쥐 2025. 5. 19. 11:14
728x90
반응형

1. 컨테이너란? 

애플리케이션 + 실행환경(라이브러리, 설정)을

하나로 묶어 격리된 상태에서 실행되는 가벼운 가상화 기술 

 

2. 특징   

-      경량화: VM에 비해 가볍고 빠름 (훨씬 적은 리소스 사용)

-      독립적: 작은 서비스 단위로 나누어 독립적으로 개발/배포 가능

-      충돌 방지: 이미지 안에 라이브러리 (버전 포함), 실행에 필요한 OS패키기

-      이식성: 개발환경, 테스트환경, 운영환경에서 동일하게 동작

-      배포, 자동화에 최적화: CI/CD와 연계 

-      확장성, 탄력성: Auto Scaling

 

3. 주요 구성 요소 

 

  • 이미지(Image)
    실행 가능한 컨테이너의 템플릿. 애플리케이션 코드, 라이브러리, 설정이 담긴 파일.
  • 컨테이너(Container)
    이미지를 기반으로 실제 실행 중인 인스턴스.
  • 레지스트리(Registry)
    이미지 저장소. Docker Hub, AWS ECR, Google Container Registry 등

✔️ 컨테이너화 

애플리케이션, 라이브러리, 설정 등을 하나의 컨테이너 이미지로 만들어 실행 가능한 상태로 만드는 과정.


 

4. 대표적인 컨테이너 기술 

✔️ Docker

이미지 생성, 실행, 배포 등 컨테이너 플랫폼 

이미지 빌드 -> 컨테이너 실행 -> 이미지 배포, 관리

 

✔️ Kubernetes (K8s)

컨테이너 관리 플랫폼. 컨테이너 오케스트레이션 도구 


✔️ AWS ECR

AWS 컨테이너 이미지 저장소

 

✔️ AWS ECS 

AWS 자체 컨테이너 오케스트레이션 서비스

여러 노드에 컨테이너 자동 배포, 스케일링, 서비스 복구, 네트워킹, 로드밸런싱 등 

 

✔️ AWS Fargate 

서버리스 방식의 컨테이너 실행 서비스 

 

✔️ AWS EKS 

AWS의 관리형 쿠버네티스 서비스 


 

5. AWS 기반 컨테이너 

 

✔️ Amazon ECS (Elastic Container Service)

-      AWS에서 제공하는 자체 관리형 컨테이너 오케스트레이션

-      Docker 컨테이너 실행, 배포, 관리

-      Fargate 또는 EC2 기반 실행 선택 가능

-> Fargate: 서버 없는 방식. 컨테이너만 정의하면 AWS가 인프라 관리

 

✔️ Amazon EKS (Elastic Kubernetes Service)

-      완전 관리형 쿠버네티스 서비스

-      쿠버네티스를 직접 설치/운영하지 않고도 클러스터 구성 가능

-      표준 K8S 워크로드 실행

-      Fargate, EC2 실행 가능

 

✔️ AWS Fargate

-      서버리스 컨테이너 실행 환경

-      ECS/ EKS와 통합 사용 가능

-      인프라x 컨테이너만 정의하면 자동 실행.

-       API Gateway → Fargate

 

✔️ Amazon ECR (Elastic Container Registry)

-      AWS에서 제공하는 Docker 이미지 저장소

-      도커처럼 컨테이너 이미지를 Push/Pull 가능

-      ECS, EKS, CodePipeline과 통합 쉬움

 


✔️  AWS로만 컨테이너 운영: ECS + Fargate

 

서버 리스 백엔드에서 컨테이너 사용 

기존방식:  .zip 배포 대신 도커 이미지로 Lambda 함수 실행

AWS Lambda + ECR 

ECS + Fargate + ECR 

 

✔️구현 순서 

1.    Docker file 작성

애플리케이션 + 라이브러리 -> 이미지 구성

2.    이미지 빌드 & ECR 푸시

3.    Lambda 함수 생성

이미지 URL를 이용해서 람다가 해당 이미지를 가져와서(ECR) 실행

4.    API Gateway 연결

 


 

✔️  동작 흐름 

사용자 -> API Gateway -> 람다함수 (Docker 이미지 기반) -> ECR에서 이미지를 가져와서 실행(최초1회만) -> 코드 실행 후 응답 반환

 

 

사용자

 ↓

API Gateway

 ├─> Lambda (간단한 로직 처리, 인증 등)

 └─> ECS Fargate (컨테이너 기반 복잡 연산, Go 서버 등)

             ↓
         RDS Proxy → Aurora MySQL (DB 접근)

 

✔️ API Gateway → ECS (Fargate)

  • 기존 Lambda 대신 컨테이너화된 백엔드 애플리케이션 실행
  • ECS Fargate가 서버리스 방식으로 컨테이너 실행/스케일링, 인프라 관리 자동화
  • Docker 이미지 형태로 코드+라이브러리+환경 포함
  • 복잡한 비즈니스 로직, 긴 실행 시간, 메모리 무제한 설정 등 Lambda 한계 극복

✔️ ECS (Fargate) → RDS Proxy → Aurora MySQL

 

 


 

728x90
반응형