도커와 사용할 때의 이점
이전 프로젝트에서 Microservices Architecture에 관해 정리하면서 컨테이너와 Docker에 대해 정리한 내용을 공유합니다.
컨테이너는 어플 실행에 필요한 것들을 묶은 소프트웨어 유닛입니다.
즉, 소프트웨어 패키지를 추상화합니다.
추상화의 목적은 Development, Shipment and Deployment의 용이함을 위해서입니다.
이렇게 추상화된 컨테이너는 도커라는 플랫폼을 만나 더욱 활약하게 됩니다.
Docker는 데스크톱에서 클라우드에 이르기까지 컨테이너화 된 어플을 빌드하고 공유하기 위한 사실상의 표준 플랫폼입니다. 리눅스 또는 윈도우즈 컨테이너를 만들고 작동시켜 줍니다.
도커 컨테이너는
Development 관점에서 보면 모두가 같은 환경에서 개발할 수 있게 도와주고
Deployment 관점에서 보면 서비스 환경과 어플리케이션을 같이 배포할 수 있게 합니다.
Virtualization 관점에서 보면 VM의 태생적으로 무거운 가상화보다 한결 가벼운 가상화를 제공하며
Cloud 관점에서 보면 자신의 컴퓨팅 자원(EC2)을 효율적으로 이용하려 하는 소프트웨어이며
Kubernetes(쿠버네티스) 관점에서 보면 자신의 최소 관리 유닛인 파드(Pod)가 잘 알아야 할 대상입니다.
MSA(마이크로 서비스 아키택처) 관점에서 보면 각 마이크로서비스 = (사실상)도커 컨테이너 클러스터 이렇게 보면 될 것 같습니다.
도커 컨테이너의 장점으로는
그 자체로의 모듈성, 컨테이너 자신을 쉽게 설명하는 도커 파일, 레이어를 관리를 통한 손쉬운 롤백 관리, 클라우드 환경에 적합한 빠른 배포 등을 들 수 있을 것 같습니다.
요즘 느끼는 것은 컴퓨팅 업계에 기술 흐름을 주도하는 트리거는 웹 서비스 분야가 아닌가 합니다.
이를 통해 게임 개발에서도 기술의 습득과 적용이 이루어지고 영감을 받는 것 같습니다.
실제로 이 컨테이너화가 게임 서버 환경에 어떤 장점이 있을지 살펴보는 것이 필요할 듯합니다. 그러기 위해서는 MSA에 관한 내용으로 넘어가지 않으면 안 될 거 같습니다. 도커 그 자체만으로는 큰 메리트를 느끼지 못했기 때문입니다.
추후에 MSA에 관한 정리와 함께 실제로 게임 서버에 어떻게 적용하면 어떤 점이 좋을지 정리한 것을 포스팅할 예정입니다.