클라우드 네이티브

Ethan·2025년 1월 11일

클라우드 네이티브하게 설계란?
(클라우드의 확장성, 탄력성, 복원성, 유연성을 활용해 설계하는 것)

1단계: 마이크로서비스로 애플리케이션 설계.
2단계: Docker로 컨테이너화 및 Kubernetes 클러스터에 배포.
3단계: 이벤트 중심 서버리스 구성 추가.
4단계: CI/CD 파이프라인 및 IaC로 자동화.

1. 마이크로서비스로 애플리케이션 설계.

마이크로서비스 아키텍처는 여러 독립적인 서비스로 애플리케이션을 나눕니다.

마이크로서비스 아키텍처는 대규모 애플리케이션 개발에 매우 적합한 방법론입니다. 이는 각 서비스가 독립적으로 운영되기 때문에 확장성과 유지보수성을 크게 향상시킬 수 있습니다.

왜냐하면 마이크로서비스 아키텍처는 각 서비스가 독립적으로 운영되기 때문입니다.

그러나 마이크로서비스 아키텍처는 복잡성, 데이터 일관성 문제, 네트워크 지연 등의 단점도 가지고 있습니다.

2. Docker로 컨테이너화 및 Kubernetes 클러스터에 배포.

Docker: 컨테이너 생성 및 관리

애플리케이션을 Docker 이미지로 빌드

Kubernetes

Kubernetes(쿠버네티스)는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리하기 위한, "컨테이너 오케스트레이션(조율, 관리)" 플랫폼이다.
ex)Kubernetes에 YAML 파일로 Deployment 및 Service 배포

3. 이벤트 중심 서버리스 구성 추가.

개발자가 서버나 백엔드 인프라를 프로비저닝하거나 관리하지 않고도 애플리케이션 코드를 빌드하고 실행할 수 있는 애플리케이션 개발 및 실행 모델입니다.(FaaS)
코드를 계속 실행시키기 보다는 특정한 시기에만 실행시키는 경우에 사용하면 유용하다.
ex) Lambda

4. CI/CD 파이프라인 및 IaC로 자동화.

CI/CD

CI(Continuous Integration) : 여러 개발자들의 코드를 계속해서 통합하는 것.
CD(Coutinuous Delivery) : 개발자들이 코드를 계속 작성하면, 사용자 및 내부 사용자들(즉, QA 등등)이 계속 쓸 수 있게 만드는 것
지속적으로 배포가능한 상태를 유지하는 것
ex) Jenkins

IaC

코드형 인프라(Infrastructure as Code)는 단어 그대로, 인프라스트럭처를 코드로 정의하고 관리하는 방식을 의미합니다. 이는 기존의 수동적인 수작업 중심의 인프라스트럭처 관리 방법에서 벗어나, 자동화와 코드화를 통해 인프라스트럭처를 효과적으로 관리하는 새로운 접근 방식을 제시합니다.

코드로 인프라를 정의함으로써 반복적인 인프라 생성 과정을 간단하게 코드로 수행하거나, 인프라에 발생한 변경 사항을 마치 소프트웨어의 버전처럼 제어합니다. 또한 정형화된 배포 방식을 통해 시스템의 개발, 생성 및 운영 프로세스를 더욱 효율적으로 만들어줍니다.
ex) Terraform

profile
코딩하는 알파카

0개의 댓글