1. 컨테이너란?
소프트웨어는 OS와 라이브러리에 의존성을 띕니다. 그러므로 하나의 컴퓨터에서 성격이 다른 소프트웨어를 한번에 실행할 때 어려움을 가질 수 있고 관련된 구성을 관리하기가 어렵습니다.
컨테이너는 개별 소프트웨어의 실행에 필요한 실행환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술을 말합니다.
컨테이너는 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 매커니즘을 제공합니다.
2. 컨테이너와 가상머신(VM)의 차이
가상머신 또한 독립적인 실행환경을 구성할 수 있도록 도와줍니다. 두 차이를 살펴보면,
가상머신
HyperVisor가 있습니다. 이는 컴퓨터가 가지고 있는 인프라 리소스들에 대해 VM별로 배분하는 역할을 합니다.
또한 각 VM에서는 독립적인 Guest OS를 가지고 있습니다. 따라서 독립적인 플랫폼을 하나씩 증가시킬 때마다 불필요한 OS를 만드는 작업에 대해서 계속 해야 합니다. 메모리나 자원에 관해서 유동적인 관리가 안되고 처음부터 지정하고 실행해야 하기 때문에 비효율적입니다.
컨테이너
컨테이너의 경우 하나의 Host OS 위에서 마치 각각의 독립적인 프로그램처럼 관리되고 실행됩니다.
불필요한 OS를 만드는 작업 및 인프라를 독립적으로 나눌 필요가 없어서 확장성이 좋고 빠릅니다.
컨테이너의 장점 정리
- 애플리케이션 레벨 고립
- VM보다 빠른 셋업
- VM보다 메모리를 덜 소모
- VM과 비교했을 때 크기가 작기 때문에 마이그레이션, 백업, 전송이 쉬움
- 하드웨어와의 빠른 커뮤니케이션을 통해 성능에 효과적
- 애플리케이션 배치와 유지보수 향상
- 애플리케이션 전달 시간 감소
3. 도커란?
도커는 컨테이너 기반의 오픈소스 가상화 플랫폼 중 하나입니다. 도커를 사용하면 인프라에서 애플리케이션을 분리하여 컨테이너로 추상화시켜 소프트웨어를 빠르게 제공할 수 있습니다.
애플리케이션을 분리하여 컨테이너로 추상화시켜 소프트웨어를 빠르게 제공할 수 있습니다. 이는 주어진 하나의 Host OS 안에서 여러 컨테이너를 동시에 실행할 수 있습니다.
또한 도커는 컨테이너의 라이프 사이클을 관리하고 애플리케이션을 오케스트레이션(Work Flow의 자동화)된 서비스로 배포할 수 있습니다.
예를 들어, 백엔드 프로그램, 데이터베이스, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google Cloud 등 어디에서든 실행할 수 있습니다.
'Spring' 카테고리의 다른 글
[Spring] Spring Boot에서 JPA QueryDSL 사용 | QueryDSL 사용법 | QueryDSL 의존성 추가 (2) | 2024.10.03 |
---|---|
[Spring] 스프링 카카오 소셜 로그인 구현 | 깃 카카오 소셜 로그인 코드 (5) | 2024.09.25 |
[Spring] 소셜로그인 연동 | 카카오 로그인 | 카카오 사용자 정보 가져오기 | 카카오 사용자 정보로 회원가입 구현 (0) | 2024.09.18 |
[Spring] Controller 테스트 코드 작성하기 (0) | 2024.09.13 |
[Spring] AOP 관점지향 프로그래밍 | 횡단 관심사 분리 (0) | 2024.09.10 |