2015.09.02

기고 | 개발 환경의 혁신! '도커' 따라잡기

Matthew Heusser | CIO

소프트웨어 시험 속도를 높이는 도커는 모든 규모의 개발팀에게 유용할뿐더러 이용하기도 쉽다. 여기 그 이유들을 정리한다.


Credit: iStockphoto

테스트 환경에서 딱 맞는 빌드가 나올 때까지 기다리기란 여간 성가신 일이 아니다. 또한 개발, 테스트, 생산 사이의 간극은 결함을 야기했다. 가상 머신(Virtual Machine)을 이용하면 시스템 데이터 카피를 공유해 이런 문제들을 해결할 순 있기는 하다. 그러나 매우 느린데다 디스크 공간을 몇 기가바이트씩 차지한다.

그렇다. 가볍고 빠른 리눅스 가상화 툴 도커(Docker)가 활약할 타이밍인 것이다.

도커가 제안하는 기회들
어느 정도의 기술적 지식만 있다면 로컬 머신에 테스트 환경을 생성하는 것은 몇 초 걸리지 않는다. 기존 OS에 새 프로세스가 연결되므로 ‘부팅’할 필요가 없다. 이전 빌드가 저장돼 있는 상태일지라도 도커는 새로운 빌드에서 달라진 점들만을 로딩한다. 기특할 정도로 똑똑하다.

도커를 채택한 조직들에게 이러한 간결함은 특별한 경험이 아니다. 검증 단계의 아키텍처를 상용 단계로 확장하는 과정에서도 자동 연결을 통한 간결화의 혜택을 누릴 수 있다.

도커의 또 다른 훌륭한 기능 중 하나는 완전히 새로운, 십여 개의 가상 머신으로 구성된 서버팜용 가상 인프라스트럭처를 구성할 수 있다는 것이다. 이들은 ‘그린’ 빌드라 불린다.

그린 빌드에서는 그 어떤 최종 복귀 테스팅도 가능하다. 테스팅이 끝나면 배치 스크립트가 서버로 전달되고, 이제는 그린 빌드가 상용 코드의 역할을 맡게 된다. 하지만 이전 빌드인 ‘블루' 빌드 역시 필요할 경우를 대비해 삭제되지 않고 잔여 해 있기에 언제던 복귀가 가능하다.

여러 테크놀로지들에서 적용 가능한 이러한 방식을 블루/그린 배치라 부른다. 도커는 이런 기존의 방법론을 보다 용이하게 하는 솔루션일 뿐이다.

왜 도커인가?
하나의 인스톨러에 컴파일하는 윈도우 기반 소프트웨어와는 달리 웹 기반 소프트웨어는 서버 상에서 빌드를 구동하는 방식을 취한다. 웹사이트 배포를 관리하는 전통적인 방식은 일반적으로 3~4개의 층위(개발-테스트-(검증)-상용)로 구성되는데, 이 각각의 단계는 최소 한 개의 서버와, 일련의 승격 규정(promotion rules)을 지닌다. 소프트웨어가 다음 승격에 준비되면, 빌드가 다음 레벨 서버에 배치되는 방식이다.

그러나 가상 머신의 등장으로 이런 방식은 완전히 바뀌게 됐다. 메인 서버가 원하는 만큼 얼마든지 가상 서버를 생성할 수 있게 됐기 때문이다. 덕분에 이제는 모든 세부 브랜치(branch)가 각자의 테스트를 진행하고, 또 그것을 파이널 테스트로 통합할 수 있다. 신규 하드웨어 구입에 필요한 수 만 달러의 예산이 절감될 수 있게 된 것이다.

가상 머신의 등장의 등장으로, 개발자들이 상용 과정에서의 문제를 디버깅하는 시점에 테스터들이 2차 머신에서 패치 테스트를 진행하는 동시 운영 역시 가능해졌다. 한 명의 테스터는 배포를 앞둔 패치의 회귀를 확인하고, 다른 다섯의 테스터가 배포판의 기능을 테스트하고, 다섯의 개발자는 신규 브랜치 내 신기능을 작업하는 풍경이 최근 개발팀의 운영 방식이다.

가상 머신의 문제는 크기와 속도다. 각 VM은 전체 호스트 운영 체제를 포함하고 있으며 가상 머신을 생성한다는 것은 완전히 새로운 운영 체제를 만들어 내고, 수 GB의 공간을 할당하며, 그 운영 체제에 ‘빌드’를 인스톨 함을 의미한다. 그 운영 체제 역시 당신의 컴퓨터의 애플리케이션 공간에서 작동하므로 말 그대로 호스트 운영 체제 안에 또 하나의 운영 체제를 갖게 되는 것이다. 


가상 머신의 부팅/인스톨 프로세스는 짧게는 수 분에서 길게는 한 시간까지 걸릴 수 있어 플로우를 방해하기에 충분하다. 심각한 속도 저하를 유발 하지 않고 호스트 할 수 있는 가상 머신의 개수는 데스크톱 하나 당 한두 개뿐이다.

네트워크 상에 온-디맨드로 가상 머신을 생성하려 하는 것은 그 자체로 하나의 ‘사설 클라우드 컴퓨팅’프로젝트다.

도커는 애플리케이션 공간 대신 커널에서 작동한다. 다시 말해 그 자체가 운영 체제의 일부가 되어 작동한다는 뜻이다. 물론 운영 체제의 일부가 되어 작동하다 보면 리눅스의 모던 커널들로 구동 범위의 제한이 있긴 하지만(호스트 머신과 콘테이너 모두), 운영 체제의 작업 전환 과정이 크게 간편해진다는 이점이 있다.




2015.09.02

기고 | 개발 환경의 혁신! '도커' 따라잡기

Matthew Heusser | CIO

소프트웨어 시험 속도를 높이는 도커는 모든 규모의 개발팀에게 유용할뿐더러 이용하기도 쉽다. 여기 그 이유들을 정리한다.


Credit: iStockphoto

테스트 환경에서 딱 맞는 빌드가 나올 때까지 기다리기란 여간 성가신 일이 아니다. 또한 개발, 테스트, 생산 사이의 간극은 결함을 야기했다. 가상 머신(Virtual Machine)을 이용하면 시스템 데이터 카피를 공유해 이런 문제들을 해결할 순 있기는 하다. 그러나 매우 느린데다 디스크 공간을 몇 기가바이트씩 차지한다.

그렇다. 가볍고 빠른 리눅스 가상화 툴 도커(Docker)가 활약할 타이밍인 것이다.

도커가 제안하는 기회들
어느 정도의 기술적 지식만 있다면 로컬 머신에 테스트 환경을 생성하는 것은 몇 초 걸리지 않는다. 기존 OS에 새 프로세스가 연결되므로 ‘부팅’할 필요가 없다. 이전 빌드가 저장돼 있는 상태일지라도 도커는 새로운 빌드에서 달라진 점들만을 로딩한다. 기특할 정도로 똑똑하다.

도커를 채택한 조직들에게 이러한 간결함은 특별한 경험이 아니다. 검증 단계의 아키텍처를 상용 단계로 확장하는 과정에서도 자동 연결을 통한 간결화의 혜택을 누릴 수 있다.

도커의 또 다른 훌륭한 기능 중 하나는 완전히 새로운, 십여 개의 가상 머신으로 구성된 서버팜용 가상 인프라스트럭처를 구성할 수 있다는 것이다. 이들은 ‘그린’ 빌드라 불린다.

그린 빌드에서는 그 어떤 최종 복귀 테스팅도 가능하다. 테스팅이 끝나면 배치 스크립트가 서버로 전달되고, 이제는 그린 빌드가 상용 코드의 역할을 맡게 된다. 하지만 이전 빌드인 ‘블루' 빌드 역시 필요할 경우를 대비해 삭제되지 않고 잔여 해 있기에 언제던 복귀가 가능하다.

여러 테크놀로지들에서 적용 가능한 이러한 방식을 블루/그린 배치라 부른다. 도커는 이런 기존의 방법론을 보다 용이하게 하는 솔루션일 뿐이다.

왜 도커인가?
하나의 인스톨러에 컴파일하는 윈도우 기반 소프트웨어와는 달리 웹 기반 소프트웨어는 서버 상에서 빌드를 구동하는 방식을 취한다. 웹사이트 배포를 관리하는 전통적인 방식은 일반적으로 3~4개의 층위(개발-테스트-(검증)-상용)로 구성되는데, 이 각각의 단계는 최소 한 개의 서버와, 일련의 승격 규정(promotion rules)을 지닌다. 소프트웨어가 다음 승격에 준비되면, 빌드가 다음 레벨 서버에 배치되는 방식이다.

그러나 가상 머신의 등장으로 이런 방식은 완전히 바뀌게 됐다. 메인 서버가 원하는 만큼 얼마든지 가상 서버를 생성할 수 있게 됐기 때문이다. 덕분에 이제는 모든 세부 브랜치(branch)가 각자의 테스트를 진행하고, 또 그것을 파이널 테스트로 통합할 수 있다. 신규 하드웨어 구입에 필요한 수 만 달러의 예산이 절감될 수 있게 된 것이다.

가상 머신의 등장의 등장으로, 개발자들이 상용 과정에서의 문제를 디버깅하는 시점에 테스터들이 2차 머신에서 패치 테스트를 진행하는 동시 운영 역시 가능해졌다. 한 명의 테스터는 배포를 앞둔 패치의 회귀를 확인하고, 다른 다섯의 테스터가 배포판의 기능을 테스트하고, 다섯의 개발자는 신규 브랜치 내 신기능을 작업하는 풍경이 최근 개발팀의 운영 방식이다.

가상 머신의 문제는 크기와 속도다. 각 VM은 전체 호스트 운영 체제를 포함하고 있으며 가상 머신을 생성한다는 것은 완전히 새로운 운영 체제를 만들어 내고, 수 GB의 공간을 할당하며, 그 운영 체제에 ‘빌드’를 인스톨 함을 의미한다. 그 운영 체제 역시 당신의 컴퓨터의 애플리케이션 공간에서 작동하므로 말 그대로 호스트 운영 체제 안에 또 하나의 운영 체제를 갖게 되는 것이다. 


가상 머신의 부팅/인스톨 프로세스는 짧게는 수 분에서 길게는 한 시간까지 걸릴 수 있어 플로우를 방해하기에 충분하다. 심각한 속도 저하를 유발 하지 않고 호스트 할 수 있는 가상 머신의 개수는 데스크톱 하나 당 한두 개뿐이다.

네트워크 상에 온-디맨드로 가상 머신을 생성하려 하는 것은 그 자체로 하나의 ‘사설 클라우드 컴퓨팅’프로젝트다.

도커는 애플리케이션 공간 대신 커널에서 작동한다. 다시 말해 그 자체가 운영 체제의 일부가 되어 작동한다는 뜻이다. 물론 운영 체제의 일부가 되어 작동하다 보면 리눅스의 모던 커널들로 구동 범위의 제한이 있긴 하지만(호스트 머신과 콘테이너 모두), 운영 체제의 작업 전환 과정이 크게 간편해진다는 이점이 있다.


X