|
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다
이번에 리뷰하게 된 책은 클라우드 네이티브입니다. 클라우드 네이티브 어플리케이션은 고객 요구사항에 빠르게 대응하기 위해서 빠른 업데이트와 수정 배포 탄력적인 확장 그리고 이를 위해 클라우드 환경에서 제공되는 잇점을 최대한 활용하는 서비스를 말합니다.
요즘 어플리케이션 개발의 키워드들은 마이크로 서비스, 도커, 컨테이너, 쿠버네티스, CI/CD 들을 꼽을 수 있습니다. 하나하나가 자세히 설명하려면 거의 책 한 권 이상이 나올 수도 있는 내용들입니다. 그러나 가끔은 나무가 보는 것이 아닌 전체적인 숲의 안내도를 먼저 보는게 도움이 될 때가 있습니다. 이 책은 250p 정도의 짧은 분량이지만 앱이 네트웍 클라우드 상의 분산시스템으로 이동됨으로써 발생하는 오류(고려해야하는 점)들로 시작하여 클라우드서비스가 갖추어야 할 12요소를 설명하고, 이를 만족시키기 위해서 어떤 구조 아키텍쳐를 가져야 하며, 모범 사례등을 알려주고 있습니다.
호환성을 위해 API설계를 어떻게 할 것이며 어떤 프로토콜로 어떻게(동기/비동기) 주고 받을지 게이트웨이 및 트래픽 관리 장애처리 보안 모니터링 클라우드환경에서 데이타는 어떻게 다룰 것인지 데이타의 보안, 분석, 상태관리 데브옵스, 테스팅, CI/CD 모범사례 격리, 확장, 보안, 함수, 모니터링, 컨테이너 등을 적절한 그림 설명과 함께 간결하게 적었습니다. 중간중간 모르는 용어나 내용들이 나와서 이해가 어려운 부분들도 있었습니다. 독자의 사전 지식에 따라 이해도는 충분할 수도 있고 부족할 수도 있다고 생각합니다.
어떤 기능 사용법이나 따라하기 그런 스타일의 책은 아니고 구체적인 How 보다는 무엇을 해야하고 왜 해야하는지를 알려주므로 실무적용시에는 추가적인 공부가 필요합니다. 어느정도 서비스운영을 해보았거나 도커나 쿠버네티스같은 것을 접해보거나 관련지식을 습득한 상태에서 이 책을 보면 더 얻는 것이 많을것으로 생각됩니다.
|
|
[나의 한줄 추천사] 온프레미스 환경에서 클라우드로 전환해주는 시점에 클라우드 환경 어플리케이션 개발시 고려해야할 부분에 대한 의문점을 해소시켜준 책이다. [책을 구매한 이유] 클라우드 네이티브 어플리케이션은 선택 아닌 필수이므로 무조건 봐야함 [내가 찾고자 했던 질문과 대답들] 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 서비스 역할이기도 함) (추가 : Ingress는 외부로부터 서버 내부로 유입되는 네트워크 트래픽을, egress는 서버 내부에서 외부로 나가는 트래픽을 의미한다.) 3. 클라우드 네이티브 어플리케이션 통신 프로토콜은 어떻것을 사용하는가 - 저는 기본적으로 JSON 형식의 RestFul API 형식의 게이트웨이를 통한 http 프로토콜 호출 방식이다. 가독성도 좋고, 쉽게 확장 가능하나, 메모리를 많이 사용해 직렬화, 역직렬화시 payload 높다. 대용량의 데이터를 처리하거나 빠른 응답이 필요할 경우에는 gRPC 기반의 protobuf 프로토콜 버퍼 사용한다.protobuf 는 미리 양쪽에 스키마를 생성해서 데이터만 전송하면 되기 때문에 직렬화 코드가 필요없다.
gRPC 는 http/2 전송 프로토콜로 고성능, 경량 통신 프레임워크이다. 인증, 양방향 스트리밍, 블로킹, 논블로킹 취소 타임아웃을 제공한다. 바이너리 형식이어서, payload 작기 때문에 전송이 빠르다. |
|
최근에 Docker, Kubernetes 관련하여 조금씩 접하게 되면서, 나는 인프라 엔지니어와 데브옵스 엔지니어가 하는 일이 정확히 무엇인지를 알고 싶어졌다. 이 도서는 현재 나와 같은 상황의 개발자에게 유효한 것으로 보인다.
|
|
2020년 6월에 출간된 <클라우드 네이티브>에 대해 살펴보겠습니다. 한빛미디어 리뷰 평가단에 참가하며, 처음으로 필자가 신청한 책이 아닌 책을 리뷰하게 되어 조금 당황스러웠지만, 이 책은 필자의 호기심을 유발하는 내용이 듬뿍 담긴 매력적인 책이었습니다. 이 책의 저자분은 마이크로소프트 애저 서비스와 관련 있는 분들입니다. 그러므로 클라우드 서비스에 높은 이해를 보유하고 있는 분들이라고 생각합니다. 이 책은 클라우드 네이티브를 이해하기 위해 필요한 내용을 군더더기 없이 요약하고, 설명하고 있습니다. 단, 필자의 사견으로는 클라우드에 대해 전혀 모르는 분이 읽기에는 다소 어려움을 느낄 수도 있습니다. <클라우드 네이티브>는 약 250여 페이지로 구성되어 있어 휴대하면서 읽기에 부담스럽지 않습니다. 또한, 이 책은 전차잭으로도 만나볼 수 있음으로 전자책 뷰어가 있으신 분은 전자책으로 보셔도 좋을 것 같습니다.
한빛미디어 리뷰 평가단에 참가하여 작성한 글이며, 한빛미디어에서 제공해준 책을 읽고 작성했음을 밝힙니다. 이 책의 매력은?<클라우드 네이티브>에 관한 내용을 250여 페이지에서 다루는 것은 어렵습니다. 이 책은 전반적으로 다루는 내용이 방대합니다. 그래서 클라우드 관련 지식에 대해 이해가 부족한 분은 어렵게 느껴질 수 있습니다. 이미 어느 정도 지식을 내재하고 있는 독자라면, 이 책은 <클라우드 네이티브>에 대한 이해를 도와줄 수 있는 매력적인 책입니다. 내재한 지식을 정리할 수 있으며, 클라우드 네이티브를 도입하며 고려해야 할 다양한 요소들이 담겨 있으므로 부족한 부분을 극복하기 위한 학습 포인트와 미처 예상하지 못했던 다양한 포인트들을 놓치지 않을 수 있습니다. 또한, 이 책에서 이야기하는 주요 포인트들에 대해 깊이 있게 설명하지 않습니다. 또한, 약간 불친절하게 느껴지는 부분도 있습니다. 따라서 각 부분마다 정확하기 이해하기 위해서는 추가적으로 학습이 필요합니다. 이 책은 <클라우드 네이티브> 모델 도입의 지침서라고 생각합니다. 이 책을 기반으로 부족한 부분을 조금씩 채워가다보면 멋진 클라우드 네이티브 모델을 완성해 나갈 수 있을 것으로 판단합니다. 마치면서<클라우드 네이티브>는 7개의 챕터로 구성되어 있습니다. 클라우드 네이티브의 소개부터 기본적으로 알아야 할 내용을 담고 있으며, 애플리케이션 설계 방법과 데이터를 다루는 방법, 최근 관심이 높아지고 있는 DevOps를 소개합니다. 이후 모범 사례 등을 소개하며, 마지막으로 온프레이스나 클라우드를 선택해서 배포해야 요구 사항을 대비하는 방법을 안내합니다. 옮긴이의 말에서 "이 책은 저자들이 수년간 컨설팅 경험에서 쌓아온 다양한 노하우를 소개합니다."라는 구절이 있습니다. 이 책에 대해 잘 요약한 문장이라고 생각합니다. 이 책은 국내에서 인기 있는 따라하기 방법의 책은 아닙니다. 따라서 다소 어렵게 느껴질 수 있지만, 이 책을 기반으로 외연을 넓혀나간다면 매우 효과적으로 학습할 수 있을 것으로 생각합니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
클라우드의 사용은 선택이 아닌 필수가 되버렸다. 클라우드는 단순히 서버를 자체적으로 운영하던 환경의 변화만이 아닌 개발 환경, 아키텍처의 변화도 수반되었으며 개발 목적에 맞는 적절한 아키텍처의 설계와 개발 방법을 통해서 성공적인 목적을 달성할 수 있다. 간간히 눈에 띄는 오탈자가 있긴 하지만 크게 거슬리지는 않는다(이미 대부분의 정오표는 등록되어 있으니 참고). 다만, 번역서 특유의 딱딱함과 역주가 없는 점은 아쉬움으로 남는다. "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
안녕하세요, 괴짜 개발자 namedboy 입니다. ??
제가 오늘 리뷰할 책은 이 책은 O'REILLY 에서 나온 책을 번역한 책입니다. O'REILLY 책은 제가 믿고 보는 책 중 하나인데 꽤 많은 개발 서적을 내고 있기도 하고 내용도 괜찮기 때문입니다. 이 책 역시 약간은 그런 믿음을 가지고 보기 시작했는데 역시나 책 구성부터 내용까지 좋았던 것 같네요. 번역 상태도 괜찮은 느낌입니다. 사실 Cloud Native라는 제목 때문에 이제는 대세이다 못해 필수가 되어 버린 Kubernetes를 바닥부터 구성하는 내용을 담고 있나 싶은 생각을 했었지만, 책을 펼쳐보고는 인프라를 공부하기에 참 좋은 책이란 생각을 지울 수 없었습니다. 보통 인프라를 공부할 수 있는 수단이 많지가 않은데 이 책이 훌륭한 길잡이 역할을 할 수 있겠다는 생각이 들었습니다. 클라우드를 구성할 때 필요한 지식과 함께 구성할 때 무엇이 꼭 필요하고 어떤 상황에서 어떻게 쓰는지, 저 역시도 현재 AWS를 사용해서 인프라를 구성하고 있는 만큼 많은 도움이 되었고 앞으로 내용을 더 읽어 보면서 AWS 또는 GCP를 사용해서 클라우드를 구성하다 보면 막히는 부분이 도대체 지금 규모에서 어느정도로 인프라를 구성하고, 책의 저자도 그런 부분을 느꼈었는지 관련된 오픈소스 툴이나 서비스도 함께 소개하고 있어 인프라를 구성하는데 더 많은 도움을 받을 수 있었습니다. 클라우드로 인프라를 구성해야 하는데, 내가 클라우드는 정확히 모른다. 하시는 분들은 많은 도움이 되지 않을까 생각합니다.
|
|
벌써 2-3년 전 일이다. 회사에서 개발하던 제품을 클라우드 서비스를 해보자는 이야기가 나와서 잠깐 설계했던 적이 있다. 하지만 우선순위가 밀려서 설계 도중 프로젝트는 중단되고 다른 작업을 하게 되었다. 그 당시 팀에 클라우드 전문가(?)가 없기도 했고 운영조차 안 해봐서 설계에 많은 어려움이 있었다. 이 책에서는 클라우드 네이티브 애플리케이션을 설계하고 개발하는데 필요한 지식을 전달해준다. 회사에서 다시 클라우드 이야기가 나오면 도움이 되지 않을까 하는 생각에 책을 읽게 되었다. 현재 담당하는 제품도 크기가 꽤 크다. 책에서 말하는 모놀리식, 레거시 시스템에 가까운 형태이다. 클라우드에 관한 지식이 별로 없었음에도, 설계 당시에 주로 고려했던 내용은 어떻게 서비스 중단 없이, 쉬운 확장성을 갖는 시스템을 만들 수 있을까?라는 것이었다. 그러다 보니 자연스럽게 관리 모듈, 사용자 정보, 테넌트 관리, 제품의 메인 프로세스 모듈, 웹 서비스, 로그 등등을 분리되었다. 그리고 각각의 서비스는 클라우드 서비스 공급업체에서 제공해주는 기능 중 가장 적절한 형태의 것에 배치하려고 했다. 클라우드 관련 프로젝트가 중단되었지만 대신 제품 버전 업그레이드를 맡게 되었다. 새로운 기능을 추가하면서 기존에 있던 불필요한 모듈도 제거하고 많은 부분 리팩토링을 진행했다. 클라우드도 아니고 그냥 서버에 설치되는 제품이지만, 한번 클라우드 관련 설계를 해 본 경험이 생겨서인지 구조적으로 개선하고 싶은 부분이 많이 생기기도 했다. 그리고 일부 클라우드 설계 내용을 적용하면 나중에 다시 클라우드 서비스를 개발할 때 좀 더 쉽게 이전이 가능하지 않을까 하는 기대도 있었다. 처음 설계를 시작하게 되었을 때 가장 힘들었던 부분은, 경험이 없기 때문에 레거시 시스템을 어떻게 분리해서 옮겨야 하는지 전혀 몰랐다는 점이다. 어떻게 보면 다른 서비스 제공 업체에서 어떻게 이전을 설계하고 진행했는지가 궁금했다. 이 책에서는 전통적인 구조에서 클라우드 형태의 서비스를 단계별로 설명해준다. 또 서비스를 분리하는 방법과, 데이터의 분리 및 관리, 확장성을 고려하는 부분까지 다루고 있다. 가장 마음에 들었던 부분은 후반부에 모범 사례 챕터였다. 입문서로는 조금 어려운 게 아닌가라는 생각이 들기도 했다. 생소한 용어들이 너무 다양하게 나왔는데 그게 바로바로 예시로 소개가 되고 있어서 쉽게 이해되지 않는 부분도 많았다. 그리고 설계라는 게 무척 어려운 부분인데, 많은 내용을 소개해주려고 하다 보니 설명이 부족하다는 생각도 들었다. 하지만 용어에 좀 익숙해지고, 어느 정도 스케치를 해볼 수 있는 만큼 지식 전달은 해주는 것 같다. 항상 강조하는 부분이지만, 나중에 코드로 구현해야 할 시기가 왔을 때 '아 그런 게 있었던 것 같은데, 한번 더 찾아봐야지'라고 떠오르기만 해도 훌륭한 학습을 했다 생각한다. |
|
클라우드 시대의 도래
아마존의 AWS를 이제는 거의 다 사용하고 있다고 합니다. 거기에 구글의 GCP, 마이크로소프트의 Azur, 네이버클라우드 최근에는 카카오에서 카카오아이클라우드 이야기도 나옵니다. 클라우드 서비스는 이제 일상이 되었습니다. 특히 신생기업 스타트업 등은 더 빠르고 유연하게 클라우드 자원을 잘 활용하고 있습니다. 어쩌면 덩치 큰 기업들이 더 늦게 대응하는 것도 사실입니다. 레가시에 투자한 비용이 어머어마해서 전환하기가 쉽지 않기 때문입니다. 그래도 불가피하기에 클라우드 네이티브로 전환을 다들 고려하고 있다고 합니다.
클라우드 네이티브 : 단일 처리에 특화된 최소환의 서비스 단위로 개발을 하고, 이를 컨테이너 환경에서 실행하는 애플리케이션 개발방식입니다. 수많은 컨테이너가 오케스트레이션을 통행 자도응로 관리, 운영하는 등 클라우드 네이티브는 클라우드 컴퓨팅 모델의 이점을 최대한 살린 개발 방식입니다.
1. 무엇을 준비해야 할까요? 공부할 것이 많아진 것도 사실입니다. IT기술을 속도전이라고 합니다. 이미 앞서간 무수한 무리들이 있을 겁니다. 그래도 늦은게 늦은게 아닙니다. 현상황을 인지하는 순간이 바로 터닝포인트입니다. 기술은 다른 기술의 맥락으로 또 다른 전환을 준비하고 있습니다. 먼저 시작했다고 빠른 것은 아니라고 보면 됩니다. 먼저 시작했다고 모든 것을 수용할 수도 없고, 내가 하는 업무가 모든 것을 필요로 하지 않기 때문입니다.
그래서 금번에 접한 클라우드 네이티브 책이 유용합니다. 바로 애플리케이션을 설계, 개발, 운영하는 핵심 가이드라고 소제목으로 설명하고 있습니다.
2.책소개를 통하여 책이 담고 있는 목표와 방향을 알 수있습니다.
http://www.yes24.com/Product/Goods/90462083?Acode=101
최신 클라우드 네이티브 애플리케이션 개념을 익히고 모범 사례를 배워보자!
![]() 최신 클라우드 네이티브 애플리케이션 개념과 모범 사례 ![]() 페이지는 252라 그렇게 두껍지도 않습니다. ![]()
표지 그림 설명, 한빛의 특징은 표지에 등장하는 동물이 바로 멸종 위기종이라는 것 입니다. ![]()
![]()
책의 전체적인 구성입니다. 목차 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 마치며 찾아보기 옮기이의 말을 보면 클라우드 사용이 보편화되며서 클라우드 사용 방법문만 아니라 클라우드 위에서 동작하는 애플리케이션 개발 환경이 중요해졌습니다. 이 책은 그런 부분을 다루고 저자들이 수년간 컨설팅 경험에서 쌓아온 다양한 노하우를 소개합니다. 구체적인 에제보다 특정 문제나 아키텍처에 어떻게 접근해야 하는지를 설명합니다. 그렇다고 단순히 이론만 제공하는 것은 아닙니다. 실질적인 접근 방법을 제시하여 클라우드 네이티브로 전환하고자 하는 독자에게 매우 유용할 것입니다. ------------- DevOps가 가용한 이유는 클라우드 향에 제공되는 솔루션 등 여러가지 지원들이 사항이 많기 때문입니다. 다시 말해서 소수의 인원으로 개발/운영이 가용하다는 것입니다. 인프라관리에서 개발 배포 운영까지 그렇게 시대가 달려가고 있다는 것입니다. 어쩌면 가혹한 환경일 수도 있지만, 리소스 관점에서보면 더이상 조직이 있어야만 서비스를 개발 운영을 한다는 고정관념은 더 이상 없다는 것입니다.
클라우드에 대한 전체적인 개념과 내용 그렇지 두껍지 않은 책이라 여러모로 클라우드에 관심이 있는 분들 시작하는 분들에게 제격입니다. |