◈ 이 책에서 다루는 내용 ◈
◆ 소프트웨어 아키텍트처럼 생각하고 소프트웨어 아키텍처 패턴 분석하기
◆ API 설계, 데이터 스토리지, 데이터 표현 방법 살펴보기
◆ 일반적인 아키텍처 구조의 미묘한 차이 살펴보기
◆ 마이크로서비스와 같은 패턴 활용과 상호 작용하기
◆ 품질 코드 테스트 수행을 위한 테스트 주도 개발(TDD) 구현하기
◆ 패키지로 재구성할 수 있는 코드 살펴보기
◆ 이전 버전과의 하위 호환성 유지 및 순차적인 변경사항 배포하기
◈ 이 책의 대상 독자 ◈
경험이 많든 적든 상관없이 복잡한 시스템에 대한 직관을 확장하고 공고히 하기를 원하는 개발자, 배우고 성장하고 싶어 하는 개발자, 소프트웨어 아키텍처에 대한 지식을 확장하고 싶어 하는 소프트웨어 개발자를 대상으로 하는 책이다.
이 책에서는 파이썬으로 작성된 코드를 예로 사용한다. 여러분이 파이썬 전문가일 필요는 없으나, 파이썬에 대한 기본 지식이 있다고 가정하고 작성했다.
◈ 이 책의 구성 ◈
1장, ‘소프트웨어 아키텍처 소개’에서는 소프트웨어 아키텍처가 무엇인지, 왜 유용한지에 대한 주제를 제시하고 설계 사례를 소개한다.
이 책의 1부에서는 소프트웨어를 작성하기 전의 설계 단계를 설명한다.
2장, ‘API 설계’에서는 작업을 편리하게 추상화할 수 있는 유용한 API를 설계하는 기본 사항을 설명한다.
3장, ‘데이터 모델링’에서는 스토리지 시스템의 특성과 애플리케이션에서 데이터 표현을 적절하게 설계하는 방법에 대해 설명한다.
4장, ‘데이터 계층’에서는 저장된 데이터를 처리하는 코드와 목적에 맞게 데이터 생성 방법을 설명한다.
2부에서는 검증된 구조를 재사용하는 다양한 아키텍처 패턴을 다룬다.
5장, ‘The Twelve-Factor 앱 방법론’에서는 웹 서비스에서 Twelve-Factor 앱 방법론 적용 시 유용할 뿐만 아니라 여러 상황에서 활용할 수 있는 좋은 프랙티스를 소개한다.
6장, ‘웹 서버 구조’에서는 서비스 운영과 소프트웨어 설계를 결정할 때 고려해야 할 웹 서비스 및 다양한 요소에 대해 설명한다.
7장, ‘이벤트 기반 구조’에서는 즉각적인 응답을 리턴하지 않고 비동기로 응답을 수신하는 시스템에 대해 살펴본다.
8장, ‘고급 이벤트 기반 구조’에서는 비동기 시스템의 고급 사용법과 생성할 수 있는 여러 패턴에 대해 설명한다.
9장, ‘마이크로서비스 대 모노리스’에서는 복잡한 시스템을 해결하는 두 아키텍처를 제시하고 차이점을 소개한다.
3부에서는 다음과 같은 코드 작성 방법을 살펴본다.
10장, ‘테스트와 TDD’에서는 테스트의 기초와 테스트 주도 개발(TDD)이 코딩 과정에서 어떻게 사용될 수 있는지 설명한다.
11장, ‘패키지 관리’에서는 재사용 가능한 코드 부분을 생성하는 과정과 코드를 배포하는 방법을 알아본다.
4부에서는 시스템이 작동하는 동시에 개선 및 변경에 대한 모니터링이 필요한 작업을 설명한다.
12장, ‘로깅’에서는 작업 시스템이 실행하는 작업을 로그로 저장하는 방법을 살펴본다.
13장, ‘메트릭’에서는 전체 시스템이 어떻게 작동하는지 확인하기 위해 다양한 값을 집계하는 방법을 설명한다.
14장, ‘프로파일링’에서는 성능을 향상할 수 있는 코드 작성 방법을 쉽게 알아본다.
15장, ‘디버깅’에서는 코드 실행 중에 에러를 찾고 수정할 수 있는 프로세스를 소개한다.
16장, ‘지속적인 아키텍처’에서는 실행 중인 시스템에서 아키텍처 변경사항을 성공적으로 운영하는 방법을 설명한다.
◈ 옮긴이의 말 ◈
매년 깃허브(Github)에서 발표하는 깃허브 내에서 사용되는 2023년 언어 순위(https://bit.ly/3WwvotY)에 따르면 파이썬은 2015년부터 3위, 2019년부터는 2위다. 언어 순위에서 볼 수 있듯이 파이썬은 쉬운 문법과 가독성, 간결함으로 프로그래밍 입문에 대한 허들이 낮고 누구나 쉽게 빨리 원하는 프로그래밍을 할 수 있어서 웹 서버뿐만 아니라 머신러닝 등 다양한 분야에 활용되고 있다.
실제로, 역자 역시 자바 또는 JVM 기반 언어를 주로 사용하고 있으나 그다음으로 사용하는 언어는 파이썬이다. 파이썬을 Bash 대신 스크립트로 코딩할 때 사용하기도 하고 Airflow나 Flask, FastAPI와 같은 웹 프레임워크 기반에서 코딩할 때 자주 사용하고 있다. 실무자로서 이 책에서 소개하는 아키텍처 패턴은 너무나 자연스럽다. 미리 알아두면 좋은 정보들이 이 책에 수록되어 있다.
또한 프로그래밍하면서 얻을 수 있는 지식뿐만 아니라, 파이썬 오픈소스 솔루션을 사용할 때의 동작 방식에 대한 많은 이해를 제공하고 있다. 즉, 소프트웨어 아키텍처에 대한 기초부터 고급 주제까지 포괄적으로 다룬다. 그렇다고 파이썬 전문가 수준의 지식은 없어도 되니 겁먹지 않아도 괜찮다.
이 책이 좋은 아키텍처를 개발하고자 하는 분들에게 좋은 가이드를 제공하리라 믿는다. 즐거운 코딩이 되길 바란다. 팁을 주자면, 대면 면접 시 아키텍처 관련 질문에 도움이 될 것이다.