Что же взять вместо django
pip install fastapi
Заметил, что довольно много людей находят в поиске мою заметку про django и быстро уходят, видимо, пришла пора что-то предложить.
1. Проблема не в технологии, а в подходах
Кодовая база django устарела, об этом можно сказать даже не заглядывая в исходники, достаточно посмотреть на скорость развития проекта. Но не код является основной проблемой, а его идеи.
Тут много текста про то, что никто в здравом уме не захочет сегодня взять на себя поддержку старого джанго-проекта потому что он будет запутанный, переусложненный, унылый. Пользователям постоянно приходится бороться с ограничениями фреймворка, и со временем ограничения никуда не исчезают, т.к. см. выше, нет развития. Тут нафантазируйте себе болото сами, и неконтролируемый рост кодовой базы в этом болоте.
2. Что взамен
А на замену фреймворкам пришли микрофреймворки, которые не заставляют вас делать ничего, что вызывало бы ваше негодование. В них есть только необходимые батарейки, и под капотом вы, конечно, не найдете ORM. Тут даже не пахнет никакими ООП-паттернами, все, мода прошла, оставьте сложные сущности, среднестатистический современный сервис — это несколько сотен строк кода с бизнес-логикой.
В мире просто не осталось места для монструозных проектов, потому что люди не хотят страдать. Всем внезапно понравилось, когда бизнес-логика помещается в голове, легко поддерживается и тестируется. Так что заодно можете не тратить время на изучение celery — вы не найдете эту чушь в энтерпрайзе (а стартапы сбегают от попахивающих проектов еще быстрее), равно как ORM.
И что же у нас остается, если говорить о конкретных технологиях разработки.
В экосистеме python
- fastapi/aiohttp — написание апишек сопровождает любые проекты;
- sqlalchemy — как query builder никуда не уходит, но про ORM забудьте;
- отдельно посмотрите на pydantic, httpx.
БД
- Redis — в любом проекте, от которого требуется что-то держать а памяти (весь сколь-нибудь нагруженный энтерпрайз).
- Postgres — вообще каждый проект, просто стандарт.
- Clickhouse — когда появляется задача сохранять много данных.
- Все остальное — достаточно экзотично, даже включая mongodb, используется в специфичных проектах.
Брокеры очередей
- RabbitMQ — не люблю amqp, но это все еще стандарт (если вы никуда не торопитесь).
- Kafka
Не забывайте, что брокер нужен не всегда, очереди без брокеров позволяют сократить инфраструктурные издержки и/или увеличить пропускную способность.
Бонус
Забудьте про pipenv и помножьте на 0.0042 все что слышите про poetry, магии не существует. Освойте docker, docker-compose, почитайте про k8s.
Телеметрия — наше все, научитесь обмазываться метриками в prometheus.
Оставить комментарий