저는 사내 개발 조직이 온프레미스에서 클라우드 컴퓨팅 환경으로 마이그래이션을 시작할 즈음 회사에 입사하게되었습니다. 이미 관련 업체 선정(Naver Cloud Platform, NCP)이 완료되었고 입사하였을 때는 기존 서비스는 하나둘씩 NCP로 옮기고 신규 프로젝트는 NCP의 인스턴스를 생성하여 배포할 수 있었습니다.
마이그레이션이 어느정도 완료되자 온프래미스 서버로 활용되었던 기존의 컴퓨팅 자원이 (무려 xeon E5 프로세서에 128GB 메모리가 달린)잉여 자원으로 전락하는 일이 생기게됩니다.
잉여 자원이라고 했지만 사실 저희 회사는 이전부터 여분의 컴퓨팅 자원이 반드시 필요한 상황이었습니다. PHP 기반으로 많은 웹 서비스가 운영중이었고 운영과 개발 환경의 분리가 되어있지 않아 수정이나 추가 사항이 발생하면 운영 환경에서 그대로 개발을 진행하고 테스트를 하는 매우 미친위험한 상황이었던 것입니다. 때문에 이 잉여 자원을 활용하여 개발 서버를 구성하게 됩니다.
내부 논의를 통해 Windows Server 2019 OS를 잉여 PC에 설치하여 사내에서만 사용 가능한 개발 서버로 구성하게됩니다.
첫번째 문제는 생각보다 금방 발생합니다. 회사의 대표 웹 페이지를 리뉴얼하는 프로젝트를 진행하고있었는데, 개발 환경(windows server)에서는 정상적으로 동작하던 사용자 서비스가 운영 환경(cent OS7)으로 넘어가니 빌드조차 되지않는 문제가 발생합니다.
windows OS에 맞춰 작성된 환경 변수 파일들이 centOS로 운영체제가 바뀌어버리니 환경변수 파일의 경로를 찾지 못하였고 결국 운영 배포를 위해서 OS에 맞게 경로를 일일이 수정하여 배포하는 문제가 발생하였습니다.
이후 운영 환경과 동일한 개발 환경에 대한 필요성을 느끼게 되었고 또 하나의 (이번에는 좀 더 평범한)잉여 PC자원을 활용하여 centOS7의 개발 환경을 추가하게 되었습니다.
이후 약 2년의 시간이 흐르는 동안 여러개의 신규 프로젝트가 오픈되고 별 탈 없이 개발 조직의 틀이 잡혀가는 듯 했는데...
사내 개발 조직 규모가 그리 크지 않아 대부분 한명이 프로젝트 전반을 담당하여 개발을 진행하였습니다.
시간이 지나면서 windows 서버에는 jenkins나 redmine과 같은 개발 조직에서 공통으로 사용하는 어플리케이션을 구동하고 centOS과 동일한 운영환경이 필요한 어플리케이션은 centOS서버에 배포하기로 결정하였고, windows 서버에는 VirtualBox를 설치하여 가상 환경까지 구성하게 되었습니다. 그런데 얼마전 windows server에 원격 접속을 진행하였다가 놀라운 일을 발견하게됩니다.
바로 PC 디렉토리 여기저기에 처음보는 파일들이 숨겨져있고, 이전 서버의 백업본들이 500GB가량 (사내 NAS가 존재함에도 불구하고)보관되어 있던 것이었다. 조직 구성원에게 히스토리를 물어봐도 정확하게 알고있는 사람이 없어 처리하기 곤란한 상황이 되었습니다.
결국 개발 서버에 저장되어있던 파일들을 별도 공간에 저장 후 개발 서버 환경을 조금 더 관리하기 용이한 구조로 바꿀 필요성을 느끼게 되었습니다.
사내에서 사용하는 서버용 OS가 정해져있다면 가상화를 고려할 필요가 없었겠지만, 클라이언트에 따라, 담당 개발자에 따라 개발 환경이 변화하는 것을 고려하여 개발 서버를 Docker를 활용하여 구성하면 이전보다 더욱 간단하고 활용도 높게 사용할 수 있겠다는 생각이 들었습니다.
다음 포스트부터는 Docker를 활용하여 서비스 이미지를 컨테이너화 하는 방법을 시작으로 개발 환경을 도커라이징 환경으로 개편하는 과정을 차근차근 포스팅해보도록 하겠습니다.