woniper

[Docker] 써야하는 이유 본문

개발환경

[Docker] 써야하는 이유

woniper1 2016. 12. 25. 18:04

  개인적으로 Docker를 써야하는 이유를 몇가지 생각해보았다.

  1. 서버 운영이 쉬워진다.
  2. 장애를 해결하기 위한 재연이 쉬워지고 그로인해 장애 해결 시간을 줄일 수 있다.
  3. 개발장비에 테스트 환경 구축이 쉽고 깔끔하다.
서버 운영이 쉬워진다.
  Docker란 무언인가에서 설명한 부분인데, Docker로 서버 환경을 일관성있게 유지하고 공유할 수 있기 때문에 추가로 서버가 확장되거나, 서버 환경이 변경되는경우(애플리케이션 뿐 아니라 서버도 마찬가지도 요구사항이 자주 변경되기 마련이다.) 쉽고 빠르게 공유와 확장이 가능하다. 이는 즉 2번(장애를 해결하기 위한 재연 쉬워진다.)으로 이어진다.
  하지만 Docker를 학습해야하지 않냐는 대답을 종종 듣곤하는데, 그렇게 치면 애플리케이션을 운영한다는 것은 평생 공부하고 기술을 익혀야 살아 남을 수 있는 직업인데, 그렇게 생각한다는 것은 벌써 뒤쳐지고 있다는 소리로 들린다. Docker로 나온지 얼마 되지 않았는데, 빠르게 자리를 차지하고 여러 방면에서 사용을 하는 사례가 많이 나오고 있다. 즉 빠르게 기술이 변화하고 있는데 기존에 알고 있던 지식으로만 살아남으려고 하는 것은 욕심 아닐까 생각한다.

장애를 해결하기 위한 재연이 쉽다.
  애플리케이션 운영 중 장애가 발생했다. 애플리케이션 문제도 아니고, 서버에 설치된 Redis에서 문제가 발생했다고 예를 들어보자. 그런데 개발환경과 테스트 환경에서는 절대 동일한 장애 상황이 재연이 되지 않아 장애를 해결하기 쉽지 않았다. 그런데 나중에 장애를 해결하고 보니 문제는 Redis 버전 문제였다. 개발환경과 테스트 환경에서는 3.2를 사용하고 운영 서버에서는 4.0을 사용하고 있던 것이다. 이렇듯 버전만 달라고 장애가 발생하는 경우가 종종 생기는데 서버 환경에 버전말고도 수많은 설정과 필요한 애플리케이션을 설치하는데 장애 상황은 똑같이 재연하기란 쉽지 않다.
  때문에 Docker를 통해 모든 서버를 동일한 환경으로 설정하는게 좋다고 생각한다.


개발장비에 테스트 환경 구축이 쉽고 깔끔하다.

  로컬환경에 redis를 여러 버전별로 설치해서 테스트하고 싶은 경우가 있다. 로컬에 redis를 버전별로 여러개를 설치하자니, 번거롭기도하고 로컬 환경에 이것저것 설치하다보니 꼬이는 경우가 있다. 이런 경우 테스트 환경을 위해 Docker를 통해 여러 버전에 redis를 설치해서 테스트해보는 것은 어떨까?

  나는 Docker를 사용한 후로 mysql이나 redis 같이 애플리케이션과 연동해서 사용해야하는 인프라 관련 애플리케이션은 Docker를 통해 설치해서 사용한다. 설치도 쉽고, 지우기도 쉽다. 그냥 Docker만 설치하고 지우면 되니까.

Comments