1 분 소요

Antifragile

  • Auto scaling: 자동 확장성을 갖는다.
  • Microservices: 클라우드 네이티브 어플리케이션의 핵심이다.
  • Chaos engineering
  • Continuous deployments

Auto scaling

스크린샷 2022-09-20 오후 7 27 42
위 사진처럼 시스템을 구성하고 있는 인스턴스를 하나의 auto scaling group으로 묶은 다음,
그룹에서 유지되어야 하는 최소의 인스턴스를 지정할 수 있고,
사용량에 따라 자동으로 인스턴스를 증가할 수 있는 환경을 말한다.

예를 들어, 온라인 쇼핑몰 같은 경우,
5월이나 12월 같이 특수한 이벤트가 있는 달에는 서버의 운영 개수를 늘리고,
비수기에는 서버의 운영 개수를 다시 줄이는 작업에 비유할 수 있다.

이러한 작업이 관리자나 운영자에 의해 수작업으로 처리되는 것이 아니라,
CPU, 메모리, 네트워크, 데이터베이스의 사용량이나 조건에 따라서 자동으로 처리할 수 있는 개념이 Auto scaling이다.

Microservices

스크린샷 2022-09-20 오후 7 32 52
위 사진은 온라인 비디오 스트리밍 회사로 유명한 Netflix의 Microservices 속성도이다.
위 사진에서 복잡하게 얽혀져 있는 서비스와 구성이 바로 마이크로 서비스들이다.

파란색은 서비스들 간의 연동이나 통신을 의미하고,
초록색은 넷플릭스라는 전체 서비스를 구축하고 있는 각각의 마이크로 서비스를 나타내고 있다.

넷플릭스와 아마존은 클라우드 서비스를 가장 잘 구축하고 활용하고 있는 업체로 알려져 있다.
우리가 앞으로 사용할 Spring Cloud의 초창기 라이브러리 중 많은 부분이 넷플릭스에서 개발되었고, 스프링 재단으로 기부된 것만 봐도
넷플릭스 회사가 얼마나 클라우드 서비스에 적극적이었는지 알 수 있다.

Microservices는 클라우드 네이티브 어플리케이션의 핵심이다.
기존 시스템들이 하나의 거대한 형태로 구축되어 서비스 되었다고 하면,
마이크로 서비스라는 것은 전체 서비스를 구축하고 있는 개별적인 모듈이나 기능을
독립적으로 개발하고 배포하고 운영할 수 있도록 세분화 된 형태라고 볼 수 있다.

Chaos engineering

스크린샷 2022-09-20 오후 7 41 17
카오스 엔지니어링이란 시스템이 예측하지 못한 상황에서도 견딜 수 있고 신뢰성을 쌓기 위해
운영중인 소프트웨어 시스템의 실행하기 위한 방법이나 규칙으로 생각하면 이해하기 쉬울 것이다.

시스템의 어떤 변동이라든가 예견된 불확실성, 혹은 예견되지 않은 불확실성에 대해서도
안정적인 서비스를 제공할 수 있게 구축되어야 한다는 것을 의미한다.

Continuous deployments

스크린샷 2022-09-20 오후 7 44 52
CI/CD는 지속적인 통합, 지속적인 배포로 해석할 수 있는데,
앞서 말한 것 처럼 Cloud Native Application은 적게는 수십 개, 많게는 수백 개 이상의 마이크로 서비스들로 도메인이 분리되어 개발되는 경우가 일반적이다.

이렇게 하나의 어플리케이션을 구성하는 수십 ~ 수백개의 서비스들을 일일이 빌드하고 테스트하고 서버에 배포하는 등의 작업을 수작업으로 한다면,
이러한 과정이 하나의 커다란 업무이자 작업 로드가 심하게 걸리는 부분이 될 수 있다.

따라서 이러한 수십 ~ 수백개의 마이크로 서비스를 빌드하고 배포함에 있어서 자동화된 시스템을 구축하고,
하나의 작업에서 다른 작업으로 연계되는 과정을 파이프라인으로 연결시켜 놓게 되면,
작은 변화 뿐만 아니라 전체적인 시스템의 업그레이드 작업에서도 빠르게 적용할 수 있게 될 것이다.

물론 CI/CD의 개념은 클라우드 네이티브나 마이크로 서비스에서만 새롭게 사용된 개념이 아니라,
이전부터 시스템의 통합적인 관리와 운영을 위해서 사용된 방식이지만,
클라우드 네이티브의 마이크로 서비스에서 더욱 활발히 사용되고, 빠질 수 없는 기술이 되었다.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기