본문 바로가기

방법론과 DevOps/Docker

도커와 방법론

도커와 방법론

 지금까지 도커 관련 포스트에서 알 수 있든 도커는 컨테이너 방식으로 서버를 가상화 합니다. 기존 레거시 방식의 프로젝트에서는 VM과 같은 하이퍼 바이저 방식만을 사용한 가상화 서버에 서비스를 배포하는 형태의 프로젝트 들이 많았지만,  도커가 최근  개발 진영에서 핫한 이유는, 애플리케이션의 기능의 세분화/경량화를 점점 추구하는 형태로 진화했기 때문입니다.

 세분화/경량화를 중요성이 장조되는 현대 개발에서 가장 추구하는 서버 구성은 클라우드 네이티브 방식입니다.  전통적인 IDC 방식만을 고집하는 것이 아니라 리소스를 필요에 따라  유연하게 구성하는 클라우드 방식을 적용이 점점 더 각광받기 시작했고, 

https://dkkim2318.tistory.com/102

 

클라우드 컴퓨팅

클라우드 컴퓨팅? 개발자는 개발하고 있는 자신의 프로그램을 자신의 로컬 환경에서 개발을 하게됩니다. 물론 본인만이 사용하는 프로그램이거나, 본인의 역량을 키우기 위한 프로젝트라면 고

dkkim2318.tistory.com

 이런 클라우드 네이티브 방식에서 효율성을 위해 헥사고날 아키텍쳐 설계와 MSA  방법론이 개발 진영, 특히 백앤드 개발에서 많이 강조되고 있습니다

https://dkkim2318.tistory.com/144

 

헥사고날 아키텍처

헥사고날 아키텍처 헥사고날 아키텍처(Hexagonal architecture) 는 소프트웨어 아키텍처의 하나로 응용프로그램의 비즈니스 로직을 외부 세계로부터 격리시켜 유연하게 테스트하기 쉬운 구조를 만든

dkkim2318.tistory.com

https://dkkim2318.tistory.com/149

 

MSA

MSA(Microservice Architecture)백앤드 개발자라면 최근 MSA 방법론에 대해 굉장히 많이 들어봤을 것이라 생각합니다. 최근 개발 프로젝트에서 가장 핫한 방법론이며, 특히 백앤드 개발에서 많이 사용되

dkkim2318.tistory.com

이러한 방법론의 발전 흐름에 따라 아키텍쳐 관점에서 유연한 개발 환경에서 유리한 도커가 많은 사랑을 받고 있습니다. 이번 포스트에서는, 최근 방법론에서 도커가 강조되는 이유에 대해 포스팅 해보겠습니다.

 

컨테이너의 상태(state)

컨테이너는 상태 없음(stateless) 입니다. 이전 이미지 관련 포스팅에서 다루었던 내용이지만, 컨테이너가 실행 된 후 발생하는 모든 변경 사항은 컨테이너 레이어만 있으며 종료되면 변경 사항은 모두 사라집니다.

 상태가 없다는 말은  프로그램 내부에서 기억해야하는 정보를 기억하지 않는다는 말입니다. 컨테이너로 띄운 모듈은 실제 런타임의 동작을 하지만 런타임으로 파생된  정보들을 저장하지 않습니다. 즉, 상태가 없다는 것은 이미지의 불변성을 보장하기 때문에 트레픽의 증가나 타 환경에서의 적용을 위해  컨테이터를 증가시켜야 할때 별다른 조치 없이 쉽게 증가가 가능합니다.

 

Pets  vs Cattle 

 

 DevOps 에서는 pets / cattle 관점이 있습니다. 반려동물과 소(가축)으로 대변한 서버 관리 이념인데,  하나를 소중히 여기는 관점과  하나의 소비 대상으로 여기는 관점이라 볼 수 있습니다. 단어로 바꿔말하면 스케일업 vs 스케일 아웃 의 관점에서 대립되는 관점입니다.

 IT 환경에서 이 관점을 대입해 보면 pets는 기존에 선호되던 VM 하이퍼바이저 방식이나 monolithic 아키텍쳐에 해당한다고 볼 수 있고  cattle 은 MSA 방법론으로 볼 수 있습니다. 각각의 특징을 표로 정리해 보면 아래와 같습니다.

                                                    🐾 Pet 방식                                                               🐄 Cattle 방식

정의 소수의 특별한 서버를 정성스럽게 관리 다수의 동일한 서버를 자동화된 방식으로 관리
운영 방식 수작업으로 설치·설정 자동화 도구로 생성·삭제
장애 발생 시 수동으로 로그인해 복구 죽으면 새로 생성 (자동 대체)
확장/축소 어렵고 느림 빠르고 유연함
인프라 구성 예시 온프레미스 서버, 수동 운영 VM 클라우드, 컨테이너, 쿠버네티스
배포 방식 수동 배포, 업그레이드 CI/CD 통한 자동 롤링 배포
대표 도구/환경 Chef, 수동 SSH, VMware 등 Docker, Kubernetes, Terraform 등

도커는 대표적인 Cattle 방식에 해당하는 환경입니다.  다수의 컨테이너를  띄우는 것이 가능하고 용이하며 컨테이너간 상호작용이 존재하지만 하나의 큰 단위가 아닌 독립된 구성을 통해  MSA와 같은 방법론에 적합한 기능을 제공합니다.

'방법론과 DevOps > Docker' 카테고리의 다른 글

도커 가상 네트워크  (0) 2025.05.20
멀티 스테이지 빌드  (0) 2025.05.15
도커파일 지시어  (0) 2025.05.14
이미지 빌드  (0) 2025.05.14
이미지와 레이어  (0) 2025.05.13