1장 새로운 인프라 환경이 온다

IaaS(Infrastructure as a Service) : 서비스로서의 인프라 환경, 모든 환경이 개발자 쪽에서 완성된 형태로 사용자에게 제공되는 형태, 사용자가 필요에 따라 선택하고 조합해서 사용할 수 있다.

<-> on-premise : 사용자가 제공된 환경에 맞는 도구를 모두 설치해야 하는 방식

IaaS + 사용자마다 독립적인 환경에서 개발해도 동일한 환경을 얻을 수 있는 컨테이너 인프라 환경이 이 책에서 다룰 내용이다.

1.1 컨테이너 인프라 환경이란

컨테이너 (container) : 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 의미

-> 가상화 상태에서 동작하는 프로세스보다 가볍고 빠르게 동작한다.

1.1.1 모놀리식 아키텍처

모놀리식 아키텍처 : 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조를 의미

하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이하며 개발이 좀 더 단순하고 코드 관리가 간편하다.

하지만 수정이 많을수록 다른 서비스에 영향을 줄 가능성이 커짐. 점점 커지는 서비스에는 구조가 복잡해짐으로 부적합하다는 단점이 있다.

1.1.2 마이크로서비스 아키텍처

마이크로서비스 아키텍처 : 시스템 전체가 하나의 목적을 가지는 것은 모놀로식과 같지만, 개별 기능을 하는 작은 서비스를 각각 개발해 연결하는 데서 차이가 있다.

재사용이 용이하고, 수정이 있을 때 서비스에 영향을 미칠 가능성을 줄여주며, 서비스 확장도 쉽다. -> IaaS에 적합하다.

1.1.3 컨테이너 인프라 환경에 적합한 아키텍처

현재는 시스템 확장이 작은 단위로 쉽게 배포가 되고, 확장됨에 따라 모놀로식에서 마이크로서비스으로 전환도 가능하다.

하지만 컨테이너 인프라 환ㄱ셩은 특히 마이크로서비스 아키텍처로 구현하기에 적합하다.

1.2 컨테이너 인프라 환경을 지원하는 도구

컨테이너 인프라 환경은 크게 : 컨테이너, 컨테이너 관리, 개발 환경 구성 및 배포 자동화, 모니터링으로 구성된다.

1.2.1 도커

도커 : 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구

도커로 애플리케이션을 실행하면 운영체제 환경에 관계없이 독립적인 환경에서 일관된 결과를 보장한다.

1.2.2 쿠버네티스

쿠버네티스 : 다수의 컨테이너를 관리하는 데 사용한다.

컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증, 부하에 따른 동적 확장 등의 기능 제공

현재는 컨테이너 인프라에 필요한 기능을 통합하고 관리하는 솔루션으로 발전했다.

API 게이트웨이, 서비스 디스커버리, 이벤트 버스, 인증 및 결제 등의 (마이크로서비스의 독립된 서비스) 다양한 서비스를 효율적으로 관리할 수 있는 환경을 제공, 이를 내외부와 유연하게 연결해 준다.

1.2.3 젠킨스

젠킨스 : CICD를 지원하는 툴이다.

지속적 통홥과 지속적 배포는 개발한 프로그램의 빌드, 테스트, 패키지화, 배포 단계를 모두 자동화해 개발 단계를 표준화해준다.

즉, 컨테이너 인프라 환경처럼 단일 기능을 빠르게 개발해 적용해야 하는 환경에 매우 적합한 도구이다.

1.2.4 프로메테우스 & 그라파나

이들은 모니터링을 위한 도구이다.

프로메테우스는 상태 데이터를 수집하고, 그라파나는 프로메테우스로 수집한 데이터를 관리자가 보기 좋게 시각화한다.

컨테이너 인프라 환경에서는 많은 종류의 소규모 기능이 각각 나누어 개발되기 때문에 중앙 모니터링이 필요하다.

이 둘은 컨테이너로 패키징돼 동작하며 최소한의 자원으로 쿠버네티스 클러스터의 상태를 시각적으로 표현한다.

profile
Learning bunch, mostly computer and language

0개의 댓글