Знакомьтесь с Себастьяном Рамиресом, создателем FastAPI, и узнайте о его биографии, мотивации, вдохновении и удивлении по поводу стремительного роста его проекта с открытым исходным кодом.

На GitHub есть график, который красноречивее слов отражает истории проектов. Неумолимо, неделя за неделей, растет на нем число звезд по мере того, как разработчики со всего мира отдают голоса доверия своим любимым инструментам.

В этом бескрайнем море репозиториев один проект не только обогнал признанных Python-фаворитов Flask и Django, но и продолжил триумфальное шествие, оставив позади Gin из Go-программирования, Laravel из PHP-среды, а также Spring Boot и Express из экосистемы Node. Этим проектом стал FastAPI — фреймворк, для которого современный Python не второстепенный, а ключевой элемент дизайна.

Поскольку я сейчас разрабатываю веб-приложение именно на FastAPI, могу поделиться своим впечатлением: он и быстр в работе (с точки зрения производительности), и быстр в освоении (с точки зрения скорости разработки).

FastAPI не был задуман как глобальный проект, призванный перевернуть бэкенд-разработку. Его создатель, Себастьян Рамирес (известный в сети под ником tiangolo), начал свой путь, как и многие программисты: будучи подростком, создавал небольшой сайт для бизнеса родителей, вручную вписывая JavaScript-код в простую HTML-страницу.

Позже ему пришлось изучить Python для освоения онлайн-курса, где нужно было применить ИИ в игре Pac-Man. Курс подтолкнул его к изучению этого языка. Первый опыт заставил его оценить ясность и простоту языка, и он по-настоящему в него влюбился.

С этого момента он работал с разными технологиями — от обработки данных и машинного обучения до создания полноценных серверных систем, часто в условиях стартапов, где новые продукты нужно было выпускать как можно быстрее.

Ему понадобились годы, чтобы перепробовать множество фреймворков. Он спешил создавать свой собственный, постоянно комбинировал разные инструменты, плагины и библиотеки, пытаясь найти подход, который сочетал бы в себе скорость, надежность и понятную структуру. В одном интервью он признался, что долго сопротивлялся желанию создать новый фреймворк — ведь вариантов и так хватало, а он хотел быть абсолютно уверен, что реальная потребность в еще одном фреймворке действительно есть.

В итоге эта потребность возникла именно там, где эволюционировал сам Python. Новые возможности языка, такие как аннотации типов (type hints) и ключевые слова async / await, открыли пространство для создания более совершенных инструментов разработки и эффективной работы с I/O. Однако многие старые фреймворки были созданы еще до появления этих возможностей и несли в себе компромиссы устаревшей архитектуры.

Рамирес понял, что можно создать фреймворк, целиком завязанный на аннотациях типов, моделях данных Pydantic и автоматической генерации OpenAPI-документации.

Если вы опишете FastAPI, как должны выглядеть входные и выходные данные, фреймворк автоматически проверит их корректность, обеспечит вам расширенную поддержку в редакторе кода и создаст интерактивную документацию, не требуя дополнительных усилий.

Суть этой концепции хорошо видна на простом примере:

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
def read_hello() -> dict:
    return {"message": "Hello, FastAPI"}

Пара строк кода — и у вас готовый HTTP-сервис, JSON-ответ и автоматически сгенерированная документация по адресу /docs, поддерживаемая OpenAPI.

Примечание: Эта документация создается автоматически из описания эндпоинтов (путей операций) и аннотаций типов. FastAPI строит для вашего API схему OpenAPI, которая затем используется для запуска пользовательского интерфейса Swagger по адресу /docs.

Для команд, которые работают в современных редакторах кода, это сочетание скорости и ясности создает мощную обратную связь в ежедневной работе.

Однако техническим превосходством успех проекта не объяснить. Многие фреймворки могут похвастаться прочной технической основой. Рамирес уделил равное внимание документации и обучению.

В статье, опубликованной Sequoia, он рассказал о цели своей документации, которая выходила далеко за рамки обычного технического справочника. Он стремился к тому, чтобы эта документация была написана так, как он хотел бы, чтобы ему самому объясняли в процессе обучения, — терпеливо, подробно, охватывая каждую концепцию, необходимую для полного понимания всей экосистемы, даже если эта концепция выходит за пределы FastAPI.

Он даже привлек специалистов по дизайну, чтобы диаграммы и визуальные элементы могли взять на себя часть этой объяснительной нагрузки. Такой акцент на терпеливом объяснении увеличил шансы разработчиков с ограниченным доступом к формальному образованию, что перекликается с его собственным карьерным путем через онлайн-курсы и открытые ресурсы.

Признание сообщества удивило его. В ранних интервью он говорил о FastAPI как об инструменте, который создавал для собственной работы и команд, которыми руководил, не ставя цели превзойти Django или Flask в рейтингах популярности.

Однако фреймворк начал стремительно набирать обороты популярности. В опросах FastAPI стал упоминаться среди самых любимых фреймворков, а крупные компании начали внедрять его в продакшен-системы. По мере увеличения количества пользователей росло и число звезд на GitHub, оставляя позади классические Python-библиотеки, а затем и популярные фреймворки на Go, PHP, Java и Node.

Стремительный рост популярности проекта добавляет забот автору. Многие инструменты с открытым исходным кодом поглощают свободное время разработчика и небольшого круга участников. Рамирес открыто говорил о нагрузке, которая легла на его плечи, и о необходимости продумать режим работы, который позволил бы ему и его команде сосредоточиться на FastAPI, Typer, SQLModel и связанных проектах как на основной, а не о побочной задаче, на выполнение которой остаются ночи и выходные.

Эта потребность напрямую привела к появлению спонсоров, которые теперь поддерживают экосистему. FastAPI Cloud (доступен на https://fastapicloud.com/) создан той же командой, что разрабатывает сам фреймворк. Этот сервис предлагает ответ на вопрос, который рано или поздно встает перед каждым пользователем FastAPI: как развернуть и управлять подобными сервисами в реальном мире.

Сервис стремится стать полноценным рабочим процессом — он объединяет автомасштабирование, HTTPS, мониторинг, инструменты для командной работы, кастомные домены и простое управление средами, обернутое вокруг приложений, которые разработчики уже умеют создавать благодаря команде  fastapi deploy.

Кроме того, FastAPI Cloud обеспечивает основное финансирование для самого FastAPI и связанных библиотек, что помогает поддерживать высокий уровень открытого исходного кода для всех, кто использует этот фреймворк на других платформах.

Наряду с FastAPI Cloud существует Stainless (https://www.stainless.com/), который специализируется на высококачественных API-интерфейсах и SDK.

Stainless принимает на вход спецификацию API и затем генерирует, а также поддерживает идиоматичные SDK на таких языках, как Python, TypeScript, Kotlin и Go, с поддержкой версионирования и ведением логов изменений. Это позволяет командам выпускать и обновлять клиентские библиотеки без бесконечной ручной работы.

Компания уже сотрудничает с крупными игроками в мире ИИ и инфраструктуры, что показывает, насколько сильно современные команды стремятся обеспечить «уровень Stripe» (уровень лидера индустрии) для взаимодействия разработчиков со своими API. В этом смысле Stainless стоит рядом с FastAPI как часть общего стремления к улучшению интерфейсов, созданию более мощных инструментов и обеспечению более плавной интеграции — как для людей, так и для агентов на основе ИИ.

Собрав все это воедино, увидим четкую картину. Python обрел возможности, которые поощряют явное указание типов и асинхронный дизайн. FastAPI появился в нужный момент, чтобы воспользоваться этими возможностями, облечь их в безупречную документацию и сформировать рабочий процесс, который кажется абсолютно естественным для создателей API.

В центре всей этой истории стоит разработчик из Колумбии, который когда-то написал простой сайт для своих родителей, а позже отказался торопиться с созданием фреймворка. Он наблюдал, учился, пробовал множество инструментов и в итоге создал тот, который соответствовал его собственному представлению о том, как должна выглядеть работа.

История FastAPI доказывает, что фокус на опыте разработчика, ясное изложение и внимание к деталям могут превратить личный проект в общий фундамент для команд по всему миру. А еще она показывает, что в экосистеме Python по-прежнему есть место новым голосам, которые определят следующий этап веб-разработки.

Читайте также:

Читайте нас в Telegram, VK и Дзен


Перевод статьи Py-Core Python Programming: Python FastAPI and the Rise of a New Backend Star (Meet Sebastián Ramirez)

Предыдущая статьяКак спроектировать один сервер для обработки 5 миллионов одновременных подключений