파이썬 아키텍처 패턴 - 파이썬 소프트웨어 시스템 아키텍처 설계와 유지보수 관리

파이썬 아키텍처 패턴 - 파이썬 소프트웨어 시스템 아키텍처 설계와 유지보수 관리

$44.75
Description
파이썬 언어를 사용한 확장성, 적응성, 모범 사례를 강조하면서 대규모 소프트웨어 시스템을 설계하고 유지 관리하기 위한 포괄적인 가이드를 제공하는 책이다. 소프트웨어 아키텍처, API 디자인, 데이터 모델링, 12가지 요소 앱 방법론을 포함한 필수 주제를 다룬다. 각 장에서는 웹 서버 구조, 이벤트 중심 아키텍처, 마이크로서비스와 모놀리식, 테스트 방법론, 패키지 관리, 지속적인 유지 보수를 자세히 살펴본다. 개발자 면접 준비에도 도움이 될 것이다.

저자

제이미부엘타

저자:제이미부엘타(JaimeBuelta)
20년동안프로그래머로일했으며,10년넘게파이썬개발자로있었다.이기간동안다양한산업분야에있으면서업무의목표달성을위해다양한기술을접했다.항공우주,산업시스템,비디오게임온라인서비스,금융서비스,교육관련툴을개발했다.또한2018년부터『PythonAutomationCookbook』(Packt,2020),『Hands-OnDockerforMicroserviceswithPython』(Packt,2019)포함해실무에서얻은교훈을반영한기술서적을집필하고있다.현재아일랜드더블린에살고있다.

역자:김용환
현재카카오에서지극히평범한개발자로일하고있다.이제까지개발업무를할수있는것은훌륭한IT책들과아낌없이정보를공유해준인터넷블로그,스택오버플로우의도움이컸다고여긴다.그래서자신은물론,누군가에게도움이될수있을것이라는믿음으로책의번역을시작했다.네이버와카카오에서일하면서외국의개발사례를소개하는즐거움이크다.현재카카오사의커머스개발부서에서코틀린기반Spark/파이썬기반Airflow/SpringWebApp을사용해DB덤프샷등데이터엔지니어링및빅데이터기반정산도메인개발/운영업무를수행하고있다.주요번역서로는에이콘출판사에서출간한『Redis핵심정리』(2016),『빅데이터분석을위한스칼라와스파크』(2018),『앤서블시작과실행』(2019)등이있다.좋은책이인생을풍요롭게하는데도움을준다고믿고있으며,심리학,철학,역사관련책을즐겨보고있다.

역자:박지현
기획자에서개발자로,테스트엔지니어에서IT전문잡지및도서편집장으로IT분야전반의업무들을수행했다.관련해서국내외세미나/콘퍼런스를기획하고총괄했으며,지금은실무최전방에서밀려드는업무와씨름하고있는이들에게일말의도움이되고자번역을하고있다.최근번역책으로는『세상을바꾼빅테크SRE챌린지』(픽셀하우스,2023)가있다.

목차


01장.소프트웨어아키텍처소개
__시스템구조정의
__더작은단위로분할
____프로세스간통신
__콘웨이법칙:소프트웨어아키텍처에미치는영향
__애플리케이션예:개요
__소프트웨어아키텍처의보안측면
요약

1부.설계
02장.API설계
__추상화
____올바른추상화사용
____누수추상화
____리소스와액션추상화
__RESTful인터페이스
____좀더실용적인정의
____HTTP헤더와상태코드
____리소스설계
____리소스와파라미터
____페이지네이션
____RESTfulAPI프로세스설계
____OpenAPI명세사용
__인증
____HTML인터페이스인증
____RESTful인터페이스인증
__API버전관리
____왜버전관리를하는가?
____내부및외부버전관리
____시맨틱버전관리
____단순화한버전관리
__프론트엔드와백엔드
____모델-뷰-컨트롤러구조
__HTML인터페이스
____기존HTML인터페이스
____동적페이지
____싱글페이지애플리케이션
____하이브리드접근
__API설계예시
____엔드포인트
____설계및구현검토
요약

03장.데이터모델링
__데이터베이스유형
____관계형데이터베이스
____비관계형데이터베이스
____소규모데이터베이스
__데이터베이스트랜잭션
__분산관계형데이터베이스
____원본/복제본
____샤딩
____샤딩의장점과단점
__스키마설계
____스키마정규화
____비정규화
__데이터인덱싱
____카디널리티
요약

04장.데이터계층
__모델계층
____도메인주도설계
____ORM사용
____작업단위패턴및데이터캡슐화
____읽기와쓰기에서각기다른모델을사용하는CQRS
__데이터베이스마이그레이션
____하위호환성
____관계형스키마변경
____스키마를적용하지않는변경
__레거시데이터베이스다루기
____데이터베이스에서스키마감지
____기존스키마를ORM정의에동기화
요약

2부.아키텍처패턴
05장.Twelve-Factor앱방법론
__Twelve-Factor앱소개
__지속적인통합(CI)
__확장성
__설정
__Twelve-Factor앱의요소
____한번빌드,여러번실행
____의존성과설정
____확장성
____모니터링과어드민
__Twelve-Factor앱컨테이너화
요약

06장.웹서버구조
__요청-응답
__웹아키텍처
__웹서버
____외부의정적파일서비스
____리버스프록시
____로그저장
____고급사용법
__uWSGI
____WSGI애플리케이션
____웹서버와의상호작용
____프로세스
____프로세스수명주기
__파이썬워커
____장고MVT아키텍처
____뷰로요청라우팅
____뷰
____미들웨어
____장고REST프레임워크
__외부계층
요약

07장.이벤트기반구조
__이벤트전달
__비동기작업
__작업세분화
__스케줄작업
__큐의효과
____모든워커의단일코드
____클라우드큐와워커
__Celery
____Celery설정
____Celery워커
____트리거작업
____작업,워커들을연결하기
____스케줄작업
____CeleryFlower
____FlowerHTTPAPI
요약

08장.고급이벤트기반구조
__스트리밍이벤트
__파이프라인
____준비
____기본작업
____이미지작업
____비디오작업
____작업연결
____태스크실행
__버스정의하기
__더복잡한시스템
__이벤트기반시스템테스트
요약

09장.마이크로서비스대모노리스
__모노리스아키텍처
__마이크로서비스아키텍처
__아키텍처선택
____유사한설계에대한참고
__핵심요소:팀커뮤니케이션
__모노리스에서마이크로서비스로의마이그레이션
____마이그레이션도전과제
____마이그레이션진행시네가지고려사항
__서비스컨테이너화
____이미지빌드와실행
____웹서비스빌드와실행
__오케스트레이션과쿠버네티스
요약

3부.구현
10장.테스트와TDD
__코드테스트
__다양한레벨의테스트
____단위테스트
____통합테스트
____시스템테스트
__테스트철학
____훌륭한테스트를설계하는방법
____구조화테스트
__테스트주도개발
____신규팀에TDD소개
____문제및제한사항
____TDD프로세스예
__파이썬의단위테스트소개
____파이썬unittest
____pytest
__외부의존성테스트
____목킹
____의존성주입
____OOP에서의의존성주입
__pytest고급기능
____그룹테스트
____픽스처사용
요약

11장.패키지관리
__새로운패키지의생성
__파이썬의일반적인패키징
__파이썬패키지생태계
____PyPI
____가상환경
____환경준비
____파이썬패키지
__패키지생성하기
____개발모드
____순수파이썬패키지
__사이썬
__바이너리코드가포함된파이썬패키지
__PyPI에패키지업로드하기
__자체사설인덱스생성하기
요약

4부.지속적인운영업무
12장.로깅
__로그기본내용
__파이썬에서로그생성
__로그를통한문제감지
____예상에러감지
____예상하지못한에러수집
__로그전략
__개발중로그추가
__로그제한
요약

13장.메트릭
__메트릭과로그
____메트릭종류
__프로메테우스를사용해메트릭생성하기
____환경준비
____장고프로메테우스설정
____메트릭확인
____프로메테우스서버시작
__프로메테우스쿼리
__메트릭을사용해능동적으로작업하기
__경고
요약

14장.프로파일링
__프로파일링기본내용
__프로파일러유형
__소요시간을알려주는프로파일링코드
____내장cProfile모듈사용
____라인프로파일러
__부분프로파일링
____소수를리턴하는웹서버의예
____전체프로세스프로파일링
____요청마다프로파일링파일생성
__메모리프로파일링
____memory_profiler사용
____메모리최적화
요약

15장.디버깅
__결함감지및처리
__프로덕션환경분석
__프로덕션환경의문제이해
____요청ID로깅
____데이터분석
____로깅추가
__로컬환경디버깅
__파이썬인트로스펙션툴
__로그를사용한디버깅
__브레이크포인트를사용한디버깅
요약

16장.지속적인아키텍처
__아키텍처개선
__예정된다운타임
____유지보수시간
__장애
____포스트모템분석
____프리모템분석
__부하테스트
__버전관리
__하위호환성
____점진적변경
____중단없는배포
__기능플래그
__변경에대한팀워크측면
__요약

출판사 서평

이책에서다루는내용

소프트웨어아키텍트처럼생각하고소프트웨어아키텍처패턴분석하기
API설계,데이터스토리지,데이터표현방법살펴보기
일반적인아키텍처구조의미묘한차이살펴보기
마이크로서비스와같은패턴활용과상호작용하기
품질코드테스트수행을위한테스트주도개발(TDD)구현하기
패키지로재구성할수있는코드살펴보기
이전버전과의하위호환성유지및순차적인변경사항배포하기

이책의대상독자

경험이많든적든상관없이복잡한시스템에대한직관을확장하고공고히하기를원하는개발자,배우고성장하고싶어하는개발자,소프트웨어아키텍처에대한지식을확장하고싶어하는소프트웨어개발자를대상으로하는책이다.

이책에서는파이썬으로작성된코드를예로사용한다.여러분이파이썬전문가일필요는없으나,파이썬에대한기본지식이있다고가정하고작성했다.

이책의구성

1장,‘소프트웨어아키텍처소개’에서는소프트웨어아키텍처가무엇인지,왜유용한지에대한주제를제시하고설계사례를소개한다.
이책의1부에서는소프트웨어를작성하기전의설계단계를설명한다.
2장,‘API설계’에서는작업을편리하게추상화할수있는유용한API를설계하는기본사항을설명한다.
3장,‘데이터모델링’에서는스토리지시스템의특성과애플리케이션에서데이터표현을적절하게설계하는방법에대해설명한다.
4장,‘데이터계층’에서는저장된데이터를처리하는코드와목적에맞게데이터생성방법을설명한다.
2부에서는검증된구조를재사용하는다양한아키텍처패턴을다룬다.
5장,‘TheTwelve-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와같은웹프레임워크기반에서코딩할때자주사용하고있다.실무자로서이책에서소개하는아키텍처패턴은너무나자연스럽다.미리알아두면좋은정보들이이책에수록되어있다.

또한프로그래밍하면서얻을수있는지식뿐만아니라,파이썬오픈소스솔루션을사용할때의동작방식에대한많은이해를제공하고있다.즉,소프트웨어아키텍처에대한기초부터고급주제까지포괄적으로다룬다.그렇다고파이썬전문가수준의지식은없어도되니겁먹지않아도괜찮다.

이책이좋은아키텍처를개발하고자하는분들에게좋은가이드를제공하리라믿는다.즐거운코딩이되길바란다.팁을주자면,대면면접시아키텍처관련질문에도움이될것이다.