컨테이너 개념 잡기 – 왜 컨테이너일까?
클라우드 네이티브에서 컨테이너는 어떤 역할을 하고 왜 중요한지 기초 개념을 잡아보도록 하겠습니다.
컨테이너 개념잡기- 왜 컨테이너일까?
컨테이너 내용물의 소유자는 컨테이너가 배송되는 방법에 직접 관여할 필요가 없으며, 배송 회사는 내용물을 알거나 관리할 필요 없이 컨테이너를 발송 지점에서 목적지로 운송합니다.
컨테이너는 가로, 세로, 높이의 크기가 세계적으로 표준화되어 있습니다. 컨테이너의 크기가 통일되어 있기 때문에 화물 트레일러로 옮기고 그대로 대형 선박에 컨테이너를 옮겨 적재 할 수 있습니다. 또한 컨테이너 표준을 지키면 물류에 대한 계약 , 보관 , 운송 , 보험 등에 대해서 동일한 기준으로 비즈니스를 할 수 있습니다.
리눅스 컨테이너 (LinuX Containers,LXC)는 단일 컨트롤 호스트 상에서 여러개의 고립된 리눅스 시스템 (컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법입니다.
리눅스 컨테이너는 Linux 커널에서 컨테이너 관련 기능이 구현되기 시작한 2008 년경부터 커널 기능만을 이용하여 컨테이너 역할을 할 수 있는 소프트웨어로 개발되고 있습니다.
Linux 커널을 패치 할 필요없이 커널에 구현되어있는 컨테이너에 관련된 기능을 활용하여 컨테이너 관리 작업을 할 수 있습니다.
육상과 해상 운송에서 컨테이너는 국제무역의 확대에 기폭제 역할을 하였으며, 컨테이너없는 무역은 상상하기 힘듭니다.
특히 동아시아의 대표적인 무역국가인 한국, 중국, 일본, 싱가포르, 타이완은 모두 컨테이너선이 정박할 수 있는 대형 도크를 가진 항구를 건설하여 국제무역 거점으로 성장하게 됩니다.
지금은 아니지만, 한국은 대량의 컨테이너를 운송할 수 있는 대형 선박 건조 분야와 해양 운송 분야의 글로벌 리더였던 적도 있습니다.
보잘 것 없어 보이는 철재 상자 – 컨테이너
육지와 바다는 수송 시스템이 전혀 다른 형태로 되어있습니다.
예전에는 화물을 트럭으로 부두까지 실어온 후 선박이 도착하면 다른 화물들과 함께 배의 측면으로 옮겨 부두 노동자가 포장하여 적재하였습니다.
그 과정에서 화물의 손상, 분실, 시간, 비용이 크게 발생하였으며, 운송 수단으로서 신뢰도 낮았습니다.
19세기 후반부터 미국과 유럽의 수많은 운송업체들은 박스 형태의 운송을 시도하였습니다.
물건을 나를 때 상자에 넣어서 운반하는 것이 편리하다는 것은 누구나 알고 있는 사실이지만, 문제는 표준화였습니다.
배를 소유한 해운업체는 구태여 자기 돈을 들여 컨테이너를 이동시킬 크레인을 항구에 설치하려 하지 않았습니다.
컨테이너 이해하기
철도 업체나 트럭 업체는 항구에 내려놓은 화물이 어떻게 배에 실리는 지에는 관심을 두지 않았습니다.
회사마다, 분야마다 다른 형태의 상자와 도구를 쓰다보니 효율성이 떨어져 상자를 쓰지 않느니만 못했습니다.
항구 노동자들 역시 정치적 영향력이 큰 노조를 조직해서 하역 작업의 기계화를 막았습니다.
1950년대 컨테이너의 등장
1950년대에 트럭운송업을 하던 Malcom McLean 과 그의 헤드 엔지니어인 Keith Tantlinger가 컨테이너를 표준화하여 세계를 변화시켰습니다.
그 당시에 배를 수작업으로 선적하는 비용은 톤당 5.86 달러였으며, 컨테이너를 사용하면 톤당 16 센트 밖에 안되며 비용은 36 배 절감됩니다.
또한 컨테이너 화는 또한 선박의 적재 및 하역 작업에 소요되는 시간을 크게 줄였습니다.
컨테이너을 발명한 말콤 맥린 (Malcolm P. McLean )
트럭 운전사였던 말콤 맥린 (Malcolm P. McLean ) 은 트럭이나 선박에 화물을 적재할 때 걸리는 오랜 대기 시간을 해결하기 위해 “박스” 만 분리하여 배에 싣는 아이디어를 생각하게 됩니다. 이것은 교통 수단이 무엇이든지 박스를 오픈하지 않고 트럭, 선박, 철도에서 즉시 화물을 교환할 수 있는 혼합수송 방법입니다.
그는 해운업계에 들어오기 전 트럭 운전과 트럭 운송업체를 운영해 봤기 때문에 표준화를 통해 화물을 효율적으로 운송하는 방법이 매우 어려운 일이라는 것을 잘 알고 있었습니다. 하지만 그는 해운사와 육송 운송업체들이 각자 자신들의 기득권을 지키고 서로의 영역을 침범하지 못하도록 방어하는 데 열을 올리는 동안 선박과 트럭이 함께 쓸 수 있는 공통 규격의 컨테이너 개발에 힘을 기울였습니다.
맥린은 바다와 육지를 포괄한다는 뜻의 시랜드(Sea-Land)사를 설립하고 1956년 3월에 최초로 컨테이너를 이용하여 해양 화물 운송 시작하게 되었습니다.
그는 컨테이너를 이용한 화물 운송의 혁명을 이끌면서, 2007년에는 포브스(Forbes)에서 선정한 ‘20세기 후반 세계를 바꾼 인물 15인’에 선정됩니다.
오픈소스 개념으로 컨테이너 기술을 공유한 Keith Tantlinger
McLean 의 헤드 엔지니어였던 Tantlinger는 화물을 컨테이너에 적재하고, 트럭으로 운반하고, 크레인으로 운반할 수 있는 복합 운송 기반 기술을 개발하였습니다.
더욱 중요한 것은 Tantlinger 는라이선스 없이 컨테이너 기술을 사용할 수 있도록 특허공개를 설득한 것입니다.
화물운송 분야의 컨테이너와 공통점은?
IT 분야에서 컨테이너는 화물 운송 분야의 컨테이너에 대한 은유입니다.
- HP, 오라클, IBM 과 같은 대형 벤더들은 수년간 켄테이너 기술을 사용해 왔으며, 특히 구글은 내부 프로젝트에서 매우 유사한 구현 방식을 사용하였습니다. 컨테이너 기술은 오픈소스와 커뮤니티를 중심으로 발전하고 있습니다.
- 화물 컨테이너의 내부 화물은 운송에 중요하진 않습니다. 세계의 모든 선박과 트럭 그리고 크레인은 컨테이너 규격에 적합해야 합니다. 마찬가지로 도커 컨테이너도 어떤 애플리케이션( 관련 파일, 프레임워크, 의존성 등)이 내부에 있는지 중요하지 않습니다. 컨테이너는 모든 리눅스 배포판에서 실행되며, AMAZON AWS, Micrsoft Azue, Google Cloud Platform, Rackplace 등 모든 퍼블릭 클라우드 환경에서 운영됩니다.
- 해외로 이사를 간다고 가정을 하면 사실상 컨테이너에 이사짐을 넣은 후 트럭으로 이동하여, 크레인으로 배에 옮겨져 다른 나라로 운송합니다. 마찬가지로 컨테이너를 이용하면 개발자가 로컬 시스템에서 애플리케이션을 빌드하고 테스트 할 수 있으며애플리케이션을 서버에 Push할 수 있습니다. 개발자는 컨테이너로 배포하게 되면 개발환경이나 운영환경이나 동일하게 동작할 것이라는 것을 알수 있습니다.
컨테이너는 라이프사이클을 손쉽게 관리할 수 있게 할 수 있고 “Run Anywhere” 비전처럼 클라우드드 서비스 어디에서도 운영될 수 있습니다. 컨테이너는 가상화와 비교했을때 클라우드 마이그레이션 과정을 비교하기 어려울 정도로 단순화되고 효율적입니다.
Drools 6.0 성능 비교: Phreak와 Rete 알고리즘 비교
/in Tech Talk/by 오픈마루 마케팅0Drools 6.0에서는 지금까지의 ReteOO 대신 Phreak ( Lazy Matching)라는 새로운 룰 엔진 알고리즘이 도입되었다.