메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

클라우드 네이티브

클라우드 네이티브 애플리케이션을 설계, 개발, 운영하는 핵심 가이드

한빛미디어

번역서

판매중

  • 저자 : 보리스 숄 , 트렌트 스완슨 , 피터 야우쇼베츠
  • 번역 : 정원천
  • 출간 : 2020-06-13
  • 페이지 : 252 쪽
  • ISBN : 9791162243183
  • 물류코드 :10318
초급 초중급 중급 중고급 고급
4.5점 (14명)
좋아요 : 0

최신 클라우드 네이티브 애플리케이션 개념을 익히고 모범 사례를 배워보자!

 

클라우드를 처음 접할 때는 누구나 어려움을 겪는다. 분산 시스템을 배우고 컨테이너와 함수를 익혀야 하며, 어렵지만 이를 한 번에 다루는 방법도 알아야 한다. 

 

이 책은 최신 클라우드 네이티브 애플리케이션 아키텍처의 구성 요소를 설명한다. 컨테이너, 서버리스 컴퓨팅, 스토리지, 애플리케이션의 이식성 개념 설명부터 클라우드 네이티브 애플리케이션 개발에 필요한 패턴, 메시징, 이벤팅, 데브옵스 같은 모범 사례까지 살펴본다. 클라우드 네이티브 환경에서 애플리케이션을 어떻게 설계, 개발, 운영해야 할지 고민이라면 이 책으로 시작해보자.

 

  • 클라우드 네이티브 애플리케이션 설계에 필요한 기술을 살펴본다.
  • 컨테이너와 함수를 분리하고 언제 사용하는지 배운다.
  • 데이터 관련 요구 사항이 있는 애플리케이션을 설계한다.
  • 애플리케이션 개발, 테스팅, 운영에 필요한 기본 개념과 데브옵스 방법을 배운다.
  • 클라우드 네이티브 애플리케이션을 개발하고 관리하는 팁, 기술, 모범 사례 등을 학습한다.
  • 이식성 있는 애플리케이션의 장단점과 구축 비용을 알아본다.

 

클라우드 네이티브_상세이미지_700.jpg

저자

보리스 숄

마이크로소프트 애저 컴퓨트 팀의 수석 프로그램 관리자. 애저 컴퓨트 팀에서 제품 아키텍트로 일하며 차세대 분산 시스템 플랫폼과 애플리케이션 모델에 집중하고 있다.

저자

트렌트 스완슨

소프트웨어 솔루션 설계를 돕는 컨설팅 회사인 Full Scale 180의 공동창업가 및 컨설턴트. 마이크로소프트의 고객들이 애플리케이션을 마이그레이션하고 개발할 수 있도록 돕고 있다.

저자

피터 야우쇼베츠

소프트웨어 개발 분야에서 10년 이상 경력을 지닌 소프트웨어 엔지니어. 마이크로소프트에서 애저 개발과 클라우드 툴링을 개발한 경험이 있다. 최근에는 분산 시스템 및 클라우드 네이티브 솔루션 개발에 집중하고 있다.

역자

정원천

클라우드 개발 업무를 하고 있으며 커뮤니티 스피커로 관련 분야의 발표를 진행한 경험이 있다. 최근에는 클라우드 분야에 남다른 열정으로 개인 블로그에 관련 지식을 업로드하고 있다.

『쿠버네티스 입문』(동양북스, 2020)를 집필했고,  『자바 프로그래밍 면접, 이렇게 준비한다』(한빛미디어, 2015), 『C++ 버그 헌팅』(한빛미디어, 2013), 『클라우드 컴퓨팅 바이블』(길벗, 2012), 『프로 윈도우 폰 7 개발』(길벗, 2012)을 번역했다.

 

CHAPTER 1 클라우드 네이티브 소개

1.1 분산 시스템

1.2 12요소 앱

1.3 가용성과 서비스 수준 협약서

1.4 마치며

 

CHAPTER 2 기본 지식

2.1 컨테이너

2.2 서버리스 컴퓨팅

2.3 함수

2.4 VM부터 클라우드 네이티브까지

2.5 마이크로서비스

2.6 마치며

 

CHAPTER 3 클라우드 네이티브 애플리케이션 설계

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

3.2 클라우드 네이티브 vs 전통적인 아키텍처

3.4 API 설계와 버저닝

3.5 서비스 커뮤니케이션

3.6 게이트웨이

3.7 이그레스

3.8 서비스 메시

3.9 아키텍처 예제

3.10 마치며

 

CHAPTER 4 데이터 다루기

4.1 데이터 스토리지 시스템

4.2 다양한 데이터스토어 데이터

4.3 클라이언트가 데이터에 접근하기

4.4 빠르게 확장 가능한 데이터

4.5 데이터 분석

4.6 쿠버네티스상 데이터베이스

4.7 마치며

 

CHAPTER 5 데브옵스

5.1 데브옵스란?

5.2 테스팅

5.3 개발 환경과 도구

5.4 CI/CD

5.5 모니터링

5.6 설정 관리

5.7 예제 CI/CD 흐름

5.8 마치며

 

CHAPTER 6 모범 사례

6.1 클라우드 네이티브로 이동하기

6.2 회복력 확인

6.3 보안 강화

6.4 데이터 다루기

6.5 성능과 확장성

6.6 함수

6.7 운용

6.8 로깅, 모니터링, 알림

6.9 서비스 커뮤니케이션

6.10 컨테이너

6.11 마치며

 

CHAPTER 7 이식성

7.1 왜 애플리케이션을 이식할 수 있게 만드는가?

7.2 이식성 비용

7.3 이식성을 언제, 어떻게 구현할 것인가?

7.4 마치며

 

찾아보기

전문가들은 2025년쯤에는 애플리케이션의 90% 이상이 클라우드 네이티브로 구현될 것이라고 말한다. 클라우드 네이티브 기술은 현대적인 퍼블릭 클라우드, 프라이빗 클라우드, 하이브리드 클라우드와 같이 동적인 환경에서 확장성 있는 애플리케이션을 만들고 운영할 수 있다. 따라서 기존 애플리케이션은 클라우드 네이티브 애플리케이션으로 점차 전환하고 있으며, 앞으로는 모든 산업 분야에 큰 영향을 미칠 것이다.

 

이 책은 클라우드 네이티브 애플리케이션 설계에 필요한 개념을 다룬다. 가장 기본적이고 중요한 개념인 데브옵스, 애자일 방법론, 마이크로서비스, 클라우드 플랫폼, 쿠버네티스 및 도커 등을 설명한다. 실무에서 풀지 못한 문제를 해결하는 데 도움되는 내용으로 채웠다. 클라우드 환경에서의 실무 경험이 풍부한 저자들이 이론과 실무에서의 괴리감을 속 시원하게 해결해준다. 클라우드 환경이 아닌 곳에서 실행 중인 앱을 클라우드 환경으로 이전할 때 한 번에 이전하는 것이 아닌 단계적으로 이전하는 방법을 알려준다. 이 책을 읽고 클라우드 네이티브하게 애플리케이션 개발에 성공하길 바란다.

  •  

     

     

     

    SE-f8cbb5d6-a361-4b96-9080-2777081ee063.jpg

     

     

    클라우드 네이티브?

     

    Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

     

    These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

     

    (https://github.com/cncf/foundation/blob/master/charter.md#1-mission-of-the-cloud-native-computing-foundation)

     

     

    인프라알못이다.

    쿠버네티스, 서버리스 컴퓨팅, 마이크로서비스, 오케스트레이션 등 어디서 많이 주워듣기는 했는데 이해가 깊지 않아서 보게 된 책.

    어렵고 머리 아픈데, IDC가 2025년 애플리케이션의 90% 이상이 클라우드 네이티브에서 구동될 것이라고 했다. 공부해야 한다.

     

     

    클라우드 네이티브를 간단히 소개하며 컨테이너, 서버리스 컴퓨팅, 함수, 마이크로서비스 등 기본 지식에 대해 설명하는 것으로 시작한다.

     

    클라우드 네이티브 애플리케이션 설계, 데이터 다루기를 거쳐 데브옵스의 기본과 실습, 예제를 보여주고 모범 사례와 이식성에 대한 이야기를 하며 책을 끝낸다.

     

     

    약 250페이지 분량의 두껍지 않은 책인데 기본적인 내용부터 실무에서 참고하기 좋은 내용과 팁까지 빼곡히 담고 있다. '이 책 하나면 클라우드 네이티브 정복!'은 아니지만 인프라알못이 전체 개념을 잡기에 좋은 책이라고 생각한다.

     

     

     

    

     

  • 최근 보고 있는 미드 실리콘 밸리에선 스타트업 개발자가 데모 개발을 하다 클라우드 개발에 어려움을 겪는 장면이 나온다. 효율적인 압축과 바이너리 상태에서 검색까지 가능한 제품을 만든 프로그래머가 클라우드를 모르다니? 그러다 이 쇼가 2014년에 방영했다는 걸 알게 됐다. 2014년은 내가 일을 시작한 해이기도 하고 그 당시엔 클라우드니 빅데이터니 하는 단어들은 나와는 조금 떨어진 개념이었다. 작년에 처음 클라우드 서비스를 활용한 프로젝트를 진행하면서 클라우드를 경험했는데 아쉬움이 많이 남았다. 마이크로 서비스 아키텍처, 비동기 상황에서 발생하는 사이드 이펙트를 처리하는데 많은 어려움을 겪었고 다음에는 이런 문제점을 해결하고 싶었다.

     

    때마침 클라우드 네이티브 를 리뷰할 기회가 생겼다. 이 책은 클라우드 환경에서 발생할 수 있는 상황에 대한 모범 사례, 아키텍처를 구성할 때 고려해야 할 점, 12 Factors 등 다양한 키워드를 제공한다. 목차는 크게 클라우드의 주 요소, 아키텍처, 데이터 핸들링, 데브 옵스, 모범 사례로 구성되어 있다. 각 개념을 설명하며 AWS나 애져, GCP의 서비스에 대해서도 언급하기도 한다. 그리고 FaaS, 컨테이너와 같은 선택의 기로에서 어떤 기준으로 선택해야 하는지 도움을 준다. 설명이 더 풍부했으면 좋겠지만, 그랬다면 이 책의 분량은 천 페이지가 넘어갔을지도 모르겠다. 클라우드를 어느 정도 경험해본 사람이 더 나은 서비스를 구성하고 싶을 때 이 책의 키워드를 문제 해결의 시작점으로 삼는다면 좋겠다.

     

    bookcover.jpg

     

  • 클라우드 위에서 동작하는 애플리케이션을 더욱 클라우드답게 또는 클라우드스럽게 하기 위해서는 그에 따른 최적의 방법론이 요구 된다. 클라우드가 IT 세계의 중심으로 자리 잡으며 클라우드와 관련 된 다양한 기술들이 병행 발전 되고 있는 바, 클라우드에 최적화 된 애플리케이션 설계 방법론으로 명실공히 위상을 떨치고 있는 '클라우드 네이티브'를 다루고 있는 책이 출판 되었으니, 오늘은 그 서적에 대해 이야기를 풀어 보고자 한다.

     

     

     

     

     

     

     

     

    우선 이 책은 소프트웨어 개발 및 아키텍처, 컨설팅 등의 각 분야에서 전문 지식을 오랫동안 축적해 온 IT 전문가 3인방이 그들의 소중한 노하우와 경험을 고스란히 책에 녹여 놓았다는 것에 방점을 찍을 수 있다. 클라우드 네이티브로 향하는 여정에 있어 이들의 역할을 톡톡히 빛을 발한다.  또한 해당 서적의 역자를 맡은 정원천님의 군더더기 없은 깔끔한 번역은 책의 퀄리티를 한층 높여 주기에 손색이 없을 정도다. 

     

     

     

     

     

     

     

     

    이 책은 클라우드 네이티브가 무엇인지에 대한 개념을 풀어 나가는 것을 위시하여 현대 클라우드 컴퓨팅과 관련 된 다양한 기술들에 대한 기본지식을 풀어 나가고 있다. 이를테면 컨테이너, 서버리스 컴퓨팅, 함수(Function) 등과 같이 최근 들어 퍼블릭 클라우드에서 주요한 플랫폼으로 자리를 잡아 가고 있는 기술들을 다루고 있으며 마이크로 서비스와 관련 된 개념까지 서슴 없이 풀어 나가고 있다. 

     

    클라우드 네이티브 환경을 구성하는데에 있어 무엇보다 중요한 것은 바로 '설계'이다. 클라우드 네이티브위에서 동작하는 애플리케이션에 대한 기초를 비롯하여 클라우드 네이티브와 레거시 환경의 아케틱처를 비교, 대조한다. 또한 API에 대한 설계를 포함하여 게이트웨이, 이그레스, 서비스 메시등과 같은 컨테이너 환경 또는 마이크로 서비스 아키텍처 환경에서 주요하게 등장하고 있는 개념에 대한 이야기가 친절하게 전개 된다.

     

    애플리케이션이 활용하고 수집하는 '데이터'에 대한 이야기도 빠질 수가 없다. 데이터를 저장하기 위한 다양한 스토리지 시스템에 대한 개념부터 클라이언트가 데이터에 접근하는 사례와 보다 빠르고 확장 가능한 데이터를 위한 방법과 데이터 분석등에 이르기까지 '데이터 다루기'의 정수를 맛볼 수 있게 된다. 

     

    책의 후반부로 접어 들며 현대 소프트웨어 개발 문화의 대세로 확고한 위상을 굳히고 있는 '데브옵스'에 대한 이야기를 다루게 된다. 데브옵스의 개념을 시작으로 데브옵스의 근간을 이루는 기술의 양대산맥인 CI/CD와 모니터링, 설정 관리 등의 실질적인 사례를 경험할 수 있다. 

     

    끝으로 클라우드 네이티브 환경을 구축하고 구성하기 위한 베스트 프랙티스에 대한 여러가지 주제들, 예컨대 회복력, 성능과 확장성, 로깅, 모니터링, 알림 등에 대한 효율 적인 가이드라인을 제공 받을 수 있으며 '이식성'에 대한 담백하고 실천적인 조언으로 이 책은 마무리 된다. 

     

    클라우드 위에서 동작하는 애플케이션이라고 해서 반드시 클라우드가 제공하는 모든 이점을 충분히 누릴 수 있는 것은 아니다. 오직 클라우드다운 애플리케이션, 클라우드스러운 애플리케이션으로 설계 되었을 때, 클라우드 위에서 동작하는 애플리케션으로서 클라우드의 효용성과 장점을 십분 누릴 수 있다. 클라우드 네이티브한, 제대 로 된 클라우드스러운 애플리케이션을 설계하고 싶나요? 클라우드 네이티브를 향한 여정의 첫발을 이 책과 함께 떼길 권해 봅니다. 

     

    P.S :   
    한빛미디어 '나는 리뷰어' 이벤트에 당첨 되어 제공 받은 도서를 바탕으로 작성된 후기입니다.

     

  • 오늘 리뷰할 도서는 [클라우드 네이티브] 이다.
     
     
     
    작년 여름 스프링 클라우드 넷플릭스에 대해 며칠 동안 빡세게 스터디를 했었다. 
     
    거의 일년이나 지났기 때문에 상당 부분 기억 속에서 사라졌지만 
     
    지난 월~수 3일 동안 도커, 쿠버네티스 관련 교육을 받게 되어 이 책을 리뷰 하기에도 아주 시기 적절했다.
     
    책을 본 후에 약간의 혼란이 있었다. 이 책의 내용이 어떤 것인지 예상 했던 것과 많은 차이가 있어서였다.
     
    그러나 그건 내 착각이었던 것이지 이 책은 나름 충실하게 본연의 내용을 다루고 있었다.
     
    정리 하면 다음과 같다. 일단 개발이나 IT 초보들을 위한 책은 절대로 아니다.
     
    도커, 쿠버네티스에 대한 언급은 있으나 자세한 내용은 없다. 
     
    따라서 도커, 쿠버네티스에 대해 모른다면 이 책을 보는데 어려움이 있을 것이다.
     
    수 많은 용어들이 나온다. 경험 있는 사람들도 낯설어 할만한 용어들이 제법 많이 나온다.
     
    또한 클라우드 관련 디자인 패턴에 대해서도 많은 내용이 나온다. 
     
    이런 부분들은 별도 다른 책이나 레퍼런스를 보지 않으면 이해가 안갈 것이다.
     
    예를 들어 아래 그림처럼 "상태 있는 애플리케이션" 패턴도 클라우드로 넘어오면서 고려할 대상인 것이지, 
     
    전형적인 레거시 시스템에서는 당연한 것이다.
     
     
    개발 언어에 대해서는 별 다른 언급도 없고 어떤 특정 언어에 관련된 내용도 나오지 않는다. 
     
    대신에 마이크로 서비스, 아키텍쳐, 프로토콜, 배포 등... 범용적인 내용과 설계에 대한 내용을 주로 다룬다.
     
     
    이 책을 완전히 이해한다고 해도 다루는 내용으로 인하여 "Hello World" 는 볼 수 없을 것이다.
     
    이제 정리하면 이 책은 개발, 코딩,...  이런 내용과는 거리가 멀다.
     
    개념서, 아키텍쳐, 설계 이런 내용이 주로 있는 책이므로 초보자나 경험이 별로 없는 사람들에게는
     
    권하고 싶지 않다. 내 생각에는 클라우드에 어느 정도 경험 있는 사람이 정리하기 위해 보면 좋은 내용의 책이다.
     
    분량도 250페이지 정도 밖에 안되어 부담 없이 볼 수 있다.

  • 안녕하세요, 괴짜 개발자 namedboy 입니다.

    제가 오늘 리뷰할 책은 Cloud Native 입니다.

    이 책은 O'REILLY 에서 나온 책을 번역한 책입니다.

    O'REILLY 책은 제가 믿고 보는 책 중 하나인데 꽤 많은 개발 서적을 내고 있기도 하고 내용도 괜찮기 때문입니다.
    그래서 O'REILLY 책이 번역되어 나오면 한번쯤 내용을 훑어 봅니다.

    이 책 역시 약간은 그런 믿음을 가지고 보기 시작했는데 역시나 책 구성부터 내용까지 좋았던 것 같네요.

    번역 상태도 괜찮은 느낌입니다.

    사실 Cloud Native라는 제목 때문에 이제는 대세이다 못해 필수가 되어 버린 Kubernetes를 바닥부터 구성하는 내용을 담고 있나 싶은 생각을 했었지만,

    책을 펼쳐보고는 인프라를 공부하기에 참 좋은 책이란 생각을 지울 수 없었습니다.

    보통 인프라를 공부할 수 있는 수단이 많지가 않은데 이 책이 훌륭한 길잡이 역할을 할 수 있겠다는 생각이 들었습니다.

    클라우드를 구성할 때 필요한 지식과 함께 구성할 때 무엇이 꼭 필요하고 어떤 상황에서 어떻게 쓰는지,
    그리고 조심해야 할 부분이 어떤 부분인지에 대해 세세하게 다루고 있어 클라우드를 통해 인프라를 구성하고자 하려는 분들에게는 많은 도움이 될 것 같다는 생각이 들었습니다.

    저 역시도 현재 AWS를 사용해서 인프라를 구성하고 있는 만큼 많은 도움이 되었고 앞으로 내용을 더 읽어 보면서
    현재 회사의 시스템에서 부족한 부분은 무엇인지 내가 놓치고 있는 것이 또 무엇인지 생각해 볼 수 있었습니다.

    AWS 또는 GCP를 사용해서 클라우드를 구성하다 보면 막히는 부분이 도대체 지금 규모에서 어느정도로 인프라를 구성하고,
    어디까지 대비를 해야 하는지 도움을 받을 수 있는 툴은 어떤 것들이 있는지 궁금할 때가 많습니다.

    책의 저자도 그런 부분을 느꼈었는지 관련된 오픈소스 툴이나 서비스도 함께 소개하고 있어 인프라를 구성하는데 더 많은 도움을 받을 수 있었습니다.

    클라우드로 인프라를 구성해야 하는데, 내가 클라우드는 정확히 모른다. 하시는 분들은 많은 도움이 되지 않을까 생각합니다.

    Cloud Native책은 링크에서 확인하실 수 있습니다.

  • 클라우드가 무엇인지 궁금한 결과

    최근 새로운 프로젝트를 시작하기에 앞서 SDK 관련 웹 사이트들을 벤치마킹하였다.

    거의 대부분의 서비스가 요금제 방식이었으며 클라우드로 서비스되는 것 같았다.

    하여 클라우드로 서비스하는 것에 대한 궁금증이 있었는데 마침 한빛미디어에서 기회를 얻었다.

    그러나 본 도서는 제목과 같이 클라우드 이야기도 포함하지만 클라우드 네이티브에 관한 이야기였다.

    페이지 수만큼 정제된(요약된) 내용들과 겁 없이 뛰어든 결과

    너무 원론적인 이야기는 처음 접하기에 거부감이 들 것 같아서 페이지수가 적은 본 도서로 골랐다.

    그러나 너무 모르는 분야에 대해서 겁 없이 뛰어들었다는 생각이 들었다.

    전체적으로 큰 그림도 잘 그려주고 설명도 충분하지만 생소한 용어가 너무 많았다.

    기술들이 무슨 목적으로 생겼으며 어떠한 이해관계를 가지고 발전해 나아가는지 까지 넓은 범위를 설명해 주는 것은 큰 그림을 그리기는데 도움을 주었다.

    그러나 들어본 적 있는 것들(분산 시스템, 컨테이너, 서버리스, 쿠버네티스, 데브옵스 등등)이었지만 말 그대로 들어만 보았고 어떤 역할을 한다고만 어렴풋이 알고 있었던 것들이라 정제된 설명을 글자로는 읽지만 머리로는 이해하기 힘들었다. 

    그럼에도 불구하고 좋았던 점

    1. 큰 그림을 그려주는 설명 방식
    2. 적은 페이지로도 충분한 개념 설명(내 머리로는 조금 어려웠지만 설명은 매우 충실)
    3. 개념 설명을 뒷받침해주기 위한 많은 그림들(구성도)

    그럼에도 불구하고 아쉬운 점

    1. 클라우드를 처음 접해보는 사람들한테는 아무리 충분한 설명이라도 진도 빼기가 어려움(나만 그럴지도)
    2. 강조 글, 그림 모두 흑백이라 컬러였다면 어땠을까
    3. 큰 그림, 개념 설명하다가 어떤 내용은 갑자기 너무 깊게 들어가는 듯한 느낌(이 역시 나만 그럴지도)

    총평

    클라우드에 대한 지식이 어느 정도 있고 환경을 접해본 사람이라면 훨씬 수월하게 이해할 것 같다.

    처음 접하는 사람이라면 아무래도 용어 따라가기가 벅찰 것으로 보인다.

    클라우드는 접해보았는데 내가 그래서 클라우드로 개발하려면 어떤 것들을 신경 쓰면서 해야 하는지를 알려주는 지침서가 될 수 있다고 본다.

    그러므로 일단 클라우드는 접해봤고 클라우드 환경에 최적화된 개발을 하고 싶거나 해야 한다면 읽어보길 추천

  • cloudnative.jpg

     

     

     책을 구성할 때 모든 내용을 다 집어넣고 싶어하는 책이 있고 주제의 핵심적인 내용만 짚어주며 필요한 부분들은 독자들 이 직접 찾아 습득하는 방식의 책이 있습니다. 개인적으로는 후자의 책을 더 선호하는데 아무리 저자가 뛰어나다고 하더라도 책 한권에 모든 내용을 다 담는 것이 어려운 일일 뿐 아니라 만약 담았다고 하더라도 독자가 충분하게 이해할 만큼의 설명을 넣는 것은 쉽지 않습니다.

     

     이 책에서는 후자의 형태를 따르고 있습니다. 클라우드 네이티브로 개발하기 위한 개발 방법론과 가이드를 제시해 주지만 실제로 운영되는 서비스를 통해서 구현하는 방법은 다루지 않습니다. 전공서로 따지면 심화된 내용을 배우기 위한 개론에 가까운 내용들을 다룬다고 할 수 있습니다. 그러면서도 CDN, API버전관리, 데브옵스 등 웹 어플리케이션을 개발하면서 마주하는 다양한 이슈들까지 훑어주며 독자들에게 '어디서 들어본 것 같은' 느낌을 주어 직장 상사가 말할때 알아 듣는 척 하고 자리에서 찾아볼 수 있는 역량을 심어 줍니다.

    (사실 이 책을 읽으며  IT개발 전반에 대한 내용을 설명한 책인 스타트업 인 액션과 비슷한 느낌을 받았는데, 시간 되시면 한번 보아도 좋을 것 같습니다.)

     

     저자가 생각한 대상독자는 모놀리식(monolithic) 레거지를 운영하다가 클라우드 베이스로 넘어가려고 하는 IT 종사자라고 생각합니다. IT전문 용어가 쏟아져 나오고 실제 서비스를 운영해 보지 않고서는 직관적으로 이해하기 힘든 내용들이 많기 때문에 독자의 입장에서도 대학생이나 클라우드에 관심을 가지고 있는 비전공자가 이 책을 읽는 것을 추천하기 어렵습니다. 하지만 클라우드 네이티브로 서비스를 운영하려는 스타트업의 CTO나 개발자, 그리고 Digital Transformation의 물결에 휩쓸려 클라우드로 시스템을 마이그레이션 하려는 IT 부서의 사람들이 읽어봄직한 내용이라고 생각됩니다. 

     

    이 책의 또다른 장접은 도식화를 적시적소에 사용한 점입니다. 저자가 시스템 설계자, 컨설턴트 출신이어서 그런지 중간중간 개념을 설명하기 위한 도표들은 컨설팅 보고서에서, 혹은 실무진이 경영자를 이해시키기 위해 사용한 것 처럼 명확하고 간결합니다. 다만 6장의 모범 사례에서는 도식이 거의 사용되지 않고 상위 주제에 따른 단편적인 설명으로만 이루어져있어 이해하고 와닿는 느낌보다는 사전처럼 나중에 찾아봐야 할 것 같은 느낌을 받았습니다. 시나리오 형식으로 이루어 졌다면 독자들의 기억속에 조금 더 남지 않았을까 하는 아쉬움이 있습니다.

     

     최근에 팀을 이루어 서비스 개발을 하려고 기획하고 있는데, 이 책이 많은 도움이 되었습니다. 다만, 실무에 바로 적용하실 분들보다는 본인의 실력을 한단계 올릴 발판으로 삼으실 분들에게 이 책이 필요할 것이라고 생각됩니다.

     

    본 리뷰는 한빛미디어의 도서 지원으로 작성되었습니다.

     

  •  

     

     벌써 2-3년 전 일이다. 회사에서 개발하던 제품을 클라우드 서비스를 해보자는 이야기가 나와서 잠깐 설계했던 적이 있다. 하지만 우선순위가 밀려서 설계 도중 프로젝트는 중단되고 다른 작업을 하게 되었다. 그 당시 팀에 클라우드 전문가(?)가 없기도 했고 운영조차 안 해봐서 설계에 많은 어려움이 있었다. 이 책에서는 클라우드 네이티브 애플리케이션을 설계하고 개발하는데 필요한 지식을 전달해준다. 회사에서 다시 클라우드 이야기가 나오면 도움이 되지 않을까 하는 생각에 책을 읽게 되었다.

     현재 담당하는 제품도 크기가 꽤 크다. 책에서 말하는 모놀리식, 레거시 시스템에 가까운 형태이다. 클라우드에 관한 지식이 별로 없었음에도, 설계 당시에 주로 고려했던 내용은 어떻게 서비스 중단 없이, 쉬운 확장성을 갖는 시스템을 만들 수 있을까?라는 것이었다. 그러다 보니 자연스럽게 관리 모듈, 사용자 정보, 테넌트 관리, 제품의 메인 프로세스 모듈, 웹 서비스, 로그 등등을 분리되었다. 그리고 각각의 서비스는 클라우드 서비스 공급업체에서 제공해주는 기능 중 가장 적절한 형태의 것에 배치하려고 했다. 

     클라우드 관련 프로젝트가 중단되었지만 대신 제품 버전 업그레이드를 맡게 되었다. 새로운 기능을 추가하면서 기존에 있던 불필요한 모듈도 제거하고 많은 부분 리팩토링을 진행했다. 클라우드도 아니고 그냥 서버에 설치되는 제품이지만, 한번 클라우드 관련 설계를 해 본 경험이 생겨서인지 구조적으로 개선하고 싶은 부분이 많이 생기기도 했다. 그리고 일부 클라우드 설계 내용을 적용하면 나중에 다시 클라우드 서비스를 개발할 때 좀 더 쉽게 이전이 가능하지 않을까 하는 기대도 있었다.

     처음 설계를 시작하게 되었을 때 가장 힘들었던 부분은, 경험이 없기 때문에 레거시 시스템을 어떻게 분리해서 옮겨야 하는지 전혀 몰랐다는 점이다. 어떻게 보면 다른 서비스 제공 업체에서 어떻게 이전을 설계하고 진행했는지가 궁금했다. 

     이 책에서는 전통적인 구조에서 클라우드 형태의 서비스를 단계별로 설명해준다. 또 서비스를 분리하는 방법과, 데이터의 분리 및 관리, 확장성을 고려하는 부분까지 다루고 있다. 가장 마음에 들었던 부분은 후반부에 모범 사례 챕터였다. 

     입문서로는 조금 어려운 게 아닌가라는 생각이 들기도 했다. 생소한 용어들이 너무 다양하게 나왔는데 그게 바로바로 예시로 소개가 되고 있어서 쉽게 이해되지 않는 부분도 많았다. 그리고 설계라는 게 무척 어려운 부분인데, 많은 내용을 소개해주려고 하다 보니 설명이 부족하다는 생각도 들었다. 하지만 용어에 좀 익숙해지고, 어느 정도 스케치를 해볼 수 있는 만큼 지식 전달은 해주는 것 같다. 항상 강조하는 부분이지만, 나중에 코드로 구현해야 할 시기가 왔을 때 '아 그런 게 있었던 것 같은데, 한번 더 찾아봐야지'라고 떠오르기만 해도 훌륭한 학습을 했다 생각한다.

  • [나의 한줄 추천사]

     

    온프레미스 환경에서 클라우드로 전환해주는 시점에 클라우드 환경 어플리케이션 개발시 고려해야할 부분에 대한 의문점을 해소시켜준 책이다.

     

     

    [책을 구매한 이유]

     

    클라우드 네이티브 어플리케이션은 선택 아닌 필수이므로 무조건 봐야함

     

     

    [내가 찾고자 했던 질문과 대답들]

     

    1. 클라우드 네이티브 어플리케이션 테스트는 어떻게 이뤄지는가?

     

     - 일단 테스트 부분도 자동화가 되어야 한다. 클라우드 네이티브 어플리케이션일 경우 배포 또한 비번하게 이뤄지므로 부분을 수작업으로 테스트하는 것을 불가능하기 때문이다. 부분은 CI/CD 환경 구축을 통해서 자동화가 되게 된다. 자동화된 테스트시 필요한 부분은 "테스트 더블" 이다. 실제 오브젝트 대신 사용할수 있는 오브젝트로 mock, fake, stub 3가지 종류가 있다. 3가지 오브젝트를 가지고 테스트 자동화 피라미드를 태운다. 자동화 피라미드는 "유닛" ->"서비스" -> "UI" 테스트 이다. 특히 서비스 테스트는 "jepsen 라이브러리(https://github.com/jepsen-io/jepsen)" 통해서 데이터 유실, 자금 충돌을 사전에 방지할수 있도록 해당 라이브러리로 테스트해볼 있다

     

    그리고 A/B Test Canary Test 주로 사용되는데 A/B Test A버전과 B버전 둘중 목적 비교를 통해서 나은 버전을 선택하는 테스트이며, Canary Test 사용자 시나리오와 최대한 비슷하게 하여 잠재적인 문제점을 돌출할때 사용한다. 아이디어나 기능을 출시하기 전에 유효성 검증하거나 작업할 기능의 피드백을 얻기 사용한다. 테스트 환경이 완벽하게 실서비스 환경을 커버하지 못하므로, 실서비스의 테스팅은 해볼만한 해결책이다. 하지만 리스크는 굉장히 커보인다. 테스트 환경이 실서비스 환경을 커버 못할 경우에 트래픽 부하테스트 부분은 실운영환경에서 해봐야할 부분인 같다

     

     

    2. 클라우드 네이티브 어플리케이션 보안은 어떻게 이뤄지는가?

     

     - 쿠버네티스의 인그레스(Ingress) 게이트웨이를 통해서 외부 -> 시스템에 들어온 트래픽을 처리해 라우팅하거나 오프로딩 기능을 할수 있게 해준다. 시스템 -> 외부로 나가는 트래픽에 대해서는 쿠버네티스의 이그레스(egress) 게이트웨이를 통해서 사설 네트워크 밖으로 나가는 모든 트래픽을 제어할수 있다. 외부로 나가는 모든 통신을 막으면 외부 호출을 만들거나 추가공격을 하려는 잠재적인 공격자를 방해할수 있다.(<--istio 서비스 역할이기도 )

     

     

  • 1. 제목

    클라우드 네이티브

    2. 책 소개 링크 

    https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=242159789

     

     

    클라우드 네이티브

    최신 클라우드 네이티브 애플리케이션 아키텍처의 구성 요소를 설명한다. 컨테이너, 서버리스 컴퓨팅, 스토리지, 애플리케이션의 이식성 개념 설명부터 클라우드 네이티브 애플리케이션 개발��

    www.aladin.co.kr

    3. 출판사 책 소개

    최신 클라우드 네이티브 애플리케이션 아키텍처의 구성 요소를 설명한다. 컨테이너, 서버리스 컴퓨팅, 스토리지, 애플리케이션의 이식성 개념 설명부터 클라우드 네이티브 애플리케이션 개발에 필요한 패턴, 메시징, 이벤팅, 데브옵스 같은 모범 사례까지 살펴본다. 클라우드 네이티브 환경에서 애플리케이션을 어떻게 설계, 개발, 운영해야 할지 고민이라면 이 책으로 시작해보자.

    4. 후기

     클라우드 네이티브 애플리케이션이란 단일 처리에 특화된 최소한의 서비스 단위로 개발을 하고, 이를 커테이너 환경에서 실행하는 개발 방식입니다. 기존에 서버를 하나하나씩 늘려서 성능을 조절하던 온프레미스 방식과 클라우드 네이티브 환경의 구조는 다르기 때문에, 다른 점을 고려해서 개발을 해야합니다. 아래와 같은 사항들을 고려해야 합니다.

    • 사용하는 어플리케이션에 맞는 데이터 구조와 저장 위치
    • 배포를 위한 CI/CD 환경의 구성
    • 모니터링 방법

     책에서는 이러한 사항에 대하여 하나하나 설명해 주고 있는데, 가장 먼저 먼저 클라우드 환경에 대하여 기본적으로 알아야 할 지식들에 대하여 설명하고 있습니다.

    • 컨테이너 : 프로세스 별로 운영체제를 독립적으로 사용. 커널을 공유하여 VM보다 속도가 빠름. 컨테이너를 관리할 때에는 쿠버네티스 사용
    • 서버리스 컴퓨팅 : 클라우드 공급자가 infra를 컨트롤하기 때문에, 어플리케이션에 자동을 할당하거나 해제하는 작업을 신경쓰지 않아도 되는 환경
    • 함수 : AWS Lambda, Azure Functions 와 같은 Faas 개념
    • VM & 클라우드 네이티브 : VM에서 실행되다가 생산성을 높이기 위하여 함수로 실행하게 된 진화 과정
    • 마이크로 서비스 : 애플리케이션들이 기능 단위로 연결된 서비스로 나뉜 서비스 지향 아키텍쳐

     위와 같은 내용을 언급한 후에는 '효율적인 서비스를 구축하기 위한 아키텍처 구조', '데이터를 효율적으로 저장하는 방법', '데브옵스'와 같은 내용들을 설명합니다. 책 전체를 살펴보면 전반적으로 어떠한 것들이 필요한지 A to Z와 같은 방식으로 설명을 해주고 있습니다. 초보자 입장에서는 모르는 개념이 뭔지를 모르는 경우가 많기 때문에, 초보자가 클라우드 서비스 앱 개발의 전체적인 개념을 잡는데 이용하기 좋은 책인 것 같습니다. 클라우드 환경에서 전반적으로 실제 개발을 하는 데 있어서 필요한 점들을 잘 정리하여 적었다는 느낌이 듭니다. 

     

     또, 책의 가독성은 좋은 편입니다. 설명도 간단하고 설명에 대한 다이어그램이나 부가 그림도 잘 들어가있는 편입니다. 내용이 어렵게 실리지 않고 깔끔하게 정리되어 있어서 책도 잘 읽힙니다.

     

     다만, 이 책을 이용하여 개발을 직접 따라하면서 하는 내용은 언급되어 있지 않기 때문에, 초보자 입장에서는 다른 책과 함께 보면서 직접 해보는 것이 개념파악에 훨씬 도움이 될 것 같습니다. 책 하나만으로는 실제 사례가 많은 책이 아니기 때문에, 이해가 다소 어려울 것 같습니다. 다른 책과 꼭 함께 보면서 개발을 직접 해야 될 것 같습니다. 

  • 클라우드 시대, 클라우드는 이제 보편적인 서비스, 기술이라는 것이다.

    그럼에도 가끔은 어디서 부터 시작해야 하는지 의문점이 들 때가 많다.

    애초에 클라우드 서비스로 부터 시작한 사람들은 그런 질문자체가 없을 것이다.

    하지만 기존에 레가시를 사용하는 사람들에게 전환이라는 과제는 만만치가 않기 때문이다.

     

    그래서 마이크로 서비스 아키텍처, 컨테이너, 도커, 쿠버네티스 등의 키워드에 함몰되기가 싶다.

    그러니 파편되지가 쉽다는 것이다. 그래서 항상 무언가 부족함을 느끼게 되는 것이었다.

    그러면에서 시작점으로 선택할 수 있는 책이 나온 것은 고무적이라고 생각한다.

     

    클라우드 네이티브, 애플리케이션을 설계, 개발, 운영하는 핵심 가이드 

     

    h4.jpg

     

    1.옮긴이의 말에서 

    이 책은 클라우드 네이티브로 전환하고자 하는 독자에게 유용하다고 하였다.

    그러면서 클라우드 네이티브로 전환한다는 것은 단순히 애플리케이션을 컨테이너나 함수로 변경하는 것이 아니라고 한다.

    애플리케이션이 다루는 데이터는 어디로 어떤 구조로 저장해야 하는지

    마이크로서비스에서 비동기 통신은 어떻게 동작하는지

    배포를 위한 CI/CD환경은 어떻게 구성해야 하는지

    운영 중인 앱의 모니터링을 어떻게 하는지

    멀티 클라우드 공급자를 사용할 때는 무엇을 주의해야 하는지 

    등 전반적인 내용을 이 책에서 접할 수 있다고 한다.

     

    h1.jpg

     

    2. 이 책에 대하여 저자는

    클라우드 네이티브 애플리케이션을 회사가 시장에서 고객 요구에 빠르게 반응할 수 있도록 구성되어 있고, 짧은 기간 안에 서비스를 업데이트 및 수정해서 배포할 수 있고, 최신 기술을 사용하고, 클라우드가 제공하는 경제적인 장점을 누리고 있다는 것이다. 

    그리고 클라우드 네이티브 애플리케이션(클레애)의 심장은 컨텐이너, 함수, 데이터라고 합니다. 독자가 분산 컴퓨팅의 기본 개념을 이해하고, 그 개념들이 클라우드 클네애와 어떤 관련이 있는지 이해하는 것에서 시작한다고 한다. 그리고 그다음 컨테이너와 함수를 자세히 살펴보고, 추가로 서비스 커뮤니케이션 패턴, 회복성, 데이터 패턴과 언제 사용하는지에 대한 방향도 제시한다고 합니다.

    그리고 이 책은 측정한 요구 사항을 만족하는 클네애 개발에 필요한 단게적인 구현 방법을 제공하지 않으나, 성공적인 클네애의 설계, 개발, 운영하는데 도움이 되는 지식을 얻을 수 있다고 합니다. 바로 기본개념을 이해한다는 것입니다. 

     

    h2.jpg

     

    책을 들고 야외로 나옵니다. 어딘가 벤치에서

    h3.jpg

     

    한빛출판사 모바일 사이트에서 책에 대한 내용을 더 확인해 봅니다.

    h5.jpg

     

    한빛 미디어의 미디어 서비스를 엄청 조아라 합니다.

    책느낌도 있고, 주요정보 뿐만 아니라 맛보기 미리보기 서비스로 구매여부를 최종 판단하게 됩니다.

     

    https://preview2.hanbit.co.kr/books/aimd/#p=1

     

    h7.jpg

     

    표지

    h6.jpg

     

    h8.jpg

     

    옮긴이의 말

    h9.jpg

    이 책에 대하여

    h10.jpg

     

    목차

    h11.jpg

     

    가로모드에서 상세히

     

    h13.jpg

     

    기본 지식 컨테이너

    h14.jpg

     

    h15.jpg

     

    뒷면

    h16.jpg

     

    책에 관하여

     

    마이크로서비스 아키텍처 개념

    h17.jpg

     

    크러스터와 오케스트레이터

    h18.jpg

     

    데브옵스

    h19.jpg

     

    시작이 반입니다.

    그리고 어느정도 윤곽이 나오면 더 빠르게 접근할 수 있는 것입니다.

    물론 방법은 여러가지 그중의 한가지라고 생각합니다. 일단 시작하는 것이 답입니다.

     

  • 총평

    클라우드가 보편화된 시대에 클라우드에 적합한 어플리케이션/아키텍쳐를 이용하기 위한 거의 모든 사항을 담아놓은 듯한 책이다. 모든 사항을 자세하게 설명하는 건 불가능하기 때문에 때로는 소개에 그치는 경우도 있지만, 중요한 사항을 잘 설명하고 있다. 클라우드 네이티브에 필요한 핵심 요소로 마이크로서비스, CI/CD, DevOps, 컨테이너를 들 수 있고 이 책에서 여러 페이지에 걸쳐 설명하고 있는데, 사실 클라우드 네이티브 어플리케이션이 아니더라도 이미 여러가지 문제를 해결하기 위해 사용하던 중요한 기술들이다. 각각의 기술을 더 깊게 살펴봐야 할 때는 당연히 전문 서적을 더 봐야겠지만, 혹시 모르는 기술이 있거나, 전체적인 조망이 필요하다면 이 책은 정말 큰 도움이 된다.

    Ch1. 클라우드 네이티브 소개

    기본 개념 및 가정 소개. 분산 시스템에서 하지 말아야 할 가정(e.g. 네트워크가 안정적이고 지연이 없다)과 NoSQL을 통해 널리 알려진 CAP 이론, 12요소 앱 https://12factor.net, SLA 등을 설명한다. 다른 건 다 알고 있었지만 12요소 앱은 처음 들었는데, 하나 하나 따로 보면 무심코 지나치더라도 생각해보면 중요한 항목들을 모아서 잘 정리했음을 알 수 있었다. 평소에 생각하던 logging의 중요성을 별도의 항목으로 한게 특히 마음에 들었다.

    Ch2. 기본지식

    도커와 쿠버네티스로 대표되는 컨테이너 기술로 시작한다. 특성상 컨테이너가 기본적으로 필요한 사항이기도 하지만 의도적으로 기본지식의 첫 번째로 배치하지 않았을까 생각이 들었다. 도커와 쿠버네티스의 기본적인 용어나 기초적인 이해를 위한 설명을 한다.

    서버리스 컴퓨팅과 함수 항목은 하나로 묶어서 이야기해도 될 거 같다. 서버리스 컴퓨팅에 대한 설명은 한 페이지도 되지 않아서 조금 부족한 느낌이 있지만, 함수 부분에서 FaaS (Function as a Service)를 이야기하며 그 부족함을 약간이나마 채워준다.

    마지막으로는 마이크로서비스의 장단점을 논한다. 이미 흐름은 MSA가 최선인 듯한 분위기로 넘어갔으나, 사실 하나의 서비스 파악은 용이해도 전체 서비스 파악은 오히려 어려워질 수도 있다는 점(네트워크로 호출하면서 오히려 전체 시스템의 흐름이 복잡해질 수 있음, 로깅/디버깅/테스트/모니터링의 어려움 등), 을 감안하면 적절한 수준에서 서비스를 나눠야 하는데, 분야를 막론하고 “적절함"은 항상 정해진 기준이 없고 상황에 따라 가변적이라는 점에서 쉽게 결정할 수 없는 문제이다.

    Ch3. 클라우드 네이티브 어플리케이션 설계

    기초에 해당하는 키워드는 다음과 같다. 자동화 모니터링 문서화 점진적인 변화 장애대비 보안 신뢰성 가용성 확장성 비용. 경험상 자동화와 모니터링은 비교적 잘 하기 쉬운 부분이고, 문서화와 점진적인 변화는 대부분의 기업에서 제대로 되지 않을 가능성이 높고, 나머지 항목은 비용에 영향을 받는 경우가 많다.

    그 다음으로 클라우드 네이티브 어플리케이션과 전통적인 아키텍쳐의 차이점을 보여주는 데 가장 큰 차이점은 상태가 어플리케이션 외부에 존재한다는 점이며, 이로 인해 마치 함수형 프로그래밍과 같이 확장이 용이하지만 데이터의 흐름은 이해하기 어려운 문제가 생긴다.

    API 문서화는 개인적으로 가장 중요한 부분 중 하나라고 생각하는데, swagger를 이용해 API 문서화를 자동화하는게 보편화되었지만, 여전히 이런 자동 생성된 API 문서는 실제 사용할 때 종종 어떻게 동작하는지 이해하기 어려운 경우가 있어서 이것만으로 만족하면 안된다고 생각한다.

    이후로는 서비스 커뮤니케이션 — 프로토콜, 멱등성, pub/sub, 동기/비동기, 게이트웨이, 서비스 메시 등 시스템 디자인에 필요한 여러가지 항목이 나오고 마지막으로 아키텍쳐 예제를 통해 몇 가지 간단한 아키텍쳐 다이어그램과 기본적인 사항을 알려준다.

    Ch4. 데이터 다루기

    데이터 스토리지 시스템의 종류에 대해 설명하는 걸로 시작한다. 저장 유형에 따른 분류(오브젝트, 파일, 분산파일시스템 등)와 키밸류, 문서, 관계형, 그래프, 컬럼, 시계열 뿐만 아니라, 스트림/큐, 블록체인까지 같이 이야기한다. 이렇게 다양한 데이터 시스템을 선택하는 기준을 기능/비기능 요구 사항에 따라 20가지 넘게 제시하는데, 개인적으로는 언제나 시작은 99% 관계형 DB로 하고 서비스 성숙도 및 사용자 증가에 따라 필요시 다른 형태로 바꾸는 게 맞다고 본다.

    클라우드를 설명하는 책이기 때문에 데이터도 분산 저장하게 되는데, 이 때 가장 어려운 문제는 일관성과 무결성을 제공하는 일이다. 로그나 트랜잭션을 수행해 이런 문제를 해결할 수 있다. 데이터를 수집하면 이걸 분석해야 서비스 향상을 위한 자료로 사용할 수 있는데 이를 위해 ETL 및 데이터 레이크도 사용할 수 있다. 어플리케이션 확장을 위해 데이터 복제를 해야 하므로 데이터 샤딩으로 부하를 분산하기도 하고, 응답속도 향상을 위해 캐싱이나 CDN을 이용할 수도 있다.

    Ch5. 데브옵스

    인프라의 발전이나, 클라우드 사용이 증가하면서 많은 부분이 자동화되었지만 여전히 설정이나 운영 측면에서 사람의 손이 많이 간다. 그래서 기술 서적이지만 사람, 협업, 공유의 중요성을 강조하면서 이번 장을 시작한다.

    두번째는 테스팅인데, 아마 여기 나오는 모든 테스팅 종류를 실천은 고사하고 모두 아는 사람도 드물지 않을까 하는 생각이 들었다. 유닛, 서비스, UI, 젭슨, 성능, 부하, 보안, 침투, A/B, 인수, 이용성, 설정, 스모크, 통합, 카오스, 퍼지, 카나리 테스트.

    이외에도 개발 도구와 환경, CI/CD, 모니터링, 설정 관리 등 서비스 운영에 필요한 거의 모든 부분을 설명한다.

    Ch6. 모범사례

    기존 모놀리스 아키텍쳐를 이전할 때 고려할 점, 장애와 보안에 대해 생각할 점, 데이터 관리와 성능 및 확장성을 위해 필요한 점, 서버리스 아키텍쳐에서 알아둘 점, 운영, 로깅, 모니터링, 알림, 서비스 커뮤니케이션(서비스나 클라이언트, DB와의 통신 등), 컨테이너까지 각 항목 별로 점검하고 참고할만한 사항을 알려준다. 이 장은 일종의 팁 모음과도 같단 생각이 들었다.

    Ch7. 이식성

    본문의 설명처럼 고객의 요구에 따라 특정 클라우드 서비스를 이용하는 경우뿐만 아니라 자사의 인프라가 변경되는 경우에도 어플리케이션을 다시 배포할 필요가 발생한다. 그러므로 이식성은 아키텍쳐만큼이나 중요한 요구 사항이다. 특정 벤더에 종속되는 상황을 피하기 위해서는 당연히 유연하게 이식이 가능해야 하는데, 이런 기능 구현을 위해서는 시간과 비용 및 복잡도가 증가하기 때문에 다른 아키텍쳐 요구 사항을 고려할 때처럼 트레이드 오프를 고려해야 한다.

    어플리케이션 이식성과 마찬가지로, 아니, 더 중요한 정도로 데이터 이식성도 고려해야 하는데, 데이터가 클수록 이전도 어렵기 때문에 아마존의 경우 이미 몇 년 전에 스노우볼이라는 물리 디스크를 통한 데이터 이전을 지원하는 서비스를 발표하기도 했다.

    이식성에서 가장 중요한 건 표준화된 인터페이스를 사용하는 부분인데, 이런 표준화된 인터페이스가 존재하면 훨씬 용이하게 이식을 할 수 있겠지만 실제로는 모든 상황을 만족하는 경우는 존재하지 않기때문에, 특정 벤더에 종속된 부분은 직접 구현해야만 한다. 이런 이식성 관련 도구들 중 인프라 관리를 추상화하기 위해 하시코프의 테라폼을 이용할 수 있는데, 대부분은 동일하지만 결국 특정 벤더에 관련된 부분이 없을 수는 없다. 스토리지 추상화를 위해 MinIO를 이용해 AWS, Azure, Google Cloud 및 로컬 파일시스템을 이용할 수 있다(고 한다. 이건 처음 들어봄).

    여기서 다시 쿠버네티스가 나오는데, 클라우드 공급자 인프라를 추상화하기 위해 사용이 가능하다. 쿠버네티스가 사실상의 표준이 되면서 거의 모든 클라우드에서 관리형 쿠버네티스 서비스를 제공하기 때문에 가장 효율적이면서 동시에 거의 유일한 인프라 추상화 방법이다.

  •  

    [한줄평]

    클라우드 네이티브 아키텍처 애플리케이션 개발을 하고 싶은 아키텍처와 개발자들에게 추천합니다.


    [목차구성]

    CHAPTER 1 클라우드 네이티브 소개

    CHAPTER 2 기본 지식

    CHAPTER 3 클라우드 네이티브 애플리케이션 설계

    CHAPTER 4 데이터 다루기

    CHAPTER 5 데브옵스

    CHAPTER 6 모범 사례

    CHAPTER 7 이식성


    [이 책의 특징]

    ●클라우드 네이티브 애플리케이션 설계에 필요한 기술을 살펴본다.

    ●컨테이너와 함수를 분리하고 언제 사용하는지 배운다.

    ●데이터 관련 요구 사항이 있는 애플리케이션을 설계한다.

    ●애플리케이션 개발, 테스팅, 운영에 필요한 기본 개념과 데브옵스 방법을 배운다.

    ●클라우드 네이티브 애플리케이션을 개발하고 관리하는 팁, 기술, 모범 사례 등을 학습한다.

    ●이식성 있는 애플리케이션의 장단점과 구축 비용을 알아본다.

     

    [이 책의 대상 독자]

    ●개발, 테스트, 운영 입문자

    ●서비스 단위에서 개발하고 싶은 개발자

    ●컨테이너 환경에서 실행하는 애플리케이션 개발을 하고 싶은 운영자

     

     

    [서평]

    몇년전만 해도 클라우드 플랫폼은 먼 미래의 일이라 생각 했습니다. 요즘 기술이 정말 빠르게 발전하고 있습니다. 정부기관 에서도 클라우드플랫폼으로 변화하고 있습니다. 그리고 많은 스타트업 기업과 대기업에서도 클라우드 플랫폼으로 이동하고 있습니다. 클라우드 네이티브는 선택이 아닌 필수가 되었습니다. 클라우드 플랫폼을 사용하면 무중단, 무한한 확장, 짧은 피드백주기, 비용 관리등 많은 효과를 얻을수 있습니다. 하지만 단순하게 기존 프레임에서 클라우드로 변경하면 가능 한것이 아닙니다. 설계부터 구축 개발, 운영까지 모든 것이 다 클라우드 환경에 맞게 변경되어야 합니다.


    이책에서는 클라우드 네이티브 애플리케이션의 설계 모델과 함께 구축을 지원하는 패턴, 사례 및 도구를 제시하고 있으며 앱, 데이터, 서비스, 라우팅 등을 다루는 실사례와 개발, 테스팅, 운영에 필요한 기본개념과 데브옵스 방법을 배웁니다. 이 책을 끝마칠 즘 클라우드의 기본 특성을 이해할 수 있습니다.


    클라우드 네이티브 애플리케이션으로 전환 또는 개발 환경을 구축하는데 이책이 도움이 될것이라 생각되어 추천 합니다.

  • 클라우드 네이티브 애플리케이션에 대해 지식이 없었지만 이 책을 통해 얻은 몇 가지를 정리하고자 한다.

    아래 요약한 몇 가지 내용들만 읽어봐도 이 책이 꽤 클라우드 네이티브에 대해 잘 기술했다는 것을 알 수 있다.

     

    클라우드 네이티브한 방법으로 개발한 서비스를 클라우드 네이티브 애플리케이션이라고 한다.

    클라우드 네이티브 애플리케이션의 심장은 컨테이너(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, 아마존, 구글을 비롯한 많은 기업들이 클라우드 네이티브 애플리케이션 산업을 주도하고자 진화 중이다.

     

    유저에게 서비스를 제공하는 개발자들이라면 한번 쯤 이 책을 통해 클라우드 네이티브란 개념을 정리하는 시간을 가지면 좋을 것이라 생각한다.

    

  • 결재하기
    • 문화비 소득공제 가능

    배송료 안내

    • 책, 아이템 등 상품을 1만원 이상 구매시 무료배송
    • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

    무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

    닫기

    리뷰쓰기

    닫기
    * 도서명 :
    클라우드 네이티브
    * 제목 :
    * 별점평가
    * 내용 :

    * 리뷰 작성시 유의사항

    글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

    1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
    2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

    오탈자 등록

    닫기
    * 도서명 :
    클라우드 네이티브
    * 구분 :
    * 상품 버전
    종이책 PDF ePub
    * 페이지 :
    * 위치정보 :
    * 내용 :

    도서 인증

    닫기
    도서명*
    클라우드 네이티브
    구입처*
    구입일*
    부가기호*
    부가기호 안내

    * 회원가입후 도서인증을 하시면 마일리지 500점을 드립니다.

    * 한빛 웹사이트에서 구입한 도서는 자동 인증됩니다.

    * 도서인증은 일 3권, 월 10권, 년 50권으로 제한됩니다.

    * 절판도서, eBook 등 일부 도서는 도서인증이 제한됩니다.

    닫기

    해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
    장바구니로 이동하시겠습니까?

    자료실