도커 스웜의 미래 (The Future of Docker Swarm)

원작자인 Bret Fisher에게 허락을 받고 번역/포스팅 함을 밝힙니다.

의역을 많이 해서 오역이 있을수 있습니다. 제 의견은 역주: 로 표시 하였습니다.

원문 링크 : https://www.bretfisher.com/the-future-of-docker-swarm/

Back to the future image

도커 스웜의 미래 (The Future of Docker Swarm)

지금은 2018년 10월입니다. 저는 도커 스웜의 팬 입니다. 저는 스웜을 사용하고, 저의 고객들도 스웜을 사용 합니다. 저는 심지어 스웜에 대한 ** 세계 최고의 온라강좌 ** 그리고 ** 리얼월드 코스 ** 도 만들었습니다.이 글에서는 스웜의 과거와 현재 그리고 미래에 대해 포괄적으로 리뷰 하였습니다.

다섯달 전 쯤에 제가 쓴 ** “2018년도, 스웜은 죽었을까?”(It’s 2018, Is Swarm Dead?)** 를 봤을지는 모르겠지만,
그 글에서 저는 “도커가 쿠버네티스를 스웜으로 대체할 것이다” 라는 [틀린] 추측을 했습니다. 실제로는 도커에서 쿠버네티스를 도커의 growing list에 오케스트레이터로 ** 추가 ** 했습니다.

** 2019 업데이트 **: 도커는 도커콘2018 유럽과 도커콘 2019에서 스웜의 미래에 대해 다시한번 확인시켜 줬습니다. 1. 새로운 스웜의 기능들, 2. 도커의 700+ 스웜을 사용하는 고객들의 규모, 3. 스웜팀은 현재 구인중, 4. 작년동안 본 모든 리포트에서 스웜의 사용이 늘어나고 있다고 함

이제 ** 도커 엔터프라이즈 2.0 with 쿠버네티스 서포트 ** 가 릴리즈 되었고, 제 생각에는 스웜킷(SwarmKit) 과 libnetwork(https://github.com/docker/libnetwork) 프로젝트들을 다시 방문해보고 지난 열두달간 어떤 일이 있었는지 확인 해 볼 시간인것 같습니다.

이 글은 제가 도커 스웜 엔지니어와 Anshul Pundir(https://twitter.com/anshulpundir) 와 인터뷰 하면서 만들었던 도커 스웜의 과거,현재 그리고 미래 유툽 비디오를 바탕으로 작성 하였습니다.

The Future of Swarm Interview with Anshul Pundir

Reminder: “Docker Swarm Mode” 는 우리 모두가 사용하는 Docker CLI 혹은 다양한 GUI’s의 도커 엔진의 기능집합 입니다. 이 기능들은 SwarmKitlibnetwork 두 오픈소스 라이브러리에서 만들어 졌다고 볼 수 있습니다. 그렇기 때문에 우리가 “Docker Engine Release 18.XX,” 에서 확인 할 수 있는 새로운 기능들은 때때로 개발자들이 먼저 그 새로운 기능들을 SwarmKit과 libnetwork 에 먼저 올렸다는 뜻이죠. ** 물론 SwarmKit/libnetwork 에 추가된 기능들이 Docker engine 릴리즈에 합쳐지는데는 몇달 이상씩 걸릴수도 있습니다. **

2017년 하반기와 2018년에 완료된 일들

지난 열두달 동안 어떤일들이 끝났는지에 대해 이야기 해 봅시다. 주요 영향들은 버그 픽스들, 확장성(scalability)의 향상, 기술 부채 (Technical debt) 그리고 더 쉬운 트러블슈팅과 모니터링 위주로 이뤄 졌습니다. 아래는 주요 테마 와 관련된 merged 된 pull requests 입니다.

지금 까지 나열한 것들이 물론 전부 다는 아닙니다. 좀 더 자세한 정보를 원한다면 종료된 전체 관련 PR 리스트를 확인 하세요.

다른 진행중인 일들 Other Works In Progress (WIP)

다음으로, 공개적으로 시작했거나 시작하려고 마음 먹은 일들에 대해서 살펴 보겠습니다.

  • 스웜 서비스 안의 sysctl (Linux Kernel parameters) 설정. sysctl 의 파라미터는 네트워크 최적화 등을 이유로 주로 변경 해서 사용 합니다. 현재는 docker run 에서 설정 할 수 있지만 보안/커널 관련된 옵션들을 모두 “run”에서 “services” 로 옮기려는 노력이 진행중에 있습니다. docker run 에서 docker service create옮기려는 모든 기능들의 리스트 는 여기에서 확인 하세요. moby#37701 swarmkit#2729 (역주: 확인해 보니 merged 됐네요)
  • 디바이스 지원: 가장 흔한 유즈 케이스는 GPU 의 지원 일 것 입니다. 이를 통해 여러분은 하나 혹은 이상의 GPU들을 사용하는 서비스를 스케쥴 할 수 있을 것 입니다. 그리고 스웜은 어디에 그 태스크를 스케쥴 해야 하고, 어떻게 그 리소스들을 사용해야 할 지 알게 될 것 입니다. swarmkit#2682 (역주: 이건 오픈 상태인데 커멘트들을 보면 보류 된 상태로 보입니다)
  • 스웜 클러스터를 위한 Kubemark와 비슷한 성능 테스트와 검증 툴. 우리는 스웜킷에 약간의 새로운 메트릭 들이 추가된 것을 swarmkit#2673에서 봤었지만 사용자 관점의 테스팅 툴에 관한 움직임을 한동안 보지 못 했습니다. 스웜 클러스터를 위한 벤치마킹과 테스팅 툴이 있으면 좋겠다는 의견이 몇몇의 엔지니어들에 의해 언급 되었지만, 아직 코드는 작성 된게 없어 보입니다.
  • 새로운 네트워크와 IP 할당자. 모든 서버들이 각각의 버추얼 네트워크를 만들고 서브넷을 생성하고 출동하지 않는 IP들을 생성하는것은 쉬운 일이 아닙니다. 그리고 여러분의 서버에서 매초마다 새로 생겼다가 없어지는 컨테이너들을 가지고 있다면 앞에서 말한 네트워크관련 된 작업의 정확한 상태를 유지 하는것은 굉장히 어렵 습니다. 지난 몇년간 관련된 다양한 이슈들- 제가본 PR들을 보면- 은 지금 해결 되었습니다. 이건 나중의 기능들과 약간의 엣지 케이스들을 위해서 길을 포장하는것 처럼 들립니다. swarmkit#2686
  • 더욱 향상된 로드 밸런싱. 제 생각에는 이게 스웜의 오버레이 네트워크 드라이버 의 라우팅 메시(routing mesh)와 VIP 기능들의 사용할 수 있는 다이얼(knobs)를 뜻하는것 같네요. 관련된 스펙은 없습니다.(역주: 다른것들은 github pr이나 issue 넘버가 있는데 이건 없다는 뜻 입니다.)
  • 클러스터 볼륨(Cluster volumes). 도커에는 이제까지 스웜에서 인식할 수 있는 내장된 볼름 드라이버가 없었습니다. 이에 대해서는 2017년 초부터 되어 왔습니다. ** 지금은 REX-Ray ** 를 사용 하거나 다른 써드파티 도커 플러그인 들을 사용할 수 있습니다. 또한 도커의 CloudStor 드라이버도 있지만 이들은 모두 아직 오픈소스가 아니거나 빌트인으로 제공 되지 않습니다. ** 스웜킷 팀에서는 클러스터 볼륨에 다시 관심을 갖게 되었고, 아마도 CSI 를 지원** 할것 같습니다. CSI는 Container Storage Interface 의 약자로 다른 오케스트레이터들도 지원을 합니다.
  • 현재는 Custom default IP subnets 이 bridge networks 에 한하지만 overlay 까지 확장되길 기대 합니다. moby#36396

도커 스웜 팀은 지금 구인중 입니다

위에 있는 제 Anshul 과의 인터뷰 비디오를 보면, 그의 팀은 스웜 엔지니어를 구한다고 언급 했습니다. 보다 자세한 정보는 그들의 구인 페이지에서 “Orchestration Engineers” 를 참조하세요. (역주: 현재 2020년 1월에 확인했을 때는 해당 링크는 존재하지 않습니다.)

Thanks To Docker

도커 팀에게 감사의 말씀을 드립니다. 도커 본사에서 저와 함께 시간을 보내면서 도커 캡틴들이 정보를 공유하고 커뮤니티에 도움을 줄 수 있게 도와준 Anshul Pundir 그리고 Mano Marks 특히 더 고맙습니다.

Get More Swarm Education

제 스웜 마스터리 코스는 인터넷상에서 스웜을 배우는 가장 좋은 방법 입니다! 그리고 도커의 기초 훈련도 제 도커 마스터리 코스에서 받을 수 있습니다.

Share