[클라우드 네이티브 스프링 인 액션] 1-1. 클라우드 네이티브 소개

2025. 6. 11. 14:38·Programming

1. 클라우드 네이티브의 세가지 P

  1. 플랫폼 : 클라우드 네이티브 애플리케이션은 클라우드 같은 동적 분산 환경을 기반으로 하는 플랫폼에서 실행된다.
  2. 속성 : 클라우드 네이티브 애플리케이션은 확장 가능하고 느슨하게 결합되며 복원력이 뛰어나고 관리가 용이하며 관찰 가능하도록 설계된다.
  3. 실행 : 견고한 자동화를 통해 빈번하고 예측 가능한 방식으로 시스템을 변경하는 것이 여기에 포함되는데, 자동화, 지속적 전달, 데브옵스 등이 있다.

 


 

2. 클라우드와 클라우드 컴퓨팅 모델

  • 클라우드는 다양한 컴퓨팅 모델을 특징으로 하는 IT 인프라이며 소비자가 필요로하는 제어 수준에 따라 제공 업체에 의해 서비스로 제공된다.

클라우드

  1. 클라우드 기반 환경 : 클라우드 컴퓨팅을 지원하는 IT 기반 환경
  2. 클라우드 컴퓨팅 : 컴퓨팅 자원에 대한 온디맨드 네트워크 접근
  3. 클라우드 서비스 : IaaS, CaaS, PaaS, FaaS, SaaS

 


 

3. 클라우드 서비스를 제공하기 위한 배포 모델

사설 클라우드 (private cloud)

  • 한 단체나 조직에서만 사용하도록 제공하는 클라우드 인프라
  • 호스팅은 외주로 하거나 자체적으로 함
  • 중요한 데이터 또는 매우 중요한 시스템을 다루는 조직에서 선호하는 방법

 

공공 클라우드 (public cloud)

  • 일반 사용자들에게 공공으로 제공되는 클라우드 인프라
  • 클라우드 공급자가 소유하고 관리하며, 공급자가 제어하고 관리하는 장소에서 호스팅함
  • AWS, Azure, Google Cloud 등

 

하이브리드 클라우드 (hybrid Cloud)

  • 앞의 두 가지 유형에 해당하는 클라우드 인프라 구성 몇 개를 하나로 묶어 마치 하나의 단일 환경인 것 처럼 서비스를 제공함

 


 

4. 클라우드 컴퓨팅 서비스 모델

IaaS, 인프라 플랫폼

  • 플랫폼 : 컴퓨팅, 스토리지 및 네트워킹 자원을 제공
  • 사용자 : 서버, 네트워크, 스토리지를 제공, 구성, 관리함

 

CaaS, 컨테이너 플랫폼

  • 플랫폼 : 컨테이너 엔진, 오케스트레이터, 기반 인프라를 제공
  • 사용자 : 컨테이너화된 워크로드 및 클러스터를 빌드, 배포, 관리함

 

PaaS, 애플리케이션 플랫폼

  • 플랫폼 : 개발 및 배포툴, API, 기반 인프라를 제공
  • 사용자 : 애플리케이션을 빌드, 배포, 관리함

 

FaaS, 서버리스 플랫폼

  • 플랫폼 : 실행 환경, 함수를 실행하기 위해 팔요한 전체 인프라, 자동 확장을 제공
  • 사용자 : 함수를 빌드하고 배포함

 

SaaS, 소프트웨어 플랫폼

  • 플랫폼 : 소프트웨어와 이를 실행할 전체 인프라를 제공
  • 사용자 : 네트워크를 통해 서비스를 사용함

 


 

5. 클라우드 네이티브 애플리케이션의 특성

확장성

  • 수직적 확장 : CPU나 메모리 같은 컴퓨팅 노드에 하드웨어 리소스를 추가하거나 제거하는 것
  • 수평적 확장 : 더 많은 컴퓨팅 노드나 컨테이너를 추가하는 것

 

느슨한 결합

  • 각 컴포넌트는 독립적으로 진화해나가고 그 결과 한 컴포넌트가 바뀐다고 해서 그에 맞춰 다른 부분까지 변경할 필요가 없도록 하는 것을 목표로 한다.
  • 시스템을 모듈로 분해 + 다른 부분에 대한 의존성 최소화 (느슨한 결합) → 함께 변화하는 코드를 캡슐화함 (높은 응집력)

 

복원력

  • 결함이나 환경 변화가 있는 경우에도 서비스를 제공한다면 복원력이 있다.

 

관측 가능성

  • 시스템의 외부 출력에서 내부 상태를 얼마나 잘 추론할 수 있는지를 측정한다.
  • 모니터링 : 상태에 대한 정보를 얻고 실패를 식별함 (프로메테우스)
  • 경고/시각화 : 상태에 대한 데이터 수집은 수집된 데이터로 무언가 조치를 취하는 것으로 이어져야 함 (그라파나)
  • 인프라를 추적하는 분산 시스템 :서로 다른 서브시스템 사이에서 흐르는 데이터를 추적함 (오픈텔레메트리, 그라파나 템포)
  • 로그 집계/분석 : 주요 이벤트를 추적하는 것은 작동 추론과 디버깅을 위해 중요함 (플루언트 비트, 로키, 그라파나)

 

관리 용이성

  • 외부 입력을 통해 유한한 시간 이내에 시스템의 상태 또는 출력을 변경하는 능력

 


 

6. 클라우드 네이티브를 지원하는 문화 및 관행

자동화

  • 클라우드 네이티브의 핵심
  • 반복적인 수동 작업을 자동화해 클라우드 네이티브 애플리케이션을 빠르게 배포하자
  • 코드형 인프라스트럭처 (InfraStructure as Code), 코드형 설정 (Configuration as Code)

 

지속적 전달

  • 프로덕션 환경에 언제든지 배포할 수 있는 방식으로 소프트웨어를 구축하는 한 분야
  • 짧은 주기로 기능을 구현하여 언제든지 안정적인 소프트웨어를 배포할 수 있다.
  • 지속적 통합 (Continuous Integration, CI) : 변경 사항을 기본 브랜치에 지속적으로 커밋한다.
  • 지속적 전달 (Continuous Delivery, CD) : 기본 브랜피가 문제없이 배포 가능한 상태를 유지하도록 하는데 중점을 둔다.

 


 

7. 클라우드 네이티브 구성

컨테이너

  • OS 컨테이너 : 내부에서 애플리케이션을 실행하기 위해 필요한 모든 것을 가지고 있는 경량 실행 파일 패키지, 컨테이너는 호스트와 커널을 공유한다.
  • 네임 스페이스 : 각 프로세스가 시스템에서 사용할 수 있는 리소스를 일부만 볼 수 있도록 하기 위해 프로세스 간 리소스를 분할한다.
  • c그룹 : 프로세스에 대한 리소스 사용을 제어하고 제한
  • 가상화는 하드웨어만 공유한다.
  • 컨테이너는 운영체제 커널도 공유한다. 컨테이너가 더 가볍고 이식성이 좋다.

 

오케스트레이션

  • 단일 서버에서 컨테이너를 생성하고 관리하는 것은 간단하다. 하지만, 수백 개의 컨테이너를 여러 대의 서버에 배포하고 처리하려면 또 다른 것이 필요하다.
  • 컨테이너의 배포 대상은 서버지만, 오케스트레이터의 경우에는 배포 대상이 클러스터이다.
  • ex. 쿠버네티스, 도커 스웜, 아파치 메소스

 

서버리스

  • 서버리스 컴퓨팅 모델에 따라 개발자는 애플리케이션에 대한 비즈니스 로직을 구현하는 데만 집중할 수 있다.
  • 가상 시스템, 컨테이너 및 동적 확장을 포함하여 실행할 애플리케이션에 대한 필요한 모든 인프라 작업을 플랫폼이 대신 처리해준다.
  • 서비스형 백엔드 (Backend as a Service, BaaS) : 백에드 서비스의 개발 및 운영 비용을 줄이는 데 중점을 둔다.
  • 서비스형 함수 (Function as a Service, FaaS) : 상태가 없고 이벤트에 의해 실행되며 플랫폼이 전적을 관리하는 애플리케이션을 의미한다. AWS 람다 함수, 애저 함수 등.

 


요약

  • 클라우드 네이티브 애플리케이션은 클라우드를 위해 특별히 설계되고 클라우드에 상주하는 고도로 분산된 시스템이다.
  • 클라우드는 컴퓨팅, 스토리지 및 네트워킹 리소스 측면에서 상품으로 재공되는 IT 인프라이다.
  • 클라우드에서는 사용자가 실제 사용하는 리소스에 대해서만 비용을 지불한다.
  • 클라우드 플랫폼은 IaaS, CaaS, PaaS, FaaS, SaaS 와 같은 다양한 추상화 수준에서 서비스를 제공한다.
  • 클라우드 네이티브 애플리케이션은 수평적으로 확장 가능하고, 느슨하게 결합되며, 고도로 응집력이 있고, 결함에 잘 견디고, 관리 가능하며, 관찰 가능하다.
  • 클라우드 네이티브 개발은 자동화, 지속적 전달, 데브옵스에 의해 지원된다.
  • 지속적 전달은 고품질 소프트웨어를 신속하고 안정적이며 안전하게 제공하기 위한 총제적인 엔지니어링 관행이다.
  • 데브옵스는 서로 다른 역할 간의 협업을 통해 비즈니스 가치를 함께 제공할 수 있는 문화이다.
  • 컨테이너는 클라우드 네이티브 시스템을 설계하기 위한 컴퓨팅의 단위로 사용될 수 있다. 가상 머신 보다 가볍고 이식성, 불변셩, 유연성을 제공한다. (ex. 도커)
  • 쿠버네티스 같은 전용 플랫폼은 기본 계층을 직접 처리하지 않고 컨테이너를 관리하는 서비스를 제공하며 컨테이너 오케스트레이션, 클러스터 관리, 네트워크 서비스 및 스케줄링을 제공한다.
  • 서버리스 컴퓨팅은 (ex. 케이네티이브) 플랫폼이 서버와 기반 인프라를 관리하는 반면, 개발자는 비즈니스 로직에만 집중하는 모델이다. 백엔드 기능을 비용 최적화를 위해 사용한 만큼만 지불하도록 할 수 있다.
  • 마이크로서비스 아키텍처(MSA)는 클라우드 네이티브 애플리케이션을 구축하는 데 사용할 수 있지만, 필수 사항은 아니다.
  • 클라우드 네이티브 애플리케이션을 설계하기 위해, 서비스와 그들의 상호작용을 특징으로 하는 서비스 기반 스타일을 사용한다.
  • 클라우드 네이티브 서비스는 (상태를 갖지 않는) 애플리케이션 서비스와 (상태를 갖는) 데이터 서비스로 구분할 수 있다.
반응형

'Programming' 카테고리의 다른 글

[클라우드 네이티브 스프링 인 액션] 2-4. 스프링 부트 컨테이너화  (8) 2025.06.27
[클라우드 네이티브 스프링 인 액션] 2-3. 클라우드에서 데이터 저장과 관리  (4) 2025.06.25
[클라우드 네이티브 스프링 인 액션] 2-2. 외부화 설정 관리  (6) 2025.06.19
[클라우드 네이티브 스프링 인 액션] 2-1. 클라우드 네이티브 개발  (6) 2025.06.13
[클라우드 네이티브 스프링 인 액션] 1-2. 클라우드 네이티브 패턴 및 기술  (5) 2025.06.12
'Programming' 카테고리의 다른 글
  • [클라우드 네이티브 스프링 인 액션] 2-3. 클라우드에서 데이터 저장과 관리
  • [클라우드 네이티브 스프링 인 액션] 2-2. 외부화 설정 관리
  • [클라우드 네이티브 스프링 인 액션] 2-1. 클라우드 네이티브 개발
  • [클라우드 네이티브 스프링 인 액션] 1-2. 클라우드 네이티브 패턴 및 기술
ssu_dev
ssu_dev
  • ssu_dev
    ssu
    ssu_dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (98)
      • Cloud (10)
      • HCI (2)
      • Algorithm (54)
      • Programming (13)
      • Computer Science (5)
      • System (6)
      • Trouble Shooting (6)
      • Work (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 인기 글

  • 태그

    cs
    투포인터
    Pod Scheduling
    bfs
    구현
    Stack
    플로이드 워셜
    docker
    자료구조
    dfs
    sort
    BOJ
    EKS
    Karpenter
    K8s
    priorityqueue
    node scaling
    OS
    Deque
    Java
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssu_dev
[클라우드 네이티브 스프링 인 액션] 1-1. 클라우드 네이티브 소개
상단으로

티스토리툴바