파이썬 마이크로서비스 [모범 사례로 알아보는 파이썬 마이크로서비스 개발, 테스트, 배포, 확장까지]
- 원서명Python Microservices Development: Build, test, deploy, and scale microservices in Python (ISBN 9781785881114)
- 지은이타렉 지아드(Tarek Ziadé)
- 옮긴이김현욱
- ISBN : 9791161752730
- 35,000원
- 2019년 05월 17일 펴냄
- 페이퍼백 | 428쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 소프트웨어 아키텍처
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
파이썬을 사용해서 마이크로서비스의 설계부터 코딩, 테스트, 배포까지 전반적인 과정을 다룬다. 모질라(Mozilla)에서 파이썬 개발자로 활동하는 저자의 풍부한 경험과 샘플 프로젝트 개발 과정을 따라가면서, 모범 사례와 주의 사항을 배울 수 있다. 또한 파이썬 생태계의 다양한 라이브러리 활용법도 살펴본다.
이 책에서 다루는 내용
■ 마이크로서비스 이해와 설계 방법
■ 파이썬 3, 플라스크, Tox, 다른 도구와 모범 사례를 사용해 서비스를 만드는 방법
■ TDD 활용법
■ 마이크로서비스의 문서화 방법
■ 코드를 설정하고 패키징하는 가장 좋은 방법
■ 다른 서비스를 연동하고 연동 과정에서 발생 가능한 문제 해결 방법
■ 서비스 보안, 모니터링, 확장 방법
■ 도커 컨테이너와 AWS에 서비스를 배포하는 방법
이 책의 대상 독자
파이썬에 대한 기본 지식, 커맨드라인, HTTP 기반 애플리케이션에 대한 기본 지식을 갖추고 있으며, 파이썬 3를 활용한 마이크로서비스 개발, 테스트, 확장, 관리 방법을 배우고 싶은 독자를 대상으로 한다. 파이썬으로 마이크로서비스를 개발해 본 경험이 필요하지는 않다.
이 책의 구성
1장. ‘마이크로서비스 소개’에서는 마이크로서비스가 무엇이고, 모던 애플리케이션에서 어떤 역할을 하는지 알아본다. 그리고 파이썬으로 마이크로서비스를 개발할 때의 장점을 알려준다.
2장. ‘플라스크 알아보기’에서는 플라스크의 주요 특징을 소개한다. 마이크로서비스의 기초가 될 샘플 웹 애플리케이션을 만들어보면서 프레임워크를 이해한다.
3장. ‘코딩, 테스트, 문서화: 선순환’에서는 테스트 주도 개발, 지속적인 통합에 대해 알아보며, 플라스크 애플리케이션을 개발하고 패키징할 때 어떻게 활용하는지 알아본다.
4장. ‘샘플 프로젝트 Runnerly 설계’에서는 기능 목록과 사용자 스토리를 활용해서 모놀리식 애플리케이션을 설계하는 방법을 설명한다. 그런 다음 모놀리식 애플리케이션을 마이크로서비스로 재구성하면서 각 서비스들이 어떻게 데이터를 통해 서로 연결되는지 알아본다. 또한 HTTP API를 설명할 때 사용되는 오픈 API 2.0(이전 Swagger)사양도 소개한다.
5장. ‘서비스 연동’에서는 서비스와 백엔드 서비스의 연결에 대해 설명한다. 그리고 네트워크 분리를 비롯한 서비스 간의 연결과 관련된 문제를 다루는 방법과 격리된 환경에서 서비스를 테스트하는 방법도 알아본다.
6장. ‘서비스 모니터링’에서는 코드에 로깅과 성능 지표를 추가해 전체 서비스의 상태를 명확하게 파악하고 이슈를 추적하는 방법을 설명한다.
7장. ‘서비스 보안’에서는 마이크로서비스를 보호하기 위해 사용자 인증, 서비스 간 인증, 사용자 관리를 어떻게 해야 하는지 알아본다. 또한 사기나 남용을 어떻게 완화하는지 소개한다.
8장. ‘하나로 모으기’에서는 최종 사용자가 마이크로서비스를 활용할 수 있게 해주는 자바스크립트 애플리케이션의 디자인과 개발 방법을 설명한다.
9장. ‘Runnerly 패키징 및 실행’에서는 Runnerly의 패키징, 빌드, 실행 방법을 설명한다. 애플리케이션의 모든 구성 요소는 단일 개발 머신에서 실행할 수 있어야 한다.
10장. ‘컨테이너 서비스’에서는 가상화란 무엇이고, 도커를 어떻게 사용하는지, 그리고 서비스의 도커 이미지를 생성해서 ‘도커화’하는 방법을 소개한다.
11장. ‘AWS에 배포’에서는 AWS의 주요 서비스를 소개한 다음, 마이크로서비스 기반 애플리케이션을 배포할 때 필요한 초기 설정 방법과 활용하기 좋은 AWS 서비스를 알아본다. 클라우드에 도커 컨테이너를 배포하는 데 목적을 두고 만들어진 CoreOS 리눅스 배포판도 소개한다.
12장. ‘더 나아가기’에서는 마이크로서비스 개발과 관련해 좀 더 알아볼 내용을 소개한다. 특히 비동기 방식을 사용해서 마이크로서비스를 만드는 방법을 알아본다. I/O를 많이 쓰는 마이크로서비스라면 비동기 방식으로 성능을 높일 수 있다.
목차
목차
- 1장. 마이크로서비스 소개
- 서비스 지향 아키텍처의 기원
- 모놀리식 접근 방식
- 마이크로서비스 접근 방식
- 마이크로서비스의 장점
- 위험 분리
- 작은 프로젝트
- 확장 및 배포의 다양한 옵션
- 마이크로서비스의 단점
- 비논리적인 분할
- 네트워크 연동 증가
- 데이터 저장과 공유
- 호환성 이슈
- 테스트
- 파이썬으로 마이크로서비스 구현
- WSGI 표준
- Greenlet과 Gevent
- 트위스티드와 토네이도
- asyncio
- 언어 성능
- 요약
- 2장. 플라스크 알아보기
- 파이썬 버전 선택
- 플라스크에서 요청 처리
- 라우팅
- 요청
- 응답
- 플라스크 기본 기능
- session 객체
- 전역 공간
- 시그널
- 확장과 미들웨어
- 템플릿
- 설정
- 블루프린트
- 에러 처리 및 디버깅
- 마이크로서비스 구조
- 요약
- 3장. 코딩, 테스트, 문서화: 선순환
- 테스트의 여러 종류
- 단위 테스트
- 기능 테스트
- 통합 테스트
- 부하 테스트
- 엔드-투-엔드 테스트
- WebTest 사용
- pytest와 Tox 사용
- 개발자 문서
- 지속적인 통합
- Travis-CI
- ReadTheDocs
- Coveralls
- 요약
- 테스트의 여러 종류
- 4장. 샘플 프로젝트 Runnerly 설계
- Runnerly 애플리케이션
- 사용자 스토리
- 모놀리식 설계
- 모델
- 뷰와 템플릿
- 백그라운드 작업
- 인증과 허가
- 모놀리식으로 함께 묶기
- 모놀리식 분리
- 데이터 서비스
- Open API 2.0 사용
- 좀 더 분할
- 요약
- Runnerly 애플리케이션
- 5장. 서비스 연동
- 동기식 호출
- 플라스크 app에서 세션 사용
- 커넥션 풀링
- HTTP 캐시 헤더
- 데이터 전송 효율 높이기
- 비동기 호출
- 태스크 큐
- 토픽 큐
- 게시 / 구독
- AMQP를 통한 RPC 사용
- 테스팅
- 동기식 호출 모방
- 비동기식 호출 모방
- 요약
- 동기식 호출
- 6장. 서비스 모니터링
- 중앙 집중화된 로그
- Graylog 구성
- Graylog에 로그 보내기
- 필드 추가
- 성능 지표
- 시스템 지표
- 코드 지표
- 웹 서버 지표
- 요약
- 중앙 집중화된 로그
- 7장. 서비스 보안
- OAuth2 프로토콜
- 토큰 기반 인증
- JWT 표준
- PyJWT
- X.509 기반 인증
- TokenDealer 마이크로서비스
- TokenDealer 사용
- 웹 애플리케이션 방화벽
- OpenResty: 루아와 nginx
- 코드 보안
- 외부에서 유입되는 요청 평가
- 애플리케이션 영역 제한
- Bandit 린터 사용
- 요약
- 8장. 하나로 모으기
- 리액트 대시보드 만들기
- JSX
- 리액트 컴포넌트
- 리액트와 플라스크
- Bower, npm, 바벨 사용
- CORS
- 인증과 권한 부여
- 데이터 서비스와 상호작용
- 스트라바 토큰 얻기
- 자바스크립트 인증
- 요약
- 리액트 대시보드 만들기
- 9장. Runnerly 패키징 및 실행
- 패키징 도구 모음
- 용어 정의
- 패키징
- 버전 관리
- 릴리스
- 배포
- 모든 마이크로서비스 실행
- 프로세스 관리
- 요약
- 패키징 도구 모음
- 10장. 컨테이너 서비스
- 도커란?
- 도커 기본
- 도커에서 플라스크 실행
- 풀스택: OpenResty, Circus, 플라스크
- OpenResty
- Circus
- 도커 기반 배포
- 도커 컴포즈
- 클러스터링, 프로비저닝
- 요약
- 11장. AWS에 배포
- AWS 개요
- 라우팅: Route 53, ELB, Auto Scaling
- 실행: EC2, Lambda
- 스토리지: EBS, S3, RDS, ElasticCache, CloudFront
- 메시징: SES, SQS, SNS
- 프로비저닝과 배포: CloudFormation, ECS
- AWS에 배포: 기본
- AWS 계정 설정
- CoreOS를 사용해 EC2에 배포
- ECS를 사용해 배포
- Route 53
- 요약
- 12장. 더 나아가기
- 반복자와 발생자
- 코루틴
- asyncio 라이브러리
- aiohttp 프레임워크
- Sanic
- 비동기와 동기
- 요약