02. Cloud Native Application

woo·2024년 2월 14일
0

1. 클라우드 네이티브 어플리케이션이란

  • 클라우드 네이티브 아키텍처에 의해 설계되고 구현되는 어플리케이션
  • 클라우드 아키텍처의 특징이나 Anti-Fragile 등의 특징을 가지고 다음과 같은 특징으로 구현된다

1. DevOps

  1. MicroService로 개발됨
  2. CI-CD를 통해 자동으로 통합, 빌드-테스트-배포 거침
  • Jenkins, TeamCI, TravisCi와 같은 제품이 있고 Git과 같은 형상관리 시스템과 연동되어 사용됨
  • 개발자가 Git과 같은 장소에 코드를 업로드하면, 코드를 통해 빌드, 테스트, 실행을 통해서 다른 쪽의 코드와 문제가 발생하는지 바로 확인할 수 있다.
  1. 문제 발생 시 바로 수정하여 재배포 가능

이러한 특징을 DevOps라고 한다.

DevOps에서는 처음에 시스템이 기획되고, 구현되고 테스트-배포되는 과정을 시스템이 종료될 때까지 무한히 반복함으로써 고객이 원하는 최선의 결과물을 만드는 것이 목적이다.

또한 이러한 작업을 통해 고객의 변경되는 요구 사항과 오류, 개선 사항에 대해 기민하게 대처할 수 있다.

이러한 요구사항 반영과 개발된 내용의 잦은 테스트가 전체 일정을 지연시킬 수는 있으나, 본질적인 목적인 고객의 요구 사항을 충족시키며 에러 없이 동작하는 목적에는 부합한다. 클라우드 어플리케이션은 이러한 DevOps 환경에 맞추어 서비스의 구조를 작은 단위로 분할할 수 있게 함으로써 더 자주 통합 및 테스트를 수행하여 배포할 수 있는 구조가 될 수 있다.

  1. 하나의 어플리케이션을 구성하는 마이크로 서비스들을 클라우드 환경에 배포하고 사용하기 위해서는 컨테이너 가상화 기술을 사용함.

2. 가상화

가상화는 클라우드 애플리케이션의 핵심적인 요소이다

로컬 환경에서 운영하고 유지해야 했던 시스템은 클라우드 환경으로 이전하여 하드웨어 및 서버 가상화보다 적은 리소스로 가상화 서ㅣㅂ스를 구축할 수 있다.

가상 머신은 시스템이 가지고 있는(호스트 머신) 하드웨어를 쪼개 사용하는 개념으로, 호스트 OS에 많은 부하를 주게 되기 때문에 확장에 한계가 존재한다.

컨테이너 가상화는 호스트와 공통 라이브러리 및 리소스를 공유하여 사용하기 때문에, 각자 필요한 부분에 대해서만 독립적 영역인 컨테이너를 통해 실행한다. 따라서 리소스의 사용량이 적다

12 Factors

12 팩터스는 PaaS 서비스를 제공하는 Heroku라는 개발 회사에서 12가지 항목을 제시하였다.

  1. 코드 통합(Base Code)
  2. 종속성의 배제(Dependency Isolation)
  3. 환경 설정의 외부 관리(Configurations)
  4. 백업 서비스 분리(Linkable Backing Services)
  5. 개발 환경과 테스트 환경의 분리(Stage of Creation)
  6. 상태 관리(Stateless Processes)
  7. 포트 바인딩(Port Binding)
  8. 동시성(Concurrency)
  9. 서비스의 올바른 상태 유지(Disposability)
  10. 개발-운영 환경의 통일(Devlopment & Production Parity)
  11. 로그의 분리(Logs)
  12. 관리 프로세스(Admin Processes for Eventual Process)

12 +3 Factors


피보탈이라는 회사에서 12 factors에 3가지를 더하여 15 factors를 정의함

profile
BE, DE(지망생)

0개의 댓글