마이크로서비스 API 디자인 패턴 [쉬운 통합을 위한 결합도 최적화 전략]
- 원서명Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges (ISBN 978-0137670109)
- 지은이올라프 짐머만(Olaf Zimmermann), 미르코 스토커(Mirko Stocker), 다니엘 뤼브케(Daniel Lübke), 우베 즈둔(Uwe Zdun), 세자레 파우타소(Cesare Pautasso)
- 옮긴이이승범
- ISBN : 9791161759241
- 44,000원
- 2024년 11월 14일 펴냄
- 페이퍼백 | 664쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
책 소개
요약
마이크로서비스의 API를 설계할 때 참고할 수 있는 패턴들을 소개하는 책이다. 이 패턴은 입증되고 재사용 가능한 솔루션 엘리먼트를 통해 API 설계 및 발전의 복잡성을 극복하는 데 도움을 주는 것을 목표로 패턴 커뮤니티는 피드백 프로세스를 통해 정립된 내용을 소개한다. HTTP, 웹 API, 서비스 지향 아키텍처를 포함한 일반적인 통합 아키텍처에 적용 가능한 패턴뿐 아니라, 개별 API 엔드포인트와 메시지 교환과 관련된 패턴 그리고 API의 진화와 관련된 패턴도 소개한다. 이러한 패턴들은 프로그램 내부 API가 아닌 원격 API(remote API)에 초점을 맞춰 클라이언트 측과 프로바이더 측 모두에서 개발자 경험을 개선하는 것을 목표로 한다.
추천의 글
“API가 세상을 집어 삼키고 있다. 조직 내부 그리고 외부와의 협업에서도 API에 더 많이 의존하게 된다. 이러한 API를 설계할 때 패턴을 사용하는 것은 설계에서 요구되는 도전적 과제를 해결하는 데 큰 도움이 된다. 이 책은 실무자가 API를 좀 더 효과적으로 설계할 수 있게 돕는다. 즉, 표준 설계 문제는 패턴으로 해결해서 실무자는 애플리케이션 도메인 설계에 집중할 수 있게 된다. API 분야에서 일하고 있다면 이 책을 통해 API를 설계하는 방법과 API를 바라보는 시각이 달라질 것이다.”
“저자들은 정의부터 설계에 이르기까지 API 수명주기 전반에 걸쳐 접근하기 쉬운 방식으로 설계 패턴을 포착했다. 수십 개의 웹 API를 설계한 경험이 있든 이제 막 시작한 초보이더라도 이 책은 일관성을 유지하고 직면할 수 있는 모든 설계 과제를 극복하게 가이드한다. 이 책을 강력히 추천한다!”
“API는 오늘날 모든 소프트웨어 개발 환경에 존재한다. API 설계는 쉬워 보이지만 제대로 설계되지 않은 API를 사용해 본 사람이라면 누구나 알 수 있듯이 숙달하기 어려운 기술이며 처음에 보이는 것보다 훨씬 더 미묘하고 복잡하다. 저자들은 오랜 경험과 다년간의 연구 작업을 통해 API 설계에 대한 체계적인 지식을 제공한다. 이 책은 훌륭한 API를 만드는 데 필요한 기본 개념과 실용적인 패턴을 제공해 이를 이해하는 데 도움이 될 것이다. 최신 소프트웨어 시스템의 설계, 구축 또는 테스트에 관여하는 모든 사람에게 추천한다.”
“애플리케이션 프로그래밍 인터페이스(API)는 시스템 설계, 특히 소프트웨어 생태계를 점점 더 지배하고 있는 분산 시스템과 관련된 많은 트레이드오프를 관리하는데 도움이 되는 최우선 요소 중 하나다. 이 책은 실무 엔지니어와 소프트웨어 엔지니어링 및 아키텍처 설계를 처음 시작하는 사람 모두가 이해할 수 있게 설명하고 있어 API를 이해하고 설계하는 데 따르는 복잡성을 제거해준다. 시스템 설계에서 핵심적인 역할을 하고자 하는 모든 사람은 이 책에 제시된 API 설계 개념과 패턴을 이해해야 한다.”
“나는 API 우선 설계가 대규모의 복잡한 시스템에서 지배적인 설계 형태가 되는 시대로 접어들고 있다고 믿는다. 이러한 이유로 이 책은 시의적절하며 모든 아키텍트가 반드시 읽어야 할 필독서다.”
“드디어 API 설계라는 중요한 주제를 체계적으로 다루고 있다. 이 훌륭한 패턴 모음이 몇 년 만 더 일찍 있었으면 좋았을 텐데 하는 아쉬움이 남는다.”
“나는 프로그래머들이 미들웨어의 숨겨진 분산 시스템의 특성을 가볍게 보고 실패하는 소프트웨어 프로젝트들을 봐왔다. 원격에서 실행되지만 문제가 많은 비분산형 시스템에 적절한 API를 설계했기 때문이다. 이 책은 상호 의존적인 세상에서 소프트웨어의 필수적인 분산을 수용하고, 분리된 부분 간의 인터페이스 설계에 대한 시대를 초월한 조언을 제공한다. 패턴은 특정 미들웨어 기술을 넘어 현재와 미래에 성장하는 상호 연결된 소프트웨어 시스템의 생성 및 이해뿐만 아니라 필요한 진화에도 도움이 될 것이다. 이러한 시스템은 글로벌 시장을 목표로 하는 비즈니스를 위해 전 세계에 배포돼 있을 뿐만 아니라 자동차, 주택 그리고 우리 일상에 적용되는 거의 모든 기술에서도 작동한다.”
“소프트웨어 엔지니어와 아키텍트가 API를 설계, 발전, 문서화할 때 사용하는 스위스 군용 칼과 같은 책이다. 이 책에서 특히 마음에 드는 점은 독자에게 패턴을 던져주는 것이 아니라 저자가 현실적인 예제를 사용하고, 실질적인 아키텍처 결정을 지원하며, 사례 연구를 통해 패턴과 결정의 예를 갖고 설명한다는 점이다. 그 결과, 패턴 언어에 대한 접근성이 매우 뛰어나다. 이 책을 사용해 특정 문제에 대한 해결책을 찾거나 전체 장을 탐색해 API 설계와 관련된 문제 및 솔루션 공간에 대한 개요를 얻을 수 있다. 모든 패턴은 잘 만들어지고, 이름이 잘 지어졌으며, 실무자 커뮤니티에서 피어 리뷰를 거쳤다. 정말 즐거운 일이었다.”
“이 포괄적인 API 패턴 모음은 상호 운용 가능한 소프트웨어 시스템을 설계하는 소프트웨어 엔지니어와 아키텍트를 위한 귀중한 리소스다. API 기초에 대한 소개와 수많은 사례 연구 예제는 미래의 소프트웨어 엔지니어를 위한 훌륭한 교재가 될 것이다. 이 책에서 설명하는 많은 패턴은 실제로 매우 유용하며, 미션 크리티컬한 통합 철도 운영 센터 시스템의 API를 설계하는 데 적용됐다.”
이 책에서 다루는 내용
◆ 패턴으로 API 설계 문제 파악 및 극복하기
◆ API 엔드포인트와 동작의 적절한 크기 조정하기
◆ 요청 및 응답 메시지와 그 표현 설계하기
◆ 메시지 설계 품질 다루기
◆ API 진화 계획 세우기
◆ API 계약 문서화 및 커뮤니케이션
◆ 패턴을 결합해 실제 문제를 해결하고 트레이드오프를 올바르게 다루기
이 책의 대상 독자
기술과 설계를 개선하기 위해 노력하는 중급 수준의 소프트웨어 전문가를 대상으로 하는 책이다. 주로 플랫폼 독립적인 아키텍처 지식에 관심이 있는 통합 아키텍트, API 설계자, 웹 개발자를 대상으로 패턴을 제시한다. 백엔드-투-백엔드 통합 전문가와 프론트엔드 애플리케이션을 지원하는 API 개발자 모두 이 패턴에 담긴 지식을 활용할 수 있다. API 엔드포인트의 세분성과 메시지에서 교환되는 데이터에 초점을 맞추기 때문에 API 제품 책임자, API 검토자, 클라우드 테넌트 및 프로바이더도 도움을 받을 수 있다.
API 기본 사항에 이미 익숙하고 메시지 데이터 계약 설계 및 API 진화를 포함한 API 설계 능력을 향상시키고자 하는 중급 소프트웨어 엔지니어(개발자, 아키텍트 또는 제품 책임자 등)를 위한 책이다.
학생, 강사, 소프트웨어 엔지니어링 연구원도 이 책에 소개된 패턴과 프레젠테이션을 유용하게 활용할 수 있다. 초보자를 위한 책을 먼저 읽지 않고도 이 책과 패턴을 이해할 수 있도록 API 기본 사항과 API 설계를 위한 도메인 모델을 소개한다.
목차
목차
- 1부. 기초와 내러티브
- 01장.애플리케이션 프로그래밍 인터페이스(API) 기초
- 로컬 API에서 원격 API로
- 분산과 원격에 대한 간략한 역사
- 원격 API: 통합을 위한 프로토콜 기반 서비스 액세스
- API의 중요성
- API 설계의 의사 결정 드라이버
- API를 성공하게 하는 것
- 여러 API 설계 방법
- API 설계가 어려운 이유
- 아키텍처적으로 중요한 요구 사항
- 개발자 경험
- 원격 API의 도메인 모델
- 커뮤니케이션 참가자
- 엔드포인트 제공 동작을 설명하는 계약
- 대화의 빌딩 블록으로서의 메시지
- 메시지 구조 및 표현
- API 계약
- 책 전반에서 사용되는 도메인 모델
- 요약
- 로컬 API에서 원격 API로
- 02장.호반 상호 보험 사례 연구
- 비즈니스 콘텍스트 및 요구 사항
- 사용자 스토리 및 요구되는 품질
- 분석 수준 도메인 모델
- 아키텍처 개요
- 시스템 콘텍스트
- 애플리케이션 아키텍처
- API 설계 활동
- 목표 API 사양
- 요약
- 비즈니스 콘텍스트 및 요구 사항
- 03장.API 의사 결정 관련 사항
- 들어가기: 의사 결정 옵션으로서의 패턴, 의사 결정 기준으로서의 포스
- 기본적인 API 의사 결정과 패턴
- API 가시성
- API 통합 타입
- API 문서화
- API 역할과 책임에 대한 의사 결정
- 엔드포인트의 아키텍처 역할
- 정보 보유자 역할 정제
- 동작 책임 정의
- 메시지 표현 패턴 선택하기
- 표현 엘리먼트의 평면 구조와 중첩 구조
- 엘리먼트 스테레오타입
- 중간 짚어보기: 호반 상호 보험 사례의 책임과 구조 패턴
- API 품질 거버닝
- API 클라이언트의 식별 및 인증
- API 사용량에 대한 미터링 및 과금
- API 클라이언트의 과도한 API 사용 방지
- 품질 목표 및 페널티의 명시적 지정
- 오류에 대한 커뮤니케이션
- 명시적 콘텍스트 표현
- API 품질 개선을 위한 의사 결정
- 페이지네이션
- 불필요한 데이터 전송을 피하는 다른 방법
- 메시지에서 참조된 데이터 처리
- API 진화에 대한 의사 결정
- 버전 및 호환성 관리
- 버전의 도입 및 폐기를 위한 전략
- 중간 짚어보기: 호반 상호 보험 사례의 품질 및 진화 패턴
- 요약
- 2부. 패턴
- 04장.패턴 언어 개요
- 위치와 범위
- 패턴: 왜 그리고 어떻게?
- 패턴 탐색
- 구조의 구성: 범위별 패턴 찾기
- 테마별 분류: 주제별 패턴 찾기
- 시간 차원: 설계 개선 단계 따르기
- 탐색 방법
- 기초 패턴: API 가시성 및 통합 타입
- 패턴: 프론트엔드 통합
- 패턴: 백엔드 통합
- 패턴: 퍼블릭 API
- 패턴: 커뮤니티 API
- 패턴: 솔루션 내부 API
- 기초 패턴 요약
- 기본 구조 패턴
- 패턴: 아토믹 파라미터
- 패턴: 아토믹 파라미터 리스트
- 패턴: 파라미터 트리
- 패턴: 파라미터 포리스트
- 기본 구조 패턴 요약
- 요약
- 05장.엔드포인트 타입과 동작 정의
- API 역할 및 책임의 소개
- 도전 과제와 요구되는 품질
- 패턴 설명
- 엔드포인트 역할: 서비스 세분성
- 패턴: 처리 리소스
- 패턴: 정보 보유자 리소스
- 패턴: 운용 데이터 보유자
- 패턴: 마스터 데이터 보유자
- 패턴: 참조 데이터 보유자
- 패턴: 링크 조회 리소스
- 패턴: 데이터 전송 리소스
- 동작 책임
- 패턴: 상태 생성 동작
- 패턴: 인출 동작
- 패턴: 상태 전이 동작
- 패턴: 계산 함수
- 요약
- API 역할 및 책임의 소개
- 06장.요청 및 응답 메시지 표현 설계
- 메시지 표현 설계 소개
- 메시지 표현을 설계할 때의 과제
- 6장의 패턴
- 엘리먼트 스테레오타입
- 패턴: 데이터 엘리먼트
- 패턴: 메타데이터 엘리먼트
- 패턴: ID 엘리먼트
- 패턴: 링크 엘리먼트
- 특수 목적 표현
- 패턴: API 키
- 패턴: 오류 보고
- 패턴: 콘텍스트 표현
- 요약
- 메시지 표현 설계 소개
- 07장.품질을 위한 메시지 설계 개선
- API 품질 개요
- API 품질의 개선 관련 도전 과제
- 7장의 패턴
- 메시지 세분성
- 패턴: 임베디드 엔티티
- 패턴: 링크된 정보 보유자
- 클라이언트 주도 메시지 콘텐츠 또는 응답 셰이핑
- 패턴: 페이지네이션
- 패턴: 위시 리스트
- 패턴: 위시 템플릿
- 메시지 교환 최적화(대화 효율성)
- 패턴: 조건부 요청
- 패턴: 요청 번들
- 요약
- API 품질 개요
- 08장.API 진화
- API 진화 소개
- API를 진화시킬 때의 도전 과제
- 8장의 패턴
- 버전 관리 및 호환성 관리
- 패턴: 버전 식별자
- 패턴: 시맨틱 버전 관리
- 수명주기 관리 보장
- 패턴: 실험적 미리 보기
- 패턴: 공격적 폐기
- 패턴: 제한적 수명 보장
- 패턴: 2개의 상용 버전
- 요약
- API 진화 소개
- 09장.API 계약 문서화 및 커뮤니케이션
- API 문서화 개요
- API 문서화의 도전 과제
- 9장의 패턴
- 문서화 패턴
- 패턴: API 설명
- 패턴: 요금 책정 플랜
- 패턴: 사용 비율 제한
- 패턴: 서비스 수준 계약
- 요약
- API 문서화 개요
- 3부. 패턴 사용의 현재와 미래
- 10장.실제 패턴 사례
- 스위스 모기지 분야의 대규모 비즈니스 프로세스 통합
- 비즈니스 콘텍스트 및 도메인
- 기술적 과제
- API의 역할과 현황
- 패턴 사용 및 구현
- 회고 및 전망
- 건설 영역의 제안 및 주문 프로세스
- 비즈니스 콘텍스트 및 도메인
- 기술적 과제
- API의 역할 및 현황
- 패턴 사용 및 구현
- 회고 및 전망
- 요약
- 스위스 모기지 분야의 대규모 비즈니스 프로세스 통합
- 11장.결론
- 짧은 회고
- API 관련 연구: 패턴, MDSL 등으로 리팩토링
- API의 미래
- 추가 참고 내용
- 최종 코멘트
- 부록 A.엔드포인트 식별 및 패턴 선택 가이드
- 부록 B.호반 상호 보험 사례의 구현
- 부록 C.마이크로서비스 도메인 특화 언어(MDSL)