Cloud

[Cloud] - Cloud Native Application이란 - AI Cloud 트랙 3일차

yongyongcoding 2025. 12. 27. 19:12

Cloud Native란?

클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식을 말한다.

Cloud에 맞게 태어난 것이라는 의미로 Native란 단어가 붙게 되었다.

그래서 Cloud의 이점을 최대로 활용한 Application을 Cloud Native Application인 것이다.

그럼 Cloud Native하단 건 무슨 의미일까?, 즉 Cloud의 이점을 최대한 활용하는 방법은 무엇일까를 알아야한다.

 

※ IaaS, PaaS, SaaS의 개념 이해 및 구분

IaaS(Infrastructure as a Service) = 서버만 빌려주는 서비스

PaaS(Platform as a Service) = 개발 환경까지 다 준비된 서비스

SaaS(Software as a Service) = 완성된 프로그램을 제공하는 서비스

Cloud Native는 IaaS위에서 직접 만들거나, PaaS환경을 활용하고,

Cloud Native의 결과물이 SaaS이다.

 

추가적으로 가상머신 기반에서 Cloud로 바뀐 이유는 가상머신은 Guest OS를 띄워야하기 때문에 필요한 의존성만 갖는

컨테이너 방식에 비해 무겁고  속도차이도 발생하며 Load Balancing 및 스케일링에 단점이 있어 Cloud로 발잔하게 되었다. 

이는 IaaS자체는 그대로지만 PaaS가 VMware중심에서 오케스트레이션 중심으로 바뀐 것이다.

 

 

CNCF 재단 (Cloud Native Computing Foundation)

CNCF 재단은 Cloud Native 기술들의 표준과 생태계를 만드는 재단을 말한다.

Cloud Native 기술들은 대부분이 오픈소스인데 도구들이 매우 많음.

이 때문에 기업마다 다른 기술들을 사용하게 된다면 인력이동도 어렵고 장기 운영도 어려워.
그래서 서로 약속을 통해 서로 호환되고 예측 가능한 기술을 표준으로 정했어.

그것을 관리하는 재단이 바로 CNCF야.

그리고 그 중 쿠버네티스가 CNCF의 상태계의 중심으로 쿠버네티스를 중심으로 생태계가 확장된거야.

※ Cloud Native Landscape = Cloud Native 기술 생태계를 한 장에 정리한 기술 지도 (https://landscape.cncf.io/)

 

Cloud Native Application의 핵심요소, 클라우드 환경에 최적화된 서비스

1.  Microservices = 마이크로서비스 아키텍처

  • 하나의 큰 어플리케이션을 기능 단위 작은 서비스로 분리하여 독립적인 개발/배포/확장하는 구조.
  • 장애가 전체 서비스에 전파되지 않고, 트래픽에 따라 서비스별 확장되며 언제든 생성/삭제되는 구조로 Cloud Native에 적합.
  • 넷플릭스의 경우 완전한 Cloud Native로 1만개 이상의 컨테이너로 구성되어 있다. 심지어 Netflext이름을 가진 서비스도 존재.
  • 그렇다고 무조건 MSA가 좋지는 않음. 복잡도가 증가하기 때문에 서비스 규모에 맞게 구성해야함.
  • 앞단 Api Gateway가 요청에 따른 서비스 라우팅을 담당해줌
  • 주로 나오는 개념 = 서킷프레이크 패턴(장애전파 방지, 주문-결제-배송, 결제의 오류는 여러 서비스에 영향을 줌, 빨리 실패하도록 만든다, 계속 기다리게 되는 문제 방지 = Timeout + Fallback ) 사가패턴(보상 트랜잭션, Rollback이 아닌 복구 로직임)

2. Containers

  • App 실행을 위한 바이너리와 라이브러리 의존성 등을 패키지로 묶어 배포하는 가상화 기술을 말한다.
  • 기존 방식은 가상 머신위에 쓸 db깔고 jdk깔고 등등 해야했음
    →  그런데 개발하려는 서비스마다 필요한 기술들이 다 다름
    →  container를 쓰면 의존성들 상관 없음  = 생산성
  • 컨테이너 만드는 대표예시 : 도커, 파드맨
  • 컨테이너 실행 : 쿠버네티스의
  • OCI(Open Container Initiative)가 준수된 런타임을 써야한다
    = 컨테이너 형식과 실행 규칙에 대한 표준이 있는 런타임.

3. DevOps

  • DevOps는 기술이 아닌 문화, 방법론을 의미한다.
  • 기존의 개발과 운영 업무가 나누어진 두 역할 사이를 협업/통합한다는 개념이다.
  • 프로세스를 자동화하여 짧은 주기 내에 신뢰성 있는 생성/테스트/배포할 수 있는 문화, 방법론을 말한다.
  • 과거에는 프로젝트를 수정하려면 수정한 내용이 잘 맞는지 확인/테스트/검증 후 배포의 긴 시간이 걸렸는데 이제는 CI/CD와 같은 자동화가 생기면서 그 과정의 시간이 줄어듦. 
  • DevOps 도입을 위한 필수요소 (애자일[스크럼], CI/CD[파이프라인])
  • 패치와 디코드(파이프라인을 이용하면 병렬처리가능하다)

 

4. CI/CD

  • CI/CD의 핵심 = 배포 Pipeline
  • CI = 지속적인 통합
    • Build = 컴파일/ 패키징
    • Unit Test = 단위 테스트
    • Integration Test = 통합 테스트
  • CD = 지속적인 배포 (검증된 코드를 안전하게 배포)
    • Review = 코드 리뷰 및 피드백 진행
    • Staging = 운영과 거의 동일환 환경에서 테스트
    • Production = 실제 운영 서버에 배포 (무중단 배포 지향)

 

 

Cloud Native Application은 새로운 기술을 의미하지 않는다.

쿠버네티스나 컨테이너를 사용했다고 해서 자동으로 Cloud Native가 되는 것도 아니다.

핵심은 클라우드 환경의 특성(장애발생, 트래픽 변동 등)을 고려하여 설계했는가이다.

이를 위해서 MSA, 컨테이너, CI/CD, 자동화 등과 같은 개념들이 등장한 것이고,
CNCF는 이러한 기술들의 표준을 제시하여 표준 생태계가 중심이 될 수 있도록 하는 역할을 한 것이다.

결과적으로 Cloud Native란 어떤 도구를 쓰냐가 아닌 어떻게 시스템을 설계했냐에 대한 내용인 것이다.