AWS의 컨테이너 서비스인 Amazon ECS를 이용해 손쉽게 애플리케이션 배포하기
<1> 컨테이너
<2> 컨테이너 기반 기술?
<3> 도커
<4> 컨테이너 오케스트레이션
<5> AWS 컨테이너
<6> ECS 서비스는?
<7> 컨테이너 로그 수집 : AWS FireLens
<8> ECS 실습
<1> 컨테이너
1
애플리케이션이 컴퓨팅 환경에서 실행하기 위해 필요한 코드와 모든 의존성을 패키징 한 소프트웨어 단위
2
컨테이너 = 코드, +디펜던시 + 런타임 엔진
3
가상 머신과 컨테이너 비교
가상 머신
App
Bins/libs
guest OS
하이퍼바이저
호스트 OS
서버
컨테이너
App
Bins/libs
도커
호스트 OS
서버
도커의 경우 가상 머신보다 적은 스택을 가지게 된다.
가상 머신의 경우 각각 커널이 존재하므로 부트스트랩 과정을 거쳐 도커보다 느리다.
컨테이너 환경에서는 애플리케이션 구동 시간만 필요하기 때문에 빠르고 가볍다.
<2> 컨테이너 기반 기술?
1
Container Runtime
컨테이너는 런타임을 통해 리눅스 기술들을 추상화해 제공한다.
2
리눅스 커널을 공유한다.
3
기반이 되는 기술 3가지?
Namespace 기술 - 파일 시스템 마운트, 네트워크 , 유저, 호스트네임에 대해 프로세스를 격리한다.
Contraol Group (C group) 기술 - C Group을 통해서 자원에 대한 제어를 한다. 메모리, cpu, io , network 제어
Union Filesystem 기술 - 서로 다른 파일 시스템이나 디렉터리를 합쳐서 컨테이너에 제공한다.
<3> 도커
1
도커는 컨테이너를 사용하기 쉽게 한 컨테이너 한 종류.
2
Docker?
경량의 컨테이너 가상화 기술.
<4> 컨테이너 오케스트레이션
사용자가 원하는 상태 ( Desired)로 동작하도록 관리하는 것
1
구성?
컨테이너
컨테이너 런타임
호스트 OS
컨테이너
컨테이너 런타임
호스트 OS
컨테이너
컨테이너 런타임
호스트 OS
2
배포?
내부/외부 통신?
시크릿 관리?
3
컨테이너 오케스트레이션 구조?
관리자 --------컨트롤 플래인 ------ 데이터 플래인 구조이다.
사용자가 원하는 상태 ( Desired)로 동작하도록 관리하는 것
<5> AWS 컨테이너
1
관리?
ECS , EKS
2
컨테이너가 실행되는 곳?
EC2 , AWS Fargate
3
구성 4 가지?
ECS - EC2
ECS-Fargate
EKS- EC2
EKS -Fargate
<6> ECS 서비스는?
1
컨테이너 애플리케이션을 쉽게 실행, 확장 및 보호를 할 수 있는 컨터이너 오케스트레이션 서비스이다.
2
ECS 구성요소?
Task - 컨테이너의 최소 실행 단위
Serivce - 필요한 태스크 수를 유지, ELB와 연동되어 외부로 서비스 노출을 한다.
Cluster - 태스크가 실행되는 논리적 그룹
3
작업 (Task)?
ECS에서 최소 실행 단위.
작업 정의 내용을 기반으로 인스턴스 및 파 게이트에 배포
한 작업당 최대 10개 컨테이너 가능
4
작업 정의 (Task Definition)?
ECS에서 컨테이너를 실행하려면 작업 정의가 필요.
작업 크기 설정 가능
5
서비스?
설정한 작업 수를 자동 유지 및 복구
서비스 유형, 작업 배치 전략
롤링 업데이트, 블루/그린 배포
ALB를 통한 부하 분산
auto Scaling 적용
6
ECS와 EC2 Auto Scaling그룹?
클러스터 생성
ASG 생성
인스턴스 시작
작업 수행
7
보안 접근 설정은?
구성?
ALB----------ECS--------- Aurora Mysql
설정?
ALB 보안 그룹 - 80, 443 만 접근
ECS 보안 그룹 - ALB에서만 접근
Aurora Mysql 보안 그룹 - ECS에서만 접근
8
스크릿 관리?
ECS ------ Aurora Mysql 접근 시 사용
AWS Secret Manager를 사용한다.
디비 접근 정보를 암호화한다.
9
ECR?
컨테이너 레지스트리.
이미지 취약성 스캐닝 기능
10
AWS 개발 툴?
IDE?
Cloud9
Source / artifact?
AWS CodeCommit
AWS CodeArtifact
Build?
AWS CodeBuild
Test?
AWS CodeBuild + 서드파티 제품
Deploy?
AWS CodeDeploy
Monitor?
AWS X-Ray , Amazon CloudWatch
CloudWatch Container Insights (컨테이너 레벨의 지표, 알람 수신 등 가능)
<7> 컨테이너 로그 수집 : AWS FireLens
ECS나 EKS에서 모두 사용 가능.
<8> ECS 실습
http://ecs.catsdogs.kr.s3-website.ap-northeast-2.amazonaws.com/ko/
https://catalog.us-east-1.prod.workshops.aws/workshops/8c9036a 7-7564-434c-b558-3588754e21f5/en-US
Amazon ECS Hands-on Lab. pdf
다음 과정
https://brunch.co.kr/@topasvga/2690
https://brunch.co.kr/@topasvga/2678
감사합니다.