Docker에서 ECS 배포까지-Docker

qpqo12·2020년 12월 10일
0

Docker와 ECS 배포

목록 보기
1/2

Elastic Beanstalk을 이용해서 배포를 하다가 어느날 현타 와서 다른 방법을 알아보니 요즘은 ECS(Elastic Container Service)나 EKS(Elastic K8S Service)로 배포를 한다고 하더라. EKS는 러닝커브가 좀 있어서 일단 ECS로 배포를 해보기로 했다.

무작정 AWS 자습서를 읽었는데 Docker에 대한 사전 지식이 없으면 ECS 사용이 불가능하다는 것을 알게되었다. 한두번 써본게 다인 Docker를 이참에 한번 정리해 보기로 했다.

Docker 요점 정리

Docker란?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다.
가상 머신과 비슷한 개념인데. 로컬환경과 격리된 공간인 컨테이너에서 프로세스를 동작하는 기술이다. 팀 내에서 사람마다 개발환경이 조금씩 그때마다 환경을 맞추느라 고생할 필요도 없고, 배포 단계에서 AWS 서버 환경과 로컬 환경을 맞추려고 고생할 필요도 없어진다. 그냥 도커 이미지를 받아서 컨테이너 위에서 돌리면 그만이다.

Container란?

Docker Hub에는 수십만개의 컨테이너가 공개되어 있다. 이 컨테이너들은 도커만 설치되어 있다면 사양만 되면 그 어떤 환경에서도 실행할 수 있다. 프로세스를 격리해놨기 때문에 시스템이 꼬일 일 또한 없다.

Image란?

도커에서 컨테이너와 함께 가장 중요한 개념이 이미지다.
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있다. 나는 이미지를 컨테이너 안에 들어있는 화물이라고 이해했다.

도커를 써야하는 이유

도커를 사용하지 않는 경우에는 여러가지 불편한 점이 있을 수 있다.
예를 들어 개발자 A가 Nodejs로 웹 애플리케이션을 개발해서 깃헙에 올렸다.
이 웹 애플리케이션을 개발자 B의 컴퓨터에 받아서 실행을 해보면 OS가 다른 문제, Node 설치여부나 버젼 문제등으로 에러가 수 없이 발생할 수도 있다.
AWS에 배포할때도 마찬가지의 문제가 발생한다.
도커를 사용하면 이런 문제점들이 말끔히 사라진다. 개발자 A의 OS부터 패키지매니저 버젼까지 모든 환경을 그대로 도커 이미지로 만들어서 공유하면 그만이기 때문이다.

도커 사용한 웹 서비스 배포 흐름

ECS를 안쓰고 EC2만 사용한다면...

  1. 베이스 이미지를 선택한다.(나의 경우엔 Node.js)
  2. 개발한 웹 애플리케이션을 이미지로 만든다.
  3. 이미지의 태그를 정하고 도커 레지스트리에 배포(Push)한다.
  4. 도커가 설치된 EC2에서 이미지를 Pull 받아서 컨테이너에서 실행한다.

포트 포워딩 등의 디테일한 절차가 있지만, 대략의 흐름은 위와 같다.
ECS는 이 과정을 조금 더 편하게 도와주는 AWS의 서비스이다.

profile
웹 개발자

0개의 댓글