1장 - 새로운 인프라 환경이 온다.
- Created
- 2022년 9월 3일 PM 8:24
1.1 컨테이너 인프라 환경이란#
컨테이너 인프라 환경은 컨테이너를 중심으로 구성된 인프라 환경입니다.
- 컨테이너는 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 의미합니다.
- 컨테이너는 가상화 상태에서 동작하는 프로세스보다 가볍고 빠르게 동작합니다.
1.1.1 모놀리식 아키텍처#

모놀리식 아키텍처는 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조를 의미합니다.
장점#
- 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이하다.
- 개발이 좀 더 단순하고 코드 관리가 간편하다.
단점#
- 서비스를 운영하는 과정에서 수정이 많을 경우, 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을 미칠 가능성이 커진다.
1.1.2 마이크로서비스 아키텍처#

마이크로서비스 아키텍처는 시스템 전체가 하나의 목적을 지향하는 바는 모놀리식 아키텍처와 동일합니다. 하지만 개별 기능을 하는 작은 서비스를 각각 개발해 연경하는 데서 그 차이를 보입니다.
보안, 인증 등과 관련된 기능이 독립된 서비스를 구성하고 있으며 다른 서비스들도 독립적으로 동작할 수 있는 완결된 구조입니다.
서비스 개수는 고정된 것이 아니기 때문에 어떤 서비스가 등록돼 있는지 파악하기 위해 서비스 디스커버리를 사용합니다.
장점#
- 개발된 서비스를 재사용하기 쉽다
- 향후 서비스가 변경됐을 때 다른 서비스에 영향을 미칠 가능성이 줄어든다.
- 사용량의 변화에 따라 특정 서비스만 확장할 수 있다.
- 각 서비스는 필요한 기능이 특화된 데이터베이스를 선택해 개별 서비스에 할당할 수 있습니다.
단점#
- 모놀리식 아키텍처보다 복잡도가 높다.
- 각 서비스가 서로 유기적으로 통신하는 구조로 설계되기 때문에 네트워크를 통한 호출 횟수가 증가해 성능에 영향을 줄 수 있다.
1.1.3 컨테이너 인프라 환경에 적합한 아키텍처#

IT 세계에서는 대부분 정해진 답이 없습니다. 주어진 상황에 적합한 기술이 있을 뿐
모놀리식으로 시작해 시스템이 성장하고 기능이 늘어나며 마이크로서비스로 전환될 수 있습니다.
예전엔 기존 시스템을 확장하는 것은 시간과 비용이 많이 들어가는 복잡한 작업이었지만, 지금은 시스템 확장에 유연하게 대처할 수 있는 기반 기술이 충분히 마련돼 있습니다.
소규모 프로젝트라도 마이크로서비스 아키텍처로 설계하면 기능에 집중한 안정적인 서비스를 구현할 수 있고 구현된 서비스를 재사용할 수 있으며, 해당 서비스를 다른 서비스와 연결해 구조화 하기 때문에 장기적으로 볼 때 유지보수 측면에서 매우 유리하다.
컨테이너는 마이크로서비스 아키텍처의 서비스와 1:1로 완벽하게 대응하기 때문에 일부 도구를 이용하면 도입/설계/운용 비용이 감소하고 생산성이 향상된다.
1.2 컨테이너 인프라 환경을 지원하는 도구#
1.2.1 도커#
도커는 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구입니다.
- 도커로 애플리케이션을 실행하면 운영체제 환경에서 관계없이 독립적인 환경에서 일관된 결과를 보장합니다.
1.2.2 쿠버네티스#
쿠버네티스는 다수의 컨테이너를 관리하는데 사용합니다. 컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증, 부하에 따른 동적 확장 등의 기능을 제공합니다.
- 처음에는 다수의 컨테이너만 관리하는 도구였지만, 지금은 컨테이너 인프라를 기반으로 API 게이트웨이, 서비스 디스커버리, 이벤트 버스, 인증 및 결제 등 다양한 서비스를 효율적으로 관리할 수 있는 환경을 제공하고 이를 내외부와 유연하게 연결해 줍니다.
1.2.3 젠킨스#
젠킨스는 지속적 통합(CI)과 지속적 배포(CD)를 지원합니다.
- 지속적 통합과 지속적 배포는 개발한 프로그램의 빌드, 테스트, 패키지화, 배포단계를 모두 자동화해 개발 단계를 표준화합니다.
1.2.4 프로메테우스와 그라파나#
프로메테우스와 그라파나는 모니터링을 위한 도구입니다.
- 프로메테우스는 상태 데이터를 수집하고, 그라파나는 프로메테우스로 수집한 데이터를 관리자가 보기 좋게 시각화 합니다.
- 컨테이너 인프라 환경에서는 많은 종류의 소규모 기능이 각각 개발되기 때문에 중앙 모니터링이 필요합니다.
- 이때 효쥴적으로 모니터링 하는 방법 중 하나가 프로메테우스와 그라파나의 조합입니다.
1.3 새로운 인프라 환경의 시작#
