역사, 설계, 그리고 미래
역사, 설계, 그리고 미래 (History, Design and Future)
FastAPI는 어디에서 왔을까요? 처음 보면 "몇 주 만에 갑자기 멋져졌다"처럼 보일 수 있지만, 그 뒤에는 오랜 연구·설계·기반 작업이 있었어요. 이 글에서는 그 탄생 배경과 설계 철학, 그리고 앞으로의 방향을 이야기합니다.
출처: 공식문서
얼마 전 한 FastAPI 사용자가 물었어요:
이 프로젝트의 역사가 궁금합니다. 몇 주 만에 갑자기 어디선가 훌륭해진 것처럼 보이는데요 [...]
그 역사의 조금을 여기서 들려드릴게요.
대안들 (Alternatives)
저는 몇 년 동안 복잡한 요구사항을 가진 API를 만들어 왔어요(Machine Learning, 분산 시스템, 비동기 작업, NoSQL 데이터베이스 등), 여러 개발자 팀을 이끌면서요.
그 과정에서 많은 대안을 조사·테스트·사용할 필요가 있었죠.
FastAPI의 역사는 상당 부분 그 전신(predecessors)들의 역사입니다.
Alternatives 섹션에서 말했듯이:
FastAPI는 다른 사람들의 이전 작업이 없었다면 존재하지 않았을 거예요.
그 전에 만들어진 많은 도구들이 그 탄생에 영감을 주었죠.
저는 몇 년 동안 새 프레임워크를 만드는 걸 피해 왔어요. 처음에는 FastAPI가 다루는 모든 기능을 수많은 다른 프레임워크·플러그인·도구로 해결하려고 했죠.
하지만 어느 순간, 이 모든 기능을 제공하는 무언가를 만드는 것 말고는 다른 선택이 없었어요. 이전 도구들의 최고 아이디어를 가져와서, 이전에는 없었던 언어 기능(파이썬 3.6+ 타입 힌트)을 써서 최선의 방법으로 결합하는 거였죠.
조사 (Investigation)
이전 대안들을 모두 사용하면서, 그들 각각에게 배우고, 아이디어를 얻고, 저 자신과 함께 일한 개발자 팀들을 위해 최선의 방법으로 결합할 기회를 가졌어요.
예를 들어, 이상적으로는 표준 파이썬 타입 힌트에 기반해야 한다는 게 분명했어요.
또한 이미 존재하는 표준을 사용하는 것이 최선의 접근이었죠.
그래서 FastAPI 코딩을 시작하기도 전에, OpenAPI, JSON Schema, OAuth2 등의 스펙을 연구하며 몇 달을 보냈어요. 그들의 관계, 겹침, 차이점을 이해하면서요.
설계 (Design)
그리고 나서 사용자로서(개발자로서 FastAPI를 쓰는 입장에서) 갖고 싶은 개발자 "API"를 설계하는 데 시간을 보냈어요.
가장 인기 있는 파이썬 에디터인 PyCharm, VS Code, Jedi 기반 에디터에서 몇 가지 아이디어를 테스트했죠.
마지막 Python Developer Survey에 따르면, 그 에디터들이 사용자의 약 80%를 커버한다고 해요.
즉 FastAPI는 파이썬 개발자 80%가 쓰는 에디터들로 구체적으로 테스트됐다는 뜻이에요. 그리고 다른 대부분의 에디터는 비슷하게 동작하는 편이라, 그 이점들이 사실상 모든 에디터에서 동작해야 합니다.
그렇게 해서 코드 중복을 최대한 줄이고, 어디서나 자동완성과 타입·오류 검사를 받을 수 있는 최선의 방법을 찾았어요.
그 모든 것을 모든 개발자에게 최고의 개발 경험을 주는 방식으로요.
요구사항 (Requirements)
여러 대안을 테스트한 뒤, 그 장점들 때문에 Pydantic을 쓰기로 결정했어요.
그리고 JSON Schema에 완전히 부합하도록, 제약 선언을 정의하는 여러 방식을 지원하도록, 또 여러 에디터에서의 테스트에 기반해 에디터 지원(타입 검사, 자동완성)을 개선하도록, Pydantic에 기여했죠.
개발하는 동안 다른 핵심 요구사항인 Starlette에도 기여했어요.
개발 (Development)
FastAPI 자체를 만들기 시작할 무렵에는 대부분의 조각들이 이미 제자리에 있었어요. 설계가 정의되어 있었고, 요구사항과 도구가 준비되었으며, 표준과 스펙에 대한 지식도 명확하고 생생했죠.
미래 (Future)
이 시점에서 FastAPI와 그 아이디어가 많은 사람에게 유용하다는 건 이미 분명해요.
많은 사용 사례에 더 잘 맞는다는 이유로 이전 대안들보다 선택되고 있어요.
많은 개발자와 팀이 이미 프로젝트에서 FastAPI에 의존하고 있어요(저와 제 팀 포함).
하지만 여전히 많은 개선과 기능이 올 예정이에요.
FastAPI에는 훌륭한 미래가 기다리고 있습니다.
그리고 당신의 도움을 크게 환영해요.