Azure와 도커를 활용한 마이크로서비스 구현 [Azure에서 마이크로서비스를 만드는 데 필요한 기술의 이해와 활용]
- 원서명Microservices with Docker on Microsoft Azure(ISBN 9780672337499)
- 지은이보리스 숄(Boris Scholl), 트렌트 스완슨(Trent Swanson), 댄 페르난데스(Dan Fernandez)
- 옮긴이김도균
- ISBN : 9791161750002
- 30,000원
- 2017년 05월 31일 펴냄
- 페이퍼백 | 336쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
Azure에서 마이크로서비스 기반 애플리케이션을 만드는 데 흥미를 가진 사람들을 대상으로 한다. 이 책을 통해 마이크로서비스 기반 애플리케이션의 이점과 도전, 모범 사례에 관한 저자의 실전 경험과 지식을 배울 수 있다. 특히 Azure에서 마이크로서비스 기반 애플리케이션을 만들거나 기존의 레거시 애플리케이션을 해체하고 다시 마이크로서비스로 구축하는 데 필요한 핵심 지식을 얻을 수 있다.
추천의 글
지난 2년 동안 Azure는 단순한 .NET 기반 플랫폼에서 개방형 유연한 플랫폼으로 진화해 광범위한 운영 체제와 프로그래밍 언어, 프레임워크, 도구, IaaSinfrastructure-as-aservice용 데이터베이스와 장치, PaaSplatform-as-a-service, SaaSsoftware-as-a-service 워크로드를 지원하고 있다. Azure는 기존 고객과 신규 고객 모두를 대상으로 놀라운 성장율을 보이고 있다.
오늘날 대규모 컴퓨트 리소스에서 개발/테스트, SaaS 솔루션에 이르기까지 어떤 형태로든 클라우드의 사용을 고려하지 않는 산업은 없다. 유연성과 민첩성이 IT와 개발자가 Azure를 적용하는 첫 번째 이유다. Azure를 채택하는 고객의 전형적인 패턴은 개발/테스트 시나리오로 시작해서 기존 애플리케이션을 IaaS 기반 하이브리드 시나리오로 이동하고, 궁극적으로 클라우드 플랫폼을 최대한 활용하는 새로운 애플리케이션을 개발하는 것이다.
이제 Azure 클라우드 인프라는 거의 모든 시나리오를 수용하는 유연성을 제공한다. 따라서 고객은 애플리케이션 설계가 제한 요인임을 깨달았다. 많은 고객은 여전히 개별 애플리케이션 구성 요소를 독립적으로 업데이트, 버전 관리, 배포, 확장하기 어렵게 만든 모놀리식 애플리케이션을 설계하고 있다. 따라서 클라우드가 민첩하고 유연함에도 불구하고 애플리케이션 자체는 시장 동향과 고객 요구에 신속하게 대응하는 데 필요한 민첩성을 제공하지 못하고 있다.
지난 몇 달 동안 마이크로서비스 기반 애플리케이션은 이전에 불가능했던 민첩성과 관리 편리성을 가능케 하는 새로운 아키텍처 설계로 가장 많이 언급됐다. 도커 컨테이너는 밀도와 데브옵스, 개방형 기술 관점에서 마이크로서비스 기반 애플리케이션을 가능하게 하는 완벽한 기술로 존재감을 드러냈다. 도커와 결합한 마이크로서비스 기반 애플리케이션은 클라우드의 최신 애플리케이션 개발 판도를 크게 바꿔 놓을 것이다.
Azure에서 기반 기술과 고급 서비스를 제공해 다양한 유형의 마이크로서비스 기반 애플리케이션을 지원한다는 사실은 나를 흥분시킨다. Marathon/Chronos/Swarm과 함께 Apache Mesos에서 도커 컨테이너를 사용해 애플리케이션을 빌드하거나 자체 네이티브 마이크로서비스 애플리케이션 플랫폼인 서비스 패브릭에서 애플리케이션을 빌드할 수 있다. Azure에서는 시나리오에 맞는 적합한 선택지를 제공한다.
이제 막 컨테이너나 마이크로서비스에 발을 들였거나, 이미 이 주제를 다뤄봤거나에 상관없이 Azure에서 컨테이너 기반 마이크로서비스 애플리케이션을 만드는 방법을 이해하는 데 도움을 줄 것이다. 기본적인 내용에 대한 설명 외에도 마이크로서비스 개발자는 아키텍트가 알아야 하는 모범 사례를 파고든다.
저자들은 기본 주제와 고급 주제 모두를 아우르는 최고의 전문가다. 이들은 이러한 모델을 사용해 애플리케이션을 구축한 깊이 있는 실세계 경험을 갖췄으며, Azure와 클라우드에 관한 놀라운 제품 통찰력을 보유하고 있다. 이 책에서 제공하는 기술을 사용해 여러분이 만들어 낼 것을 기대하고 있겠다.
- 코리 샌더스(Corey Sanders) Partner Director of Program Management, Azure
이 책에서 다루는 내용
■ 마이크로서비스 아키텍처의 차이점과 사용 시기
■ 마이크로서비스 아키텍처의 맥락에서 도커 컨테이너 이해
■ 도커 이미지 구축과 가져오기, 계층화 시키기
■ 도커 볼륨과 컨테이너, 이미지, 태그, 로그 다루기
■ 도커 스웜과 도커 컴포즈, 도커 네트워크 사용
■ Azure 포털과 Azure 리소스 관리자, 명령줄, docker-machine, 도커 툴박스를 통한 로컬 도커 호스트 만들기
■ 마이크로서비스 애플리케이션을 지원하는 개발과 데브옵스 환경 구축
■ 도커의 지속적인 업데이트 옵션 활용
■ Azure의 클러스터와 컨테이너 오케스트레이션 기능을 사용해 최대한의 복원력으로 컨테이너 기반 마이크로서비스 애플리케이션 운영과 확장
■ Azure 진단과 Visual Studio Application Insights, Microsoft Operations Management Suite를 사용한 마이크로서비스 애플리케이션 모니터링
■ Azure 서비스 패브릭으로 마이크로서비스 애플리케이션을 빠르고 효과적으로 개발하기
이 책의 대상 독자
Azure에서 마이크로서비스 기반 애플리케이션을 만드는 데 흥미를 가진 사람들을 대상으로 한다. 이 책을 읽은 후 마이크로서비스 기반 애플리케이션의 이점과 도전에 관한 견고한 이해를 갖게 될 것이다.
목차
목차
- 1장. 마이크로서비스
- 마이크로서비스란?
- 자율 서비스
- 소규모 서비스
- 마이크로서비스의 이점
- 독립적인 배포
- 지속적인 혁신
- 확장과 리소스 활용의 개선
- 기술 다양성
- 소규모 팀
- 오류 격리
- 도전
- 복잡성
- 네트워크 혼잡 및 대기시간
- 데이터 일관성
- 테스트
- 통합과 버전 관리
- 서비스 검색과 라우팅
- 모니터링과 로깅
- 기량과 경험
- 가동시간 서비스 수준 계약(SLA)
- 모범 사례
- 캡슐화
- 데브옵스 원칙과 문화
- 자동화
- 모니터링
- 결함 허용
- 요약
- 2장. Azure의 컨테이너
- VM과 컨테이너, 프로세스
- 가상 머신이나 프로세스에서 컨테이너를 사용하는 시기
- Azure의 컨테이너
- 도커가 있는 Azure VM 만들기
- Windows에서 SSH 공개 키 생성
- Mac OS X에서 SSH 공개 키 생성
- 가상 머신 이미지 선택
- Windows에서 SSH와 Git Bash를 사용해 VM 연결하기
- Mac OS X에서 SSH와 Git Bash를 사용해 VM 연결하기
- 도커 컨테이너 기초
- 요약
- VM과 컨테이너, 프로세스
- 3장. 애플리케이션 설계
- 어디서 시작할지 결정하기
- 코스 그레인드 서비스
- 마이크로서비스로 시작하기
- 서비스와 인터페이스 정의
- 애플리케이션 분해
- 서비스 설계
- 서비스 vs. 서비스 통신
- 동기 요청/응답
- 비동기 메시징
- 모놀리스에서 마이크로서비스로
- Flak.io 전자상거래 샘플
- Flak.io
- 요구사항
- 아키텍처 개요
- 고려사항
- 요약
- 어디서 시작할지 결정하기
- 4장. 개발 환경 설정
- 로컬 개발을 위한 도커 사용하기
- 로컬 개발용 도커
- 운영 유효성 검증을 위한 도커
- 빌드/테스트 호스트로서 도커
- 개발자 구성
- 로컬 개발
- 로컬 및 클라우드
- 클라우드 전용
- 도커 인증 관리
- 기본 이미지 선택
- 이미지의 계층구조 만들기
- 로컬 개발 환경 설정
- 도커 도구 설치
- 개발자 도구 설치
- Windows 유틸리티 설치
- OS X 유틸리티 설치
- 로컬 개발을 위한 도커
- 로컬 개발 설정
- 로컬 도커 호스트 시작
- 도커 호스트에 연결하기
- 샘플 복제하기
- 도커 컨테이너에서 라이브 리로드 사용하기
- 볼륨
- 운영 환경을 위한 마이크로서비스 준비
- 도커 컴포즈
- 도커 문제 디버깅
- 도커 호스트에 연결할 수 없다.
- 컨테이너가 시작되지 않는다.
- 컨테이너 실행 진단하기
- 요약
- 로컬 개발을 위한 도커 사용하기
- 5장. 서비스 오케스트레이션과 연결
- 오케스트레이션
- 프로비저닝
- 코드로서의 인프라
- Azure 리소스 관리자
- Azure 컨테이너 서비스
- ACS 리소스 공급자
- 멀티벤터 프로비저닝
- 스케줄링과 클러스터 관리
- 문제점
- 스케줄링 솔루션
- 도커 스웜
- 큐버네티스
- 아파치 메소스
- 아파치 메소스를 사용한 다양한 작업 부하 실행
- 서비스 검색
- 서비스 등록
- 서비스 조회
- 서비스 레지스트리
- 다양한 기술
- 기타 기술
- 애플리케이션/API 게이트웨이
- 오버레이 네트워킹
- 요약
- 6장. 데브옵스와 지속적인 업데이트
- 데브옵스 개요
- 현대의 데브옵스
- 데브옵스 문화
- 연속 통합과 지속적인 전달, 연속 배포
- Azure에서 환경 만들기
- 지속적인 업데이트를 사용한 마이크로서비스 배포
- 서로 다른 환경에서의 애플리케이션 구성 변경
- 연속 통합
- QA 환경의 테스트
- 스테이징 배포
- 운영 환경의 테스트
- 지속적인 업데이트 도구 선택
- 온프레미스 또는 호스팅?
- 최고의 솔루션 또는 통합 솔루션?
- 도구에서 필요한 확장을 제공하는가?
- 젠킨스와 팀 서비스, 뱀부, Tutum의 비교
- 도커 클라우드(이전엔 Tutum)
- 요약
- 데브옵스 개요
- 7장. 모니터링
- 호스트 머신 모니터링
- 컨테이너 모니터링
- 모니터링 서비스
- 모니터링 솔루션
- Azure 진단
- Application Insights
- OMS
- 도커의 권장 솔루션
- 요약
- 8장. Azure 서비스 패브릭
- 서비스 패브릭 개요
- 서비스 패브릭 하위시스템
- 클러스터 관리
- 리소스 스케줄링
- 서비스 패브릭 애플리케이션
- 사용자 지정 애플리케이션(기존 애플리케이션)
- 컨테이너 통합
- 서비스 검색
- 프로그래밍 모델
- 상태 비저장 서비스
- 상태 저장 서비스
- 신뢰할 수 있는 액터(Reliable Actors)
- 신뢰할 수 있는 서비스(Reliable Services)
- 애플리케이션 수명주기
- 서비스 업데이트
- 애플리케이션 업그레이드
- 테스트 용이성 프레임워크
- 요약
- 서비스 패브릭 개요
- 부록. ASP.NET Core 1.0과 마이크로서비스
- ASP.NET의 새로운 버전
- 시작하기
- 알맞은 ASP.NET 도커 이미지 선택하기
- Visual Studio 2015 도구
- ASP.NET의 새로운 버전