기획에서 출시까지 FastAPI 개발 백서

기획에서 출시까지 FastAPI 개발 백서

$42.00
Description
기획에서 출시까지! FastAPI로 실전 프로젝트 전 과정을 경험한다!
실무 흐름 그대로 따라가며 ‘약속 잡기 웹 서비스’ 만들어 보자.
서비스 개발은 단순한 코드 작성이 아니라, 기획부터 배포까지의 전 과정을 이해하고 경험하는 일이다. 이 책은 ‘약속 잡기 웹 서비스’를 직접 만들며 FastAPI를 활용한 실전 개발 흐름을 하나하나 따라간다. 서비스의 요구사항 정의부터 시작해, 테스트 주도 개발(TDD) 방식으로 백엔드를 구현하고, 미리 구현해둔 프런트엔드와의 연동, 구글 캘린더 같은 외부 서비스 통합도 다룬다. 개발한 서비스는 AWS와 깃허브 액션을 이용해 실제로 배포하고, 도메인 설정과 운영까지 경험할 수 있다. 단순히 FastAPI를 학습하는 것에 그치지 않고, 진짜 서비스를 만들며 배우는 실전형 개발 가이드로, 초보자를 위한 설명뿐만 아니라 실무 경험자에게 필요한 배포/운영까지 충실히 담았다.
저자

차경묵

1999년게임개발을시작으로지금까지소프트웨어를만들고있다.2007년에국내최초로연재형Django강좌를게재하며파이썬으로소프트웨어를본격적으로개발하기시작했고,여러스타트업에서개발리더나CTO를역임했다.2003년부터한날이라는필명으로활동하고있으며,최근에는인공지능,학습,코칭에관심을갖고푸딩캠프(https://puddingcamp.com)커뮤니티를개발해운영중이다.재미를중요하게여겨주니어휴머리스타(JuniorHumarista,일명유머꿈나무)를지향하며,기계가할일을사람이하지말자는신조로소프트웨어엔지니어링을한다.게임업계와인터넷,모바일업계를넘나들다최근에는새벽9시에서10시사이에게임회사에출근해글로벌규모의플랫폼엔지니어링을하고있다.

목차

1장우리가만들프로젝트와도구이해
1.1 프로젝트를만들고운영해야하는이유 
__1.1.1 포트폴리오목적으로프로젝트만들기 
__1.1.2 학습목적으로프로젝트만들기 
__1.1.3 프로젝트목표를출시후운영하는것에두자! 
1.2 FastAPI를사용하는이유
__1.2.1 FastAPI란 
__1.2.2 FastAPI특징
1.3 우리가만들프로젝트의목표와계획 
__1.3.1 목표 
__1.3.2 프로젝트계획 
1.4 약속잡기프로젝트에사용하는도구 
__1.4.1 개발도구 
__1.4.2 운영도구

2장셸기본기능익히기
2.1 셸이란 
__2.1.1 셸인터페이스의종류
2.2 경로와디렉터리 
__2.2.1 경로
__2.2.2 디렉터리 
2.3 파일다루기

3장실습환경준비
3.1 비주얼스튜디오코드설치 
__3.1.1 비주얼스튜디오코드내려받기 
__3.1.2 맥OS에설치하기 
__3.1.3 윈도우에설치하기 
3.2 비주얼스튜디오코드화면구성 
3.3 비주얼스튜디오코드기본사용법 
__3.3.1 작업디렉터리지정하기 
__3.3.2 명령어팔레트 
__3.3.3 파일탐색과상태표시 
3.4 비주얼스튜디오코드확장기능 
__3.4.1 확장기능이란 
__3.4.2 외양바꾸기 
__3.4.3 파이썬확장기능설치하기 
__3.4.4 셸사용해보기
3.5 파이썬가상환경 
__3.5.1 파이썬가상환경이란 
__3.5.2 가상환경다루기 
3.6 FastAPI설치하고맛보기
__3.6.1 FastAPI설치하기 
__3.6.2 패키지관리자,Poetry사용하기 
__3.6.3 웹애플리케이션서버:Starlette,Uvicorn 
__3.6.4 HelloWorld

4장약속잡기서비스기획
4.1 약속잡기서비스기능기획 
__4.1.1 서비스개요 
4.2 주요기능 
__4.2.1 캘린더구현:원하는일자선택하기 
__4.2.2 부킹생성:일정등록하기
__4.2.3 사용자별캘린더구분해서보기 
__4.2.4 구글캘린더연동하기 
__4.2.5 소셜로그인구현하기 
4.3 사용자인터페이스요소기획 
__4.3.1 기본화면 
__4.3.2 타임슬롯영역 
__4.3.3 약속잡을정보를입력하는화면 
__4.3.4 약속신청완료화면 
__4.3.5 약속신청할일자가없는경우 
4.4 데이터설계 
__4.4.1 몇가지개념알고가기 
__4.4.2 사용자개체 
__4.4.3 사용자소셜계정개체 
__4.4.4 사용자캘린더개체 
__4.4.5 타임슬롯개체 
__4.4.6 부킹개체 
__4.4.7 약속잡기서비스의개체관계다이어그램으로그려보기

5장데이터모델링
5.1 파이썬에서데이터베이스를사용하는방법:SQLModel 
__5.1.1 SQL과ORM 
__5.1.2 SQLAlchemy 
__5.1.3 Pydantic 
__5.1.4 SQLModel 
5.2 모델링 
__5.2.1 사용자개체:User모델 
__5.2.2 사용자소셜계정개체:OAuthAccount모델 
__5.2.3 사용자캘린더개체:Calendar모델 
__5.2.4 타임슬롯개체:TimeSlot모델 
__5.2.5 부킹개체:Booking모델 
5.3 데이터베이스연결설정 
__5.3.1 SQLite란 
__5.3.2 SQLAlchemy로데이터베이스에연결하는방법 
__5.3.3 SQLAlchemy로세션을생성하는방법 
__5.3.4 데이터베이스연결설정하기 
5.4 Alembic을사용하여데이터베이스마이그레이션 
__5.4.1 Alembic주요개념 
__5.4.2 Alembic설치하고초기화하기 
__5.4.3 Alembic설정하기 
__5.4.4 마이그레이션스크립트생성하기 
__5.4.5 자동마이그레이션(autogenerate)설정해보기 
__5.4.6 마이그레이션스크립트템플릿사용하기 
__5.4.7 마이그레이션스크립트작동확인하기:적용및되돌리기 

6장코드테스트
6.1 테스팅개요 
__6.1.1 테스팅이란 
__6.1.2 테스팅종류 
__6.1.3 테스트더블 
__6.1.4 pytest를사용하여테스팅하기 
6.2 단위테스트실습 
__6.2.1 단위테스트실습 
__6.2.2 문서화테스트알아보기 
6.3 통합테스트실습 
__6.3.1 사용자정보를내려받는API구현하기 
__6.3.2 테스트클라이언트로API테스트하기 
__6.3.3 데이터베이스에사용자생성하고테스트하기 
6.4 pytest의픽스처기능을사용한테스팅 
__6.4.1 테스트코드에픽스처사용하기 
__6.4.2 구현코드에도세션의존성주입하기 
__6.4.3 테스트클라이언트도픽스처로일원화하기

7장회원가입및사용자인증구현
7.1 회원가입테스트코드작성 
__7.1.1 (1)모든입력항목을유효한값으로입력하면계정이생성된다 
__7.1.2 (2)사용자명이유효하지않으면유효하지않다는메시지를담은오류를일으킨다 
__7.1.3 (3)계정ID(username)가중복되면중복계정ID오류를일으킨다 
__7.1.4 (4)이메일주소가중복되면중복메시지를담은오류를일으킨다 
__7.1.5 (5)표시명을입력하지않으면무작위문자열8글자로대신한다
7.2 회원가입API구현 
__7.2.1 (1)Pydantic으로Formdata유효성검증하기
__7.2.2 (2)signupAPI에SignupPayload스키마적용하기 
__7.2.3 (3)응답결과에는username,display_name,is_host만출력하기 
7.3 로그인구현 
__7.3.1 로그인구현에필요한기술 
__7.3.2 로그인API구현하기 
7.4 자기자신의정보를가져오는API구현 
__7.4.1 FastAPI의의존성주입이란 
__7.4.2 자신의정보를가져오는API시나리오 
__7.4.3 쿠키에서인증토큰을가져와인증검사하기 
__7.4.4 실패하는테스트코드로구현검증하기 
7.5 FastAPI캘린더,계정설정페이지구현 
__7.5.1 계정정보변경하기 
__7.5.2 로그아웃구현하기 
__7.5.3 회원탈퇴구현하기

8장사용자별캘린더및예약관리구현
8.1 호스트별캘린더가져오기 
__8.1.1 사용자시나리오 
__8.1.2 호스트인사용자의username으로캘린더정보가져오기 
__8.1.3 존재하지않는사용자의username으로캘린더정보를가져오려고하면404응답반환하기 
__8.1.4 호스트가아닌사용자의username으로캘린더정보를가져오려고하면404응답반환하기 
__8.1.5 host_calendar_detail( )을API로테스트하기
8.2 호스트의캘린더를생성하고변경 
__8.2.1 호스트사용자는유효한캘린더정보를제출하여캘린더를생성할수있다 
__8.2.2 캘린더가있는상황에서추가생성하려고하면422응답반환하기 
__8.2.3 게스트사용자가캘린더를생성하려고하면403응답반환하기
__8.2.4 사용자가변경하는항목만변경되고나머지는기존값유지하기 
8.3 타임슬롯관리 
__8.3.1 호스트사용자는유효한타임슬롯정보를제출하여타임슬롯을생성할수있다 
__8.3.2 유효하지않은타임슬롯정보로생성하려고하면HTTP422응답하기 
__8.3.3 겹치는시간대가있다면HTTP422응답하기 
8.4 예약 
__8.4.1 유효한예약신청내용으로예약생성을요청하면예약내용을담아HTTP201응답하기 
__8.4.2 호스트가아닌사용자에게예약을생성하면HTTP404응답하기 
__8.4.3 없는시간대에예약을생성하면HTTP404응답하기 
8.5 캘린더예약가져오기 
__8.5.1 호스트가자신이예약받은내역을받아보는API구현하기 
__8.5.2 게스트는호스트의캘린더예약내역을월단위로받는다 
__8.5.3 게스트는자신의캘린더예약내역을페이지단위로받는다 
__8.5.4 사용자는특정예약내역데이터를받는다 
8.6 FastAPI캘린더,예약관리 
__8.6.1 호스트는자신에게신청한부킹에대해일자,타임슬롯을변경할수있다 
__8.6.2 게스트와호스트는다른호스트의타임슬롯으로변경할수없다 
__8.6.3 게스트는자신의부킹에대해주제,설명,일자,타임슬롯을변경할수있다 
__8.6.4 여러분을위한작은제안 
8.7 부킹에참석상태정보다루기 
__8.7.1 부킹모델에참석상태필드추가,Enum자료형 
__8.7.2 데이터베이스마이그레이션 
__8.7.3 호스트는자신에게신청한부킹의참석상태를변경할수있다
8.8 파일업로드 
__8.8.1 HTTP파일업로드하기 
__8.8.2 FastAPI에서파일업로드를처리하는방식 
__8.8.3 게스트는자신이신청한부킹에파일을업로드할수있다:연습하기 
__8.8.4 fastapi-storages사용하기 
__8.8.5 게스트는자신이신청한부킹에파일을업로드할수있다:실제해보기 
__8.8.6 업로드관련마이그레이션스크립트생성하기 
__8.8.7 SQLAlchemy의Result객체를다룰때unique( )메서드사용하기

9장운영자페이지에서데이터관리
9.1 운영자페이지와SQLAdmin 
__9.1.1 운영자페이지 
__9.1.2 SQLAdmin이란 
__9.1.3 SQLAdmin설치와설정 
9.2 SQLAdmin기본활용법 
__9.2.1 메타데이터 
__9.2.2 목록페이지
__9.2.3 상세페이지 
__9.2.4 페이지네이션옵션 
__9.2.5 일반옵션 
__9.2.6 양식(form)옵션 
__9.2.7 내보내기옵션 
__9.2.8 모델개별개체표시조정하기 
__9.2.9 모델들에대응하는어드민페이지정의하기 
9.3 메서드오버라이딩을활용하여기

출판사 서평

FastAPI를이용해서비스개발부터출시까지
더쉽고효율적으로학습하고경험한다!

서비스를기획하고만드는것도쉽지않지만,실제로세상에출시하고운영하는일은그보다더많은시행착오와노하우를요구한다.로컬호스트에서구동하는과정에서는드러나지않던문제들이출시하는과정에서드러나기도하고,그에따라장애와복잡도도함께늘어난다.그래서이책은웹애플리케이션서버를구현하는데그치지않고,실제서비스를출시하는과정까지함께다룬다.이때사용하는도구가너무어렵거나복잡하면끝까지완주하기어려운데,그점에서FastAPI는배우기쉽고빠르게결과를확인할수있어실전프로젝트를경험하기에적합하다.
이책은약속잡기웹서비스를하나의프로젝트로삼아,기획부터구현,배포까지의모든흐름을따라간다.1~6장에서는요구사항정의,설계,환경구성등개발에필요한기반을다지고,7~12장에서는본격적인기능구현과프런트엔드및외부서비스(구글캘린더)와의연동을다룬다.13~14장에서는깃허브와AWS를활용한배포와운영방법을살펴본다.전체과정에서테스트주도개발(TDD)과애자일개발방식의일부요소를적용해실제개발현장에가까운흐름을따라가며,각기능이끝날때마다테스트를통해완성도를높여간다.이책한권으로,FastAPI를이용한웹서비스개발과출시전과정을실습중심으로온전히체험할수있다.

CONTENTS
1장.우리가만들프로젝트와도구이해
2장.셸기본기능익히기
3장.실습환경준비
4장.약속잡기서비스기획
5장.데이터모델링
6장.코드테스트
7장.회원가입및사용자인증구현
8장.사용자별캘린더및예약관리구현
9장.운영자페이지에서데이터관리
10장.약속잡기프로젝트에프런트엔드연동
11장.SQLAlchemy지연로딩전략
12장.구글캘린더연동
13장.오류기록과관찰,관리
14장.아마존웹서비스에배포하기

[베타테스터후기]
저처럼생성형AI가생성하는코드로프로젝트를구현하며지식의공백을느낀사람에게이책을강력히추천합니다.과거MCP서버개발당시아키텍처에대한막막함이컸는데,이책에서체계적인해답을찾을수있었습니다.이책은FastAPI문법만알려주는기술서가아닌‘기획부터운영까지’라는현실적인목표를가지고웹애플리케이션의전체사이클을경험하게하는실전지침서입니다.각장을따라가다보면흩어져있던개념들이하나의유기적인흐름으로연결되는것을느낄수있습니다.상세하면서도쉬운설명덕분에비전공자도충분히따라갈수있는로드맵을제시합니다.‘직접개발한서비스를운영할때가장많이성장했다’는저자의경험담은이책의모든것을관통하는핵심철학입니다.이책은독자가그성장을직접경험할수있도록설계된실용적인안내서입니다.
실습환경:MacbookM1Pro
권준혁|취업준비생


FastAPI를실전적용차원에서단계별로차근차근안내한실용적인지침서입니다.실제예제프로젝트를바탕으로FastAPI를사용해볼수있도록구성했으며,AWS에서구현하는방법을단계적으로잘설명합니다.대부분의기술서가새로운기술을소개하기위해서지나치게많이설명하거나생략하는경우를보았습니다.하지만이책은저자의실전노하우를바탕으로적절한난이도로빠르게FastAPI실전에사용할수있는노하우를집약했다고생각됩니다.더불어실전적용에필요한기반기술을적절한분량과난이도로설명한것이이책의장점입니다.개인적으로는FastAPI를실전에사용하는사람(대부분리눅스에익숙한개발자라)이알아야하기에는일부세부내용을중간중간다룬점이책을좀산만하게하는경향이있는것같습니다.전체적으로는FastAPI를따라하면서잘이해할수있게적절히구성되어있다고생각합니다.
실습환경:MacOSVentura13
나영호|임베디드시스템엔지니어


C++게임프로그래머로커리어를시작해서본격적으로파이썬과웹개발을할일이많지않았지만최근에는인공지능이나개인적인필요로간단한웹앱들을개발할일이있었습니다.파이썬은조금씩쓰고있고처음에추천받았던프레임워크가장고여서장고를주로쓰다가최근에는FastAPI를쓰면서그가벼움과편함에감탄하며사용하고있었습니다.그러던차에이책을읽다보니만들던앱을주변사람과공유하기위해고민하던부분이명쾌하게해결되는느낌을받았습니다.특히추가라이브러리를사용해서서버에올리는단계까지차근차근설명하는부분은정말도움이되었습니다.개발초기셋팅에서이미겪었던문제들은이책이있었으면초기학습비용을줄이는데도움이되었겠구나싶어이책이너무늦게나왔다는아쉬움이있었습니다.특히대부분의튜토리얼이동작하는단계에서끝난다면실제서버에서동작하기위해추가로어떤설정과라이브러리들을사용하는지에대한정보는현업이아니라면얻기힘든좋은정보라고생각됩니다.최근에인공지능라이브러리를사용하면서FastAPI를함께사용하는편인데,이렇게만든프로토타입을실제로서버에올리는데도움을많이얻을수있을것같습니다.
실습환경:MacbookM1Pro
오영욱|게임개발자

실제서비스를운영하는개념으로접근한구성자체가좋았습니다.저자가그런의도로기술했음을밝혔음에도초반에는너무상세하다는느낌이들었지만대상독자를감안하면납득할만합니다.다른측면에서생각하니저도잘모르고지나갔던내용을다시확인하고넘어갈수있는기회이기도했습니다.이런부분까지설명했나싶을정도로상당히세밀하게설명하고있어따라가다보면실제서비스를만들고운영하는단계까지이어지는전반적인내용을파악하기좋습니다.개인적으로는최근트렌드인uv가아니라Poetry와venv로설명하는부분이조금아쉽습니다.
실습환경:MacbookAirM3
플라티나|DevOpsKorea서비스엔지니어