AWS를 이용해서 배포를 하는 것은 옛날 방식이다. 지금은 Docker와 같은 새로운 infra structure를 이용한다. 실무에서는 Docker를 많이 쓴다.
도커는 Container Virtual Machine Servie이다. 컨테이너 가상화 서비스
가상화 기술의 컨셉은 컴퓨터 한 대의 메인 운영체제 안에서 다른 운영체제로 운영되는 컴퓨터 한 대를 또 돌릴 수 있는 것이다.
한대의 컴퓨터에 한가지 일만 시키기에는 남는 자원이 아깝기 때문이다. 서비스를 늘릴 때마다 비싼 서버 컴퓨터를 늘리고, 서버에 비용투자를 하기에는 부담이 크다. 이와 같은 이유로 가상화 기술이 등장한다. 현대의 컴퓨터는 성능이 좋아져서 가상화 기술을 대중적으로 사용할 수 있다.
Docker?
도커는 컨테이너 가상화 기술이자 회사명이다. 많은 사용량으로 컨테이너 가상화 기술의 대명사처럼 사용되고 있다. 하지만 최근에는 다른 오픈소스 컨테이너 가상화 기술도 성장하고 있기 때문에 이 이름 하나로만 기억해서는 안 된다. 요즘에는 containerd가 뜨고 있다.
VM은 무겁고 부팅 시 시간이 많이 걸린다. 특히, 중요한 서비스를 운영하는데 장애가 발생하면 호스트 컴퓨터 부팅 -> 안정화 -> 가상화 OS 부팅.. 이 시간을 기다린 다음 정상화시켜야 하므로 애가 탄다. 물론 실행되고 나서는 안정적으로 잘 돌아간다.
또한, 시스템의 리소스를 많이 잡아먹는다. 도커도 리소스를 많이 잡아먹지만 구성 방식에 차이가 난다. 즉, VM도 잘 만든 소프트웨워이지만 사양을 많이 탄다는 것이다.
기존의 VM은 컴퓨터가 부팅하듯이 하고, time loss가 있음. 하지만 도커는 이미지를 실행시키는 동시에 내가 하려던 일이 실행이 된다. 만약 장고 웹서버를 운영하려고 그 이미지를 올리면 우분투 기반의 파이썬 3.0 서버에서 장고 서버를 돌릴 거야 시작을 하면 바로 실행이 된다.
어떻게? daemon이라고 불리는 도커 서버에서 호스트 os 옆에 붙어서 통역을 해준다. 커널 영역에 접근해서 직접 소통해서 실행하니까 빠르다. 반면 하이퍼바이저(VM)는 호스트 os에서 제공하는 메모리 위에서 일을 하니까 느리다.
도커 허브에 가입하면 저장소를 하나씩 제공한다. 깃허브하고 똑같은 것. 이미지를 만들어서 허브에 푸시를 할 수 있다.
기본적으로 도커에서 제공하는 저장소를 쓸 수 있지만, 회사에서는 보안때문에 내부에 서버를 만들어서 거기에 저장하기도 한다.
어떤 프로그램을 실행하는데 필요한 것들을 모아놓은 패키지
도커를 카세트 플레이어에 비유한다면 이미지는 카세트, 도커 데몬은 플레이어라고 할 수 있다. 데몬은 이미지를 받아서 처리해주고, 이미지를 만들 수 있는 중요한 장치.
컨테이너는 단일 프로세스로 작업이 종료되면 컨테이너도 종료된다. 웹서버를 만들어야 하므로 데몬 상태로 진행.
직접 쓰게 되는 것은 클라이언트. 도커 명령어 쳤을 때 나오는 거
도커를 사용한다는 것은 예를 들어 장고 서버가 제대로 돌아가는 그 상태를 얼려서 이미지로 만든 다음, 동일한 환경이 필요할 때 그 이미지를 다시 녹여서 사용하는 것이다. 새로운 PC에서 작업하더라도 쉽게 개발 환경을 만들거나 배포를 할 수 있다는 장점이 있다.