본문 바로가기
독서와 스크랩/IT기술분야

[책]클라우드 네이티브 자바 : 스프링 마이크로서비스 아키텍처와 데브옵스를 실천하는 클라우드 기반 서비스의 모든 것

by 웃는 얼굴, 친절한 말, 따뜻한 마음 2021. 9. 25.
728x90

780페이지의 장서, 개발자 입문서
스프링 애플리케이션에 익숙한 개발자에게 클라우드환경에 필요한 스프링 도구들은 소개 한다.

 

# 예제코드

http://github.com/cloud-natie-java 에서 내려받을 수 있음



1장 Cloud- Native 애플리케이션
- 아마존 Netflix사례 소개

- 클라우드 네이티브 애플리케이션은 비즈니스 차별점도 못하고 노력만 많이 드는 작업에 소모되는 시간을 줄여주는 제약 조건을 전제로 만들어진다.

- 마이크로서비스와 클라우드 네이티브

 . 마이크로서비스는 작게 분산되어 알맞게 협업하는 컴포넌트를 모아서 시스템을 만들고 개별 기능을 운영 환경에 반영할 때 위험을 낮추기 위해 컴포넌트로 쪼개는 방식은 수십년간 이어져온 방식이다. 

그런데 소프트웨어는 살아있기 때문에 어제 내렸던 기술 결정이 내일의 아키텍처를 결정할 때 방해가 될 수 있다. 마이크로서비스는 어제의 잘못된 결정을 분해해 날려버리고 내일을 위한 새롭고 더 나은 선택을 할 수 있게 해준다.

잘못된 결정이 쌓이면 제대로 설계된 애플리케이션도 진흙투성이가 될 수 있다. 어떤 사람이 일부 시스템의 설계를 잘못 하더라도 쉽게 분해할 수 있으면 고치기 쉽지만 하나의 일체형 시스템의 경우에는 나중에 다른 사람이 올바른 선택을 하기 어렵게 만든다.

항상 변화 가능성을 염두에 두고 소프트웨어를 만들어야 한다.

아키텍처의 변화속도에 영향을 미치는 두가지 동력은 마이크로서비스와 클라우드이다. 

- 12요소 방법론

 . 허로쿠 클라우드 플랫폼을 만든 사람들이 정립한 애플리케이션 개발 원칙 중 유익한 것을 모아 정리한 것

 . http://12factor.net 

 

The Twelve-Factor App

Background The contributors to this document have been directly involved in the development and deployment of hundreds of apps, and indirectly witnessed the development, operation, and scaling of hundreds of thousands of apps via our work on the Heroku pla

12factor.net

 . 애플리케이션을 만들 때 도움이 되는 제약 조건들을 나타낸다.

코드베이스 (Codebase) 버전 관리는 하나의 코드베이스가 여러번 배포된다
의존관계 (Dependencies) 의존관계는 명시적으로 표시하고 격리한다
설정(Config) 설정 정보는 실행환경에 저장한다.
지원서비스 (Backing services) 지원 서비스는 필요에 따라 추가되는 자원으로 취급한다.
빌드, 릴리스, 실행 (build, release, run) 빌드와 릴리스 실행 단계는 엄격하게 분리한다.
프로세스(processes) 애플리케이션은 하나 이상의 무상태 프로세스로 실행한다.
포트 바인딩(Port binding) 서비스는 포트에 연결해서 외부에 공개한다.
동시성(Concurrency) 프로세스 모델을 통해 수평적으로 확장한다.
처분성(Disposability) 빠른 시작과 깔끔한 종료로 견고함을 극대화한다.
개발/운영 짝맞춤 (Dev/Prod party) 개발과 스테이징, 운영은 가능한 한 동일하게 유지한다.
로그(logs) 로그는 이벤트 스트림으로 취급한다.
관리프로세스(Admin Process) 관리작업은 일회성 프로세스로 실행한다.


2장 부트캠프
- 스프링부트와 클라우드 파운드리
3장 애플리케이션 설정
4장 테스트
5장 마이그레이션

6장 ~8장 웹 서비스

9장~ 12장 데이터 통합

13장 ~ 15장 운영환경

2F 자연과학정보실 005.133 자42클

반응형