관리자25.02.28조회 53
컨테이너는 놀라운 도구입니다. 제품 개발, 품질 보증, 소프트웨어 개발에 종사하는 사람이라면 누구나 컨테이너와
컨테이너가 가능하게 구현한 지속적인 개발 및 지속적인 배포(CICD) 사이클을 칭찬합니다. 그렇다면, 이게 왜 그렇게 중요할까요?
모놀리식 아키텍처는 하드웨어, 소프트웨어, 애플리케이션이 모두 함께 설계된 오리지널 통합 시스템입니다. 어느
한 시스템에 변화가 생기면 나머지 두 시스템에도 직접적인 영향을 미치며, 이는 개발 속도를 느리게 만듭니다. 과거에 관리해야 했던 호환성 매트릭스를 떠올려 보세요. 하드웨어를
운영체제와 애플리케이션으로부터 추상화함으로써 동일한 하드웨어 시스템에서 여러 운영체제를 실행할 수 있게 되었으며,
이로 인해 하드웨어는 유닉스, 마이크로소프트, 또는
다른 운영체제를 필요에 따라 실행할 수 있는 대규모의 대체 가능한 서버 풀로 변모하게 되었습니다. 해당
이점은 획기적이었지만, 그 대가로 기본 운영체제뿐만 아니라 각 가상 머신마다 운영체제가 필요했습니다. 그 대가는 CPU 사이클을 관리하는 데 소모되었고, 많은 중복 저장 공간을 차지했습니다. 그러던 중 새로운 해결책으로
컨테이너가 등장했습니다. 컨테이너는 기본 운영체제와 개별 애플리케이션 간의 추상적인 부분을 생성합니다. 이를 통해 각 애플리케이션마다 운영체제가 필요하지 않게 되어 관리와 저장 공간의 측면에서 더 가벼워졌고, 작아졌습니다. 이 간소화된 접근 방식은 애플리케이션이 컨테이너 내에서
자체적으로 실행하는 데 필요한 모든 종속성, 라이브러리, 기타
바이너리 및 설정 파일을 함께 가지고 있어야 합니다. 아래는 모놀리식,
가상 머신, 그리고 컨테이너 아키텍처를 단순화하여 시각적으로 표현한 것입니다.
컨테이너는 정말 멋져 보이고, 컨테이너 아키텍처 내에서 레이어별로
개발하는 방법에 대해 다루지는 않았지만, 이는 게임 체인저입니다. 여기서는 DevOps에 대해서는 다루지 않겠지만, 정말 멋진 기술입니다. 이를 발명하였으며, 이에 대해 논문을 작성한 전 직장 동료이자 동문이며, 컨테이너와 컨테이너 계층 기술로 여러 회사를 만드는 데 도움을 준
Dinesh Subhraveti 박사와 Shaya Potter 박사를 만나보세요.
컨테이너는 보통 수십 메가바이트 크기인 반면, 자체 운영체제를 가진
가상 머신은 수 기가바이트에 이를 수 있습니다. 크기에서 한두 자릿수의 차이가 있기 때문에, 단일 서버에서 가상 머신보다 훨씬 더 많은 컨테이너를 호스팅할 수 있습니다.
또 다른 장점은 시작 시간입니다. 가상 머신은 애플리케이션을 시작하기 전에 운영체제 부팅
절차를 거쳐야 하며, 이 과정은 몇 분이 걸릴 수 있습니다. 반면
컨테이너는 거의 즉시 시작할 수 있습니다. 이 기능을 통해 컨테이너 애플리케이션은 필요할 때 시작하고, 더 이상 필요하지 않으면 사라져 다른 프로세스를 위한 리소스를 확보할 수 있습니다. 또한 컨테이너는 다른 컨테이너와 결합하여 깔끔하고 효율적인 모듈성을 제공할 수 있습니다. 모듈성은 애플리케이션을 데이터베이스, 프론트엔드 등과 같은 개별
기능으로 분할할 수 있게 합니다.
컨테이너가 애플리케이션/프로그램을 자체적으로 실행할 수 있는 능력은
또 다른 강력한 기능으로, 많은 영향과 이점을 제공합니다. 마지막으로, 컨테이너의 독립된 특성은 노트북에서 클라우드에 이르기까지 컴퓨팅 환경 전반에 걸쳐 뛰어난 이식성을 제공합니다.
그렇다면 컨테이너와 스토리지에는 어떤 차이가 있을까요? 컨테이너는
상태가 없지만, 스토리지는 상태를 유지한다는 겁니다.
참조: FalconStor Software. (2020, March 3). The 100-year Archive and the Data Preservation Explosion—Part Two: Containers, containers everywhere, Nor any bit to store. FalconStor. https://www.falconstor.com/falcblog/the-100-year-archive-and-the-data-preservation-explosion-part-two/