spaci***
2020-06-29

클라우드를 처음 접할 때는 누구나 어려움을 겪는다. 분산 시스템을 배우고 컨테이너와 함수를 익혀야 하며, 어렵지만 이를 한 번에 다루는 방법도 알아야 한다.
아래 요약한 몇 가지 내용들만 읽어봐도 이 책이 꽤 클라우드 네이티브에 대해 잘 기술했다는 것을 알 수 있다.
클라우드 네이티브한 방법으로 개발한 서비스를 클라우드 네이티브 애플리케이션이라고 한다.
클라우드 네이티브 애플리케이션의 심장은 컨테이너(Container), 함수(Function), 데이터(Data)가 있다.
CAP의 이론은 분산시스템에서 자주 언급되는 이론이다. CAP이론은 모든 네트워크 공유 데이터 시스템의 다음 세 가지 중 두 가지만 만족한다는 내용이다.
1. 일관성 (Consistency)
2. 데이터의 고가용성 (Availability)
3. 네트워크 파티션 (Partition)
현실에서는 항상 네트워크 파티션이 발생한다. 그러므로 CAP 이론에 따르면 일관성과 고가용성만 최적화할 수 있다. 카산드라 같은 NoSQL 데이터베이스들은 가용성을 최적화한다. 그러나 SQL 기반 시스템들은 ACID(Atomicity, Consistency, Isolation, Durability) 원리를 지키기 위해 일관성을 최적화한다.
3장 에서는 아키텍처 예제를 소개하고 있다. Hot, Warm, Cold경로를 통해 스트리밍 데이터를 나눠서 처리하는 것을 람다 아키텍처(Lambda Architecture)라고 한다. 97p이다.
여느 서비스들은 잡을 실행하기 위해 쿠버네티스의 가상 큐블릿을 통해 CaaS 컴퓨트 모델을 사용한다. p99이다.
페이스북의 프레스토 같은 분산 쿼리 엔진은 수 분 수 초 내에 쿼리 결과를 반환할 수 있다. 대략적으로 보면, 클라이언트는 쿼리를 분산 쿼리 엔진에 제출한다. 코디네이터가 쿼리를 해석해서 워커 풀에 작업을 할당하는 역활을 한다. 137p이다.
이외에 스토리지 볼륨으로 퍼시스턴트 볼륨, 퍼시스턴스 볼륨 클레임, 스토리지 클래스에 대해 다루고 있으며 해당 개념에 대해 그림으로 잘 나타내 두었다. 139p이다.
데브옵스에 대해 자세한 설명을 하고 있으며 기존 코드와 새로 개발한 코드를 출시하기 위해 빌드, 테스트 통합을 자동으로 하는 방법인 CI와 코드가 실서비스에 배포될 준비가 됐는지 확인하기 위해 추가 테스트를 하는 CD에 대해 설명하고 있다. 다음은 CI/CD의 절차의 일부인 여러 단계를 그림으로 보여주고있다. 168p이다.
이후엔 클라우드 네이티브의 모범사례와 이식성에 대해 설명하며 책을 마무리 하고 있다.
모범사례 중 마이크로서비스와 함수로 바꾸긱 위해 모놀리스 애플리케이션을 분해할 때, 게이트웨이와 스트랭글러 패턴 사용할 수 있다는 내용을 다루고 있는데, 스트랭글러 패턴의 아이디어는 백엔드 모놀리스를 새로운 아키텍처로 서비스, 함수, 또는 둘다를 천천히 옮기는 동안 파사드로 게이트웨이를 사용한다. 아래의 그림과 같이 모놀리스를 분해하고 서비스나 함수로 일부 기능들을 구현하는 과정 동안 새 기능으로 요청을 리다이렉트하도록 게이트웨이를 업데이트하는 것이다. 206p이다.
이번에 책을 읽으며 클라우드 네이티브에 관해 많은 내용을 살펴볼 수 있었다. 이미 클라우드라는 단어는 우리들의 일상생활의 곳곳에 침투해 활동하고 있다. 기술은 빠르게 변화하고 있으며 이전과 비슷한 내용인 듯 하지만 또 다른 사고와 개념을 형성하여 진화하고 있다고 생각한다.
클라우드 네이티브란 개념을 한 눈에 정리하고자 한다면 이 책이 그 길잡이가 되어 줄 수 있다고 생각한다.
이미 MS, 아마존, 구글을 비롯한 많은 기업들이 클라우드 네이티브 애플리케이션 산업을 주도하고자 진화 중이다.
유저에게 서비스를 제공하는 개발자들이라면 한번 쯤 이 책을 통해 클라우드 네이티브란 개념을 정리하는 시간을 가지면 좋을 것이라 생각한다.