-
Docker로 개발환경을 구축하는 이유TIL 2023. 12. 27. 11:13728x90
프로젝트를 제작하면서 개인 로컬 환경에서 모든 플랫폼을 직접 설치해 코드 작성 및 테스트를 진행하고 문제가 없어 외부 서버에 배포를 하게 된다고 가정해보자.
배포 환경과 개발 환경의 차이로 인해 발생할 수 있는 문제점은 개발 환경에서 제어할 수 없고 예측하기 힘들다.
이러한 문제를 해결하기 위해서는 어플리케이션 구성을 위한 여러 플랫폼의 종류나 버전이 항상 동일하게 유지되고 수정될 수 있도록 독립적인 개발 및 배포 환경이 필요하다.
1. 일관된 개발 환경
한 컴퓨터에서 여러가지 개발 환경을 구축하다 보면 해당 개발 환경끼리 충돌하는 경우가 생길 수 있음.
ex) 어떤 프로젝트 A는 python 3.8을 사용하고 어떤 프로젝트는 python 3.11 버전을 사용할 수 있다. 이렇게 되면 프로젝트 별로 python 버전 경로를 변경해줘야 하고 환경 변수도 이중으로 만들어야 한다.
도커를 통해 개발 환경을 구축한다면 독립적인 머신을 통해 개발하는 것과 동일 ⇒ 종속성에 대한 걱정 없이 서로 다른 도커 컨테이너를 구축해서 개발하기만 하면 됨.
2. 자유로운 생성과 폐기
도커 컨테이너는 매우 가볍다. 이러한 특징을 활용해서 자유롭게 컨테이너를 생성하고 폐기할 수 있다.
도커 컨테이너로 개발환경을 만들면, 개발 환경이 오염 되었을 때 폐기하고 개발환경을 쉽게 세팅할 수 있다는 장점이 있다.
ex) 로컬에서 여러 테스트를 하는 도중 데이터베이스의 데이터가 꼬여 제대로 된 개발 진행이 어려운 문제가 발생 ⇒ 로컬 환경에 직접 설치한 DB의 경우 롤백 작업을 진행해 주어야 함.
⇒ Docker로 설치했을 경우 컨테이너를 삭제하고 다시 설치하는 작업을 통해 쉽게 문제를 해결할 수 있다.
3. 개발 환경의 공유
도커 컨테이너는 스크립트를 통해 설치 및 폐기를 할 수 있다. 따라서 팀원들과 Git을 통해 같은 스크립트를 공유하면 바로 같은 개발환경을 얻을 수 있다.
⇒ 신입 개발자가 합류했을 때 일관된 개발환경 구축을 쉽게할 수 있다.
⇒ 같은 스크립트를 이용해서 서버에 배포하고 CI/CD 서버에서 테스트 하는데도 활용할 수 있다.
728x90'TIL' 카테고리의 다른 글
멀티 프로세스 vs 멀티 스레드 (2) 2024.01.02 Thread & Process - 2 (1) 2023.12.28 Thread & Process - 1 (1) 2023.12.27 [TIL] 재귀 함수 결과 캐시 : functools.cache - 리트코드 338 (0) 2023.12.21 set 자료구조를 활용하여 조건 검사 속도 최적화 - 리트코드 345 (0) 2023.12.18