IT's Jenna

DevOps - Docker & ECR 본문

서버배포/docker

DevOps - Docker & ECR

developer Jenna 2021. 3. 18. 15:17

DevOps란?

Developer + Operator로 개발팀과 운영팀의 조합을 의미한다. 이전엔 개발팀에서 서비스를 개발하고 운영팀에서 프로그램을 배포하고 운영하는 형태였다. 하지만 하나의 서비스를 두 개의 팀에서 관리하는 것은 상당히 비효율적이고 의사소통 문제도 발생할 수 있다. 그렇기 때문에 차세대 운영방식으로 나온 것이 DevOps이다. 개발팀과 운영팀을 하나로 합쳐서 개발부터 배포 및 테스트까지 즉, 하나의 팀에서 하나의 서비스를 온전히 담당하는 것 그것이 DevOps이다.

 

이렇게 DevOps 방식으로 서비스를 운영할 때 사용할 수 있는 것을 알아보자.

1. Docker

도커란 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 

 

우리가 AWS로 서버를 만들면 서버에 소스파일을 올리고 필요한 모듈들을 모두 설치하고 또 그 서비스를 실행하는 과정들이 필요하다. 만약 운영하는 서비스가 커지면 커질수록 필요한 모듈들이 더욱 방대해질 것이고 서버의 환경설정이 점점 어려워질 수밖에 없다. 또한 서버의 종류 (맥, 윈도우, 리눅스, 우분투 등)에 따라서 환경설정은 달라져야 한다. 그렇다면 협업하는 과정에서 이러한 환경설정이 세세하게 인수인계되어야 할 것이다. 특히 PHP를 사용한다면 OS 버전 및 PHP 버전 등 설치 모듈도 모자라 버전까지 신경 써야 하는 상황이 오게 되는 것이다.... ^^;;

 

이러한 불편함을 해소하고자 사용하는 것이 Docker이다. Docker 이미지를 만들면 해당 이미지에 환경설정이 포함된 모든 실행파일이 담겨있다. Docker 이미지를 서버에 업로드하면 OS 정보가 모두 담겨 있기 때문에 서버의 실제 OS가 무엇인지는 상관하지 않아도 된다. 즉 서버는 HW단의 스펙만 신경 쓰면 되는 것이고 모든 SW적인 부분은 Docker 자체적으로 완료할 수 있게 된다! (엄청나지 않은가..?)

2. Docker Container

도커 컨테이너란 격리된 공간에서 프로세스가 동작하는 기술이다. 일종의 가상화 기술이라고 볼 수 있다.

다만, 기존의 가상화 방식은 OS 자체를 설치하고 거기에 다시 환경 설정을 하는 방식으로 운영되었다. 하지만 도커는 하나의 서버 운영체제 상에서 각각의 도커 컨테이너에 서비스에 필요한 OS, 실행환경 및 코드를 넣어두고 개별적으로 프로세스를 돌린다.

 

<기존 가상화 환경>
<Docker 환경>

이 컨테이너들은 모두 독립되어 있기 때문에 서로에게 영향을 미치지 않고 각자의 실행환경이 다르더라도 충돌하지 않는다. 

 

<도커 유무에 따른 실행환경>

3. 도커의 장점

  • 코드를 수정하고 다시 올리고 실행하는 과정이 쉽기 때문에 배포가 용이하다.
  • 환경설정이 간단하기 때문에 생산성이 증가한다.
  • 도커 컨테이너 이미지는 손쉽게 제거 및 추가가 가능하고, 해당 도커 컨테이너를 다른 서버에서 사용하는 것도 가능하다. 즉 공개 이미지를 다운로드해서 사용하는 것도 가능하다.

따라서 도커를 사용하면 굉장히 효율적으로 서비스 운영이 가능해진다!

4. ECR

Amazon Elastic Container Registry

개발자가 도커 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 관리형 컨테이너 이미지 레지스트리 서비스이다. 위에서 언급한 것처럼 컨테이너 이미지도 여러 서버에서 공유가 가능하다. 따라서 우리가 코드를 git에 저장해서 협업할 때 사용하는 것 처럼 컨테이너 이미지를 ECR에 올려서 관리하고 사용할 수 있다.

 

 

<참고>

simsimjae.medium.com/devops%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-c50f4d86666b

subicura.com/2017/01/19/docker-guide-for-beginners-1.html

continuetochallenge.tistory.com/72

'서버배포 > docker' 카테고리의 다른 글

배포 프로세스 정리 - 실무  (0) 2021.07.21
Proxy & NginX  (0) 2021.03.18
Comments