Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

컨테이너 기술의 의미?

컨테이너 기술이 필요한가 ? 라고 묻는 다면 마땅한 답이 생각나지 않을 것이다. 기술적으로는 "가상머신 보다 빠르게 실행 할 수 있다", "메모리와 CPU를 효과적으로 사용 할 수 있다"는 장점이 있다고 말 할 수 있겠다. 하지만 그게 그렇게 중요한 특징인가 ? 예컨데, 가상머신 기반의 시스템의 변경, 개발에서 배포 프로세스의 재 설계, 혹은 컨테이너 기반으로 새로 구축하는게 분명한 이익이 있느냐 하는 거다. 변경을 하건 새로 만들건, 비용이 들어가고 위험부담이 따르기 마련이다. 특히 비지니스 측면에서 가시적인 효과를 얻을 수 있는지 라고 묻는 다면 더더욱 할 말이 없다.

왜 할 말이 없을까 ? 컨테이너는 가상화 방법 중 하나일 뿐이다. 가상 머신 기방이든 컨테이너 기반 이든 그 자체로는 별로 특이 할 것이 없는 기술이다. 컨테이너는 어떤 기술의 큰 흐름 속에 가장 최근 나타난 현상 중 한가지일 뿐으로, 컨테이너 자체가 기술의 흐름은 아니다. 따라서 컨테이너 기술의 중요성을 살펴보려면, 그 원인이 되는 기술의 흐름을 살펴볼 필요가 있다.

DevOps에 대해서

도요다의 린 공정은 자동차 산업의 방향을 바꿔버렸다. 이전까지 자동차는 "대량 생산 & 대량 소비" 방식으로 개발을 했다. 대체로 사용자는 이런 기능과 모양과 색상을 차를 좋아 할 거야 라고 결정하고, 동일한 모습의 차를 대량으로 찍어냈다. 사용자가 선택 할 수 있는 것이라고는 "색상" 정도였는데, 그나마도 제한적이었다. 예컨데, 검은색의 박스차량을 만든 다음에 "사용자가 좋아하도록 만드는게" 마케팅 전략이었다.

린 공정에서 자동차 설계, 조립, 시장조사자, 마케터, 품질관리자는 하나의 팀처럼 움직인다. 시장조사자가 시장 조사 레포트를 만들면, 즉시 설계를 하고, 조립을 해서 시장에 내놓고 피드백을 받는다. 피드백 결과는 빠르게 다음 제품에 반영된다. 린 공정은 설계에서 판매까지의 과정을 압축하는 걸 핵심이라고 할 수 있다. 도요다는 유저가 원하는 제품을 더 빠르게 내 놓을 수 있었고, 변덕스러운 유저의 요구에 빠르게 적응 할 수 있었다.

린이 소프트웨어에 적용된게 애자일이다. 애자일을 위한 여러가지 복잡한 방법론들이 있지만 핵심은 압축이다. 압축은 설계에서 개발까지의 과정 압축과 이를 위한 조직의 압축 두 축에서 이루어진다.

애자일이 소프트웨어 개발을 위한 공정으로 성공적으로 자리잡은 이유를 살펴보자. 가장 큰 이유는 인터넷의 등장으로 인한 소프트웨어 환경의 변화다. 정보들이 인터넷으로 서로 연결되면서 유저의 요구와 시장의 변화가 빨라졌다. 그리고 시장의 미래를 도저히 예측 할 수 없는 상황에 이르렀다. 개발자는 물론이고 마케터, CEO, 심지어 시장 분석으로 먹고 사는 컨설턴트 조차도 인터넷에서의 유저의 요구와 기술의 변화를 예측 할 수가 없다.

예측 할 수 없는 상황에서 어떻게 제품을 만들 것인가 ? 완벽한 설계를 통해서 제품을 시장에 내놓는 방식은 "인터넷"이전의 정적인 시장에서나 써먹을 수 있는 수법이다. 인터넷에서 이런 식으로 개발을 했다가는 개발 도중에 설계를 바꿔야 하거나, 기껏 개발했더니 시장의 요구와 전혀 동떨어진 제품을 만들게 될 확률이 대단히 높다.

결국 빠르게 제품을 만들고, 시장반응을 살펴서 개발에 반영해서 다시 제품을 만드는 식으로 생산공정을 바꾸게 된다. 이 과정을 체계적으로 정리한게 애자일이다.

한가지 언급하고 다음으로 넘어가야 할 것 같다. 소프트웨어는 반드시 애자일을 따라야 한다는 법칙은 없다. 애자일은"소프트웨어"라서가 아닌 "인터넷이라는 동적인 환경"때문에 도입된 거다. 예측하능한(혹은 예측해야만 하는) 정적인 환경에서 작동하는 소프트웨어의 경우에는 적당하지 않은 개발 방식일 수 있다.

도커 레포지토리 관리

도커 이미지 개발 프로세스

도커를 이용한 애플리케이션 개발과 배포