Loko
로코
Loko
전체 방문자
오늘
어제
  • 분류 전체보기
    • Book
      • Hard Skill
      • Soft Skill
      • Novel
      • Science
      • Economy
      • Self Help
    • Troubleshooting
      • in Works
      • in Projects
      • in Lectures
    • JVM
      • Java
      • Kotlin
      • Spring
      • JPA
    • JavaScript
      • Vanilla
      • React
      • Redux
      • Next
    • Algorithm
      • 기본적으로 알아야 할 것들
      • Java class library package
      • Sorting Algorithm
      • 꼭 기억해둘 유명 Algorithm
      • 유형별 풀이 template
    • Infrastructure
    • Web
      • 기초 공부
      • 서적 공부
      • Security
      • AWS

블로그 메뉴

  • 홈
  • GitHub
  • 기술 블로그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Loko

로코

컨테이너 인프라 환경
Infrastructure

컨테이너 인프라 환경

2022. 4. 25. 12:31

※ 위 책을 읽고 개념 위주로 정리한 내용임을 알립니다.

 

 

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

  • 구현된 컨테이너는 가상화 상태에서 동작하는 프로세스보다 가볍고 빠르게 동작

 

monolithic architecture

  • 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합되어 있는 구조
  • 소프트웨어가 하나의 결합된 코드로 구성되어 있기에 초기 단계에서 설계하기에 용이
  • 개발이 좀 더 단순하고 코드 관리가 간편
  • 그러나 서비스 운영 중 수정 작업이 많아지거나, 기능이 추가될수록 서비스 간의 관계가 매우 복잡해짐
  • 서비스를 수정하는 과정에서 에러가 발생하면 전체 서비스를 이용할 수 없게 될 가능성도 있음
  • 개발 속도는 매우 빠름
  • IaaS 덕분에 인프라 증설은 어렵지 않겠지만 하나의 서비스 이용량 때문에 전체 인프라를 증설해야 됨

monolithic architecture

 

MSA (Microservices Architecture)

  • 개별 기능을 하는 작은 서비스들을 각각 개발하여, 각각의 독립적인 서비스로 구성하는 방식
  • 개발된 서비스를 재사용하기 쉬움
  • 향후 서비스가 변경되었을 때 다른 서비스에 영향을 미칠 가능성이 줄어듦
  • 사용량의 변화에 따라 특정 서비스만 확장할 수 있음
  • 따라서 사용자의 요구 사항에 따라 가용성을 즉각적으로 확보해야 하는 IaaS 환경에 적합
  • 하지만 monolithic architecture에 비해 복잡도가 높음
  • 각 서비스 간의 유기적인 통신 때문에 네트워크를 통한 호출 횟수가 증가해서 성능에 영향을 줄 수 있음

MSA

 

컨테이너 인프라 환경의 구성 요소

  • 컨테이너
  • 컨테이너 관리
  • 개발 환경 구성 및 배포 자동화
  • 모니터링

 

Docker

  • 컨테이너 환경에서 독립적으로 애플리케이션을 실행하도록 컨테이너 생성 및 관리를 도와주는 컨테이너 도구
  • 애플리케이션 실행 시 운영 체제 환경에 관계없이 독립적인 환경에서 일관된 결과 보장

 

Kubernetes

  • 다수의 컨테이너를 관리하는 데 사용
  • 컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증, 부하에 따른 동적 확장 등의 기능 제공
  • 컨테이너 인프라에 필요한 기능을 통합하고 관리하는 솔루션
  • 컨테이너 인프라를 기반으로 API 게이트웨이, 서비스 디스커버리, 이벤트 버스, 인증 및 결제 등
    다양한 서비스를 효율적으로 관리할 수 있는 환경을 제공하고 이를 내외부와 유연하게 연결해줌

 

Jenkins

  • 지속적 통합(CI, Continuous Integration)과 지속적 배포(CD, Continuous Deployment) 지원
  • CI와 CD는 개발한 프로그램의 빌드, 테스트, 패키지화, 배포 단계를 모두 자동화하여 개발 단계를 표준화함
  • 개발된 코드의 빠른 적용과 효과적인 관리를 통해 개발 생산성을 높이는 데 초점을 둠
  • 컨테이너 인프라 환경처럼 단일 기능을 빠르게 개발해서 적용해야 하는 환경에 매우 적합한 도구

 

Prometheus / Grafana

  • 모니터링 도구
  • 프로메테우스는 상태 데이터 수집 / 그라파나는 수집한 데이터를 보기 좋게 시각화
  • 컨테이너 인프라 환경에서는 많은 종류의 소규모 기능이 각각 나뉘어서 개발되기에 중앙 모니터링이 필요함
  • 이 둘은 컨테이너로 패키징되어 동작하며 최소한의 자원으로 쿠버네티스 클러스터의 상태를 시각적으로 표현함

 

※ 이 책에서 구현한 실습용 컨테이너 인프라 환경

 

저작자표시 (새창열림)

'Infrastructure' 카테고리의 다른 글

Kubernetes와 친해지기  (0) 2022.04.28
Prometheus & Grafana  (0) 2022.04.28
Jenkins  (0) 2022.04.27
Docker  (0) 2022.04.26
Kubernetes  (0) 2022.04.25
    'Infrastructure' 카테고리의 다른 글
    • Prometheus & Grafana
    • Jenkins
    • Docker
    • Kubernetes
    Loko
    Loko
    개발하면서 발전하고 싶은 소망이 담긴 블로그입니다.

    티스토리툴바