01장. 소프트웨어 아키텍처 소개
__시스템 구조 정의
__더 작은 단위로 분할
____프로세스 간 통신
__콘웨이 법칙: 소프트웨어 아키텍처에 미치는 영향
__애플리케이션 예: 개요
__소프트웨어 아키텍처의 보안 측면
요약
1부. 설계
02장. API 설계
__추상화
____올바른 추상화 사용
____누수 추상화
____리소스와 액션 추상화
__RESTful 인터페이스
____좀 더 실용적인 정의
____HTTP 헤더와 상태 코드
____리소스 설계
____리소스와 파라미터
____페이지네이션
____RESTful API 프로세스 설계
____Open API 명세 사용
__인증
____HTML 인터페이스 인증
____RESTful 인터페이스 인증
__API 버전 관리
____왜 버전 관리를 하는가?
____내부 및 외부 버전 관리
____시맨틱 버전 관리
____단순화한 버전 관리
__프론트엔드와 백엔드
____모델-뷰-컨트롤러 구조
__HTML 인터페이스
____기존 HTML 인터페이스
____동적 페이지
____싱글 페이지 애플리케이션
____하이브리드 접근
__API 설계 예시
____엔드포인트
____설계 및 구현 검토
요약
03장. 데이터 모델링
__데이터베이스 유형
____관계형 데이터베이스
____비관계형 데이터베이스
____소규모 데이터베이스
__데이터베이스 트랜잭션
__분산 관계형 데이터베이스
____원본/복제본
____샤딩
____샤딩의 장점과 단점
__스키마 설계
____스키마 정규화
____비정규화
__데이터 인덱싱
____카디널리티
요약
04장. 데이터 계층
__모델 계층
____도메인 주도 설계
____ORM 사용
____작업 단위 패턴 및 데이터 캡슐화
____읽기와 쓰기에서 각기 다른 모델을 사용하는 CQRS
__데이터베이스 마이그레이션
____하위 호환성
____관계형 스키마 변경
____스키마를
이 책에서 다루는 내용
소프트웨어 아키텍트처럼 생각하고 소프트웨어 아키텍처 패턴 분석하기
API 설계, 데이터 스토리지, 데이터 표현 방법 살펴보기
일반적인 아키텍처 구조의 미묘한 차이 살펴보기
마이크로서비스와 같은 패턴 활용과 상호 작용하기
품질 코드 테스트 수행을 위한 테스트 주도 개발(TDD 구현하기
패키지로 재구성할 수 있는 코드 살펴보기
이전 버전과의 하위 호환성 유지 및 순차적인 변경사항 배포하기
이 책의 대상 독자
경험이 많든 적든 상관없이 복잡한 시스템에 대한 직관을 확장하고 공고히 하기를 원하는 개발자, 배우고 성장하고 싶어 하는 개발자, 소프트웨어 아키텍처에 대한 지식을 확장하고 싶어 하는 소프트웨어 개발자를 대상으로 하는 책이다.
이 책에서는 파이썬으로 작성된 코드를 예로 사용한다. 여러분이 파이썬 전문가일 필요는 없으나, 파이썬에 대한 기본 지식이 있다고 가정하고 작성했다.
이 책의 구성
1장, ‘소프트웨어 아키텍처 소개’에서는 소프트웨어 아키텍처가 무엇인지, 왜 유용한지에 대한 주제를 제시하고 설계 사례를 소개한다.
이 책의 1부에서는 소프트웨어를 작성하기 전의 설계 단계를 설명한다.
2장, ‘API 설계’에서는 작업을 편리하게 추상화할 수 있는 유용한 API를 설계하는 기본 사항을 설명한다.
3장, ‘데이터 모델링’에서는 스토리지 시스템의 특성과 애플리케이션에서 데이터 표현을 적절하게 설계하는 방법에 대해 설명한다.
4장, ‘데이터 계층’에서는 저장된 데이터를 처리하는 코드와 목적에 맞게 데이터 생성 방법을 설명한다.
2부에서는 검증된 구조를 재사용하는 다양한 아키텍처 패턴을 다룬다.
5장, ‘The Twelve-Factor 앱 방법론’에서는 웹 서비스에서 Twelve-Factor 앱 방법론 적용 시 유용할 뿐만 아니라 여러 상황에서 활용할 수 있는 좋은 프랙티스를 소개한다.
6장, ‘웹 서버 구조’에서는 서비스 운영과 소프트웨어 설계를 결정할 때 고려해야 할 웹 서비스 및 다