article thumbnail image
Published 2024. 4. 3. 21:46

⁠도커를 수동으로 설치하고 배포하는 방식

호스트머신(EC2)에 처음부터 모든 것을 설치하게 되면 높은 자유도를 갖지만 그만큼의 단점을 얻게 됩니다.
 
  1. 보안부터 네트워크, 운영까지 리모트 머신의 구성에 대한 모든 책임을 가지게 됩니다. 
    충분한 컴퓨팅 파워, 트래픽 모니터링, 시스템 버전 업데이트까지 항상 최신 상태로 유지해야하며 관리 책임의 의무가 있습니다.

  2. 여러가지 기본 환경을 익혀야할 필요가 있으며, 배포 워크플로를 구성하는 명령어를 만들어야합니다.

  3. 완전히 다른 기술이 필요합니다.
    애플리케이션 자체, 다중 컨테이너 애플리케이션, 규모가 큰 애플리케이션 등등 해야할 작업을 실제로 파악하고 행동해야한다는 점이 있습니다.
 
이러한 부분을 해결하기 위해 우리는 관리형 서비스를 이용하게 됩니다.
 

⁠수동배포에서 관리형 서비스로

  • 전체 생성 관리, 업데이트, 모니터링, 스케일링이 모두 단순화됩니다.
  • 모든 세부 설정 작업에 대해 관리가 필요없습니다.
  • 정확히는 도커를 사용하는 것이 아닌 클라우드 제공자가 제공하는 서비스를 사용한다는 점이 중요합니다.

⁠ECS

ECS는 4가지 범주로 분류 됩니다.
  • 클러스터
  • 컨테이너
  • 태스크
  • 서비스

컨테이너

단순히 ECS가 docker run 을 실행하는 방법을 지정하기만 하면 됩니다.
  • 컨테이너 이름
  • 이미지 이름
  • 메모리 제한
  • 포트 매핑
  • Health check
  • 환경변수 혹은 entrypoint
$ docker run --name node-demo -p 80:80 # 위 명령을 컨테이너로 설정합니다
 

⁠태스크

컨테이너에 대한 태스크를 정의할 수 있습니다.
애플리케이션의 블루프린트로 aws에 컨테이너를 시작하는 방법을 알릴 수 있으며, 정리하자면 단순한 ⁠docker run⁠ 명령이 아닌 실행하는 서버를 구성하는 방법입니다.
그러므로 태스크에는 둘 이상의 컨테이너가 포함될 수 있으며, 하나의 태스크에 여러 개의 컨테이너를 등록할 수 있습니다.
 
즉 하나 이상의 컨테이너를 실행하는 하나의 원격 머신(EC2...)을 태스크라고 정의할 수 있습니다.
 
Fargate가 디폴트로 직접 EC2 인스턴스를 실행하는게 아닌 컨테이너와 실행 설정을 저장하여 컨테이너에 대한 추가적인 요청이 있을 때마다 컨테이너를 시작하고, 처리하고 중지합니다.
 

 

⁠서비스

구성된 애플리케이션과 애플리케이션을 포함하는 컨테이너를 실행하는 방법을 컨트롤 합니다.
로드밸런서를 추가하거나 리다이렉션, 컨테이너 실행 등등을 처리하며, 모든 태스크가 서비스에 의해 실행됩니다.
 
태스크 당 하나의 서비스가 권장사항입니다.

 

⁠클러스터

서비스가 실행되는 전체 네트워크라고 할 수 있습니다.
여러 개의 태스크와 서비스를 통해 컨테이너가 만들어지게 되면 해당 컨테이너들은 모두 논리적으로 함께 속하게 되고 서로 통신할 수 있게 됩니다.

'TIL > 개념정리' 카테고리의 다른 글

Kubernetes overview  (1) 2024.04.12
Docker 배포 최적화  (1) 2024.04.10
PyTorch 튜토리얼  (0) 2024.04.01
Docker Compose  (0) 2024.03.21
Amazon Bedrock과 Langchain Workshop  (0) 2024.03.21
복사했습니다!