-
도커(Docker)
- 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션의 개발, 배포, 실행을 쉽게 관리할 수 있도록 도와주는 오픈 소스 기술
- 일반적으로 프로그램은 여러 가지 종속성과 환경 설정에 의존하며, 서로 다른 시스템에서 실행되는 경우 서로 충돌하여 발생하는 문제를 해소하기 위한 기술
-
도커(Docker) 의 중요한 특징과 개념
- 컨테이너: 프로그램 실행에 필요한 라이브러리, 종속성, 설정 등을 포함하는 격리된 환경
- 이미지: 컨테이너를 생성하는 템플릿으로, 프로그램과 종속성을 묶어놓은 것. ( = 실행환경 )
( Docker Hub 와 같은 저장소에 공유할 수 있다. )
- 레지스트리: Docker 이미지를 저장하고 공유하는 저장소
( Docker Hub 는 가장 잘 알려진 레지스트리 중 하나이다. )
- Dockerfile: Docker 이미지를 빌드하는 데 사용되는 텍스트 파일. 컨테이너로 패키징하기 위해 필요한 명령과 설정을 포함한다.
- Docker Compose: 여러 개의 컨테이너로 구성된 프로그램을 정의하고 관리하기 위한 도구
-
도커(Docker) 의 장점 / 단점
-
장점
- 환경 일관성: 프로그램과 그 족송성을 포함하므로 개발 및 운영 환경의 일관성을 유지할 수 있다.
- 격리된 환경: 호스트 시스템과 분리되어 독립적으로 실행되므로, 서로 영향을 받지 않고 안정성있는 운영을 할 수 있다. 시스템 리소스의 효율성 또한 상승한다.
- 가볍고 빠르다: 가상 머신과 비교했을 때, Docker 컨테이너는 가볍고 빠른 속도와 배포가 가능하다.
- 확장성: 컨테이너화된 프로그램은 수평적으로 확장하기 용이하며, 부하를 분산시킬 수 있다.
- Docker Hub: 다른 사용자들이 구성한 이미지를 활용할 수 있다. ( = 레퍼런스가 많다. )
-
단점
- 컨테이너 오버헤드: 가상 머신보다 가벼울 수는 있으나, 여러 개의 컨테이너가 실행되면 약간의 오버헤드가 발생할 수 있다.
- 네트워크 설정: 여러 개의 컨테이너가 함께 작동할 경우 네트워크 설정 및 통신 관리가 복잡하다.
- 지원하는 운영체제: Windows 시스템에서는 특정 요구 사항을 만족해야 한다.
- 부적합한 프로그램: 그래픽 인터페이스(GUI)를 갖는 것은 적합하지 않다.
-
오토 스케일링(Auto Scaling)
- 클라우드 환경에서 사용되는 자동화 기술로, 서버 또는 리소스의 수를 프로그램의 수요에 따라 동적으로 자동 조정하는 기능
-
오토 스케일링의 동작 과정
- 자동 확장 및 축소: 설정한 조건에 따라 진행이 되며, 이는 클라우드 서비스 제공 업체의 API 를 통해 자동으로 수행된다. ( 사용자가 직접 설정하고 구성할 수도 있다. )
- 조건 설정: 어떤 상황에서 오토 스케일링을 수행할지에 대한 조건과 규칙을 설정한다.
( ex. 트래픽이 일정량을 넘어서면 서버 수를 자동으로 확장한다. )
- 상태 모니터링: 프로그램 또는 서버의 상태를 지속적으로 모니터링한다.
( ex. 트래픽, CPU 사용량, 메모리 사용량 등 )
-
Scale In / Scale Out
- 소프트웨어 애플리케이션의 성능을 조절하는 것을 의미하며, 이는 부하가 증가하거나 감소할 때 서버 인스턴스의 수를 늘리거나 줄여서 처리 능력을 확장 또는 축소하는 것을 의미한다.
- Scale In: 서비스의 수요가 감소할 때 컴퓨팅 리소스를 자동으로 줄이는 것을 의미한다. 이로 인해 자동으로 불필요한 서버를 제거하고 비용을 절감하는데 사용한다.
- Scale Out: 서비스의 수요가 증가할 때 컴퓨팅 리소스를 자동으로 추가하는 것을 의미한다. 이로 인해 많은 트래픽이 들어오더라도 부하를 처리하는데 사용한다.
-
Scale Up / Scale Down
- 시스템 또는 인프라스트럭처의 성능을 조절하는 것을 의미하며, 기존 시스템을 업그레이드하거나 다른 시스템으로 교체하여 처리 능력을 증가 또는 감소시키는 것을 의미한다.
- Scale Up: 인프라스트럭처의 성능 향상을 위해 더 높은 성능을 가진 하드웨어로 업그레이드하거나, 리소스를 늘리는 작업
- Scale Down: 인프라스트럭처의 성능 감소를 위해 더 작은 규모의 하드웨어로 축소하는 작업
-
In/Out & Up/Down 의 차이점 ?
- In/Out 은 애플리케이션의 성능 조절에 초점이 맞춰져있고,
- Up/Down 은 인프라스트럭처의 성능 조절에 초점이 맞춰져있다
-
예시는 무엇이 있을까?
- 방탈출 카페 예약 시스템을 예로 들어보자.
- 예약을 오픈하는 시간이 정해져 있다면, 특정 시간대의 성능과 안정성을 유지하기 위해 설정