1일 차 3장 Cloud Native Application

jhin·2025년 3월 7일
0

K-PaaS

목록 보기
4/16

Cloud Native Application 개념

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

클라우드 컴퓨팅 모델의 장점을 활용할 수 있도록 애플리케이션을 개발하고 실행하기 위한 접근 방식

핵심은 '서비스'

  • 최소의 상태(stateful) 컴포넌트들이 격리된 상태의 마이크로서비스로 구성되며, 각각의 서비스는 분산되고, 탄력적이며 수평적 확장성 있는 시스템으로 구성
  • 애플리케이션과 각각의 독립적인 배포단위는 클라우드중심의 디자인패턴들과 셀프서비스가 가능한 *탄력적인 플랫폼**에서 운영되도록 설계
  • 애플리케이션을 서로 독립적인 기능을 하는 여러 개의 서비스로 구분
  • 서비스들을 어떻게 구성, 연결, 관리하는지가 핵심요소
  • ‘서비스’들을 묶어 하나의 통합된‘(비즈니스) 서비스’로 만드는 다양한 기능과 기술필요

핵심요소

  • Microservices
    안정성, 스케일링 용이성 개선
  • Container
    IT 이식성, 유연성 확보
  • DevOps
    APP 서비스 개선 속도 증가
  • CI/CD
    개발-운영간 업무 속도 증가

아키텍처

개발방식

특징

예시

효과

MicroService Architecture

MSA
대규모 SW 개발에 적용하기 위한 것. 단독으로 실행 가능하고 독립적으로 배치될 수 있는 작은 단위(모듈)로 기능을 분해하여 서비스하는 아키텍처

마이크로서비스 간 연결은 응용 프로그래밍 인터페이스(API)를 이용
마이크로서비스는 자원 표현이나 데이터 관리 등에 있어 기능적으로 완전해야 함

REST API

  • 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스

REST

  • 자원의 표현에 의한 상태 전달
  • 자원(Resource) - URI
  • 행위(Verb) - HTTP Method
  • 표현(Representation) - Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보냄(JSON, XML, TEXT, RSS 등 여러 형태)

MSA 특징

  • One Thing
    한 가지 기능을 수행하는데 초점
  • Small
    가장 작은 단위의 서비스
  • API
    다른 서비스와 연계
  • Autonomous
    각자 자율 개발

장점

  • 분산형 개발을 통해 개발자들이 동시 참여 가능하고, 유연하고 빠른 의사결정이 가능 => 개발 소요시간 단축
  • 모놀리식 애플리케이션과는 달리, 한 부분에 장애가 발생하더라도 전체 애플리케이션이 중단되지 않음
  • 빠르고 유연한 조직문화 기여
  • 출시 시간 단축
  • 유연한 확장
  • 뛰어난 복구 능력
  • 개발자 생산성 증가
  • 높은 신기술 수용력

단점

  • 모놀리식 아키텍처에 비해 구조가 복잡함. 서비스 간 통신에 대한 처리가 추가적 필요. 개발, 배포, 운영 측면에서 고려해야 할 사항 증가
  • 개발, 운영 복잡성 증가
  • 통합 테스트 어려움
  • 배포, 운영을 위한 자동화 필요
  • 코드 중복성
  • 트랜잭션 처리 어려움
  • 디버깅 어려움

Container

컨테이너

  • 가상화된 OS 위에서 애플리케이션의 독립적인 실행에 필요한 파일(소스코드, 라이브러리 등)을 모은 패키지
  • Cloud Native 소프트웨어의 가장 작은 단위
  • 서버에 바로 배포할 수 있을 뿐 아니라, 가상머신 위에도 배포 가능
  • OS를 통해 관리되며 리소스 및 기능에 제약을 가지는 구동 프로세스(running process)

특징

  • 이식성을 바탕으로 작고, 가볍고, 손쉽게 애플리케이션 배포 가능

DevOps

DevOps

  • 기존의 개발업무와 운영업무로 나누어진 두 역할 사이의 커뮤니케이션, 협업, 통합
  • 프로세스 자동화를 목표로 개발자와 운영자가 협업하여, 짧은 주기 내 신뢰성 있는 소프트웨어 생성, 테스트, 릴리즈 할 수 있는 문화와 환경을 의미
  • 애플리케이션 개발-운영 간의 협업 프로세스를 자동화하여 개발과 개선 속도를 빠르게 함

특징

  • 속도 및 신속한 제공
    릴리즈 빈도, 속도를 개선
  • 안전성
    변경 사항이 제대로 안전하게 작동하는지 테스트 가능
  • 확장 및 보안
    규모에 따라 인프라와 개발 프로세스 운영, 관리 가능
  • 협업강화

DevOps 도입을 위한 필수요소

  • 애자일
  • CI/CD
    지속적 통합, 배포

CI/CD

CI/CD

  • 지속적인 통합, 서비스 제공, 배포의 자동화를 통해 더욱 짧은 주기로 고객에게 App 제공하는 방법
  • 지속적인 통합 / 지속적인 배포
    Continuous Integration / Continuous Delivery or Deployment

CI

  • 앱 코드의 새 변경사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합되는 것을 의미

CD

  • 지속적인 서비스 제공(Delivery)은 개발자들이 앱에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 의미
  • 지속적인 배포(Deployment)는 개발자가 변경한 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스되는 것을 의미

CI/CD와 DevOps 관계

  • DevOps는 SW 개발 효율성 향상을 목표하는 문화이자 프로세스
  • CI/CD는 DevOps를 실현하기 위해 필수적인 방법 요소

0개의 댓글