Алексей
Меленчук
бэкенд-разработчик PHP · Java · Python · C++
Серверная часть — это то, чего не видно, пока оно не сломалось. Проектирую и собираю её так, чтобы держала нагрузку, переживала смену команды и не требовала переписывания через год.
public/media/melenchuk.webp состав системы · 6 узлов
Спецификация
Шесть узлов, из которых состоит рабочий бэкенд. Слева — зачем узел нужен вам, справа — из чего он собран. Нажмите номер — узел подсветится на схеме.
Состав узлов — черновик. Подтверждены только четыре языка;
остальное Алексей должен вычеркнуть или дополнить до публикации.
Снимается флагом SPEC_CONFIRMED в src/data/parts.ts.
-
Ядро
Место, где живёт логика вашего продукта и принимаются решения. Всё остальное обслуживает его.
PHP 8.3 · Java 21 · Python 3.12 · C++20
-
Хранилище
Где лежат данные и как достать нужное быстро, когда их станет в сто раз больше.
PostgreSQL · MySQL · ClickHouse · Redis
-
Обмен
Как система разговаривает с другими: с приложением, с партнёрами, с платежами, с почтой.
REST · gRPC · GraphQL · Kafka · RabbitMQ
-
Сборка и выкат
Чтобы обновление выходило по кнопке и откатывалось за минуту, а не роняло работу на вечер.
Docker · Kubernetes · GitLab CI · Linux
-
Наблюдаемость
Чтобы об отказе вы узнавали от системы, а не от клиента, который до вас дозвонился.
OpenTelemetry · Prometheus · Grafana · Sentry
-
Каркас
Чтобы через год код можно было менять, а не переписывать с нуля вместе с командой.
DDD · гексагональная · CQRS · микросервисы
Как работаю
-
Сначала контур, потом код
Договариваемся, что система делает и где её границы, до того как написана первая строка. Это дешевле любой переделки.
-
Ничего не держится на мне одном
Схема, документация и воспроизводимая сборка. Следующий разработчик входит в проект без меня — и без археологии.
-
Об отказе узнаёте не от клиента
Метрики, журналы и трассировка ставятся вместе с сервисом, а не после первой аварии в выходные.
Связаться
Опишите задачу в двух абзацах — что за система и что в ней сейчас болит. Отвечу, берусь или нет, и почему.