Как стать автором
Обновить
18.57

Микросервисы *

Микросервисная архитектура и все что с ней связано

Сначала показывать
Порог рейтинга
Уровень сложности

Банки.ру: от монолита до микрофронтендов

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 1.8K

Всем привет! Меня зовут Марсель Абдрахманов, я фронтлид в Банки.ру. В статье хочу поделиться нашей историей ухода от монолита к микрофронтендам. У нас в Банки.ру большой отдел веб-разработки, за последнее время мы сильно выросли, ежедневно катим десятки релизов на прод. Расскажу, как мы относительно быстро внедрили микрофронтенды и перешли на архитектуру, которая позволила сократить время доставки обновлений на прод с двух дней до нескольких часов.

Если интересно, прошу под кат.
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 3

Новости

Переходим на российскую Java. Что это такое и зачем нужно?

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 46K

Одна из сложнейших задач этого года — адаптация под новые условия работы с зарубежными вендорами и с open-source сообществом в целом. Open-source не решает все проблемы; в некоторых случаях он их только создает. При этом в российской разработке есть особенности, связанные с импортозамещением. Все вместе это наложило отпечаток на большинство классических программных платформ и языков программирования.

В 2023 году ЕДИНЫЙ ЦУПИС перевел информационные сервисы на отечественную платформу Java с поддержкой ее поставщика. Сейчас в качестве среды разработки и исполнения Java в ЕДИНОМ ЦУПИС используется Axiom JDK Pro. Давайте посмотрим на проблемы этого года глазами разработчиков Java-платформы, а поможет нам в этом Олег Чирухин, деврел в команде этого дистрибутива.

Читать далее
Всего голосов 129: ↑51 и ↓78 -27
Комментарии 91

Баги, которые мы пишем, ищем и исправляем

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 1.6K

Привет! Меня зовут Денис, я - разработчик ПО SEDMAX. Это промышленное ПО для сбора и визуализации данных в энергетике. Как и у всех, у нас бывают баги. Мне бы хотелось поделиться опытом в поиске таких багов, а так же порассуждать на тему того, что необходимо было сделать, чтобы баг не появился. У нас серверная часть написана на go в виде некоторого множества сервисов, поэтому специфика большинства багов будет асинхронное взаимодействие, а код примеров представлен на go.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 7

Разбираемся с работой брокеров, или Что такое гарантия доставки сообщений и как с этим жить…

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 2.6K

В эпоху мгновенной коммуникации, гарантия доставки сообщений становится не просто плюсом, но и неотъемлемой частью репутации сервиса. Как быть уверенным, что ваше сообщение дойдет до адресата именно тогда, когда это нужно? Привет, Хабр, меня зовут Сергей Коник, я работаю в Самолете на должности старшего разработчика и одна из проблем, с которой сталкивались наши команды, – это потеря важных сообщений при общении между сервисами. Расскажу сегодня основы, как с этим работать.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 10

Истории

Туториал по нотификациям через RSocket: от концепции до запуска в продакшн

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 2K

Однажды мы решали задачу разработки системы нотификаций для Альфа-Онлайн — мобильного банка в вебе. Нам было необходимо разработать инструмент по отправке сообщений (нотификаций) со стороны сервера в браузер в любой момент времени, пока клиент онлайн. На стороне Альфа-Онлайн каждый процесс самостоятельно определит дальнейшую судьбу сообщения.

После анализа различных вариантов, мы остановились на WebSocket в связке с RSocket.

Но есть нюанс — информации по RSocket почти нет. Технология относительно новая и просто так сразу на ней не начнешь делать проекты. Для начала нужно изучить теорию, овладеть терминологией и при необходимости, собрать тестовый прототип, чтобы появилось понимание, как RSocket работает изнутри. Но попробуй найди эту информацию.

Этап анализа и разработки превратился в бесконечные ресёрчи с долгим поиском информации по теме. Реальных примеров почти нет, а статьи (как англоязычные, так и русскоязычные) чаще всего приводят просто абстрактные примеры использования. Выжать практику из теоретических статей сопоставимо с попыткой нарисовать сову по мануалу из трех шагов.

Поэтому, когда мы закончили проект, то решили восполнить (или попытаться) этот пробел в русскоязычной среде на реальном примере. Надеемся, что эта статья поможет вам разобраться в применении RSocket over WebSocket и сократит время на погружение :) 

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 1

Как автоматизировать построение архитектурных схем в большой микросервисной системе

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 13K

Если у вас есть большая система, состоящая из множества микросервисов, то вы наверняка задавались вопросом: «Что сделать, чтобы архитектурная схема всей системы была всегда на 100% актуальной?».

Обычно, в компаниях есть свои практики формирования архитектурных схем и ведения документации, что частично решает поставленный вопрос. Но проблема такова, что часто схемы со временем начинают расходиться с реальностью: новые интеграции добавляются, а старые — уходят, а актуализация схем вручную происходит не всегда своевременно.

Чтобы решить проблему мы автоматизировали отрисовку схем опираясь на метаданные IT-систем. Мы создали отдельный микросервис, который этим занимается и назвали его «Architect». О том как это происходит и как работает Architect я расскажу в этой статье, а также дам несколько советов, которые помогут внедрить то же самое у вас в компании.

Читать далее
Всего голосов 31: ↑28 и ↓3 +25
Комментарии 21

Топ-5 фишек UI/UX дизайна платформы контейнеризации

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 3.2K

Привет, Хабр! Меня зовут Иван Вербов, я UI/UX дизайнер команды разработки платформы контейнеризации dBrain.cloud. В разработке дизайна интерфейсов я стремлюсь к балансу между двумя противоположными подходами: строгость и стабильность - легкость и игра.

Хочу поделиться топ-5 фишек, созданных для консоли dBrain, чтобы превратить рутинную работу инженера по обслуживанию кластера в творческую.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Объектно-ориентированный подход при проектировании цифрового офиса сотрудника

Уровень сложности Сложный
Время на прочтение 10 мин
Количество просмотров 3K

На современных проектах объектно-ориентированные подходы могут стать универсальным средством построения API, а файлы  YAML — понятной всем нотацией при интеграции. В новой статье рассмотрены оригинальные объектно-ориентированные подходы для проектирования архитектуры цифрового офиса сотрудника РСХБ.

Например, DDD может быть реализовано аналитиком через онтологическую разметку предметной области. При разработке приложения специалисты РСХБ-Интеха опирались на методику экспрессной визуализации объектов предметного поля через анализ чата в мессенджере с помощью методов математической лингвистики, также применяли адаптированную матрицу Эйзенхауэра для определения важности элементов интерфейса, методику определения границ микросервиса и концептуальную схему построения микросервисного конвейера.

О важности разметки предметного поля при анализе

Как сделать мобильное приложение для сотрудников банка? Не для клиентов, а для сотрудников. Клиенты у всех банков более-менее однородны, их интересует стандартный набор функция: оплата, кредиты, ипотека. А как быть с нуждами сотрудников? И что нужно в приложении сотрудникам именно нашего банка? Да и для чего вообще им нужно приложение?

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 2

Простой production-ready генератор студийных фото продуктов

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 2.7K

В данной статье мы рассмотрим простой пример готового к запуску в продакшн приложения с генеративным пайплайном. Расчет идет на возможность простого масштабирования и распределения вычислений на GPU.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Паттерн Unit of Work в разрезе чистой архитектуры DDD на языке Golang

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 12K

Всем привет! Недавно мне выпала возможность разработать шаблон сервиса, который можно было бы использовать как для монолитной, так и для микро‑сервисной архитектуры. Шаблон должен был придерживаться принципов Domain‑Driven Design (DDD). В этом процессе, я столкнулся с двумя интересными проблемами:

Проблема 1: Сложности обеспечения транзакционности базы данных

При разработке сервисов, часто возникает неотъемлемая потребность в использовании транзакций базы данных для обеспечения целостности данных. Однако, при попытке интегрировать транзакционную логику в традиционные подходы, столкнулся с трудностями. Связывание транзакционной логики с логикой слоя базы данных оказалось нетривиальным и привело к нарушению принципов разделения ответственности. Это, в свою очередь, сказалось на тестировании и поддержке кода.

Проблема 2: Нарушение изолированности слоя

В попытке решить первую проблему, некоторые разработчики переносят работу с транзакциями на уровень слоя приложения, чтобы избежать прямой зависимости от базы данных. Однако, такой подход, несмотря на его обоснование, может нарушить изолированность слоев и противоречить принципам DDD и чистой архитектуры. Это, в конечном итоге, затрудняет поддержку приложения и усложняет его масштабирование.
Эти две проблемы стали отправной точкой для исследования применения паттерна Unit of Work и его роли в обеспечении надежности и консистентности данных в контексте Golang и DDD.

В статье я расскажу о своем подходе к решению этих задач.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 7

KrakenD — новый друг для вашего backend

Время на прочтение 5 мин
Количество просмотров 19K

API gateway KrakenD и его наиболее интересные возможности, как единой сущности в архитектуре приложения, занимающейся оркестрацией запросов. Основная функциональность KrakenD заключается в создании единого API, который действует как агрегатор множества микросервисов в единый эндпоинт, автоматически выполняя за вас и ваше приложение тяжелую работу, такую, например, как: агрегирование, преобразование, фильтрацию, декодирование, регулирование, аутентификацию и авторизацию запросов.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 8

Микрофронтенд для самых маленьких

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 18K

Всем привет. Меня зовут Алексей. Сейчас я работаю frontend-разработчиком в компании Ozon. В свободное время мне нравится читать про новые технологии, фреймворки, а учитывая то, с какой скоростью развивается frontend, я никогда не скучаю. В этой статье пойдет речь о микрофронтах. В частности, мы посмотрим, как их реализовать на самом базовом уровне, разберемся, когда они нужны, а когда даже не стоит смотреть в их сторону. 

Читать далее
Всего голосов 33: ↑32 и ↓1 +31
Комментарии 17

Как не сойти с ума, помечая цели для сбора метрик при мониторинге кластера. Спойлер: Victoria Metrics + Grafana

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3.9K

В начале не было ничего. И создал DevOps кластер Kubernetes и сказал, что это есть хорошо. Но пришли злые программисты и начали требовать информацию о том, сколько ресурсов потребляют их контейнеры.

Статическая vs динамическая конфигурация
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 0

Ближайшие события

One Day Offer от УЦСБ
Дата 17 февраля
Время 10:00
Место
Онлайн

Разворачиваем и заворачиваем в docker проект ASP.NET core на Ubuntu в связке с PostgreSQL

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 7.7K

На просторах интернета заметил, что довольно мало статьей про ASP.NET под Linux. К сожалению, новички вроде меня копаются часами в поисках нужной информации, поэтому в этой статье мы вместе развернём минимальное приложение ASP.NET core под Linux в среде Ubuntu и в связке с PostgreSQL и с котиками на сервере nginx, а также упакуем всё в docker контейнеры. В ходе этой статьи мы разберём некоторые консольные команды для ежедневного пользования.

Приступить к чтению
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 20

Huginn. Мозговой центр PaaS

Время на прочтение 17 мин
Количество просмотров 1.4K

Привет, Хаброжители! Я Саша, Go-разработчик в компании Сбермаркет. Я со своей командой работаю над созданием инструментов PaaS.

PaaS для нас — это не просто микросервисная архитектура. Это целый мир, в котором с самого начала мы почувствовали потребность в создании эффективного хранилища для всех сервисов, чтобы все было наглядно. Именно так началась наша увлекательная история…

Мы автоматизировали процесс регистрации сервисов при их деплое. Теперь каждый раз, когда новый сервис запускается, он регистрируется в нашей системе. Более того, мы расширили этот процесс, чтобы Huginn собирал важные данные о каждом сервисе, такие как манифест приложения при каждом деплое. Вдруг что-то изменится — мы об этом сразу же узнаем и отображаем!

Итак, мы автоматизировали сбор ключевых метрик и метаданных о каждом сервисе в единую систему Хугин. Теперь давайте разберёмся, что именно она умеет и какие проблемы решает.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 0

Надёжность граничных прокси в контейнеризированных приложениях на примере Platform V Synapse Service Mesh

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 691

Привет, Хабр! Меня зовут Данила Трушин, я руководитель направления в СберТехе. Мы с командой развиваем Platform V Synapse Service Mesh — продукт, который обеспечивает надёжную безопасную интеграцию и оркестрацию микросервисов в облаке.

При промышленной эксплуатации иногда можно столкнуться с ситуациями, которые зачастую непросто или невозможно получить на тестовых или испытательных стендах. В ряде случаев такие ситуации касаются производительности и устойчивости компонентов к нагрузке.

Сегодня хочу поговорить о том, как мы решили проблему троттлинга процессора на граничном прокси в случае, когда наблюдаемая нагрузка приложения была ниже заявленной и проверенной на стендах нагрузочного тестирования.

Читать далее
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 2

GraphQL и микросервисная архитектура: объединяем сервисы в федерацию

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 5.2K

Меня зовут Владислав Гончаров, я разработчик в команде Platform V DataSpace СберТеха. Расскажу, как мы решаем вопрос с объединением сервисов в GraphQL и микросервисной архитектуре, которая позволяет разбить любое большое приложение на маленькие сервисы. С одной стороны, их проще написать и поддерживать небольшой командой. А с другой — некоторые задачи теперь требуют выполнения сразу нескольких запросов вместо одного.

Читать далее
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 0

Spring Cloud Gateway. Единая точка входа или отказа: путь к non-blocking API gateway

Уровень сложности Сложный
Время на прочтение 20 мин
Количество просмотров 7.4K

Привет, Хабр! Меня зовут Никита Летов, я техлид бэкенд-разработки сервисов дистанционного банковского обслуживания Росбанка для физических лиц, или как модно сейчас говорить, ретейла. В этом посте я расскажу, что такое входная точка в приложение, когда в ней появляется необходимость и какие вообще задачи решает паттерн API Gateway. Мы рассмотрим классический блокирующий подход на примере гейтвея Netflix Zuul 1.x, проблемы, связанные с его эксплуатацией, а также реактивный Spring Cloud Gateway и сложности перехода на него. В заключение сравним два подхода.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 9

Архитектурные ката: отсекаем всё лишнее в Agile

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 4.3K
image

Один из самых естественных треков развития для программиста – стремиться стать программным архитектором. Проектирование систем – непростое дело, а для того, чтобы построить сложную систему, нужно как быть экспертом-технарём, так и обладать опытом в предметной области. На наработку этих навыков требуется немало времени и усилий. Читая книгу Марка Ричардса и Нила Форда «Фундаментальный подход к программной архитектуре», я нашёл у них метафору «архитектурных ката». В их трактовке ката – это отработка решения для элементарной задачи. Я решил опробовать подход с ката, чтобы прокачать мои навыки проектирования систем.
Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Комментарии 3

Как настроить gRPC на примере микросервисов на Ruby и Go

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 3.3K

Поделимся личным опытом, как у нас получилось организовать взаимодействие микросервисов на Ruby и Go на основе gRPC. Мы расскажем:

- о преимуществах gRPC;
- об особенностях работы с протоколом;
- о трудностях, с которыми может столкнуться начинающий разработчик.

Читать далее
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 0

Вклад авторов