ЧоПочом | AI-маркетплейс 4.0 | Дневник стартапа
37 subscribers
99 photos
8 videos
2 files
91 links
Ежедневные заметки о создании нашего стартапа - AI-маркетплейса ЧоПочом | www.chopochom.com

Присоединяйтесь, будем менять мир e-commerce вместе.

Вопросы @dj_petrovich
Download Telegram
День 117 :: Почему PostgreSQL замедляет наш MVP, но это того стоит 🐘💡

Если бы стартапы были кулинарией, то переход с MySQL на PostgreSQL — это как поменять газовую плиту на молекулярную кухню. Всё сложнее, дольше, но результат... Когда-нибудь он будет фантастическим. А пока объясняем, почему мы «допиливаем» и терпим.

---

Почему PostgreSQL задерживает наш MVP?

1. «Мы учимся заново готовить»
Раньше мы жили в уютном мире MySQL, где JOIN-ы были простыми, а запросы — предсказуемыми.

Теперь — погружаемся в PostgreSQL с его:
- CTE (Common Table Expressions) — это как SQL на стероидах.
- Оконными функциями — чтобы делать аналитику в одном запросе.
- JSONB — потому что NoSQL внутри SQL это круто (и сложно).

Итог: Пишем запросы в 2 раза дольше, но они в 10 раз мощнее.

---

2. «Микросервисы требуют магии»
Наш сервис — это не монолит, а оркестр из микросервисов. PostgreSQL тут — дирижёр, который должен:
- Синхронизировать данные между сервисами без конфликтов.
- Обрабатывать сложные JOIN между 100+ таблицами (спасибо, что вообще есть).
- Масштабироваться так, чтобы не упасть при первом же наплыве заказов.

Пример: Запрос для расчёта оптимального маршрута курьера в реальном времени — это не SELECT * FROM orders. Это 15 вложенных подзапросов, 3 оконные функции и молитва.

---

3. «Тестирование — это ад»
Раньше в MySQL мы проверяли запросы за 5 минут. Теперь:
- EXPLAIN ANALYZE — чтобы понять, почему запрос тормозит.
- Индексы-призраки — то создашь, то удалишь, а они всё равно не работают.
- Репликация и шардирование — потому что «надо сразу делать как у взрослых».

Почему мы не откажемся от PostgreSQL?

1. Сложные запросы = гибкость
- Геоданные — ищем ближайших курьеров через PostGIS.
- Полнотекстовый поиск — чтобы пользователи находили «крымский сыр» даже с опечаткой.
- Триггеры и процедуры — автоматизируем всё, что можно.

2. Надёжность > скорость
MySQL падал при 1000 одновременных запросов. PostgreSQL держит удар даже при 10 000.

3. Будущее уже здесь
Когда мы масштабируемся до уровня Alibaba (а мы масштабируемся!), PostgreSQL позволит:
- Горизонтально масштабировать базу через Citus.
- Работать с Petabytes данных без переписывания кода.
- Строить real-time аналитику прямо в БД.

---

Что в итоге?
Да, мы тормозим. Но только потому, что:
- Пишем не «костыли», а архитектуру на 5 лет вперёд.
- Учимся работать с инструментом уровня Enterprise.
- Готовимся к тому, что наш MVP превратится в монстра с 500 000 RPS.

P.S. Если бы Илон Маск спешил, SpaceX до сих пор запускала бы ракеты на MySQL.

@achopochom — закулисье создания стартапа🦄

#стартап #PostgreSQL #MVP #техдолг #микросервисы
День 123 :: RabbitMQ или Как очереди спасают микросервисы от апокалипсиса 🐇💥

Представьте: вы открываете кофейню, ставите 10 бариста и кричите: «Кто первый успел — тот и готовит!».

Хаос? Именно так работают микросервисы БЕЗ RabbitMQ.

А теперь — почему мы не запускаемся без него.

Раньше наши сервисы общались напрямую: «Эй, payment-service, обработай платёж!». Если он занят — ошибка.

Теперь всё иначе:
- Запросы падают в очередь и ждут, пока сервис освободится.
- Асинхронность — можно отправить 1000 задач, и они выполнятся когда-нибудь (но точно выполнятся).
- Retry-логика — если сервис упал, RabbitMQ попробует ещё раз. И ещё. И ещё.

Наш MVP должен обрабатывать заказы, даже если inventory-service грузится 5 секунд. Сохранять регистрации, даже если auth-service временно мёртв. Отправлять уведомления, даже если notification-service ушёл на обед.

Без RabbitMQ это выглядит так:

Пользователь → "Оплатил заказ!" → Сервис упал → "Где мой заказ?!" → 1 звезда в рейтинге.

С RabbitMQ:

Пользователь → "Оплатил заказ!" → Задача в очереди → Сервис ожил → Всё ок.


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


Почему мы не можем «допилить потом»?

1. Без очередей — нет масштаба
- 1000 заказов в секунду убьют сервисы, если они не умеют ждать.
- Отказоустойчивость — если payment-service падает, заказы не пропадают, а ждут в очереди.

2. Реальные примеры апокалипсиса
- Uber: В 2014 их монолит падал при скачках спроса. Перешли на микросервисы + очереди — выжили.
- Netflix: Без RabbitMQ их 150+ млн пользователей остались бы без сериалов.


Когда наш MVP вырастет до уровня Amazon, RabbitMQ позволит:
- Дробить задачи между сотнями воркеров.
- Балансировать нагрузку в реальном времени.
- Сохранять данные, даже если половина серверов горит.


Это ещё одна технология из-за которой мы тормозим. Но только потому, что мы строим систему, которая не сломается при первом же наплыве пользователей.

Важно научить микросервисы работать в команде, а не драться за ресурсы.

Ну и конечно мы готовимся к тому дню, когда наш MVP получит 500 000 заказов за час.

@achopochom — закулисье создания стартапа🦄

#стартап #RabbitMQ #очереди #масштабирование #микросервисы