단일 서버 Docker의 한계

preiner
3 min readJan 27, 2019

--

이번 글에는 Docker의 기능을 더욱더 향상시켜줄 Orchestration에 대해서
아주 가볍게 알아볼 것이다.

이전 글까지 docker는 많이 다루었다. 좋은지는 알겠는데 뭔가 하나 빠진듯하다. 그래서 docker에서 끝판왕 이 정도 자유롭게 다룰 줄 알면 이제 docker로 할 수 있는 큰일은 다한 것이다.

바로 오케스트레이션 기능이다.

오케스트레이션이 뭘까 가볍게 살펴보자. docker를 사용할때
단순하게 생각하면 그냥 단일 host 서버에 설치해서 쓰는 형태이다.

위의 그림을 보면 단일 호스트 서버에 docker를 설치하고 다양한 컨테이너를 사용하고, 이정도 만으로도 별다른 불편함이 없어보인다.

그런데 만약에 host서버의 리소스 사용량이 많아지면 어떻게 될까?
CPU, RAM, STORAGE 의 양이 부족하면 어떻게 처리 해야할까?
두가지 정도 방법이 있을것이다.

  • 제일 간단한 방법은 host서버를 스케일 업하는 것이다.
    이 방법의 경우는 테스트 서버나 웬만해서는 서버의 자원이 늘어날 일이 없는 경우에는 가능하다. 잠시 멈춰놓고 서버의 자원을 늘리고 다시 컨테이너를 설치하면 된다.
  • Docker를 설치할때 엄청 큰 사이즈의 서버에 설치한다.
    미리 어느 정도 리소스를 소비할지 생각하고 docker를 설치하는 방법이다.
    생각처럼 컨테이너들이 리소스를 점유했으면 좋겠지만, 서버 관리가 그렇게 생각처럼 되지 않는 것이 현실이다. 리소스 점유는 생각처럼 조절이 돼도 갑자기 서버에 이상이 생길 수도 있는 일이고 장애는 어디에서 발생할지 예상할 수가 없기 때문에 이 방법은 매우 안일한 방법이다.

사실 단일 서버에 docker를 설치해서 서비스를 운영할 경우 단시간에 장애를 대비할 수 있는 방법이 거의 없다.

그래서 단일 host 서버에 docker를 설치해서 사용할 경우 실제 서비스는 거의 불가능하다. 그럼 docker는 실제 서비스 상에서 쓸 수 없는 도구인가 하는 의문이 생긴다.

하지만 그건 아니다 이미 굴지의 글로벌 서버를 하는 많은 회사에서 docker를 사용하고 컨테이너를 중심으로 서비스를 운영하고 있다.

이렇게 실시간으로 글로벌한 트래픽을 감당할 수 있게 docker를 사용하려면
멀티 host에 docker를 사용해야 한다.

그런데 여러 대의 host 서버에 docker를 사용하면 어떻게 컨테이너를 관리할 수 있을까? 네트웍은 어떻게 될까? 머리가 복잡해진다.

그런데 이런 어려움 부분들을 이미 해결해서 실서비스에 사용되고 있는 많은
docker관련 오케스트레이션이란 제품들이 존재한다.

이런 오케스트레이션들은 docker를 여러대의 host서버에 설치했지만,
마치 단일 host서버에 설치해서 사용하는 것처럼 서포트 해준다.

무지~~~ 어려울것 같지만 실서비스에 컨테이너의 유용한 점을 활용하기 위해서는 꼭 사용해야 한다.

이 글의 마무리로 제일 많이 사용하는 오케스트레이션 제품을 리스트업 해보도록 하겠다.

현재 위의 세가지 제품군이 많이 사용되고 있다.

그럼 다음 글 부터는 위의 제품들에 대해서 알아보도록 하겠다.

읽어주셔서 감사합니다!!!

--

--

Responses (1)