brunch

You can make anything
by writing

C.S.Lewis

by Master Seo May 29. 2021

2탄-(AWS속성과정) AWS ECS 시작하기 3/4

인프라 운영은 가상 서버에서 컨테이너 기반 운영으로 변경되고 있다.

AWS에서 컨테이너 서비스는 ECS와 EKS가 있다.


그중 , ECS를 알아보고 서비스를  빠르게 구축해 보자.

유튜브 삼성전자 ECS

삼성전자 https://www.youtube.com/watch?v=_wyndTR95fU&t=15s



서버를 비용적인 측면에서 보자?

람다 - 저렴  - 왜?  이벤트가 있을 때만 사용된다. 사용한 만큼만 지불한다.  이미지 변환

ECS - 작업자 서버(호스트 서버, 워커 노드) 위에서 컨테이너가 돌아간다. 작업자 서버는 3대? , 작업자 서버 안에서 30대 운영, MEM 500M

EC2 - 가상 서버이다. 1대 , MEM 500G

온디맨드 - 온프라미스 서버 , 일반 IDC 물리 서버 , 비싸다.








운영?

람다 - AWS에서 대부분 관리해준다. 운영자가 관리할 건 코드?

ECS - OS까지는 AWS에서 관리해준다. 우리는 미들웨어나 애플리케이션만 관리하면 된다.

EC2 - OS부터, 미들웨어, 애플리케이션을 운영자가 관리한다.

온디맨드 - 하드웨어 네트워크부터 모두 운영자가 관리한다.







라이트 세일 - 웹 기반으로 개인이 간단하게 서비스를 운영할 수 있게 해주는 서비스.

개념은 알아야 사용 가능하다.

서버, DNS , 로드 밸런서, CDN , 스토리지 등 개념을 알아야 구축한다.







람다

서버리스 컴퓨터이다.  서버 리스는 서버가 없다는 게 아니다. 서버는 있고 관리할 게 없다는 것이다.

AWS에서 관리해주는 서버이다.

저렴한  서비스?

기본 적으로는 저렴하다.

그러나, 사용량에 따라(호출)에 따라  과금되므로 코드를 잘못 짜서 과다 사용하게 되면 비용이 많이 나온다.

1백만 건당 0.2 달러







AWS에 컨테이너 기반 서비는 EKS와 ECS가 있다.

EKS가 더 활용 폭이 넓다. 단지 좀 복잡하므로 사용법을 익히기는 어렵다. 요즘은 다들 EKS 사용한다.

ECS는 빠르게 서비스를 올릴 수 있다. AWS에 종속되어 운영될 수 있다.






EC2 서버 운영에는 2가지가 존재한다.

호스트 서버를 EC2에서 운영하는 방식 - 사용자가 호스트 서버 생성 운영 , 증가 , 감소 시킴

호스트 서버를 AWS에서 운영하는 Faegate 방식 - AWS가 호스트 서버를 자동 관리해줌. 돈만 내면 됨. 일부 제약.







외부에 모든 노출 서비스는 로드밸런서를 이용한다.

ECS도 마찬가지이다.

로드 밸런서 ------- 서버 (EC2) 기반으로 구성된다.







Application Load Balancer?  =  L7 로드 밸런서

ECS Cluster?  = 호스트 서버, 워커 노드, 작업자 노드라고도 한다. 컨테이너 이미지가 올라간다.

워커 노드 1대에 도커 컨테이너 이미지가 10대 이상 올라간다.  서버가 10개 이상 올라가는 것이다.













순서?

개발자가 개발을 해서 도커 이미지를 만든다.

도커 이미지를 저장소인 리파지토리에 올려놓는다. ECR이라고 한다.

어떤 작업을 할지 정한다. Task , 웹서비스, DB서비스 등 정함. 컨테이너 용량 정함

ECS Cluster를 생성한다.  호스트 서버, 작업자 서버를 생성하는 것이다.

서비스를 연결한다. AWS에서는 로드밸런서 연결하는 것을 서비스라고 한다. 외부 사용자가 접속해서 서비스하는 거라 그렇게 부르는 거 같다.  인그래스 = 유입 = L7 로드 밸런서를 인그래스라고 한다.




도커 빌드하는 법은 따로 도커 책을 사서 보기 바란다.


도커를 이용한 컨테이너 이미지 만드는 법은 다음 책을 추천한다.

https://brunch.co.kr/@topasvga/2077





그밖에 도커, 컨테이너 쿠버 네티스 관련은 따로 공부해야 한다.

시중에 나와 있는 서적

https://brunch.co.kr/@topasvga/1455







https://aws.amazon.com/ko/ecs/pricing/




작업 정의?

컨터이너 용량, 어떤 컨테이너를 쓸 것인지 지정하는 것이다.

저장소/ECR/리파지토리의 이미지를 가져온다.





클러스터 = 호스트 서버 = 워커 노드 = 일하는 노드 = 실제 서비스하는 컨테이너가 생성되는 곳





작업?

실제 작업되는 단위





서비스?

서비스를 하기 위해 필요한 것들

워커 노드수 사전 정의 - 기본 3대 , 최대 6대

로드밸런서 사용

부하 늘어나면 자동으로 증가시켜주세요 기능 사용 =  오토 스케일링 기능







ECS 아키텍처 한번 보자~

ALB =로드 밸런서

클라스터 = 호스트 서버, 2곳 이상의 AZ /IDC에 구축 = Task가 실행된다. = Task 안에는 컨테이너가 돌아감

컨테이너에는 웹서비스 , 애플리케이션 서비스, 디비 서비스 등이 돌아간다.






클러스터는 클러스터 관리 엔진이  관리해준다.

ECS에이전트가 설치되어 있어서 해당 에이전트로 정보를 수집한다.










스케줄러?

스케줄러로  어느 클러스터 작업자 노드에 컨테이너를 넣어줄지 정할 수 있다.

다양한 방식으로 분산 배치해준다.





스케줄링 = 배치?

CPU, 메모리 조건?

위치 조건?  인스턴스 유형 조건?

지정 배치?


왜?

비용?  1개 채우고 다음 서버 채우세요

속도? 웹에서 애플리케이션은 같은 서버에 넣어 , 통신으로 인한 제약을 없애주세요

운영 편의? 서버를 분산해서  호스트 장애 나더라도 문제가 없게 해 주세요~








예제로 한번 보자~

특정 인스턴스는 어디로 가라?












배치 전략 확인??


모니터링이 중요하죠~




로그 수집은?

CloudWatch logs라는 서비스가 있다.

CloudWatch logs 에이전트가 서버에 설치되어 정보를 수집한다.

수집한 정보를 스토리지에 넣거나 실시간 분석할 수 있는 시스템에 넣는다.






서버 자동 증가?

2개 증가가 필요하다?  어떻거?





부하 분산 장치 = 로드 밸런서


기능?





개발자가 만든 컨테이너 이미지 저장소

서비스할 때 이 저장소에서 최종본을 가져가서 서비스한다.







테스스트를 마쳤다면 비용이 나오지 않도록 AWS 자원을 모두 삭제하자.

삭제 순서는 ECS 작업부터 삭제




감사합니다.



다음은  네트워크 구축 실습부터 해봅시다.


이론은 이해했을 거고..

제일 중요한 건 실습해서 내 것으로 만드는 것입니다.

AWS ECS 공부하는 책 추천합니다.

https://brunch.co.kr/@topasvga/2077



실습에 대한 내용 설명부터 합니다.

듣고 실습해봅시다.


실습은 2번 또는 모르면 3번 정도 반복합니다.~




AWS에서 제공하는 디폴트 VPC에  EC2 기반의 ECS를 만들어 봅시다~


AWS에서 제공하는 디폴트 VPC = Public Subnet

tㅜ

순서???


작업 정의 등록

클러스터 생성 = 서버 생성

로드 밸랜서 생성





아래 첨부 파일로 실습합니다~


JSON 파일 - EC2 기반



https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/Welcome.html




JSON파일




VPC에 구축한다는 의미?


Public , Private 구성이라는 뜻


서버는 어디에 놓는다?

Private Subnet은 뭐가 필요하다?

라우팅 추가도 필요하다.




Fargatge는 뭐다?

누가 관리해 준다?



CloudFormation은 뭐다?

코드로 한방에 네트워크 생성을 해준다.


CloudFormation은 따로 공부하자~

https://brunch.co.kr/@topasvga/1781






차분히 따라 해 볼 사람은 아래 링크 참고해서 해보세요~


https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/docker-basics.html






서버 1대에서 도커를 설치하고, 컨테이너 이미지를 만든다.

도커 기반에서 컨테이너를 만드는 것이다.

서버 1대 설치해보자~


우분트 기반 컨테이너를 만들기 위해 도커 파일을 만든다.



빌드?

도커 파일로 이미지를 만드는 것이다



도커 이미지를 저장소인 ECR에 올리기 위해 계정과 권한이 필요하다.

환경 설정을 하자


저장소인 ECR을 만들자.

이름은 hello-repository


저장소에 로그온 하기 위해 인증하자~


만든 이미지를 저장소인 ECR에 올리자~

나중에 사용하기 위해서~


설명 링크

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/getting-started-ecs-ec2.html



JSON 이용



https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/getting-started-ecs-ec2.html




https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/getting-started-ecs-ec2.html




실습 자료

ECS EC2 JSON과 ECS  Fargate JSON




용어 정의와 참고 자료


1

EC2

Amazon Elastic Compute Cloud(Amazon EC2)

C가 2개라 C2입니다.

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html



2

ECS

Amazon Elastic Container Service

https://aws.amazon.com/ko/ecs/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&ecs-blogs.sort-by=item.additionalFields.createdDate&ecs-blogs.sort-order=desc



3

유튜브 검색 ECS

https://www.youtube.com/results?search_query=ecs


4

도커 이미지 준비와 ECR에 올리기

https://brunch.co.kr/@topasvga/1363


https://amzn.to/3u4mEdL
 https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/docker-basics.html



5

Amazon EC2를 사용하여 Amazon ECS 시작하기

https://amzn.to/3asXP3G

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/getting-started-ecs-ec2.html


6

ECR 인증

https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth



7

Fargate 작업 정의

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/ECS_AWSCLI_Fargate.html


8

Fargate LB등록

https://aws.amazon.com/ko/premiumsupport/knowledge-center/create-alb-auto-register/

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/ECS_AWSCLI_Fargate.html


 https://amzn.to/3beHuPc
 https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/getting-started-fargate.html


9

컨테이너 서비스 개요

https://aws.amazon.com/ko/containers/

https://aws.amazon.com/ko/containers/getting-started/?c=cn&sec=bn


10

시작하기

https://aws.amazon.com/ko/ecs/getting-started/


11

새 소식

https://aws.amazon.com/ko/ecs/?c=cn&sec=srv&whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&ecs-blogs.sort-by=item.additionalFields.createdDate&ecs-blogs.sort-order=desc






참고 2


https://brunch.co.kr/@topasvga/1595


참고 2

ECS 검색 서비스

DNS TTL

https://aws.amazon.com/ko/blogs/aws/amazon-ecs-service-discovery/



다음 과정은  보안


https://brunch.co.kr/@topasvga/1630


감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari