Главная
PUFFERFISH
архитектура, созданная для масштабирования

🤖 Telegram БОТ
🤖 VK БОТ
GitHub
🎯 Цель проекта
- Наглядно показать современный подход к микросервисам, которые выдерживают высокую нагрузку и остаются управляемыми.
- Продемонстрировать, как разделять ответственность между командами, сохраняя единые процессы разработки, тестирования и релиза.
- Показать, как архитектура на Kafka + gRPC упрощает масштабирование, когда число пользователей и сообщений быстро растёт.
- Дать понятный blueprint для компаний, которым нужно быстро подключать новые каналы общения и обогащать ответы.
🧰 Используемые технологии
- Go — единый язык для всех сервисов, строгие линтеры, модульность.
- Apache Kafka — «магистраль» данных между компонентами.
- gRPC / HTTP — быстрые внутренние вызовы и привычные веб-интерфейсы.
- MinIO (S3) — хранение оригинальных файлов и медиаданных.
- Yandex Vision OCR (через doc2text) — распознавание текста с возможностью смены провайдера.
- Keycloak / OIDC — единый слой авторизации (JWT для doc2text и внешних клиентов).
- Docker + GitLab CI/CD + GitHub Actions — воспроизводимые сборки, автотесты и релизы.
- Kubernetes на Linux — целевая среда исполнения, инфраструктура в репозитории
deploy.
🖥️ Используемые машины
| Контрольная плоскость | |
|---|---|
| ОС | Debian 12 |
| CPU | Intel Atom x5-Z8350 |
| RAM | 4 ГБ |
| Диск | 58 ГБ eMMC |
| Рабочий узел | |
|---|---|
| ОС | Debian 12 |
| CPU | Intel Core2 Duo E8400 |
| RAM | 4 ГБ |
| Диск | 224 ГБ SSD |
💡 Предназначение проекта
Платформа автоматически обрабатывает сообщения из Telegram и VK. Она проверяет, есть ли вложения, принимает изображения, запускает распознавание текста и возвращает пользователю человеческий ответ. Вся цепочка — forwarder → normalizer → message-responder → message-responder-ocr → doc2text → response-preparer → sender — позволяет обрабатывать тысячи запросов в минуту, подключать новые каналы и быстро заменять компоненты.
| Компонент | Описание |
|---|---|
| deploy | CI/CD, Kubernetes-манифесты, инфраструктура. |
| doc2text | gRPC‑сервис для распознавания текста через Yandex Vision. |
| message-responder | Решение сценария и подготовка ответов. |
| message-responder-ocr | Проксирование запросов в doc2text. |
| telegram-forwarder | Webhook-приёмник Telegram. |
| telegram-normalizer | Нормализация Telegram-сообщений. |
| telegram-response-preparer | Подготовка ответов для Telegram. |
| telegram-sender | Сервис отправки сообщений в Telegram. |
| vk-forwarder | Webhook-приёмник ВКонтакте. |
| vk-normalizer | Нормализация событий ВКонтакте. |
| vk-response-preparer | Подготовка ответов для ВКонтакте. |
| vk-sender | Отправка сообщений во ВКонтакте. |
⚙️ Технические подробности работы
- Webhook-слой (telegram-forwarder, vk-forwarder) принимает запросы от мессенджеров и публикует сырые payload’ы в Kafka. Логика минимальна, чтобы легко масштабировать вход.
- Нормализаторы (telegram-normalizer, vk-normalizer) скачивают вложения, загружают их в S3 и подготавливают единый JSON с метаданными и ссылками.
- message-responder анализирует сообщение: если есть изображение — мгновенно уведомляет клиента, кладёт заявку в топик OCR и продолжает слушать поток.
- message-responder-ocr + doc2text обмениваются по gRPC. doc2text скачивает файл из S3, конвертирует в Base64, отправляет в Yandex Vision, получает текст и возвращает его по gRPC назад.
- response-preparer + sender настраивают ответ под конкретный канал (Telegram/VK), формируют запросы к API и доставляют результат пользователю. Все сервисы логируют действия, используют единые ENV-префиксы и развертываются через CI/CD.
| Автор Pufferfish |
|---|
![]() +7 926 395‑88‑97 alibekov.dev@gmail.com Telegram@alibekov_dev Резюме на hh.ru |
