Node.js를 활용한 마이크로서비스 개발
Description
마이크로서비스에 대한 소개부터 개발, 배포, 모니터링까지 전반적인 개념을 다루고 있다. 마이크로서비스의 개발 프로세스, 테스트, 배포 및 모니터링에 대해 학습하며, 이와 관련해 도커, 세네카, PM2 등 다양한 도구도 함께 살펴본다. 독자들은 이 책을 통해 마이크로서비스 개발에 필요한 Node.js의 개념과 더불어 좋은 테스트 커버리지를 갖는 고품질 마이크로서비스를 작성하고 모니터링 방법을 학습할 수 있다.
저자

데이비드곤잘레스

저자데이비드곤잘레스(DavidGonzalez)는수년동안재무서비스분야에종사하고있는언어중립적인소프트웨어엔지니어다.추상화의올바른수준에대한해답과,너무구체적인것과너무추상적인것사이의적절한균형을찾는방법을배우기위해노력하고있다.
스페인에서공부했지만,2011년부터더넓고흥미로운더블린으로이주해살고있다.현재핀테크분야의독립컨설턴트로일하고있다.링크드인(Linkedin)계정의URL은https://ie.linkedin.com/in/david-gonzalez-737b7383이다.
소프트웨어개발이라는복잡한세계에대한더넓은그림을얻기위해,새로운기술과패러다임을이용한실험을좋아한다.

목차

1장.마이크로서비스아키텍처
__마이크로서비스의필요성
____모놀리식소프트웨어
____현실에서의마이크로서비스
____마이크로서비스지향아키텍처
____장점
____단점
__주요설계원칙
____비즈니스단위가컴포넌트는아니다
____스마트한서비스와독립적인처리능력이없는통신파이프분산화
____기술적정렬
____마이크로서비스크기
__마이크로서비스의주요장점
____탄력성
____확장성
____기술적이질성
____교체가능성
____독립성
________교체가능성이중요한이유
________배포용이성
__SOAvs마이크로서비스
__왜Node.jsdlsrk?
____API집합
____Node.js의전망
__요약

2장.마이크로서비스,그리고세네카와PM2
__Node.js의필요성
____Node.js,npm,세네카,PM2의설치
________npm
____첫번째프로그램-HelloWorld
____Node.js의쓰레드모델
____모듈형조직화의모범사례
________자바스크립트
________SOLID설계원칙
__세네카-마이크로서비스프레임워크
____제어의역전처리
____세네카에서의패턴매칭
________Patrun-패턴매칭라이브러리
________패턴재사용
________플러그인작성
________웹서버통합
__PM2-Node.js를위한태스크러너
____단일쓰레드애플리케이션과예외
____PM2-업계표준태스크러너사용
__요약

3장.모놀리스에서마이크로서비스로
__먼저,모놀리스가있었다
____유기적성장에대한대처방법
____적절한추상적수준
__그후,마이크로서비스가등장했다
____마이크로서비스의단점
____모놀리스분할
____모놀리스분할문제-데이터관련사항
__조직적정렬
__요약

4장.첫번째Node.js마이크로서비스작성
__마이크로머스-개요
__제품관리자-두가지측면을갖는핵심요소
____제품목록가져오기
____카테고리별로가져오기
____ID별로가져오기
____제품추가하기
____제품제거하기
____제품편집하기
____모든기능을연결하기
____익스프레스와통합하기-RESTAPI생성방법
__이메일전송기-일반적문제
____이메일전송방법
____인터페이스정의하기
____Mandrill설정
____실습-마이크로서비스에Mandrill통합하기
____대체전략
__주문관리자
____마이크로서비스정의하기-비-로컬데이터수집방법
____주문관리자-코드
________원격서비스호출
________완벽함보다는탄력성
__UI-API집합체
____프런트엔드마이크로서비스의필요성
____코드
____서비스품질저하-실패가재앙이되지않는경우
____회로차단기
____세네카-삶을더쉽게만드는간단한퍼즐
____세네카와프라미스
__디버깅
__요약

5장.보안과추적성
__논리적인인프라스트럭처보안
____SSH-통신암호화하기
__애플리케이션보안
____일반적인보안위협-최신보안상태유지방법
________주입크로스사이트스크립팅
________크로스사이트요청위조
________오픈리다이렉트
____효과적인코드리뷰
__추적성
____로깅
____요청추적
____감사
____HTTP코드
________1xx-정보제공
________2xx-성공코드
________3xx-리다이렉션
________4xx-클라이언트오류
________5xx-서버오류
________마이크로서비스에서HTTP코드가문제되는이유
__요약

6장.Node.js마이크로서비스테스트와문서화
__기능테스트
____자동화테스트피라미드
________단위테스트
________통합테스트
________종단간테스트
________얼마나많이테스트해야과도한가?
____Node.js에서마이크로서비스테스트Chai
________Mocha
________Sinon.JS-가상객체생성프레임워크
________실제마이크로서비스에서의테스트
________수동테스트-필요악
__마이크로서비스문서화
____Swagger를통한API문서화
____Swagger정의로부터프로젝트생성
__요약

7장.마이크로서비스모니터링
__서비스모니터링
____PM2와Keymetrics를이용한모니터링
________문제진단애플리케이션예외처리모니터링
________사용자정의메트릭
__시미언아미-스포티파이에서의액티브모니터링
____처리량과성능저하
__요약

8장.마이크로서비스배포
__소프트웨어배포개념
____지속적인통합
____지속적인전달
__PM2를통한배포
____PM2-에코시스템
____PM2를통한마이크로서비스배포
________서버구성
__도커-소프트웨어전달을위한컨테이너
____컨테이너설정
________도커설치
________이미지선택
________컨테이너실행
________필요한소프트웨어설치
________변경사항저장
____Node.js애플리케이션배포
____도커컨테이너생성자동화
__배우기는쉽고마스터하기는어려운Node.js이벤트루프
__Node.js애플리케이션클러스터링
__애플리케이션로드밸런싱
____NGINX상태점검
________패시브상태점검
________액티브상태점검
__요약

출판사 서평

★이책의대상독자★
Node.js에어느정도경험이있으며,세네카와마이크로서비스를배우기원하는개발자를위한책이다.이책의70%는실무적인내용이고(따라서많은코드를작성하게된다),30%는이론이다.이론을기반으로생성된코드는독자가새로운소프트웨어의패턴을적용하는데도움이될것이다.

★이책의구성★
1장,‘마이크로서비스아키텍처’에서는마이크로서비스지향아키텍처의장점과단점을살펴본다.1장은이책의나머지부분에대한기초가된다.
2장,‘마이크로서비스,그리고세네카와PM2’에서는마이크로서비스의구축방법으로Node.js,세네카,PM2를소개한다.2장에서는Node.js애플리케이션의구조를살펴보고,PM2를이용해애플리케이션을실행하는방법을설명한다.그리고세네카와PM2에대한몇가지대안에대해자세하게살펴본다.
3장,‘모놀리스에서마이크로서비스로’에서는마이크로서비스를이용해유기적인성장(계획되지않은소프트웨어변경)을처리하는방법에대해설명한다.그리고모놀리식(monolithic)애플리케이션을마이크로서비스로분할하는방법에대해서도다룬다.
4장,‘첫번째마이크로서비스작성에서는첫번째마이크로서비스의작성방법에대해설명한다.
5장,‘보안과추적성’에서는현대적인시스템의두가지중요한측면인보안과추적성을다루는방법에대해설명한다.정보를안전하고유지하고,행동을추적할수있도록만들어야한다.이장에서는세네카를이용해작업하는방법을살펴본다.
6장.‘Node.js마이크로서비스테스트와문서화’에서는주요한프레임워크(모카(Mocha)와차이(Chai))를이용한Node.js의테스팅을소개한다.또한가상객체서비스를위해시논Sinon(또다른프레임워크)도이용할것이다.이책에서는마이크로서비스의문서화를위해서스웨거(Swagger)를선택했다.
7장,‘마이크로서비스모니터링’에서는PM2를이용해마이크로서비스를모니터링하는방법을설명한다.이같은고급도구를최대한활용하기위해PM2와주요메트릭과함께이용한다.
8장,‘마이크로서비스배포’에서는PM2를이용해다양한환경에마이크로서비스를배포하는방법을설명한다.단일명령어로애플리케이션생태계를관리하고마이크로서비스아키텍처를통해도입되는오버헤드를감소시키는방법을설명한다.Node.js에서애플리케이션의배포뿐아니라일반애플리케이션에서의배포에대해서도가장진보된시스템중하나인도커에대해서도살펴본다.