2020년 11월 10일 화요일

Cloud Native Applicatoin 생각

Cloud Native Application(CNA) 에 대한 생각


클라우드의 등장과 그 의미

클라우드 세상에선, 데이터센터와 같은 물리적인 인프라스트럭처와 그 기반 위해 구성되는 플랫폼 서비스, OS, 미들웨어, 기타 애플리케이션 서비스를 소프트웨어(코드)를 통해 정의하고 프로비저닝 하여 실체화 할 수 있게 되었다.


클라우드 환경에서 서비스

과거 컴퓨터 박스의 눈에 보이던 한정된 컴퓨팅 자원이 이제는 설정 가능한 만큼 한계선이 높아지고, 글로벌 서비스를 위한 물리적인 제약 또한 사라졌다.

예를 들자면, IDC에서 1 시간에 한국에서만 서비스 가능 했던 제한된 데이터양이 클라우드에선 1 시간에 글로벌을 대상으로 과거 기준 상상하는 만큼의 데이터양으로 성장했다는 것이다.

현실로 예를 들자면, IDC 에서 1시간에 BTS 음악을 국내에서만 음원 스트리밍 서비스만 가능 하던 것이 동일한 1시간 기준으로 8K 영상으로 글로벌 서비스가 가능해 진다라는 의미 이다.

이런 서비스를 가능하게 하는것은 결국 클라우드를 잘 이해 하고 클라우드 환경에 맞게(Cloud Native) 애플리케이션을 구현 / 배치 / 구성 하여야 하는 것이다.


클라우드 네이티브 애플리케이션

결론은 분산 컴퓨팅 기술이 핵심이다.

쉽게 말하자면 동일 시간대비 안정적으로 더 많은 일을 하도록 하기 위해 일꾼들을 늘리는 것이다.


Cloud Native Application(CNA) 의 조건을 생각해 보자.

- Business 로직이 단순할수록 탄력적인 확장이 쉽다.

- Business 로직이 작을 수록 Runtime(구동) 시간이 단축되고 구성 정보도 단순해 진다.

   => Docker 이미지와 같이 Immutable된 서비스 이미지는 Runtime을 전원의 on/off 처럼 단순화 한다.

- 영속적인 저장소(Volume)를 사용하지 않아야 데이터 충돌을 회피하고, 탄력적인 복원을 할 수 있다.

- 애플리케이션 확장, 네트워크 라우팅, 트래픽제어, 모니터링과 같은 애플리케이션 지원은 클라우드의 자원을 활용 하자. (애플리케이션에는 순수한 비즈니스 로직만 포함 하자)

- 컴퓨팅 스펙(예: CPU의 등급)을 올리는 것 보단 확장을 통해 데이터 처리량을 늘리는 것이 좋다.

  => Scale-up 보다 Scale-out 을 염두해 두고 설계 하자. (일꾼의 몸집을 키우기보단 일꾼을 늘리자.)

- 셀 수 없이 확장되는 자원을 셀 수 있도록 특정 하고 식별 할 수 있도록 카테고리(레이블 정책) 정책 구조를 정의 하고 정책 규칙을 따르자.

- 클라우드가 제공하는 안전한 보안 환경을 구성 하자.


정리하고 보니 뻔하고 뻔한 이야기지만 하나 하나는 심플하지 아니한가?

댓글 없음:

댓글 쓰기

Build AWS Golden Image using Packer + Ansible

AWS Golden Image 이미지는 Immutable 특성으로 런-타임 환경 적용에서 환경 변수나 설정 파일 조정 등의 개입이 없습니다. 이는 서비스 환경의 애플리케이션 런-타임 환경의 일관성을 보장 합니다. 또한, 빠른 start-up 구성 하므...