Обновить

Как я в одиночку спроектировал API-шлюз на FastAPI, который держит 200к+ запросов в сутки

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров21K
Всего голосов 42: ↑13 и ↓29-14
Комментарии48

Комментарии 48

200к+ запросов в сутки

≈ 2.3 запроса в секунду

Высоконагруженные системы

Разве для Python это не считается "Высоконагруженной системой"?

Даже для Ruby это не много

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

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

Хайлоад можно трогать с двух основных сторон: когда нет денег, и когда есть деньги.

2.3 rps это мука для любого языка

Увидел заголовок и пришел негодовать именно по этой причине

Кидали в базу картинки, исправили, назвали это highload? Ну ок

"Высоконагруженные системы, которые мы заслужили"...

Со щепоткой вайбкодинга!

2 rps и 8 гигабайт данных это даже близко не высоконагруженная система.

Аналитика стала тормозить

  1. Мне даже интересно, как лежащие и никого не беспокоящие блобы одной коллекции могли аффектить работу других коллекций

  2. использовать монгу для аналитики - мощно. Лучше сразу уходить в аналитические бд для этого. Всё равно с ростом проекта к этому придёте.

  3. и вообще хочется блобы в какой-нибудь s3 любого облака закинуть, даже если сам сервис крутится на vps-ке за 500 рублей. Ну реально, 8 гигов у яндекса на хранении стоят 16 рублей. первые 100к чтений бесплатно. следующие 100к - 4 рубля.
    Иногда лучше откупиться от задачи деньгами, чем тратить на неё время. Вспомните, сколько час программиста стоит, и сколько часов он будет тратить на поддержку решения в будущем. Точно облака не будут дешевле?

p.s: 8 гб - это вообще можно всю базу в RAM держать. Очень удивлён, что оно вызвало тормоза.

Про "200к запросов в сутки" тут уже все высказались :)

В конечном счете хранить бинари в S3 - это правильное решение.
А вот разные дб лучше не тянуть в проект без веских оснований. Одного Постгреса вам тут хватило бы по уши. Но уж коль есть желание общаться с MongoDB, то на надо забывать, что там GridFS есть "из коробки".

Раньше это называлось пет-проектом, такое делали безо всяких ЛММ-ассастов и не писали про это такие пафосные статьи. Уровень крепкого джуна.

НЛО прилетело и опубликовало эту надпись здесь

высокопроизводительного сервиса на асинхронном Python

Разве Python может быть в одном предложении с высокой производительностью?

Конечно может! У этого приема даже есть название: оксюморон.

Что меня каждый раз удивляет: человек на хайпе пилит очередную свистоперделку про ИИ, но не догадывается спросить у этого самого ИИ, как это правильно делать.

Вот это хайлоад, вот это я понимаю 😆

Аааа это в сутки а не в секунду, а я подумал сова)))))

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

18 лет челу.

есть люди с опытом более пяти лет ( нет, им не 18 лет), что такое solid даже не знают.

тут человек хотя бы продемонстрировал, что не только формочки шлепать горазд)

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

Ну у меня сын на lua в каких то игрушках кодит лет с 14. Даже платят за это (немного)

Зашел, только чтобы написать коммент. Народ, вы тут совсем охренели? В себя поверили? Бога за м#$ди поймали? Зачем такую струю на вентилятор в человека направляете??? Просто написать по доброму, дескать, высоконагруженное - это столько то, а вы - пет-проект, пуху накинул, человек на хайпе пилит очередную свистоперделку .... Кошмар!!! Что за стадо гоблинов на парнишку накинулось? Идите вы козе в {} с такими комментами, чтоб вас черти в вашем аду драли. Человек в свои 18 сделал то, что вы в свои 35 хрен сделали, а вы завидуете и пишете всякую чушь. Посмотрите на зарубежные форумы и техплощадки - там такого дерьма в разы меньше. Парень, не слушай этих троллей, ты молодец и крут! Так держать. Спасибо за статью!

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

А что в этом плохого? Каждое достижение - это прекрасно. Чем больше будет программистов, тем лучше будет этот мир.

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

Вопросов не было бы, если бы сам автор не употреблял громкие термины. "в одиночку" "хайлод", где хайлода нет.

upd: ещё и уровень статьи выставлен как "сложный". По классификации хабра это:

Статьи, рассчитанные на самую подготовленную аудиторию. Хардкор разработки, машинное обучение, [...] научные и технические выкладки.

Весь баттхёрт от несоответствия заявленного представленному.

Абсолютно непонятен ваш душевный надрыв. Уровень выполненной задачи соответствует курсовой среднего университета, ошибки - тоже абсолютно джуновские. Отличие в том, что раньше такое люди писали сами, а теперь "Я активно использую AI‑ассистентов, но не как «автопилот», а как «оркестр». Моя роль это быть архитектором и дирижером"

Идите вы козе в {} с такими комментами, чтоб вас черти в вашем аду драли.

Скрытый текст

Потому что в 18 лет надо в универе матан и физику учить, а не заниматься ерундой, гоняя джейсончики из одной нейронки в другую и называя себе python-инженером. Во-первых: звание инженера надо подтвердить дипломом о ВО, во-вторых: инженер всё таки занимается делами посложнеее. На текущий момент общество обманывает "юнного гения", он даже это хайлоадом назвал.

Вообще такое ощущение, что эта статься больше для резюме написана, нежели для,вклада в сообщество. Читать её будут такие же 22 летние рекрутерши, которые ничего не понимают и которым надо пустить пыль в глаза. Кукушка хвалит петуха, за то что хвалит он кукушку...

>Человек в свои 18 сделал то, что вы в свои 35 хрен сделали, а вы завидуете и пишете всякую чушь

Тут завидовать нечему. Можно лишь умиляться.

Мне бы его 2 RPS честное слово. Жизнь была бы просто шикарной. А нет, хотел себе хайлоад, теперь вот вместо статей на хабре занимаюсь хайлоадом по полной программе.

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

Статья будет полезна тем, кто работает с FastAPI, микросервисами и думает о надежности и масштабируемости своих систем.

  1. что происходит, когда приложение падает? Ждет, пока вы придете и пнете его? Или все-таки развернут какой-нибудь k8s?

  2. Как это деплоится, как обеспечивается бесшовный деплой.

  3. С помощью каких инструментов происходит мониторинг, алертинг?

  4. т.к. вы говорите про "стабильную работу", как обеспечивается отказоустойчивость БД? Как сконфигурирован кластер и что происходит в случае отказа одной из нод?

Технически, для 18-летнего парня на самом деле сделано неплохо, но это далеко не профессиональный уровень, как вы пытаетесь это выдать. Хороший пет проект, для получения большого количества опыта, это круто на самом деле. Но это не уровень для написания статей на хабре, где многие читатели сами работают с нагрузками выше в тысячи раз.

Лично мне, гораздо интереснее было б почитать со стороны маркетинга, как именно вы добились такой пользовательской базы, что получаете 200к запросов в сутки. Вот это реально крутое достижение для 18 летнего парня и именно об этом вам лучше писать.

Не очень понятно, зачем ты это написал. Два запроса в секунду и база на 8GB - это не хайлоад. Почему уровень сложный, то же не понятно. Из проекта сквозит, что сделал дилетант (один файл .DS_Store говорит о многом). В итоге нахватал минусов. Кажется было бы более продуктивным написать, что новичок самоучка, пытаюсь разобраться, собрал такой пет проект. Подскажите, что поправить или добавить. Думаю реакция была бы гораздо более позитивная

Но это не уровень для написания статей на хабре, где многие читатели сами работают с нагрузками выше в тысячи раз

Ты что за технический ориентир этой площадки, что подобное утверждаешь???

ну давайте пойдем дальше тогда. Пусть каждый школяр пишет о том, как он делал домашку по информатике с помощью chatGPT, раз ориентиров не должно быть.

Ребят, мой сервис держит 31 536 000 запросов в год (1 RPS)

"Правильная база для правильной задачи. MongoDB: Для оперативных, часто меняющихся данных: хранение статусов задач, их параметров и JSON-результатов."

Будь честным. Просто напиши, что хотел поиграться с Монгой. Прикалывают люди, которые пытаются оправдать выбор технологии придуманными аргументами.

Помню коллега на работе хотел позаниматься resume development и затянуть в любой проект GraphQL. Он был падок на что-то новенькое и приводил нереальные, нелогичные и нерациональные аргументы. Но я был непреклонен)

друзья, спасибо всем за такой активный и честный фидбэк!

признаю, что использование термина highload для нагрузки в 2-3 RPS было некорректным. это мой первый опыт с системами такого масштаба, и я еще учусь правильной терминологии индустрии. спасибо, что поправили

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

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

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

Круто, что сделаны выводы!

Действительно, это уровень начинающего, но это хороший уровень для начинающего, в наши-то дни.

Если можно непрошеных советов:

  1. Забудьте про ИИ для написания кода на ближайшие лет 5. Да, это неплохая замена гуглу, но в остальном - это лучший способ сломать себе обучение. Да и при гуглении прорываться через кучу мусора помогает расширять и углублять кругозор.

  2. Ищите возможность поработать с опытными инженерами. В одиночку обучение обязательно упрется в потолок, и похоже он достигнут.

  3. Монга практически всегда и для чего угодно хуже чем постгря. Хотите (почему-то) неструктурированные данные? Храните их JSON'ами/строками/blob'ами к постгре. Но чаще всего оказывается, что просто не нужно такого хотеть)

  4. Питон, безусловно, имеет свою нишу. Но с какими-то существенными нагрузками эта ниша не связана. Хорошая нагрузка начинается в районе 1-10к rps.

  5. Highload - мутный термин, но если пытаться дать ему какое-то значение, то это про уровень нагрузки и/или объема данных, принципиально выходящий за возможности вертикального масштабирования.

Ну назовите честно статью, lowload ..., ну зачем обманывать ... (

Так слона не продашь.

Есть дешевый VPS-сервачок с кодом на пэхапэ в пару страниц и базой MySQL, который прожевывает примерно вдвое бОльшую нагрузку уже четвертый год. Написан и отлажен за пару вечеров

Автор даже статью чатом генерал))

Ps посмотрите на гитхаб - все вопросы к компетенции этого "дирижёра агентами" отпадут моментально

200к в день это разве много?

У меня был проект на 48 000 000 запросов в день, и к таким костылями не приходилось обращаться. Все куда проще. Очереди, шардирование, кластеризация, оптимизация low query

Как минимум спасибо этой статье должны сказать все эти спецы, которым наконец-то дали шанс сказать, что у них больше

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации