gRPC
Проблематика
Многие крупные компании сталкиваются с проблемой быстрого роста количества пользователей на своих платформах. И даже использование микросервисной архитектуры не всегда помогает справиться с увеличением нагрузки. Самым простым подходом к решению этой проблемы было бы использование стратегии горизонтального или вертикального масштабирования. Но как быть, если максимальное количество инстансов достигнуто и больше нет свободных ресурсов для расширения, а безопасностью жертвовать мы не можем?
Образ решения
В такой момент требуется разработка нового решения, универсального для любого сервиса, который будет основан на протоколе gRPC (HTTP 2.0), обеспечит высокую скорость обработки запросов и должный уровень безопасности. Решение должно быть гибким и масштабируемым, чтобы соответствовать растущим потребностям бизнеса и поддерживать высокие нагрузки.
Вам предстоит провести исследование и предложить свою реализацию сервиса/микросервиса, работающего по стандартам СТО БР ФАПИ.СЕК с реализацией на протоколе gRPC. Создайте высокоэффективный и безопасный сервис, который будет работать в высоконагруженных системах.

  1. Вы можете (и даже должны) сами определить proto3-сущности для запросов от клиентов.
  2. Сервис должен работать по стандарту СТО БР ФАПИ.СЕК.
  3. Сервис должен обеспечивать выполнение следующих требований:
ㅤАутентификация и авторизация пользователей:
  • поддержка различных протоколов аутентификации (oAuth 2.0, OIDC, mTLS);
  • авторизация на основании ранее пройденной аутентификации.
ㅤБезопасность:
  • шифрование передаваемых данных (например, SSL/TLS, ГОСТ TLS);
  • подписание сообщений (ГОСТ tls);
  • контроль доступа к ресурсам (Role-based access control).
ㅤИнтеграция с системами информационной безопасности:
  • проверка на антивирус;
  • подключение функции antiDDOS.
ㅤЛогирование и мониторинг, аудит:
  • ведение логов всех важных событий и действий;
  • мониторинг состояния сервера и производительности.
ㅤФорматно-логический контроль:
  • для неструктурированных данных (файлов: размер, расширение);
  • для структурированных данных.
ㅤРасширяемость и масштабируемость:
  • возможность подключения сервисов ИБ без доработки;
  • возможность выбора алгоритма/метода шифрования, подписания;
  • возможность управления tls сертификатом;
  • готовность к работе в кластерной среде.
4. Сервис должен быть написан на одном из двух ЯП: Java или GO.
5. Решение должно представлять из себя микросервис, который будет работать в связке с системой API Gateway.

Ознакомиться с технологией gRPC вы можете по следующим ссылкам:


Для языка Java:
  1. gRPC Official Documentation for Java
  2. Java gRPC Tutorial from Baeldung
  3. Создание и тестирование gRPC сервиса (Spring Boot приложение)
  4. gRPC Official Documentation for Java

Для языка Go:
  1. Go gRPC Quick Start Guide
  2. Как создать простой микросервис на Golang и gRPC и выполнить его контейнеризацию с помощью Docker
  3. Go: Creating gRPC interceptors
  4. gRPC in Go: Unlocking High-Performance Microservices

Обратите внимание, что решение предполагает создание любого сервиса (любой направленности), но с учетом выполнения всех поставленных задач!
Формат загрузки решения
Решение должно быть загружено на платформу не позднее 10 ноября в следующем виде:

  1. краткое описание решения;
  2. ссылка на открытый Github;
  3. ссылка на используемые в решении proto-файлы;
  4. ссылка на презентацию в формате .pdf;
  5. ссылка на развернутое решение (при наличии).
Обращаем ваше внимание, что если ваше решение имеет кодовую часть — оно в обязательном порядке должно сопровождаться SCA (Static Code Analysis). Детальная инструкция по тому, как это сделать, находится здесь → Инструкция по добавлению SCA.
Оптимальный состав команды
  • 3 backend-разработчика;
  • 1 Аналитик;*
  • 1 DevOps/Architect;*
  • 1 DevRel.*
* Привлекать таких специалистов следует в случае полного формирования команды (5 человек), когда полностью закрыты все необходимые компетенции (3 backend-разработчика).
Ограничения
В обязательном порядке использовать:
  • ЯП, обязательный для использования: Java или Go;
  • Docker (для упаковки приложения).
Помните, что любые технологии, использованные вами, должны быть официально доступны на территории РФ и обладать лицензией, позволяющей свободное коммерческое использование!
Критерии оценивания
  1. Оценка качества кода.
  2. Оценка проработки proto-компонентов.
  3. Оценка эффективности и масштабируемости решения.
  4. Оценка интегрируемости решения.
Оператор хакатона
© Все права защищены
Контакты
Email
Технологический партнер