본문 바로가기
Cloud

[AWS] Container | Docker, ECS

by 지구코드 2024. 4. 11.
반응형


 

☁ 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 패키지
    1. 환경 의존에서 해방: 의존 관계가 포함된 패키지가 배포 단위가 됨
    2. 신속한 배포: 컨테이너는 가벼우며 시작 시간이 짧기 때문에 신속한 배포가 가능 & 개발자가 애플리케이션을 컨테이너 이미지로 빌드하면, 이 이미지를 서버에 배포하는 과정이 매우 빠르고 간단
    3. 자원 공유 및 최적화: 호스트 운영 체제의 커널을 공유하면서 격리된 실행 환경을 제공하여 가볍고 빠르게 시작될 수 있음
    4. 자동화 및 관리 용이성: 오케스트레이션 툴을 사용하면 컨테이너의 배포, 확장, 모니터링 및 관리 자동화가 가능함.
    5. 확정성 및 이식성: 쉽게 이동 가능하고, 쉽게 복제가 가능
    6. 보안 및 안정성: 격리된 실행 환경

 

  • 컨테이너 오케스트레이터
    1. 클러스터 관리
    2. 스케일링 관리
    3. 자동 복구 기능
    4. 모니터링 및 로깅
  • 예시) 쿠버네티스

 

 

[ aws가 제공하는 컨테이너 서비스 ]

  1. ECR
  2. ECS
  3. EKS
  • ECS, EKS  - > 제어 플레인(Control Plane)
  • EC2, Fargate -> 데이터 플레인(Data Plane)
  • 따라서, ECS와 EKS 중 하나를 제어 플레인으로 선택하고, EC2 혹은 Fargate 중 하나를 데이터 플레인으로 선택해야 함.

 

 

 

[ ECS와 EKS의 비교] 

  • ECS
    • AWS 서비스와 자원을 더 활용
    • 클러스터 설정, 관리 및 확장이 간편
    • AWS 네이티브 서비스 중 하나 , 추가 비용 없이 사용가능
    • AWS-ONLY 서비스
      • EC2: 가상 서버를 완전히 제어 가능
        • 인스턴스 유형, 용량 , 스케일링 직접 관리
        • 유형 및 크기에 따라 비용 지불
        • 실제 사용하지 않는 시간에도 비용 발생 가능
      • Fargate: 서버리스 컴퓨팅 엔진 
        • 애플리케이션 구축에 집중할 수 있음
        • 관리 부담을 줄이고, 결제 방법을 선택하고, 설계에 적용된 격리를 통해 보안을 강화함e
  • EKS
    • 쿠버네티스 서비스
    • 어떤 인프라에서도 실행 가능
    • 쿠버네티스가 지원하는 환경을 다 활용 가능

 

  • 쿠버네티스 = k8s = kubernetes 
    • 대규모 시스템 관리에 굿, 근데 우리의 로컬로는 무거워서 돌리기 힘듦
    • 우리가 돌려보려면 minikube를 써보면 굿
    • 쿠버네티스 자격증 > CK8

 

 

  • 모놀리식 아키텍처
    • 서비스에 관련된 모든 것이 하나의 서버에 배치
    • 아키텍처가 단순함
    • 장애가 발생 시 근원지 발견이 어려움
    • 기능 변경에 빠르게 대응이 힘듦
    • 서버 증설 > 자원 낭비
  • 마이크로서비스 아키텍처
    • 👍 한 서비스에서 기능 별로 여러 서버로 분리해서 운영
    • 소스, 서버 증설 시 자원을 효율적으로 사용
    • 장애가 발생 시 근원지 발견이 쉬움
    • 서버 증설 시 자원을 효율적으로 사용
    • 👎 너무 많은 서버를 유지, 보수해야
    • 아키텍처의 복잡도가 높아짐
  • 가상화
    • 서버 관리에 대한 해결책
    • 하나의 큰 서버를 가상화 기술을 통해 잘게 쪼개서 마이크로서비스의 해당 기능들을 격리된 가상화 공간에 배치
    • 서버는 한 대만 유지, 보수하지만 여러 대의 서버를 사용하는 효과
    • 하이퍼바이저를 거쳐야 하기 때문에 무거움
  • 하이퍼바이저: 단일 물리적 머신에서 여러 가상 머신을 실행하는 데 사용할 수 있는 소프트웨어
    • 하이퍼바이저를 운영체제의 컨테이너 기술로 대체
    • 인프라의 규모 확대 시 동적 확장과 축소가 어려움

 


  • AWS Identity and Access Management(IAM): AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스
    • IAM을 사용하면 사용자가 액세스할 수 있는 AWS 리소스를 제어하는 권한을 중앙에서 관리
    • IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어
  • helm: 쿠버네티스 애플리케이션의 설치 밒 관리를 단순화하는 명령어
    • 깃에서 받아와서 업데이트해줘야 함
  • pod 안에 여러 개의 container를 가질 수 있음

 

 


 

쿠버네티스에 대해 자세히 정리된 글

⬇️

 

 

쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념

요즘 IT 생태계에 관심이 많으신 분들이라면 쿠버네티스라는 단어를 들어 보셨을 텐데요. 쿠버네티스에 대해 개발자들의 관심이 높아지고 있고, 여러 대기업에서 새로운 시스템을 쿠버네티스를

www.samsungsds.com

 

 

 

쿠버네티스 알아보기 3편: 쿠버네티스를 이루고 있는 여러 가지 구성 요소 | 인사이트리포트 | 삼

쿠버네티스 구성 요소인 쿠버네티스 컴포넌트에 대해 살펴보겠습니다.

www.samsungsds.com

 

 

반응형

'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

댓글