What is a Devcontainer
프로덕션 워크로드를 컨테이너화하는 것이 일반화됨에 따라 지속적인 통합, 테스트 자동화, 모든 기능을 갖춘 코딩 환경을 포함하여 배포 이상의 시나리오에 컨테이너를 사용하는 개발자가 늘어나고 있습니다.각 시나리오의 요구 사항은 단순한 단일 컨테이너 환경부터 복잡하고 조율된 다중 컨테이너 설정까지 다양할 수 있습니다. 개발 컨테이너 사양(또는 줄여서 Dev 컨테이너 사양)은 다른 오케스트레이터 형식을 만들려고 시도하는 대신 일반적인 개발 관련 설정, 도구 및 구성을 위한 메타데이터로 기존 형식을 강화하는 방법을 모색합니다.
Why use a Devcontainer
Pros
개발환경의 형상관리
아 래와 같은 상황은 우리에게 간간히 일어납니다.
-
Case1신규 개발자가 입사개발 환경 구축 메뉴얼을 제공개발 구축 메뉴얼의 Java / Node 상이한 버전 혹은 배포판을 설치
-
Case2보안 및 신규 기능 추가를 위해 Java / Node 의 버전이 변경E-Mail, 메신저, 구두로 통해 공지 전달적용/미적용 인력에 따른 이슈 발생
devcontainer 는 Code base로 작동하기 때문에 변경사항에 대한 전파 및 적용이 매우 손쉬움.프로젝트별 개발 환경 설정 가능
프로젝트별로 컨테이너 구성이 가능하기 때문에
nvm, sdkman 과 같은 별도의 도구를 사용하지 않아도 됩니다.실제 환경과 동일
운영 환경과 동일한 환경하에 개발이 가능합니다.
원격 연결을 통한 개발 기기 리소스 감소
devcontainer 를 k8s 혹은 Docker host에 실행 수 원격으로 접속하여 작업이 가능합니다.이로서 Local 개발 머신의 사양이 부족해도 원할하게 작업이 가능합니다.
또한 LiveServer를 통해 동시 작업도 가능합니다.
동일한 경험
devcontainer 내부에서 작업하기 때문에 사용자 또는 개발/운영환경 마다 다른 Folder path에 대해서 신경 쓸 필요가 없습니다.
확장 및 설정조차 일률적으로 적용이 가능하기 때문에 사용자 또는 환경에 따른 Risk가 줄어 듭니다.Cons
더 많은 리소스 사용
마법의 은탄환 처럼 만능은 아닙니다. Local 환경에 Docker가 필수적으로 설치되야 함으로서 좀 더 많은 리소스가 사용됩니다. 이로인해 랩탑의 경우에는 배터리의 소모가 커지는 문제가 발생합니다.
네트워크 연결로 인한 지연
컨테이너 내부에서 Intellisense 등의 기능을 사용하기 위해서는 컨테이너와 로컬 컴퓨터 간의 네트워크 통신이 필요하기 때문에, 네트워크 지연이 발생할 수 있습니다.
Next story
다음 편에서는
devcontainer를 어떻게 사용하는 지 알아봅시다.