티스토리 뷰

요약

수동으로 빌드파일만 배포할 경우 문제점

- 빌드 파일이 많을 경우 빠뜨릴 수 있음

- 로컬에서는 되는데 배포하니 안될 수 있음

 

Docker

- 서버 셋팅의 반복작업이 없음(Dockerfile에 작성 가능)

- 로컬PC에서 서버와 같은 환경 테스트 가능

docker-compose

- Docker 명령어 실행시 사용하는 옵션이 많은 경우 이를 파일화 가능

 

젠킨스

- 구축이 완료된 상태에서는 Build Now 버튼만으로 쉽게 배포가 가능

- docker와 함께한다면 구축 과정도 훨씬 간단해질 수 있음

- git과 연동하여 git push한 후 Build Now만으로 알아서 pull받고 빌드처리(docker에서)까지 마칠 수 있음

 

현업에 뛰어들고 나서 개발자로써 일을 하면서 가장 힘들었던 부분은 '배포'였다.

내가 다닌 첫회사에서는 빌드파일을 일일이 옮겨야 했으며, 옮겨야 하는 파일도 꽤 양이 많았다

로드밸런서를 통해 같은 프로젝트도 3,4번씩 배포를 해야 했으며,

1, 2번 서버는 이상이 없는데 3번 서버만 문제가 있다던가 하는 문제도 겪었으며,

배포 전에는 문제없이 돌아가다가 막상 배포를 하니 문제가 된 경우는 정말 난감했었다

 

그래서 첫회사의 자회사로 이직 결정을 하게 된 뒤,

늘 마음 속 한켠에 남아 있던 배포 자동화 시스템을 구축하고 싶다는 욕심이 피어오르기 시작했다.

현재 우리 회사에서는 Docker와 젠킨스를 같이 쓰고 있다.

왜 이런 결정을 하게 되었는지부터 얘기해야 할것 같다.

 

사실 Docker를 처음 사용하고 싶었던 계기는 사소했다.

첫회사에서는 Windows 서버였으며 IIS를 통해 자동으로 셋팅이 되었으나 자회사에선 Linux 서버였으며 screen을 통해 서버가 돌아가고 있었다.

그러나 서버를 한번 재부팅하면 모든 screen 셋팅을 처음부터 다시 해야했다.

이와 관련해 검색해보면 stack overflow에서는 그저 screen 그만 쓰고 docker를 쓰라는 답변이 돌아왔다.

docker가 대체 뭐길래? 같은 컴공을 나온 주변 친구들이 좋다고만 말하고

docker가 뭐냐고 물어봐서 듣는 답변은 이해가 가지 않는 프로그램이였다.

어쨌든 우리는 재부팅을 하더라도 다른 조작없이 서버가 잘 돌아가기를 원했기 때문에

이를 위해서라도 docker를 배워야만 했다.

 

 일단 docker에 대해서 배우기 어려웠던게 하는 방법에 대한 내용은 많았으나, 왜 사용해야하는지에 대해서는 와닿는 설명이 없었다. 결국 내가 느끼는 바에 대해 말하자면

 

- 서버 이동이나 추가 증축을 하게 될 때 해야하는 설정을 반복할 필요가 없다. 모든 것은 Dockerfile에 이미 적혀있으니까

- 다시 말하자면 서버 셋팅 조차 형상관리가 이루어진다는 뜻이기도 하다

- 로컬 PC에서 서버가 어떻게 돌아갈지에 대해서도 테스트할 수 있다. (당시 필자의 로컬PC는 Window였기에 Windows와 Linux 사이의 갭도 컸다)

 

그리고 사용하면서 처음에는 소스파일과의 volume 마운트(docker 밖의 폴더와 docker 내부 공유)를 통해 docker를 구축했으나, 로컬 PC에서 빌드가 이루어지지 않았음에도 문제 없이 실행되는 모습으로 인한 혼란을 겪고 난뒤 다른 예제들 처럼 볼륨 마운트보다는 시간이 오래걸리더라도 전부 COPY해서 사용하는 방식으로 전환하게 되었다.

 

또한 젠킨스는 첫회사를 다닐때부터 사용하고 싶었던 배포 자동화 툴이였으며, 벤처기업인 자회사를 오게 된 기회를 통해 구축해보기로 했다.

사실 의도치는 않았지만, docker 셋팅을 맞추고 나니 젠킨스를 통해 배포 자동화를 하는게 엄청 쉬워졌다. 그저 git을 통해 pull을 받은 후 docker 명령어만 실행하면 되기 때문이다.

그러나 사용하다가 이 조차도 더욱 간단하게 만들고 싶다는 욕심이 생겨 docker-compose까지 사용하게 되었다.

필자가 docker-compose를 사용하게 된 이유는 일반 docker 명령어는 옵션이 너무 많아 관리하기 힘들었기 때문이였다. docker-compose에서는 docker 명령을 파일화 할 수 있었다.

 

아무튼 배포를 자동화하고 안정적으로 다루는데 docker와 젠킨스가 큰 도움이 되었다고 느꼈고, 역시나 처음에 배우기 굉장히 어려웠지만 배우고 나니 생각보다 어렵지는 않았다. 앞으로의 개발자 인생이 어떻게 될지는 모르겠지만 늘 배우는 걸 즐거워하고 성장을 멈추지 않는 개발자가 되었으면 좋겠다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함