클라우드 네이티브 인프라스트럭처
진정한 클라우드 네이티브 컴퓨팅 시대를 위한 아키텍처 패턴과 설계
저스틴 개리슨, 크리스 노바 지음 | 공용준 옮김 | 박재호 감수
220쪽 | 20,000원 | 2018년 9월 21일 출간 | 188*240*13 | ISBN 9791196203740
판매처 [교보문고] [YES24] [알라딘] [영풍문고] [인터파크] + 전국 교보문고 매장
전자책 판매처 [리디북스] [교보문고] [YES24] [알라딘] | ISBN 9791196203795 | PDF 포맷
★ 정오표:
http://www.onlybook.co.kr/entry/cloud-native-infra-errata (아직 등록된 오류사항이 없습니다)
★ 독자문의: support (at) onlybook.co.kr
사람이 직접 일일이 설정하지 않고도 애플리케이션으로 인프라스트럭처를 자동화해 관리하는 'IT 인프라 기술 혁명'의 미래는 이미 다가와 있다. 고 가용성과 확장성, 신뢰성을 보장하는 클라우드 인프라스트럭처와 클라우드 네이티브한 애플리케이션 개발이 무엇인지 아직 잘 모르는 개발자와 엔지니어, 인프라 관리자에게 클라우드 네이티브 컴퓨팅의 개념과 아키텍처 패턴, 설계 원리를 알려주는 입문서!
클라우드 네이티브 아키텍처의 온디맨드(on-demand) 특성은 효율적이고 확장 가능하며 신뢰성 있는 시스템을 신속히 만드는 데 필요한 가정들을 바꿔 버렸다. 이 책을 통해 두 저자 크리스와 저스틴은 클라우드 네이티브 원칙과 관례에 관한 훌륭한 가이드를 확립했다.
– 에이드리안 코크로프트(Adrian Cockcroft)
앞으로 십여 년 후쯤에 모든 소프트웨어는 클라우드 네이티브 컴퓨팅 방식으로 배포될 것이다. 크리스와 저스틴은 클라우드 네이티브 커뮤니티의 리더로 활약해 왔다. 이처럼 새롭고 흥미로운 생태계를 많은 사람이 항해하도록 이끄는 두 저자의 작품을 보게 되어 참으로 감격스럽다.
- 댄 콘(Dan Kohn), CNCF 이사
클라우드 네이티브 인프라스트럭처는 단순히 클라우드상의 서버나 네트워크, 스토리지만을 의미하지 않는다. 클라우드 네이티브 인프라스트럭처는 탄력성과 확장성을 위한 건강한 운영 환경을 의미한다. 이 책에서는 여러분이 원하는, 즉 클라우드 네이티브 애플리케이션 전체의 수명주기를 관리하는 인프라스트럭처 아키텍처에 대한 다양한 관례와 패턴, 요구사항에 대해 알려준다. 저스틴 개리슨과 크리스 노바는 구글, 아마존, 넷플릭스 같은 회사의 인프라스트럭처를 아키텍처 관점에서 설계하면서 힘들게 얻은 교훈을 이 책에서 모두 공개한다. 저자진은 클라우드 네이티브 컴퓨팅 재단(CNCF)이 채택한 프로젝트에서 영감을 얻어 쿠버네티스 같은 현존하는 도구에서의 패턴 예제도 제공한다.
■ 클라우드 네이티브 인프라스트럭처가 클라우드 네이티브 애플리케이션에 필요한 이유
■ 기업에서 클라우드 네이티브 사례를 도입해야 하는 시점에 대한 가이드라인
■ 인프라스트럭처와 애플리케이션을 배포하고 관리하는 패턴 설명
■ 인프라스트럭처가 아주 특이한 상황에서도 원하는 대로 동작하는지 확인하는 테스트를 설계하는 방법
■ 코드로서 정책을 활용해 인프라스트럭처를 보호하는 방법
이 책의 구성
1장 '클라우드 네이티브 인프라스트럭처란 무엇인가'는 클라우드 네이티브 인프라스트럭처가 무엇이며, 지금까지 인프라스트럭처가 어떤 단계들을 거쳐왔는지 파악한다.
2장 '클라우드 네이티브를 도입해야 할 시점'은 이어지는 장에서 설명하는 패턴을 채택할 조건과 시기를 결정하는 데 도움을 줄 수 있다.
3장 '클라우드 네이티브 배포의 진화', 4장 '인프라스트럭처 애플리케이션 설계', 5장 '인프라스트럭처 애플리케이션 개발'은 인프라스트럭처가 어떻게 전개되어야 하는지, 그리고 이를 관리하기 위한 애플리케이션은 어떻게 설계하고 작성해야 하는지를 보여준다.
6장 '클라우드 네이티브 인프라스트럭처 테스트'는 테스트로부터 출발해 안정적인 인프라스트럭처를 설계하는 방법을 설명한다.
7장 '클라우드 네이티브 애플리케이션 관리'는 인프라스트럭처와 애플리케이션을 동일하게 관리하는 방법을 보여준다.
8장 '애플리케이션 보호'는 애플리케이션을 안전하게 만드는 방법을 설명한다.
9장 '클라우드 네이티브 인프라스트럭처 구현'은 결론을 내리고 미래에 대한 통찰력을 제공한다.
어떤 사람들은 순서대로 책을 읽지 않는다. 이런 사람들이 이 책의 광범위한 주제에 대해 접근할 수 있는 몇 가지 제안은 다음과 같다. 인프라스트럭처를 만들고 유지 관리하는 데 중점을 둔 엔지니어인 경우 최소한 3장에서 6장까지를 모두 읽어야 마땅하다. 애플리케이션 개발자는 클라우드 네이티브 애플리케이션으로 인프라스트럭처 전용 도구를 개발하는 방법에 대해 4장과 5장, 7장을 집중적으로 읽기 바란다. 클라우드 네이티브 인프라스트럭처를 구축하지 않은 사람은 1장, 2장, 9장이 가장 많은 도움이 될 것이다.
이 책의 독자 대상
인프라스트럭처 또는 인프라스트럭처 관리 도구를 개발하는 엔지니어인 경우 이 책에서 많은 혜안을 얻을 것이다. 클라우드 환경에서 실행되도록 설계된 인프라스트럭처를 생성하기 위한 패턴, 프로세스, 사례를 이해하는 데 도움을 줄 것이다. 어떻게 해야 제대로 하는지를 배우면 애플리케이션의 역할과 인프라스트럭처를 구축하거나 클라우드 서비스를 사용해야만 하는 시점을 더 잘 이해할 수 있다. 또한 애플리케이션 엔지니어는 어떤 서비스가 만들고 있는 애플리케이션의 일부가 되어야 하며 어떤 서비스가 인프라스트럭처에서 반드시 제공되어야만 하는지 알 수 있다. 이 책을 통해 애플리케이션 엔지니어는 인프라스트럭처 관리를 위한 애플리케이션을 개발하는 엔지니어와 공유해야 할 책무도 발견할 수 있다. 기술 수준을 높이고 인프라스트럭처 설계와 클라우드 네이티브 방식으로 인프라스트럭처를 유지 관리하고 싶은 시스템 관리자는 이 책에서 교훈을 얻을 수 있다.
퍼블릭 클라우드에서 모든 인프라스트럭처를 실행하는가? 이 책을 통해 언제 클라우드 서비스를 도입해 사용할 것인지, 그리고 언제 자신만의 추상화 또는 서비스를 구축해야 할지를 알 수 있을 것이다. 데이터 센터 또는 직접 구축한(on-premise) 클라우드에서 운영하고 있는가? 이 책에서는 현대적인 애플리케이션이 인프라스트럭처에서 기대하는 바를 설명하고, 현재 투자한 것들을 활용하기 위해 필요한 서비스를 이해하는 데 도움을 준다.
이 책은 사용법을 설명하지 않고, 구현 예를 제공하지도 않으며, 특정 제품을 처방하지도 않는다. 아마도 관리자나 이사, 임원에게는 너무 기술적일 수 있지만, 이런 역할을 맡은 사람의 참여도와 기술적 전문성에 따라 이 책에서 얻는 지식의 정도가 다를 수도 있다. 무엇보다 인프라스트럭처가 비즈니스에 미치는 영향과 글로벌 인터넷 규모로 운영되는 비즈니스에서 작동한다고 입증된 인프라스트럭처를 만드는 방법을 배우고 싶다면 이 책을 읽어보길 바란다. 이 정도 크기로 확장해야 하는 애플리케이션이 없을지라도 여기에 설명된 패턴으로 인프라스트럭처를 구축할 경우 유연함과 조작성과 함께 높은 부가가치를 제공할 수 있다.
지은이
저스틴 개리슨Justin Garrison
세계적으로 가장 큰 미디어 회사에서 일하는 엔지니어로서, 커뮤니티와 오픈 소스를 사랑한다. 기술과 관련한 전문용어나 유행어를 좋아하진 않지만 기술 동향에 감춰진 패턴과 이점을 연구해서 찾아내고자 한다. 그는 이렇게 찾아낸 결과물을 사람들과 공유하며 실용적인 자료와 독특한 예제를 함께 제공함으로써 지식을 전파하려고 노력한다. 또한, 많은 커뮤니티에서 활발히 활동하면서 현상에 대한 질문을 끊임없이 던진다. 저스틴은 새로운 것을 배우고, 자신이 깨달은 바를 커뮤니티에 돌려주려고 항상 노력한다.
크리스 노바Kris Nova
컨테이너와 리눅스 운영 체제에 관심이 많은 마이크로소프트의 수석 개발자 애드버킷이다. 늘 오픈 소스와 함께하는 삶을 사는 크리스는 소프트웨어의 최대 이익을 옹호하며 설계 과정이 투명하고 개방적이어야 한다고 믿는다. 리눅스와 C에 뿌리를 둔 백엔드 인프라스트럭처 엔지니어로서, Go 프로그래밍 언어에도 능숙하여 많은 성공적인 도구를 Go 언어로 만들었다. 또한, 쿠버네티스의 메인테이너(maintainer)이자 성공적인 쿠버네티스 인프라스트럭처 관리 도구인 쿠비콘(kubicorn)의 창시자이기도 한 크리스는 쿠버네티스에서 특별관심그룹(SIG, Special Interest Group)를 조직하고 커뮤니티 리더로 활동 중이기에, 클라우드 네이티브 인프라스트럭처를 분산 클라우드 네이티브 애플리케이션으로 운영하는 데에 따르는 사람들의 불만을 충분히 이해한다.
기술 인프라스트럭처는 역사상 흥미로운 지점에 서 있다. 엄청난 규모의 운영 요건으로 인해 인프라스트럭처는 근본을 뒤흔드는 급격한 변화를 겪었다. 인프라스트럭처의 혁신 속도는 컴퓨팅과 인터넷의 초창기를 제외한다면, 타의 추종을 불허한다. 이런 혁신은 인프라스트럭처를 더 빠르고 더 안정적이며 더 가치 있게 만들었다. 인프라스트럭처를 한계선까지 밀어붙인 기업과 사람들은 더 많은 비즈니스 가치를 추출하기 위해 인프라스트럭처를 자동화하는 방법을 찾아왔다. 유연하고 소모품 형태의 자원을 제공함으로써 돈이 많이 드는 비용발생 부서를 비즈니스 필수 유틸리티로 전환해왔다. 그러나 유틸리티가 비즈니스에 재정적 가치를 제공하는 경우는 드물다. 다시 말해 인프라스트럭처는 종종 무시되고 원치 않는 비용으로 간주되는 경우가 많다. 그래서 인프라스트럭처 혁신이나 개선에 대한 시간과 비용 투자는 보기 드물다.
비즈니스 스택에 필수적이고 흥미로운 인프라스트럭처를 어떻게 쉽사리 무시할 수 있을까? 인프라스트럭처가 중단된다면 비즈니스도 중단되기 때문에 분명히 주의를 기울여야 한다. 그런데 왜 이런 현실을 개선하기가 어려운 걸까? 인프라스트럭처가 성숙 단계에 도달해 사용자에게 지루함을 안겨주었기 때문이다. 그러나 인프라스트럭처의 잠재력과 새로운 도전들은 구현자와 엔지니어의 열정을 불러 일으켰다.
인프라 확장과 새로운 비즈니스 수행 방식과 관련해 다양한 산업 분야의 엔지니어가 해법을 찾기 위해 공조해왔으며, 오픈 소스 소프트웨어와 상부상조하는 공동체의 에너지가 새로운 개념과 혁신의 폭발을 불러 일으켰다. 올바르게 관리된다면, 오늘 인프라스트럭처와 애플리케이션에 등장한 도전이 내일과 동일하지는 않을 것이다. 이런 식으로 인프라스트럭처 구축과 유지 보수 담당자는 전진하며 새롭고 의미 있는 작업을 수행한다. 어떤 회사들은 확장성, 신뢰성, 유연성과 같은 도전을 극복해왔다. 이런 회사들은 다른 회사들이 따라 올 수 있는 패턴을 캡슐화하는 프로젝트를 만들어왔다. 이 패턴들은 종종 구현 당사자라면 쉽게 발견할 수 있지만, 어떤 경우에는 명확하게 드러나지 않는다.이 책은 클라우드 네이티브 기술의 최전선에 위치한 회사에서 얻은 교훈을 공유해 여러분이 확장 가능한 애플리케이션을 안정적으로 실행하는 문제를 해결할 수 있게 도와준다. 현대 비즈니스는 매우 빠르게 움직인다.
이 책에서 소개하는 패턴은 인프라스트럭처가 비즈니스의 속도와 애자일 요구사항을 따라 잡게 도와줄 것이다. 더 중요하게는 이런 패턴을 이용해야 할 때가 언제인지 결정을 내릴 수 있게 자율권을 줄 것이다. 이런 패턴 중 많은 부분이 오픈 소스 프로젝트에서 입증되었다. 이런 프로젝트 중 일부를 클라우드 네이티브 컴퓨팅 재단(CNCF, Cloud Native Computing Foundation)에서 관리한다. 프로젝트와 재단이 패턴의 유일한 전형은 아니지만, 이런 노력을 무시해선 안 된다. 프로젝트에 담긴 패턴을 예제로 취급해, 실제 사용할 경우에는 기존의 해법을 점검하기 위한 노력을 게을리하지 않아야 한다.
이 책은 클라우드 네이티브 인프라스트럭처의 장점은 물론이고 확장 가능한 시스템과 애플리케이션을 만드는 기본 패턴을 알려준다. 인프라스트럭처를 테스트하는 방법과, 필요에 따라 유연한 인프라스트럭처를 만드는 방법도 설명한다. 그래서 무엇이 중요하고, 앞으로 어떤 상황이 발생할지에 대해서도 알 수 있다. 이 책이 독자 여러분에게 흥미진진한 기회를 찾아 전진하고, 공동체와 더불어 함께 배운 지식을 자유롭게 공유하기 위한 영감을 줄 수 있기를 바란다.
옮긴이 공용준
국내 최대 메신저 회사에서 클라우드 서비스 개발 리딩을 맡고 있으며, 데이터 센터 자동화, 프라이빗/퍼블릭 클라우드 서비스와 그에 필요한 기술을 연구, 개발해서 실제 서비스에 적용하고 있다. 2015년에는 캐나다 밴쿠버에서 열린 오픈스택 서밋에서 국내 개발자 중 최초로 ‘SDN without SDN’이라는 제목으로 발표했고, 2016년(도쿄)과 2017년(몬트리얼) Netdev 컨퍼런스에서 역시 국내 최초로 확장가능한 컨테이너 네트워크에 대해 발표했다. 한양대학교에서 연소해석 분야로 석사 학위를 취득했으며, 한국 데이터베이스 진흥원 자문위원, 클라우드컴퓨팅조합에서 멘토로도 활동 중이다.
2011년에는 정통부 산하의 클라우드 정책 연구단 기술고문을 역임했으며, 주요 저서로는 『카프카, 데이터 플랫폼의 최강자』(책만, 2018), 『클라우드 API를 활용한 빅데이터 분석』(에이콘출판, 2015), 『실전 클라우드 인프라 구축기술』(한빛미디어, 2014) 등이 있다.
클라우드는 만드는 사람이나 사용하는 사람이나 여간 쉽지가 않다. 이전 시대의 인프라스트럭처는 회사나 본인이 직접 보유한 물리 서버, IDC나 특정 서비스 업체에서 제공받는 호스팅 서버 정도로 나뉘었는데, 이제는 거기에다가 가상머신과 컨테이너까지 더해졌다. 그리고 총 비용효율 증대와 아웃소싱 또는 오프쇼어off-shore(완전히 남의 자산을 사용해서 인프라스트럭처를 유지하는 것)를 위해서 퍼블릭 클라우드나 프라이빗 클라우드를 사용하고 있다. 복잡도가 너무 높아져서, 이제 인프라스트럭처 관리는 단순히 정책이나 절차, 그리고 이것을 유지하기 위한 사람만으로는 지탱할 수가 없다.
이전 세대의 인프라스트럭처 운영은 넓은 공간에 큰 스크린을 띄워 놓으면 끝나는 아주 단순하고 지루한 것이었다. 하지만 현대의 인프라스트럭처 운영은 복잡도가 높아졌다는 점뿐 아니라 가상 머신 그리고 컨테이너를 광범위하게 자동으로 컨트롤해주는 오케스트레이터의 등장으로 인해 모든 것이 자동으로 조절되게 되었다는 점을 큰 변화로 꼽을 수 있다. 즉 인프라스트럭처 환경 자체가 이제는 API를 통해 코드로 제어하게 되어버렸다. 수동으로 어떤 것 하나를 끄거나 다시 켠다 하더라도 오케스트레이터가 알고리즘에 의해 자기가 원하는 형태로 바꿔 버린다.
이제 IT 운영을 하는 사람들도 코드를 만들고 관리해야 하는 시대가 된 것이다. IT 운영을 위한 코드는 기존에 개발자가 만든 코드 자체뿐만 아니라 코드를 관리해야 하는 기술들(이를테면 중앙 코드 저장소, 자동 코드 테스트 등)에서 전혀 차이가 없다. 차이가 있다면 이 코드가 IT 인프라스트럭처를 다룬다는 것뿐이다. 즉 운영자도 개발자가 되어야 하는 시대가 도래한 것이다.
아주 오랜 역사를 지닌 IT 인프라스트럭처도 알아야 하고 이걸 코드로 표현하는 방법도 알아야 하니 분명 쉬운 일은 아니다. 하지만 이 책에서 설명하는 단계와 기술들을 따라 가다 보면 쉽게 방향을 정할 수 있게 될 것이다.
감수자 박재호
포항공과대학교 컴퓨터공학과 학부와 대학원을 졸업했다. 전통적인 유닉스 서버 관리에서 출발해 케이블TV 데이터 센터의 운영 환경을 샅샅이 경험하고 SaaS 서비스를 위한 AWS 클라우드 아키텍처 수립까지, 인프라스트럭처의 변화 과정을 바로 옆에서 지켜봐 왔다. 블로그 ‘컴퓨터 vs 책’(http://jhrogue.blogspot.com)을 운영 중이며, 『조엘 온 소프트웨어』(에이콘출판, 2005), 『Clean Code 클린 코드』(인사이트, 2013), 『피플웨어 3판』(인사이트, 2014), 『English for Developers』(한빛미디어, 2015) 등 십여 권의 도서를 번역하고 저술했다.
학창 시절 1990년대 초반에 워크스테이션이 가득 찬 연구실에서 근무할 때, 모든 서버 전면에는 이름과 IP 주소가 적힌 명패가 붙어 있었다. 만화 영화 주인공, 행성, 보석 등에서 아이디어를 얻은 멋진 서버 이름은 심지어 다른 학교에서도 알고 있을 정도였다(아, 그 당시는 겁도 없이 공인 IP로 인터넷에 접속하던 시절이라서 DNS 이름이 서버의 진짜 별명이었다). 장애가 발생하면 서버로 달려가서 하드웨어에는 문제가 없는지, 경우에 따라서는 리부팅이 필요한지 꼼꼼하게 콘솔 앞에서 진단하고 문제를 해소한 다음에 결과 보고서의 가장 상단에 문제가 된 서버 이름을 기입했다.
강산이 두 번 바뀌어 2010년 이후 퍼블릭 클라우드가 본격적으로 시장을 공략하기 시작하면서 서버 관리자도, 서버 이름도 소리소문없이 사라지기 시작했다. 누구나(관리는 클라우드 업체에서 담당하므로 실제 업무를 맡은 개발자일 확률이 높겠지만) 클라우드 콘솔에 들어가서 버튼만 누르면 인스턴스가 바로 만들어지고 사라지는 상황에서 그까짓 이름 따위가 무슨 소용이 있겠는가? 인스턴스 ID만 알면 API로 서버를 관리할 수 있기에 서버 이름은 물론이고 심지어 클라우드 데이터 센터의 물리적인 위치나 표준 시간대에 맞춘 운영 시간도 관심에서 멀어지기 시작했다. 어차피 인스턴스는 SLA 범위 내에서 멈춰버리거나 심지어 다른 물리 서버로 옮겨지는 상황이 불가피하므로 애지중지 관리할 필요가 없다.
2013년 글렌 베리(Glenn Berry)가 SQLPASS 2013 컨퍼런스에서 'Scaling SQL Server 2012'라는 제목으로 발표하는 중에 '수직 확장 대 수평 확장'이라는 내용을 소개하면서, 수직 확장은 서버를 애완 동물처럼 취급하는 반면에 수평 확장은 가축으로 취급한다는 마이크로소프트 빌 베이커가 설명한 비유를 보고 들은 사람들은 엄청난 충격에 휩싸인다. 전통적인 서버는 이름을 붙이고 고장이 나지 않은지 계속 살피며 문제가 생기면 건강하게 치료하지만, 클라우드 네이티브 서버는 숫자만 세고 있다가 아프면 바로 죽여버린다는 상당히 비정한 설명 때문이었다. 클라우드 환경을 접하고 나서 문화적인 충격을 느꼈다면 아마 어느 랙의 어느 하드웨어 서버에 들어있는지도 모르는 수많은 인스턴스들의 익명성 때문인지도 모르겠다.
엄청나게 빠른 속도로 사회가 바뀌고 있으므로 사업의 승부는 속도와 확장성에 달려 있고, 이를 위해 컴퓨팅 환경을 뒷받침하는 인프라스트럭처도 발전해왔다. '클라우드 네이티브 인프라스트럭처'는 바로 이런 시대의 변화에 부응하는 최신 기술이며, 아키텍처 수립부터 설계와 구현을 거쳐 테스트에 이르기까지 소프트웨어 엔지니어링 부문에서 여러 가지 개념을 빌려와 인프라스트럭처를 소프트웨어처럼 취급할 수 있게 만든다. 명세를 문서화하고 싶은가? 코드로 만들면 된다. 명세를 실 환경에 반영하고 싶은가? 코드를 빌드해서 수행하면 된다. 이력을 관리하고 싶은가? 코드이므로 깃과 같은 분산 관리 시스템으로 추적하면 된다. 제대로 동작하는지 테스트하고 싶은가? 코드이므로 단위 테스트와 통합 테스트를 돌리면 된다.
하지만 현실로 돌아와 보면 상황은 생각보다 훨씬 더 복잡하다. 퍼블릭 클라우드, 가상화 기술, 마이크로서비스, 셰프나 퍼핏과 같은 구성 관리 도구, 컨테이너, 쿠버네티스와 같은 오케스트레이터, Go와 같은 최신 프로그래밍 언어, 스프링 프레임워크와 같은 클라우드 네이티브 프레임워크를 비롯해 여러 가지 기술들이 현기증이 들 정도로 사방에서 쏟아져 나오고 있지만, 이런 기술들을 무작정 도입해 사용한다고 해서 클라우드 네이티브가 되지는 않는다는 사실이 클라우드로 이전하는 가장 큰 걸림돌이 되고 있다.
어떤 상황에서도 사업을 최대로 지탱하는 인프라스트럭처를 고도화하고 싶은 우리에게는 클라우드 애플리케이션의 새로운 시대를 연 '12요소 애플리케이션'과 같은 지침이 필요하며, 다행스럽게도 바로 이 책이 클라우드 네이티브한 인프라스트럭처의 아키텍처를 수립하고 설계하는 데 도움이 되는 패턴과 지침을 제공한다. 이 책은 우선 클라우드 네이티브 인프라스트럭처 개요부터 클라우드 네이티브 도입 시점, 클라우드 네이티브 배포 방식의 진화를 다루고, 본론으로 들어가서 인프라스트럭처 애플리케이션 설계와 개발과 테스트와 관리 방법을 다룬다. 마지막으로 애플리케이션을 보호하고 클라우드 네이티브 인프라스트럭처를 구현하는 내용으로 마무리한다. 네트워크 회복성을 위한 패턴과 락인에 대한 조언, 그리고 박스(Box) 사의 쿠버네티스 도입을 정리한 부록도 실용적인 도움을 준다.
모자이크와 넷스케이프로 인터넷 업계의 지형도를 완전히 바꾸는 데 성공한 마크 앤드리슨(Marc Andreessen)은 2011년 8월 무렵 <월스트리트 저널>에 기고한 “왜 소프트웨어가 세상을 먹어치우고 있는가?”라는 글에서 제조업은 물론이고 기존 소프트웨어 대기업까지 새로운 소프트웨어의 물결에 휩쓸려 경쟁력이 급격하게 떨어지고 있는 현실을 정확하게 분석했다. 데이터 센터에서 상면을 빌리고 랙을 설치하고 전용선을 끌어들이며 서버를 구매하고 CD로 소프트웨어를 설치하는 시대는 서서히 저물어가고 있다. 업계 전체가 소프트웨어로 인해 흔들리는 판국에 소프트웨어를 움직이는 인프라스트럭처가 소프트웨어가 되지 말라는 법이 있는가?
이 책 본문에서 인프라스트럭처가 애플리케이션이며, 다시 애플리케이션이 인프라스트럭처가 된다는 설명을 읽으면서 장자의 '호접지몽'이 떠올랐다. 영화 <매트릭스>의 가상 세계 만큼이나 클라우드 세계는 거의 모든 것이 소프트웨어로 움직이므로 너무나도 적절한 설명이 아닐까 싶다. 이 책을 통해 클라우드 네이티브 인프라스트럭처 세상에 들어오신 독자 여러분을 환영한다.
차례
[1장] 클라우드 네이티브 인프라스트럭처란 무엇인가
클라우드 네이티브의 이점
서버
가상화
IaaS
PaaS
클라우드 네이티브 인프라스트럭처
클라우드 네이티브 인프라스트럭처가 아닌 것은 무엇인가
클라우드 네이티브 애플리케이션
__마이크로서비스
__정상 상태 보고
__측정 데이터
__회복성
__선언적, 비 반응적
클라우드 네이티브 애플리케이션이 인프라스트럭처에 미치는 영향
정리
[2장] 클라우드 네이티브를 도입해야 할 시점
애플리케이션
사람
시스템
기업
클라우드 네이티브 인프라스트럭처가 필요 없는 상황
__기술적 한계
__기업의 한계
정리
[3장] 클라우드 네이티브 배포의 진화
인프라스트럭처 표현하기
__도표로서 인프라스트럭처
__스크립트로서 인프라스트럭처
__코드로서 인프라스트럭처
__소프트웨어로서 인프라스트럭처
배포 도구
__멱등성
__실패 처리
정리
[4장] 인프라스트럭처 애플리케이션 설계
부트스트랩 문제
API
세계의 상태
조정자 패턴
__규칙 1: 모든 입출력에 대해 데이터 구조체를 사용한다
__규칙 2: 데이터 구조체가 불변임을 보장한다
__규칙 3: 자원 맵을 단순하게 유지한다
__규칙 4: 실제 상태를 기대되는 상태와 일치시킨다
조정자 패턴의 메소드
__Go 언어로 만든 패턴 예제
감사 관계
__컨트롤러에서 조정자 패턴 사용
정리
[5장] 인프라스트럭처 애플리케이션 개발
API 설계하기
기능 추가
조만간 사라질 기능
변형되는 인프라스트럭처
정리
[6장] 클라우드 네이티브 인프라스트럭처 테스트
무엇을 테스트해야 할까
테스트 가능한 코드 작성
__유효성 검사
__코드 기반 테스트
확신 측정
테스트 유형
__인프라스트럭처 단정
__통합 테스트
__단위 테스트
__모의 테스트
__카오스 테스트
인프라스트럭처 모니터링
정리
[7장] 클라우드 네이티브 애플리케이션 관리
애플리케이션 설계
클라우드 네이티브 패턴 구현
애플리케이션 수명주기
__배포
__실행
__폐기
인프라스트럭처에 대한 애플리케이션 요구사항
__애플리케이션 런타임과 격리
__자원 할당과 스케줄링
__환경 격리
__서비스 발견
__상태 관리
__모니터링과 로깅
__메트릭 집계
__디버깅과 추적
정리
[8장] 애플리케이션 보호
코드로서 정책
__배포 분기
__적합성 테스트
__준수성 테스트
__활동 테스트
인프라스트럭처 감사
불변 인프라스트럭처
정리
[9장] 클라우드 네이티브 인프라스트럭처 구현
변화를 위해 집중할 분야
__사람
__아키텍처
__카오스 관리
__애플리케이션
미래에 대한 전망
정리
[부록 A] 네트워크 회복성을 위한 패턴
부하 분산
부하 차단
서비스 발견
재시도와 최종 기한
회로 차단
__TLS와 인증
__라우팅: 입구와 출구
__통찰과 모니터링
[부록 B] 락인에 대응하는 우리의 자세
락인은 불가피하다
__기술 락인
__공급 업체 락인
락인은 위험 요소인가
전략을 아웃소싱하지 마라
[부록 C] 사례 연구: 박스(BOX) 사의 쿠버네티스 도입기
'+ 펴낸 책' 카테고리의 다른 글
블록체인 기업으로 가는 길 (0) | 2019.02.18 |
---|---|
대시보드 설계와 데이터 시각화 (0) | 2018.12.13 |
클라우드 네이티브 자바 (0) | 2018.06.19 |
카프카, 데이터 플랫폼의 최강자 (5) | 2018.04.17 |
왓슨을 이용한 인공지능 서비스 입문 [절판] (0) | 2017.10.23 |
댓글