반응형
☁ AWS Cloud Clubs(ACC)_3주차
☁ Container | Docker, ECS
- Container
- 애플리케이션 코드, 라이브러리 및 클라우드에서 실행하기 위해 필요한 기타 종속성이 포함된 소프트웨어 코드 패키지
- 소프트웨어 및 모든 종속성을 어디서나 실행할 수 있는 단일 파일로 패키징함
- 코드, 런타임, 라이브러리, 환경 변수, 구성 파일 등 소프트웨어를 실행하는 데 필요한 모든 것을 포함하는 이미지 파일
- 👍: 애플리케이션 배포 간소화, 유연성, 복원력, 확장성
- Virtual Machine vs Container
hypervisor는 guest OS 를 사용할 수 있게 해주는 역할이고,
가상머신은 guest OS 때문에 무겁다하는 거임!
DOCKER 는 리눅스와 같이 다같은 OS를 쓰게 해줘서 가볍다는 뜻임.
- Docker Container
- 도커 컨테이너는 가상화된 공간을 생성할 때, 리눅스 자체 기능을 사용해 프로세스 단위의 격리 환경을 만듦 > 성능 손실 X
- 가상머신과 달리 커널을 공유해 사용하여, 컨테이너에는 라이브러리 및 실행 파일만 있음 > 용량 작음
- ECS(Amazon Elastic Container Service)
- 클러스터에서 컨테이너를 실행, 중지 및 관리할 수 있게 해주는 컨테이너 관리 서비스
- ECS Console
- Cluster
- Service
- Container instance
- Task
- 컨테이너: 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
- 컨테이너 런타임: 컨테이너를 다루는 도구
- 도커: 컨테이너를 다루는 도구 중 가장 유명한 것
- 쿠버네티스: 컨테이너 런타임을 통해 컨테이너를 오케스트레이션하는 도구
- 오케스트레이션: 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위
- 컨테이너: 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 SW 패키지
- 환경 의존에서 해방: 의존 관계가 포함된 패키지가 배포 단위가 됨
- 신속한 배포: 컨테이너는 가벼우며 시작 시간이 짧기 때문에 신속한 배포가 가능 & 개발자가 애플리케이션을 컨테이너 이미지로 빌드하면, 이 이미지를 서버에 배포하는 과정이 매우 빠르고 간단
- 자원 공유 및 최적화: 호스트 운영 체제의 커널을 공유하면서 격리된 실행 환경을 제공하여 가볍고 빠르게 시작될 수 있음
- 자동화 및 관리 용이성: 오케스트레이션 툴을 사용하면 컨테이너의 배포, 확장, 모니터링 및 관리 자동화가 가능함.
- 확정성 및 이식성: 쉽게 이동 가능하고, 쉽게 복제가 가능
- 보안 및 안정성: 격리된 실행 환경
- 컨테이너 오케스트레이터
- 클러스터 관리
- 스케일링 관리
- 자동 복구 기능
- 모니터링 및 로깅
- 예시) 쿠버네티스
[ aws가 제공하는 컨테이너 서비스 ]
- ECR
- ECS
- EKS
- ECS, EKS - > 제어 플레인(Control Plane)
- EC2, Fargate -> 데이터 플레인(Data Plane)
- 따라서, ECS와 EKS 중 하나를 제어 플레인으로 선택하고, EC2 혹은 Fargate 중 하나를 데이터 플레인으로 선택해야 함.
[ ECS와 EKS의 비교]
- ECS
- AWS 서비스와 자원을 더 활용
- 클러스터 설정, 관리 및 확장이 간편
- AWS 네이티브 서비스 중 하나 , 추가 비용 없이 사용가능
- AWS-ONLY 서비스
- EC2: 가상 서버를 완전히 제어 가능
- 인스턴스 유형, 용량 , 스케일링 직접 관리
- 유형 및 크기에 따라 비용 지불
- 실제 사용하지 않는 시간에도 비용 발생 가능
- Fargate: 서버리스 컴퓨팅 엔진
- 애플리케이션 구축에 집중할 수 있음
- 관리 부담을 줄이고, 결제 방법을 선택하고, 설계에 적용된 격리를 통해 보안을 강화함e
- EC2: 가상 서버를 완전히 제어 가능
- EKS
- 쿠버네티스 서비스
- 어떤 인프라에서도 실행 가능
- 쿠버네티스가 지원하는 환경을 다 활용 가능
- 쿠버네티스 = k8s = kubernetes
- 대규모 시스템 관리에 굿, 근데 우리의 로컬로는 무거워서 돌리기 힘듦
- 우리가 돌려보려면 minikube를 써보면 굿
- 쿠버네티스 자격증 > CK8
- 모놀리식 아키텍처
- 서비스에 관련된 모든 것이 하나의 서버에 배치
- 아키텍처가 단순함
- 장애가 발생 시 근원지 발견이 어려움
- 기능 변경에 빠르게 대응이 힘듦
- 서버 증설 > 자원 낭비
- 마이크로서비스 아키텍처
- 👍 한 서비스에서 기능 별로 여러 서버로 분리해서 운영
- 소스, 서버 증설 시 자원을 효율적으로 사용
- 장애가 발생 시 근원지 발견이 쉬움
- 서버 증설 시 자원을 효율적으로 사용
- 👎 너무 많은 서버를 유지, 보수해야
- 아키텍처의 복잡도가 높아짐
- 가상화
- 서버 관리에 대한 해결책
- 하나의 큰 서버를 가상화 기술을 통해 잘게 쪼개서 마이크로서비스의 해당 기능들을 격리된 가상화 공간에 배치
- 서버는 한 대만 유지, 보수하지만 여러 대의 서버를 사용하는 효과
- 하이퍼바이저를 거쳐야 하기 때문에 무거움
- 하이퍼바이저: 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어
- 하이퍼바이저를 운영체제의 컨테이너 기술로 대체
- 인프라의 규모 확대 시 동적 확장과 축소가 어려움
- AWS Identity and Access Management(IAM): AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스
- IAM을 사용하면 사용자가 액세스할 수 있는 AWS 리소스를 제어하는 권한을 중앙에서 관리
- IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어
- helm: 쿠버네티스 애플리케이션의 설치 밒 관리를 단순화하는 명령어
- 깃에서 받아와서 업데이트해줘야 함
- pod 안에 여러 개의 container를 가질 수 있음
쿠버네티스에 대해 자세히 정리된 글
⬇️
반응형
'Cloud' 카테고리의 다른 글
[AWS] DB | RDS, DynamoDB (0) | 2024.05.16 |
---|---|
[AWS] Storage | S3, EFS, EBS + Hands on (0) | 2024.05.16 |
[AWS] Network | Cloudfront, ELB (0) | 2024.05.02 |
[AWS] Computing Service | EC2, Lightsail (0) | 2024.04.11 |
댓글