Обновить
80.28

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

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

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

Опыт составления HLD-документации по нотации C4

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

Привет! Меня зовут Алина, я работаю техническим писателем в компании Quadcode. В этой статье хочу поделиться опытом верхнеуровневого описания архитектуры системы с использованием структуры C4. Небольшая оговорка: предпринятые шаги включают в себя определенные отходы от канонической нотации в угоду удобству и особенностям системы.

Для справки:

HLD (high-level design) – верхнеуровневое описание архитектуры системы, где представлены основные компоненты и их взаимодействия. 

LLD (low-level design) – низкоуровневое детальное описание каждого из компонентов системы.

Читать далее

Как внедрить Contract-First OpenAPI и как устроен центр авторизаций

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

Переходим к докладам по backend с IT-конференции ЮMoneyDay.

Первый кейс о том, как мы внедряли Contract-First. Описали процесс перехода от Сode-First к написанию OpenAPI-спецификаций и генерации кода по ним.

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

Смотреть доклады по backend

Доводим распределённые действия до конца с использованием простейшего паттерна Saga

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

Привет! Меня зовут Иван, я занимаюсь бэкенд-разработкой в Ozon: пишу микросервисы на Go для личного кабинета продавца. В прошлом году мы запустили новый процесс регистрации продавцов, в котором задействовано сразу несколько микросервисов. В нём стало больше шагов, при этом каждый из них выполняется в разных микросервисах. Поэтому мы задались вопросом: «А что будет, если один из шагов упадёт?».


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


image

Читать дальше →

REST, что же ты такое? Понятное введение в технологию для ИТ-аналитиков

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

Проектирование и работа с REST-сервисами стали повседневными задачами для многих аналитиков. Однако мы часто встречаемся на работе с различными или даже противоречащими друг другу трактовками таких понятий, как REST, RESTful-сервис, RESTAPI.

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

Выясним, почему существует терминологическая путаница вокруг REST и как нам научиться лучше понимать коллег.

Поговорим о том, как связаны HTTP и REST. А также почему REST противопоставляют SOAP.

Читать далее

Распутывание микросервисов или балансировка сложности в распределенных системах

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

Эта статья является переводом материала «Untangling Microservices, or Balancing Complexity in Distributed Systems».

Расцвет микросервисов закончился. Uber преобразовывает тысячи микросервисов в более управляемое решение [1]; Келси Хайтауэр предсказывает, что будущее за монолитами [2]; и даже Сэм Ньюман заявляет, что микросервисы никогда не должны быть выбором по умолчанию, а скорее крайним средством [3].

Что происходит? Почему так много проектов стало невозможно поддерживать, несмотря на обещание микросервисов простоты и гибкости? Или все-таки монолиты лучше?

В этом посте я хочу ответить на эти вопросы. Вы узнаете об общих проблемах проектирования, которые превращают микросервисы в распределенные большие комки грязи (distributed big balls of mud), и, конечно же, о том, как их избежать.

Читать далее

Сравнение php-fpm, nginx-unit и laravel-octane

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

Сравнение производительности php-fpm, nginx-unit и laravel-octane - что выбрать для разработки микросервисов.

Читать далее

Как мы создаем микросервисные проекты с нуля

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

Считается, что запуск микросервисов изначально затратнее по времени, чем монолит, и наш опыт это подтверждает. Однако, если следовать проверенным процессам, эти затраты можно минимизировать. Делюсь лучшими практиками и составляю чек-лист запуска.

Читать далее

Безопасность Kubernetes — это просто

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

Привет, Хабр!

Эта статья - расшифровка доклада с QIWI Server Party

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

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

В основном взломы происходят по недосмотру конфигурации оборудования, операционных систем и ПО. Хакеры, пользуясь случаем, ловят личную информацию и деньги с банковских счетов. Противостоят им добрые дяди из отдела безопасности, которые защищают приложения и кластера. Я бы хотел включиться в роль такого доброго дяди и подробно рассказать, как обеспечить внутреннюю и внешнюю безопасность Kubernetes и приложений, находящихся в нем.

Читать далее

Микрофронтеды: достоинства, недостатки и нюансы

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

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

Читать далее

CQRS на golang

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

Сегодня рассмотрю архитектурный паттерн CQRS и его возможное место в вашей архитектуре. Также осуществим его реализацию на языке golang.

Читать далее

Публикация Spring Boot приложения в GitHub Packages с помощью GitHub Actions для самых маленьких

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

Сегодня я расскажу вам как можно опубликовать своё Spring Boot приложение в GitHub Packages с помощью GitHub Actions. Вот так. В общем-то всё. Вот. Спасибо за внимание.

Читать далее

Система заметок с нуля. Часть 5: знакомство с объектным хранилищем MinIO и разработка микросервиса на Golang

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

В первой части мы спроектировали микросервисную архитектуру.

Во второй части разработали RESTful API Service на Golang cо Swagger и авторизацией.

Третья часть была посвящена знакомству с графовой БД Neo4j и работе над микросервисами CategoryService и APIService.

Четвертая часть была посвящена разработке микросервисов.

Мы продолжаем создание системы заметок. На этот раз посмотрим на разработанный File Service, который работает с хранилищем MinIO. Но сначала разберёмся с самим хранилищем и его настройкой.

Читать далее

Как мы Neo4j к Helidon прикручивали

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

Идея поэкспериментировать с интеграцией Neo4j с Helidon возникла вполне естественно.

Neo4j — графовая система управления базами данных с открытым исходным кодом, реализованная на Java. По состоянию на 2015 год считается самой распространённой графовой СУБД. (Википедия, 21.10.2021)

Neo4j написана на Java и доступна из ПО, написанного на других языках с использованием языка запросов Cypher, через транзакционную конечную точку HTTP или через двоичный протокол «bolt». Neo4j в настоящее время является стандартом де-факто для графовых баз данных, используемых во многих отраслях.

Вообще, в се началось с небольшого разговора с Michael Simonis, одним из авторов Spring Data Neo4j 6 и сопровождающим Neo4j-OGM. Мы спросили Михаеля, что он думает о том, как Helidon и Neo4J могут работать вместе. Менее чем через час Михаель прислал мне ссылку на этот репозиторий с полнофункциональным примером для Helidon MP и Neo4j SDN.

Читать далее

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

Webpack Module Federation — микрофронтенд на современных технологиях (часть 2) – deep dive

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

По мотивам вопросов из предыдущей статьи мы решили написать вторую часть и рассказать, что удалось сделать еще.

На повестке дня:

Роутинг хостового приложения (React/Vue Routing внутри Angular)

Полноценные адаптеры для работы удаленных плагинов

Использование сервисных модулей в рантайме

Читать далее

Система заметок с нуля. Часть 4: разработка микросервисов NoteService, TagService и UserService

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

Продолжаем разрабатывать систему заметок с нуля.

В первой части мы спроектировали микросервисную архитектуру.

Во второй части разработали RESTful API Service на Golang cо Swagger и авторизацией.

Третья часть была посвящена знакомству с графовой БД Neo4j и работе над микросервисами CategoryService и APIService.

На этот раз мы займёмся разработкой NoteService и TagService. Также посмотрим на изменения в APIService. Подробности в видео и текстовой расшифровке под ним.

Читать далее

Гетерогенные транзакции на примере Kafka vs. RDBMS

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

Данный текст описывает общесистемные подходы, используемые при работе с брокером сообщений Kafka, и общие архитектурные подходы, применяемые при работе с системами, имеющими несовместимые транзакционные модели.

Читать далее

Разработка системы заметок с нуля. Часть 3: знакомство с Neo4j, работа над микросервисами CategoryService и APIService

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

Мы продолжаем разрабатывать систему заметок с нуля. В третьей части серии материалов мы познакомимся с графовой базой Neo4j, напишем CategoryService и реализуем клиента к новому сервису в APIService.

В первой части мы спроектировали систему и посмотрели, какие сервисы требуются для построения микросервисной архитектуры.

Во второй части мы спроектировали и разработали RESTful API Service на Golang cо Swagger и авторизацией.

Теперь разработаем сервис управления категориями CategoryService. Категории мы делаем в виде дерева с большой вложенностью, в теории — бесконечной. Сервис будем разрабатывать на языке Python, а в качестве хранилища используем Neo4j.

Читать далее

Микросервисы глазами аналитика

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

Расскажу про системы с микросервисной архитектурой (MSA). Как они устроены, как я их анализировала, какие увидела проблемы и преимущества.

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

Читать далее

Разработка системы заметок с нуля. Часть 2: REST API для RESTful API Service + JWT + Swagger

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

Продолжаем серию материалов про создание системы заметок. В этой части мы спроектируем и разработаем RESTful API Service на Golang cо Swagger и авторизацией. Будет много кода, ещё больше рефакторинга и даже немного интеграционных тестов.

Подробности в видео и текстовой расшифровке под ним.

В первой части мы спроектировали систему и посмотрели, какие сервисы требуются для построения микросервисной архитектуры.

Читать далее

Разработка системы заметок с нуля. Часть 1: проектирование микросервисной архитектуры

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

Данный проект рассматривается как pet-project. Любую критику и советы готов увидеть в комментариях.

Это моя фактически первая статья на хабре за долгое время, последняя была написана очень много лет назад, если что-то не так - напишите в личные сообщения - я все исправлю.

Репозиторий с исходным кодом: https://github.com/theartofdevel/notes_system

Видео версия: https://www.youtube.com/watch?v=Txi95RQPRP0

Под катом текстовая расшифровка.

Читать далее