★ 이 책에서 다루는 내용 ★
■ 실제 사례를 바탕으로 클라우드 개발에 필요한 요소와 기술 적용 방법 설명
■ 자동화 기술과 자동 테스트 기술을 활용해 애자일 개발을 실행하는 방법
■ 클라우드 제품을 지속적으로 개발/유지할 수 있는 방법
■ 클라우드 기술과 제품의 목적을 ITIL 기반으로 설명
■ 클라우드 기술이 가져오는 변화를 CMMI 기법을 사용해 설명
■ 프라이빗/하이브리드 클라우드에 필요한 기술을 충실히 설명
★ 이 책의 대상 독자 ★
■ 애자일 개발에 관심이 많은 개발자
■ 클라우드를 만들고 사용하고 싶은 소프트웨어 아키텍트
■ 클라우드 전환에 깊은 관심이 있는 의사 결정자나 기획자
★ 이 책의 구성 ★
이 책은 크게 3개의 부(Part)로 나눠져 있다. 1부는 클라우드를 계획하는 데 있어 클라우드의 정의를 만들고, 이 정의에 따라 ITIL(Information Technology Infrastructure Library)을 만들고 계획하는 방법을 설명한다. 그리고 CMMI(Capability Maturity Model Integration)라는 진행 방법도 설명한다.
1부의 내용은 제품 기획을 하는 기획자, 클라우드를 기반으로 개발해야 하는 개발자, 기업의 IT를 관장하는 CTO/CIO가 보면 도움이 될 것이다.
1장, ‘클라우드 컴퓨팅이란 무엇인가?’에서는 클라우드의 정의와 특성을 설명한다. 그리고 클라우드 경험이 진화함에 따라서 정의를 변경하고 이에 따르는 실제적인 예를 코드 기반으로 간단하게 설명한다.
2장, ‘클라우드 컴퓨팅과 ITIL’에서는 ITIL을 설명하고 ITIL에 클라우드 제품이 어떻게 연결되는지 간단한 코드와 함께 설명한다.
3장, ‘클라우드 계획하기’에서는 CMMI를 설명하고, 클라우드를 개발/도입/적용할 때 각 단계별로 어떤 형태의 전략을 세워야 하는지 그리고 결과물은 어떻게 나타내야 하는지 설명한다.
2부는 1부에서 설명한 개념을 IT 제품에 어떻게 적용해서 개발조직을 바꿨는지 설명한다. 여기서 나오는 내용은 개발리더, 일반 개발자, 데브옵스(DevOps) 개발자, 애자일(Agile) 개발에 관심이 많은 분에게 도움이 될 것이다.
4장, ‘클라우드 서비스 개발환경 만들기’에서는 클라우드 서비스를 만들기 위한 프레임워크를 설명한다. 자동화 제품을 적용하는 데 필요한 내용을 실제 코드를 기반으로 설명한다.
5장, ‘클라우드 서비스 구성 자동화하기’에서는 설정 자동화 툴을 자세히 설명한다. 이 툴을 통해서 샌드박스(실서비스를 반영하지만 규모는 아주 작은 환경)를 자동으로 만드는 방법을 소개한다.
6장, ‘클라우드 서비스 테스트 자동화하기’에서는 테스트의 종류와 샌드박스용 자동화 코드를 테스트하는 방법을 설명한다. 그리고 테스트/샌드박스를 통한 개발이 개발 문화에 미치는 영향을 살펴본다.
3부는 1~2부에서 설명한 클라우드의 개념에 따라 어떤 목적으로 제품을 만들었는지와 제품으로 인한 조직적 변화를 CMMI에 맞춰 설명한다. 신기술을 조직에 적용하고 싶은 조직 리더, 제품 기획자에게 도움이 될 것이다.
7장, ‘IaaS의 목적과 효과’에서는 IaaS 제품에 들어갔던 주요 기술과 목적을 설명한다. 그리고 이 제품이 가져온 CMMI 1단계의 변화를 설명한다.
8장, ‘텔레메트리 클라우드의 목적과 효과’에서는 모니터링 클라우드 제품의 주요 콘셉트와 이 콘셉트를 구현하기 위해 적용된 기술을 설명한다. 그리고 이 제품이 적용되면서 CMMI 2단계에 해당하는 부분을 설명한다.
9장, ‘컨테이너 클라우드의 목적과 효과’에서는 컨테이너 클라우드 제품이 개발된 주요 목적과 여기에 사용된 기술을 설명한다. 그리고 이 제품을 적용해 만든 CMMI 3단계의 조직적인 변화를 설명한다.
★ 지은이의 말 ★
2006년 3월 14일 전자 상거래로 유명했던 아마존이 아마존 웹 서비스 플랫폼(Amazon Web Service, 이하 AWS)을 시작하면서 클라우드 컴퓨팅이란 단어가 대중에게 알려지기 시작했다. 이때의 AWS는 3가지 종류뿐이었다. 스토리지 서비스인 S3, 큐(Queue) 서비스인 SQS 그리고 가상머신 서비스인 EC2가 처음 시작이었다(2020년 현재는 약 200여 가지의 제품이 만들어져 있다). 이후 IaaS(Infra as a Service), PaaS(Platform as a Service), APaaS(Application Platform as a Service), SaaS (software as a service) 등의 단어가 클라우드와 함께 등장했다.
클라우드 컴퓨팅이라는 단어와 함께 SDN(Software Defined Network), NFV(Network Function Virtualization), SDDC(Software Defined Data Center) 등의 기술 신조어가 등장했다. 그리고 클라우드 관리 측면에서 데브옵스(DevOps), SRE, DevSecOps 등 클라우드와 관련된 수많은 단어가 등장하기 시작했다.
이 책을 쓰게 된 이유는 내가 아주 오랜 기간 스스로에게 물었던 질문들이기도 하고 동료 선후배와 일하면서 수없이 했던 (또는 들었던) 질문에 답하기 위해서다. 첫 번째 질문은 ‘대체 클라우드란 무엇인가?’이다. 선문답처럼 느껴질 수 있지만 나를 포함해 이 책을 읽는 대부분의 독자는 신호처리/데이터 구조와 같은 IT 요소 기술을 사용해 어떤 IT 제품을 만들어 내야 하는 엔지니어이기 때문에 굉장히 중요한 질문이다. 나는 모두가 같은 답을 해야 한다고 생각하지 않는다. 각자의 상황과 목표가 다르기 때문이다. 그리고 그 답이 꼭 고도의 지혜를 담은 ‘정답’이어야 한다고 생각하지도 않는다. 환경은 자주 변한다. 어제의 정답이 내일은 문제를 만들기도 하는 오답이 돼 버리기도 하기 때문이다. 하지만 답이 있고 없고는 굉장한 차이다. 그때 그때의 목적에 맞도록 클라우드를 만들고 다음 목표를 세우는 데 도움을 주고자 이 책을 썼다.
두 번째 질문은 ‘클라우드를 만들고 유지하려면 몇 명이 필요해요?’이다. 2016년쯤 어떤 텔레콤 세미나에서 내가 발표했던 내용을 요약한 ‘오픈스택, 2명이 운영하다 보니’라는 굉장히 자극적인 기사 덕에 아주 많은 공격을 받았다. 대부분의 회사와 개발자가 클라우드를 자체적으로 하려다가 인력(사람의 수, 그에 따른 연봉 비용, 조직 관리 등)쪽 이슈 때문에 결국 포기하는 사례를 아주 많이 봤다. 클라우드를 어떻게 시작해야 하는지 그리고 어떻게 유지해야 하는지 그리고 이것들을 어떻게 좀 더 IT적으로 할 수 있을지 설명하려고 했다.
세 번째 질문은 ‘어떻게 확산시킬 수 있었어요?’라는 질문이다. 세상에 좋은 기술과 제품은 많다(나는 기술은 없고 제품만 있다고 생각하기는 한다). 하지만 기술이나 제품이 자신 또는 조직의 문제를 풀어줄 수 있느냐는 다른 이슈이다. 클라우드도 마찬가지다. 결국에는 클라우드 제품에 맞춰서 조직 구성원의 일하던 방식과 정책까지 모두 바꿔야 하는데, 이런 지난한 과정을 거치다 보면 클라우드와 같은 신제품은(게다가 벤더에서 제공하는 것이 아닌, 자신이 직접 만드는 경우는) 거의 대부분 사장되기 마련이다. 나도 현 직장 이전의 모든 직장에서는 클라우드 부서가 전부 없어졌다. 이 책을 읽는 여러분은 그 실패를 겪지 않았으면 하는 마음에 이 책을 쓰게 됐다.
많은 분이 클라우드 제품으로 문제를 잘 해결하는 데 이 책이 조그만 도움이 되길 바란다.