# Платформа для разработки микросервисов B-Cloud ## Какую проблему мы решаем? Для создания и поддержки простого микросервиса сегодня необходимо развернуть и объединить в единое окружение множество систем, обеспечивающих его работоспособность: * Оркестрацию контейнеров: Kubernetes * Хранение исходного кода: Gitlab * Хранение образов: Harbor * Непрерывную интеграцию и доставку кода: GitLab CI * Проверку качества и статический анализ кода: SonarQube * Хранение секретов: Vault * Хранение логов: OpenSearch * Мониторинг: VictoriaMetrics + Dynatrace * Трейсинг: Dynatrace А теперь представьте, что таких микросервисов тысячи и необходимо обеспечить их консистентность, мониторинг работоспособности и непрерывное развитие! Специально для этого в банке создается платформа B-Cloud, задача которой решить проблемы описанные выше. Можно сказать, что платформа — это технологический фундамент, на котором строится весь IT в банке. ## Стандарты В большом банке со сложной архитектурой они имеют особое значение. Как говорится, лучше безобразно, но однообразно. Это, конечно, шутка, но при больших объёмах очень важно находить баланс между однообразием и увеличением энтропии — прежде всего для того, чтобы система не превратилась в хаос и у нас не было огромного количества технологий и языков. Одна из важнейших миссий платформы: стандартизация подходов разработки, тестирования и эксплуатации сервисов. ## Платформа B-Cloud Нашу платформу можно представить в виде нескольких слоёв. В самом низу находится железо — базовая инфраструктура. Это серверы, системы хранения данных, сеть. На основе базовой инфраструктуры строится вычислительный слой. Это платформы виртуализации и оркестрации. У нас три дата-центра и несколько кластеров Kubernetes. Все приложения с микросервисной архитектурой запускаются в них. Выше располагается сервисный слой. Это различные сервисы, базы данных, кеши, очереди — всё, чем могут пользоваться прикладные сервисы в своей работе. И на самом верху находятся все микросервисы и компоненты, которые мы создаем. ## Как платформа помогает создавать микросервисы Для Go, .Net и Java у нас есть языковая платформа. Это генератор сервисов, при запуске которого вы получаете созданную под ваши требования заготовку проекта, со всеми зависимостями, библиотеками, скриптами сборки. Также формируем Dockerfile, пайплайны и helm-чарты. Созданный сервис разворачивается в GitLab и готов для дальнейшей работы. ## Сборка и деплой приложений Для сборки и тестирования сервисов используются пайплайны Gitlab CI. Для деплоя и синхронизации состояния мы прибегаем к практикам GitOps через ArgoCD. У нас есть сложные большие пайплайны для всех языков, используемых в Банке. Сейчас мы разрабатываем набор готовых пайплайнов, чтобы разработчику осталось только запустить джобу. Пайплайны позволяют проверить качество кода, провести автоматизированное тестирование кода и развернуть сервис в dev/test окружении. После успешного окончания проверок на тестовых окружениях, мы можем инициировать развертывание сервиса в продакшн. ## Портал разработчика Интерфейс платформы предоставляет разработчикам информацию о всех развернутых сервисах и сокращает количество заявок в команду поддержки. Позволяет управлять окружениями, информационными системами, отслеживать потребление ресурсов, а также, получить доступ ко всем компонентам платформы через единую аутентификацию и авторизацию. ## Мониторинг и телеметрия Мы очень любим мониторинг и телеметрию и вкладываем в неё много ресурсов, потому что наша платформа — очень сложная. В Bereke Bank над IT работают сотни человек, потому что компонентов действительно очень много. Нам, как платформе, нужно предоставлять продуктовым командам достаточное количество информации, которое поможет им понять текущее состояние, проанализировать работу и спрогнозировать работу в будущем. Что мы вкладываем в понятие телеметрии? Это стандартный набор: метрики, трейсинг, логи и continuous profiling.