풀 사이클 개발자로 진화하고 싶은 엔터프라이즈 자바 개발자가 꼭 읽어야 할 클라우드 시대의 생존 지침서!
스프링 부트, 스프링 클라우드, 클라우드 파운드리를 이용한 다양한 예제를 통해 확장성 높은 마이크로서비스 아키텍처 설계와 데브옵스(DevOps), 애자일 개발의 진정한 실천 방법을 알려준다.
"자바 생태계에서 클라우드 네이티브 애플리케이션을 만드는 개발자라면 꼭 읽어야 할 필독서다. 회복력 있는(resilient) 서비스 제작, REST와 비동기 이벤트로 들어오는 데이터 흐름 관리, 테스트, 배포, 관측성(observability)과 관련된 핵심 작업까지 모든 것을 다루는 책이다."
- 대니얼 브라이언트 / 스펙토랩스(SpectoLabs) CTO
"클라우드 네이티브로의 여행을 떠나는 모든 이가 이 책에 담긴 정제된 통찰과 경험을 통해 많은 것을 배울 수 있다."
- 데이브 사이어 박사 / 스프링 프레임워크 기여자, 스프링 부트와 스프링 클라우드의 공동 설립자
아마존, 넷플릭스, 엣시 같은 회사는 전통적인 대기업과 비교해 어떤 차이가 있을까? 아마존과 넷플릭스는 클라우드 네이티브 방식으로 서비스를 만들고 운영하면서 경쟁력을 유지하고 앞서갈 수 있었다. 이 책은 자바 개발자가 스프링 부트, 스프링 클라우드, 클라우드 파운드리를 이용해서 더 나은 소프트웨어를 더 빨리 개발할 수 있는 실용적인 가이드를 제공한다. 많은 기업이 이미 클라우드 컴퓨팅, 테스트 주도 개발, 마이크로서비스, 지속적 통합 및 전달로 소프트웨어 개발 방식을 전향하고 있다. 이 책을 읽다 보면 레거시 애플리케이션을 클라우드 네이티브 애플리케이션으로 전환하는 데 도움을 주는 도구와 방법론에 자연스럽게 흠뻑 빠져들게 된다.
* 기본: 클라우드 네이티브 사고 방식의 장점을 알아본다. 스프링 부트 애플리케이션을 설정하고 테스트하는 방법과 레거시 애플리케이션을 클라우드로 옮기는 방법을 설명한다.
* 마이크로서비스: 스프링을 활용해서 HTTP 기반 RESTful 서비스를 만들어본다. 요청을 분산 시스템에 적절히 라우팅하는 방법을 알아보고 관문 역할을 하는 엣지 서비스를 구축한다.
* 데이터 통합: 스프링 데이터 프레임워크를 활용해서 데이터를 관리하는 방법과, 이벤트 주도, 메시징 중심 아키텍처를 지원하는 스프링을 사용해서 분산 서비스를 통합하는 방법을 알아본다.
* 배포 및 운영: 관찰 가능한 시스템을 만드는 방법을 알아본다. 서비스 브로커를 이용해서 상태 유지 서비스와 연결해보고, 지속적 전달에 담긴 진정한 의미를 이해한다.
예제 코드, 연습 등 보충 자료는 http://github.com/Cloud-Native-Java에서 내려받을 수 있다.
펼쳐보기
[이 책의 구성]
1부 '기초'
1장 '클라우드 네이티브 애플리케이션'과 2장 '부트캠프: 스프링 부트와 클라우드 파운드리 소개'에서는 클라우드 네이티브 사고(thinking)의 필요성에 대해 살펴보고 스프링 부트와 클라우드 파운드리를 소개한다.
3장 '12요소 애플리케이션 설정'에서는 스프링 부트 애플리케이션을 설정하는 방법을 알아본다. 이 내용은 책 전반에 걸쳐 계속 나온다.
4장 '테스트'에서는 가장 단순한 컴포넌트에서 분산 시스템에 이르기까지 스프링 애플리케이션을 테스트하는 방법에 대해 알아본다.
5장 '애플리케이션 마이그레이션'에서는 일반적인 보통의 애플리케이션을 클라우드 파운드리와 같은 클라우드 플랫폼으로 이전하는 데 필요한 리팩토링을 가볍게 살펴보고, 여러분이 클라우드 플랫폼으로부터 필요한 가치를 얻을 수 있도록 도와줄 것이다.
2부 '웹 서비스'
6장 'REST API'에서는 스프링으로 RESTful HTTP 서비스를 만들어본다. 이 장에서 다루는 내용은 API 개발과 도메인 주도 개발에서 많이 사용된다.
7장 '라우팅'에서는 분산 시스템에서 요청(request)의 출입을 제어하는 일반적인 방법을 알아본다.
8장 '엣지 서비스'에서는 외부로부터의 요청을 받아들이는 첫 번째 관문 역할을 하는 서비스를 만드는 방법을 알아본다.
3부 '데이터 통합'
9장 '데이터 관리'에서는 스프링 데이터를 사용해서 스프링 애플리케이션에서 데이터를 관리하는 방법을 알아본다. 여기에서 다루는 내용은 도메인 주도 사고의 기초가 된다.
10장 '메시징'에서는 스프링의 이벤트 주도, 메시징 중심 아키텍처를 이용해서 분산 서비스와 데이터를 통합하는 방법을 알아본다.
11장 '배치 프로세스와 태스크'에서는 클라우드 파운드리 같은 클라우드 플랫폼의 확장성을 이용해서 오래 지속되는 작업부하를 처리하는 방법을 알아본다.
12장 '데이터 통합'에서는 분산 시스템에서 상태를 관리하는 몇 가지 방법을 알아본다.
4부 '운영 환경'
13장 '관측 가능한 시스템'에서는 관측성(observability)과 운영을 지원하는 시스템을 만드는 방법을 알아본다.
14장 '서비스 브로커'에서는 클라우드 파운드리 같은 플랫폼을 지원하는 서비스 브로커를 만드는 방법을 알아본다. 서비스 브로커는 메시지 큐, 데이터베이스, 캐시처럼 상태를 가진 서비스를 클라우드 플랫폼에 연결해준다.
15장 '지속적 전달'에서는 지속적 전달 뒤에 숨어있는 중요한 개념을 살펴본다. 이 책에서는 마지막 장에 해당하지만, 클라우드 네이티브를 향한 여러분의 여정에서는 출발점에 해당한다.
5부 '부록'
부록 A '자바 EE와 스프링 부트'에서는 스프링 부트 애플리케이션을 자바 EE 환경에 통합하는 방법을 살펴본다.
마지막으로, 한국어판 특별 부록 B '클라우드 파운드리 환경의 준비와 활용'에서는 클라우드 파운드리를 준비하고 애플리케이션을 배포하며 서비스를 준비하는 방법에 대해 알아본다.
[이 책의 독자 대상]
이 책은 스프링 부트, 스프링 클라우드와 클라우드 파운드리를 이용해서 더 나은 소프트웨어를 더 빠르게 만들고 싶어하는 자바/JVM 개발자를 주요 대상으로 한다. 마이크로서비스라는 용어에 대해 들어본 적이 있고, 하늘 높이 치솟는 스프링 부트의 인기를 느끼고 있으며, 오늘날 대부분의 기업들이 왜 클라우드 파운드리를 사용하는지 궁금하다면, 이 책은 바로 여러분을 위한 책이다.
[머리말]
우리는 소프트웨어 업계의 역사에서 가장 멀리까지 영향을 미칠 수 있는 큰 전환의 한가운데에 있습니다. 그 변화는 바로 레거시 아키텍처에서 클라우드로의 전환, 개발과 운영의 전통적인 분리에서 통합을 지향하는 데브옵스로의 전환입니다. 이 책은 이런 전환에 정면으로 맞서서 클라우드 네이티브 애플리케이션을 작성하는 방법을 설명하고, 성공적인 전환을 이끌어낼 수 있는 명확한 가이드를 제공해줍니다.
전환은 하루아침에 이루어지지 않습니다. 이 책의 가장 뛰어난 장점 중 하나는 여러분이 지금 처한 환경에서, 각자의 경험을 잘 활용해서 클라우드로 전환하는 데 중점을 두었다는 점입니다. 특히 5장의 '스프링을 이용한 서비스 짝맞춤' 절에는 기업 시스템의 레거시 관습에서 클라우드 친화적인 관습으로 전환할 수 있게 해주는 탁월한 자료들이 포함되어 있습니다.
이 책은 현대적인 애플리케이션의 아키텍처 원칙과 입증된 효율적인 구현 방법을 모두 설명하면서 이론과 실무의 균형을 아주 적절하게 잘 맞추고 있습니다. 현대적인 애플리케이션은 항상 문제에 대한 포괄적인 해답을 담고 있는 입증된 오픈소스 위에 만들어지기 때문에, 단순히 프로그래밍 언어에 대한 선택뿐 아니라 주로 사용할 오픈소스 프레임워크에 대한 선택이 실무 사례에 반드시 필요합니다. 자바를 주요 언어로 사용한다면, 또는 특정 언어에 구속받지 않고 열려 있는 분이라면, 이 책은 바로 당신을 위한 책입니다.
“내 사망 보도는 상당히 과장되어 있다.” - 마크 트웨인
몇 년 전에 자바의 종말론이 널리 퍼진 적이 있습니다. 자바는 오늘날에도 여전히 번창하고 있고, 이 책에는 그 이유가 담겨 있습니다. 자바는 넷플릭스의 오픈소스 프로젝트와 스프링이라는 두 가지 핵심 성공 요소를 바탕으로 현대적인 클라우드 방식의 애플리케이션 개발을 이끌어오면서 새롭게 생명력을 이어가고 있습니다. 이 책에서는 그 두 가지 핵심 성공 요소를 이해하기 쉽게 잘 풀어내고 있습니다.
스프링은 처음에는 과거 자바 EE의 복잡성을 단순화하기 위해 탄생했지만, 그 핵심 아이디어는 오랜 시간 동안 굳건히 유지되면서 클라우드 애플리케이션 개발에 있어서도 탄탄하고 완벽한 기초를 제공해주고 있습니다. 십 년이 넘도록 우리는 의존관계 주입(Dependency Injection), 이식 가능한 서비스 추상화(Portable Service Abstration)와 관점 지향 프로그래밍(AOP)이라는 '스프링 삼각형'에 대해 이야기해오고 있습니다. 이 세 가지는 비즈니스 로직과 그를 둘러싼 환경의 명확한 분리가 그 어느 때보다 중요한 오늘날에도 여전히 필요합니다.
이 책의 중심부에서는 스프링 부트를 다룹니다. 스프링 부트는 마이크로서비스 시대에 스프링을 사용하는 새로운 방식으로서, 개발 현장에 도입되는 사례가 급증하고 있습니다. 또한, 다양한 규모와 형태의 스프링 서비스를 쉽게 만들며, 컨테이너화된 현대적인 환경에 쉽게 배포할 수 있게 해줍니다. 전통적인 '엔터프라이즈' 자바 애플리케이션은 여전히 하나의 거대한 애플리케이션 서버에서 일체형 방식으로 구동되고 있지만, 스프링 부트는 그와 반대로 단순함과 효율성을 위해 잘게 나눌 수 있게 해줍니다. 서비스는 하나의 단위 업무에 집중할 수 있는 크기로 구성되어, 딱 그만큼의 서비스에 알맞는 적당한 규모의 서버에 배포되어 구동됩니다.
이 책에는 넷플릭스 오픈소스 프로젝트와의 통합과 관련한 고도화된 내용뿐 아니라 스프링 클라우드 스트림과 통합 테스트 지원 개선 등 스프링 개발 팀에서 작성한 최신 작업에 대한 따끈따끈한 사례가 포함되어 있습니다.
저는 스프링의 창시자로서, 스프링이 개발자들의 일을 간단하게 만들어 줄 수 있도록 혁신과 집중을 계속 이어나가는 것을 볼 수 있어서 기쁩니다. 최근 5년 동안은 오로지 사용자의 입장에서 스프링과 교류해오고 있지만, 스프링이 번영을 이루고, 새로운 복잡성들을 계속 정복해나가는 것을 보게 되어 정말로 즐겁습니다. 저는 예전에 스프링이 자바 애플리케이션을 위해 했던 일들을 개발자들과 개발 프로세스를 위해서 수행하고 있는 아토미스트(Atomist) 사에서, 중요한 모든 것들을 자동화할 수 있는 기능을 제공하면서 단순화라는 미션을 수행하고 있습니다. 스프링은 자바 개발자들이 신경써야 하는 모든 작업에 대해 단순하고 생산적인 구조와 추상층을 제공합니다. 마찬가지로 아토미스트도 프로젝트 소스 코드, 빌드 시스템, 이슈 트래커, 배포 환경 등에 대해 단순하고 생산적인 구조와 추상층을 제공해서, 새 프로젝트 생성에서부터 슬랙과 배포 이벤트 모니터링을 포함하는 팀 협업까지를 아우르는 강력한 배포 자동화를 가능하게 합니다.
자동화의 기초가 되는 기본 구성 요소는 테스트입니다. 이 책에서 줄곧 다루는 테스트 주제에 대해, 마이크로서비스를 테스트할 때 마주치게 되는 쉽지 않은 이슈와 해결 방법을 다루는 점이 특히 마음에 들었습니다. 그리고 다양한 예제 코드와 저자들이 적절하게 추가한 오라일리 출판사 특유의 빈틈없고 풍부한 주석도 아주 마음에 들었습니다.
내가 사랑하는 기술을 주제로 친구들이 집필한 책에 추천사를 쓰게 되어 정말 기쁩니다. 조쉬의 강연을 들을 수 있는 행운을 누렸던 많은 사람이 얘기하는 것처럼, 조쉬는 의사소통에 아주 탁월한 재능을 지닌 사람입니다. 조쉬는 라이브 코딩에서의 능숙함을 책에도 잘 녹여냈습니다. 조쉬와 케니는 열정적이고 호기심이 많으며 박식합니다. 그들과 함께 떠난 클라우드 네이티브로의 여행에서 저도 많은 것을 배웠으며 특별한 재미를 맛볼 수 있었습니다. 이제 여러분이 그 재미를 누릴 차례입니다.
- 로드 존슨(Rod Johnson) / 스프링 프레임워크 창시자, 아토미스트 CEO
[지은이의 말]
소프트웨어는 모두를 평등하게 한다. 소프트웨어는 코드를 통해 사람들에게 새로운 길을 제시하기도 한다. 소프트웨어는 고객에게 가치를 전달할 수 있으며, 사람들의 삶을 송두리째 바꾸기도 한다. 우리 책 『클라우드 네이티브 자바』의 한국어판이 출간된다니 영광이다. 더 많은 사람에게 수많은 길을 터주고 때로는 사람들의 삶을 바꾸는 소프트웨어를 만드는 데 이 책이 조금이라도 기여하기를 바란다. 이 책을 통해 여러분의 코드를 실 서비스로 배포하는 여행을 즐기기를!
- 조쉬 롱(Josh Long) / 『클라우드 네이티브 자바』 저자, 스프링 개발자 애드버킷
우리의 책 『클라우드 네이티브 자바』가 한국어로 번역되다니! 윤진과 명운 님, 현희 님, 한국의 번역팀에 감사한다. 클라우드 애플리케이션에서 사용되는 패턴은 이전과 유사한 것도 있고, 새로운 것들도 존재한다. 자바 스프링 개발자들이 클라우드 기반의 애플리케이션을 구현하는 데 어떤 점들을 살펴야 하는지 이 책에 담기 위해 노력했다. 확장성이란 단순히 서버의 숫자를 늘려갈 수 있음을 의미하는 것이 아니다. 더 많은 요청과 워크로드를 처리하기 위해 그에 적합한 기법들을 사용해야 한다. 이런 방법은 애플리케이션의 규모가 크건 작건 언제나 적용될 수 있어야 하며, 이를 통해 각자의 기능을 하는 신축성 있는 애플리케이션을 모아서 하나의 거대한 서비스를 이룰 수 있다. 지난 2016년 한국 방문에서 발표했던 책을 한글로 공개할 수 있게 되어 매우 기쁘며, 많은 스프링 사용자에게 도움이 되기를 바란다.
- 케니 바스타니(Kenny Bastani) / 『클라우드 네이티브 자바』 저자, 스프링 개발자 애드버킷
[옮긴이의 말]
90년대 후반, 2000년대 초반을 지나 개인 컴퓨터와 인터넷의 발달은 동시에 서버 시장과 서버 애플리케이션의 확산을 불러왔다. 이후 모바일 폭발로 불리는 현상이 스마트폰의 등장과 함께 발생하며, 폭발적으로 성장한 클라이언트 요청 규모를 처리가 가능한 클라우드가 등장했다. 이 새로운 환경에 적합한 애플리케이션을 만들면, 이 거대한 클라이언트 요청에 부합하여 전례없는 규모의 확장과 빠른 배포가 가능하다. 이 책은 자바 스프링 개발자들에게 이러한 확장과, 더 빠른 배포에 적합한 '클라우드 네이티브' 애플리케이션을 만드는 데 필요한 기술을 담고 있다. 클라우드에 관심 있는 엔터프라이즈 자바 개발자 분들에게 꼭 필요한 책이다.
- 정윤진
마이크로서비스라는 말을 들어본 지 5년이 넘은 것 같습니다. 작게 나누어 빨리 만들고 빨리 실패하고 빨리 진화시키는 일이 말처럼 쉬운 일은 아니지만 분명한 장점이 있기 때문에 많은 시행 착오에도 불구하고 꾸준히 시도되고 있습니다. 이제는 여기에서 한걸음 더 나아가 배포 환경을 클라우드로 가져가면서 데브옵스로의 전환이 시작되고 있습니다. 이 책은 클라우드 네이티브 개발의 A to Z와 같은 책으로서 개념 정리 및 상세한 예제를 통해 여러분을 클라우드 네이티브 개발의 세계로 이끌어 줄 것입니다.
- 오명운
마이크로서비스 아키텍처는 이제 클라우드 기반의 분산 환경을 기반으로 하는 애플리케이션 개발 분야에서 주류 아키텍처로 자리매김하고 있지만, 제대로 된 마이크로서비스 아키텍처를 구축하고 이를 기반으로 확장성 있는 애플리케이션을 개발하는 것은 결코 쉬운 일이 아닙니다. 저는 지금 약 5년째 마이크로서비스 기반의 애플리케이션을 C#으로 개발 중이지만, 이 책을 번역하면서 자바 개발자들에 대한 부러움에 몸서리를 칠 수밖에 없었습니다. 마이크로서비스를 구현하기 위해 필요한 모든 플랫폼이 준비된 환경이 제게도 허락되었다면 저의 지난 5년이 이처럼 어렵고 힘들지는 않았을 테지요. 이 책은 클라우드 네이티브 애플리케이션을 마이크로서비스 아키텍처를 기반으로 개발하고 운영하기 위해 필요한 정보를 폭넓게 다루는 효과적인 입문서입니다. 단순히 클라우드 파운드리라는 플랫폼의 소개를 넘어, 효율적이고 확장가능하며, 신뢰할 수 있고 스스로 회복할 수 있는 분산 애플리케이션 개발에 대한 기법과 노하우가 고스란히 담겨있는 이 책은, 마이크로서비스라는 바다를 항해하는 데 꼭 필요한 길잡이가 되어 줄 것입니다. 클라우드 및 분산 환경에 대한 저자들의 폭넓은 노하우와 전문성, 그리고 이에 뒤지지 않는 경험과 역량을 보유하신 역자분들의 노력이 결집된 이 책을 통해 마이크로서비스 아키텍처로의 첫 발을 자신있게 내딛으시기를 바랍니다.
- 장현희
추천사
스프링이 등장해서 폭발적인 인기를 끌기 시작하던 즈음에 오픈소스 네이티브 자바의 시대가 열렸다. 오픈소스 기술은 자바 개발에 빠질 수 없는 핵심이 되었고 다양한 형태의 기술로 매우 빠르게 발전해왔다. 이런 변화에 자연스럽게 적응하고 함께 발전해온 대표적인 기술이 스프링이다. 오픈소스 네이티브 자바의 주력이었던 스프링이지만 새롭게 다가오는 클라우드 네이티브 시대에서도 과연 그 위치를 지킬 수 있을까.
『클라우드 네이티브 자바』는 그런 의문에 대해 명쾌하게 대답을 해주는 책이다. 혜성처럼 등장해서 스프링으로도 최신 기술 흐름에 뒤처지지 않는 기민한 개발이 가능하다는 것을 보여준 스프링 부트가 클라우드 환경에서도 빛을 발한다는 사실을 이 책에 나온 간결한 예제를 따라해보는 것만으로도 충분히 느낄 수 있을 것이다.
이 책은 유명 IT 기업에서 개발자들이 함께 작성하고 공유한다는 사내 기술 위키 같은 책이다. 실제 개발 프로젝트를 거치며 축적된 각종 기술의 핵심 개념, 활용법, 적용 전략, 주의사항, 팁 그리고 빠르게 가져다 써볼 수 있는 깔끔한 예제들이 정리되어 있는, 경쟁사 개발자들에게는 절대 보여주고 싶지 않은, 우리만의 보물 같은 농축된 자료를 보는 듯하다. 이렇게 잘 정리된 책의 도움 없이 스프링 부트와 각 장에서 다루는 기술의 자료를 찾아 개념을 잡고 동작하는 코드를 직접 만들어보려면 꽤나 오랜 시간이 필요할 것이다. 변화의 속도에 뒤처지지 않고 빠르게 개발할 수 있게 해주는 클라우드 기술처럼 이 책도 독자들의 시간을 절약해주고 민첩하게 새로운 시대에 대응할 자신감을 갖게 해줄 것이라고 믿는다.
- 이일민 / 이프릴 대표, 『토비의 스프링 3.1』 저자
수년간 버즈워드로 떠도는 사이트 신뢰성 엔지니어링(SRE), 데브옵스, 마이크로서비스 아키텍처(MSA)가 누군가에게는 단순한 흥미로운 기술 조류이거나 선택의 문제일지 모르지만, 내가 일하는 우아한형제들에서는 '배달의 민족'이라는 O2O 서비스를 운영하는 데 있어 생존이 달린 문제다. 서비스는 급변하는 트래픽에 탄력적으로 대응해야 한다. 장애가 일어나면 소비자는 즐거운 식사시간을 망치고 사장님들은 큰 손실을 입는다. 예전에는 미처 예상하지 못한 다양한 요구에 대응하려면 하루에도 몇 번씩 서비스를 배포해야 하며, 사용자 수는 끝을 알 수 없을 정도로 계속 늘어난다. 이런 가운데 SRE, 데브옵스, MSA를 둘러싸고 진행되는 논의를 보면 애플리케이션 개발자 관점이 종종 소외된다는 생각이 든다. 코드를 통한 인프라 자동화, 지속적 배포 체계, 중앙 로그 수집 시스템, 가관측성 같은 인프라/플랫폼 중심의 논의는 많지만 애플리케이션 개발자들에게는 먼 이야기로 들린다. 클라우드의 장점을 잘 활용한 애플리케이션의 특징을 허로쿠(Heroku)에서 정리해 '12요소 애플리케이션'이라는 이름으로 발표했음에도 이를 구현하는 것은 여전히 개발자 개인의 문제로 남는다.
『클라우드 네이티브 자바』는 이런 갈증을 풀어주는 오아시스 같은 책이다. 스프링 프레임워크가 여기저기 흩어져 있는 자바 EE 기술을 엮어서 일관된 플랫폼이 되어 주었다면, 스프링 클라우드는 여러 클라우드 관련 기술을 엮어서 클라우드 네이티브 애플리케이션이 동작하는 환경을 제공한다. 스프링 부트는 우리가 만드는 애플리케이션을 스프링 클라우드가 제공하는 환경에 잘 접목시켜 준다.
소프트웨어가 중요한 시대라고 한다. 소프트웨어 개발자가 마냥 대접받는 시대라기보다는, 소프트웨어가 풀어야 할 문제가 많아지고 책임이 커졌다는 의미다. 예전과 같은 방식으로 개발해서는 새로운 플랫폼의 장점을 살릴 수 없다. 이미 스프링을 사용하고 있다면, 그리고 성숙한 클라우드 네이티브 기술을 활용해서 하루 빨리 가치를 시장에 전달하고 싶은 이라면 이 책이 큰 도움이 될 것이다.
- 박성철 / 우아한형제들 인프라서비스실장
언제부터인가 서비스 개발이라고 하면 클라우드라는 용어가 빠지지 않고 등장한다. 클라우드 네이티브란 대형 서비스를 개발하는 회사들에서 내부적으로 사용하던 분산 아키텍처링 방법을 클라우드에 접목해 대규모 서비스를 안정적으로 처리할 수 있는 방법을 정의한 것이다. 특히, 넷플릭스는 AWS 위에서 돌리던 서비스 아키텍처와 자사 솔루션을 오픈소스로 공개한 뒤, 피보탈과 협업해 스프링 클라우드라는 클라우드 네이티브를 위한 기능들을 스프링에 추가했다. 경험 많은 개발자의 노하우가 필요하던 부분이 클라우드 네이티브 도입으로 훨씬 더 대규모의 서비스를 구축하기 쉬워졌다.
이 책은 원래 대규모 서비스에서 사용하던 개념들을 스프링 클라우드로 가져온 것에 대한 설명이 대다수이며 상당히 많은 분야를 두루 다루기 때문에 읽기 쉽지는 않지만, 실제로 대규모 서비스에 어떤 기술들이 필요한지에 대한 최신 트렌드를 따라갈 수 있다. 시스템을 확장 가능하게 만들기 위해서 넷플릭스의 솔루션인 유레카, 주울, 페인, 리본 등을 스프링 클라우드에서 어떻게 쉽게 사용할 수 있게 했는지 확인해보시기 바란다. 특히, 이 책을 쓴 원서의 두 저자 중 특히 조쉬 롱은 스프링에 가장 많은 버그를 만들었다는 것을 농담삼아 자랑하기도 한다(버그를 많이 만들었다는 것은 코드를 많이 만들어 기여했다라는 사실과 거의 일치한다). 경험과 식견을 녹여 만든 저자들의 뛰어난 지식을 이 책에서 배워가길 바란다.
- 강대명 / 유데미(Udemy) 데이터 엔지니어
스프링 클라우드를 활용해서 클라우드 네이티브 애플리케이션을 만드는 방법에 대한 아주 구체적인 방법들을 알려주는 책이다. 그동안의 모호했던 개념들을 실제로 개발하고 적용할 수 있는 실용 예제들과 함께 설명하므로, 클라우드 전환을 생각하는 엔지니어 또는 조직에게 큰 도움이 될 것이다. 특히 클라우드를 사용해서 개발해보고자 하는 초급 개발자, 기존에 스프링 프레임워크를 사용하고 있었지만, 클라우드로 전환하고자 하는 중급 또는 고급 개발자, 스프링 클라우드를 효과적으로 사용하고자 하는 개발자, 클라우드로 이전해 운영 부담을 줄이고자 하는 엔지니어/조직에게 선물과도 같은 책이 될 것이다.
- 공용준 / 카카오 클라우드 파트장, 『카프카, 데이터 플랫폼의 최강자』 저자
신뢰성 있는 소프트웨어를 개발하는 것은 많은 부분에서 잘 진행되어 왔다고 말하기 힘들다. 검증된 클라우드 네이티브 패턴을 사용함으로써 개발자들은 애플리케이션 로직에 더 집중할 수 있고, 운영자들은 예측 가능한 서비스 확장과 함께 알 수 없는 장애로부터 시스템을 보호할 수 있다. 이 책에 나온 실전 예제 코드와 이해하기 쉬운 설명을 통해 자바 개발자들은 각종 패턴과 방법을 알게 될 것이다. 우리 팀 멤버인 케니와 조쉬가 저술한 책이 역시 우리 팀의 멤버인 윤진을 통해 한글화되어 출간됨을 매우 기쁘게 생각한다. 이 책이 한국의 많은 스프링 개발자와 데브옵스들에게 더 나은 서비스를 구현하는 데 도움이 되리라 믿는다.
- 앤드류 클레이 쉐이퍼(Andrew Clay Shafer) / 데브옵스의 개척자이자 퍼펫 랩스(Puppet Labs)의 창시자
2015년 이래, 스프링 클라우드와 피보탈 클라우드 파운드리를 사용하는 새로운 방식으로 전환한 후에 개발 속도는 적어도 50% 상승했고, 시스템 다운 시간은 절반 이하로 줄어들었으며, 더 작은 플랫폼 전담팀으로도 수만 개의 JVM을 운영할 수 있게 되었다는 사례 데이터가 쌓이고 있습니다. 가장 중요한 점은 클라우드 네이티브 자바를 도입한 조직은 개발과 운영 복잡도에 대해 고민하는 시간을 큰 폭으로 줄이고, 고객과 시장을 바라보는 데 투자할 수 있는 시간을 획기적으로 늘릴 수 있었다는 것입니다.
이 책의 한 장 한 장에는 현대적인 엔터프라이즈 소프트웨어 설계에 있어 가장 중요한 여러 패턴에 대해 상세한 설명이 담겨 있습니다. 조쉬와 케니가 세계 최고의 기업들과 현장에서 함께 일하면서 힘겹게 익혀온 값진 경험들은 이 책 안에서 다양한 사례들과 함께 빛을 발할 것입니다. 모든 개발자와 IT 리더들이 이 책을 읽고 조직 안에서 적응성(adaptability)과 회복성(resilience)의 진정한 힘을 최대한 잘 이용할 수 있게 되기를 바랍니다.
- 제임스 워터스(James Waters) / 피보탈 클라우드 파운드리 수석부사장
펼쳐보기
조쉬 롱
스프링 개발 애드버킷(Advocate)이자 <인포큐닷컴InfoQ.com>의 자바 큐 편집자이며, 『스프링 레시피 2판』(에이프레스)을 비롯한 여러 권의 책을 저술했다. 그는 더서버사이드 자바 심포지움(TheServerSide Java Symposium), 스프링원(SpringOne), 오스콘(OSCON), 자바존(JavaZone), 데복스(Devoxx), 자바투데이즈(Java2Days) 등 국제적인 여러 컨퍼런스에 발표자로 참여했다. 스프링 소스 코드 작업을 하지 않을 때는 지역 자바 사용자 그룹이나 커피 숍에 주로 머무른다. 기술의 한계를 극복할 수 있는 솔루션을 좋아하며, 관심 분야는 확장성, BPM(Business Process Management), 그리드 처리, 모바일 컴퓨팅, '스마트'라는 수식어를 달고 있는 다양한 시스템이다. 스프링 소스 블로그(blog.springsource.org)에 글을 쓰며, 개인 블로그(joshlong.com)도 운영 중이다.
케니 바스타니
피보탈의 스프링 개발자 애드버킷이다. 오픈소스 기여자이자 블로거로서 그래프 데이터베이스에서 마이크로서비스까지 다양한 주제로 열정적인 개발자 커뮤니티에서 활동 중이며, 오스콘, 스프링원 플랫폼, GOTO와 같은 여러 컨퍼런스에 발표자로 정기적으로 참여한다. 개인 블로그(kennybastani.com)에서 소프트웨어 아키텍처에 대한 강좌와 이벤트 주도 마이크로서비스와 서버리스 아키텍처를 만드는 오픈 소스 예제를 볼 수 있다.
옮긴이 정윤진
커널 및 드라이버 엔지니어로 경력을 시작해서 시스템 엔지니어를 지나 데브옵스를 거쳐 현재는 테크놀로지스트라는 생소한 일을 하고 있다. 카페24 연구소 초기 멤버로 각종 호스팅 서비스의 개발에 참여, 장단기 장애 해결과 일일 단위 문제 해결 등을 수행하다가, 알서포트에서 베어메탈과 AWS 기반의 글로벌 시스템을 한국, 일본, 미국과 유럽 등지에 구현했다. 이후 스파크 앤 어소시에이트에서 클라우드 스케일링 팀과 함께 애자일 기반으로 KT 클라우드 개발 및 국내 제조 회사의 사설 클라우드 개발에 참여했으며, 이후 아마존 웹 서비스의 솔루션 아키텍트로 활동하며 크고 작은 회사의 서비스의 클라우드 마이그레이션을 돕다가, 지금은 피보탈에서 일하고 있다.
옮긴이 오명운
백발 개발자를 꿈꾸며 언제나 버그와 씨름하는 개발자다. 번역을 통해 개발자 생태계에 조금이라도 기여하고자 노력한다. 옮긴 책으로는 『스프링 5.0 마이크로서비스 2/e』, 『D3.js 실시간 데이터 시각화』(에이콘출판) 등이 있다. http://homoefficio.github.io/에서 개발 관련 지식을 나누고 있으며, 최근에는 분산 원장 기술에 관심을 가지고 공부 중이다.
옮긴이 장현희
19년째 개발자의 길을 걷고 있는 옮긴이는 지난 17년간 『사이트 신뢰성 엔지니어링』(제이펍)을 비롯한 20여 종의 개발 관련서를 집필하거나 번역했다. 현재는 호주 시드니에 있는 ROKT에서 테크니컬 스페셜리스트로 근무 중이며, 국내 개발자들에게 조금이라도 도움되는 번역서를 만들기 위해 틈틈이 노력 중이다. 앞으로도 책이라는 매개체를 통해 멀리서나마 국내 개발자들과 계속해서 소통할 계획이다.
펼쳐보기