Не супер-подробная, но достаточно интересная статья про полирепо vs монорепо в микросервисах. Автор статьи больше выступает за монорепо, судя по тону статьи — по собственному опыту, так что относитесь к мыслям в статье критически и перености в свой контекст.
https://caylent.com/the-shift-from-polyrepos-to-monorepos
В обсуждениях можете поделиться своим опытом использования моно/поли репозиториев.
https://caylent.com/the-shift-from-polyrepos-to-monorepos
В обсуждениях можете поделиться своим опытом использования моно/поли репозиториев.
Последние несколько лет изучаю вопрос применения теории графов к микросервисам используя различный инструментарий. Идея в том, чтобы формализовать часть свойств микросервисов через мат аппарат графов. Что это дает на практике? Как минимум: возможность автоматизации в выявлении паттернов (циклические зависимости, сильная связанность, рассчет нагрузки и таймаутов), автоматизации соблюдения архитектруных принципов, наглядный knowledge sharing, построение моделей угроз.
Достаточно обширная практическая (с jQAssistant и Neo4j) статья на эту тему:
https://dzone.com/articles/fixing-your-microservices-architecture-using-graph
Достаточно обширная практическая (с jQAssistant и Neo4j) статья на эту тему:
https://dzone.com/articles/fixing-your-microservices-architecture-using-graph
DZone
Fixing Your Microservices Architecture Using Graph Analysis
In this talk, we’ll analyze a microservice system based on Spring Cloud, with jQAssistant and Neo4j.
Пока готовятся видео с архдейз можно посмотреть видео выступления Патрика Куа, соавтора книги Эволюционная архитектура на agiledays 2019 с переводом на русский язык :)
https://youtu.be/DwJE_nBw0Fk
https://youtu.be/DwJE_nBw0Fk
YouTube
Patrick Kua. Создание эволюционирующих архитектур (RU)
В нашей отрасли гарантированы только изменения. Многие современные инструменты, технологии и бизнес-модели скоро перестанут существовать, их заменят новые аналоги. Архитекторы сталкиваются с проблемами проектирования сегодняшних систем, ведь задачи завтрашнего…
Видео с ArchDays с мастерклассом взлома приложения в в докере от Дениса Якимова (@sec_devops и @cloud_sec) и Павла Канна
https://www.youtube.com/watch?v=0_Lb9OVxmbw
https://www.youtube.com/watch?v=0_Lb9OVxmbw
YouTube
ArchDays 2020 • Взлом в Docker и безопасный Gitlab • Денис Якимов, Павел Канн (Swordfish Security)
Денис Якимов, Павел Канн - Ломаем приложение в Docker и строим безопасный пайплайн в Gitlab (мастер-класс)
Мы рассмотрим то, как выглядят уязвимости приложения в Docker на практике. К чему может привести незакрытая дыра и как это можно избежать. Для защиты…
Мы рассмотрим то, как выглядят уязвимости приложения в Docker на практике. К чему может привести незакрытая дыра и как это можно избежать. Для защиты…
Еще одно видео с ArchDays, на этот раз с мастерклассом от Жени Пешкова (@dddevotion) по агрегатам
https://www.youtube.com/watch?v=SaTz4vS_CGE
https://www.youtube.com/watch?v=SaTz4vS_CGE
YouTube
ArchDays 2020 • Агрегаты, мои агрегаты, как приятно о вас думать! • Евгений Пешков (Dodo Eng)
Агрегаты, мои агрегаты, как приятно о вас думать! - Евгений Пешков
Агрегат выглядит простым паттерном, но разработчики не всегда полностью понимают как правильно работать с агрегатом, как находить его границы, как реализовать взаимодействие нескольких агрегатов.…
Агрегат выглядит простым паттерном, но разработчики не всегда полностью понимают как правильно работать с агрегатом, как находить его границы, как реализовать взаимодействие нескольких агрегатов.…
Видео с мастер-класса Кирилла Ветчинкина по CDC тестам в микросервисной архитектуре
https://www.youtube.com/watch?v=dqPEeWJCshk
https://www.youtube.com/watch?v=dqPEeWJCshk
YouTube
ArchDays 2020 • CDC тесты в микросервисной архитектуре • Кирилл Ветчинкин (microarch.ru)
CDC тесты в микросервисной архитектуре - Кирилл Ветчинкин
Если вы уже работаете с микросервисами, то наверняка задавались вопросом чем тестирование в микросервисной архитектуре отличается от привычного классического подхода. Так же наверняка вы сталкивались…
Если вы уже работаете с микросервисами, то наверняка задавались вопросом чем тестирование в микросервисной архитектуре отличается от привычного классического подхода. Так же наверняка вы сталкивались…
Видео обсуждения культурных и процессных особенностей, связанных с микросервисами
https://www.youtube.com/watch?v=GBrxFWamoak
https://www.youtube.com/watch?v=GBrxFWamoak
YouTube
ArchDays 2020 • Панельная дискуссия: культурные и процессные трудности работы с микросервисами
ArchDays 2020 • Панельная дискуссия: культурные и процессные трудности работы с микросервисами
Александр Поломодов, Tinkoff
Денис Якимов, Swordfish Security
Евгений Истомин, Memex.Team
Илья Волынкин, Газпром-Медиа Холдинг
Сергей Баранов, ArchDays
Ссылка…
Александр Поломодов, Tinkoff
Денис Якимов, Swordfish Security
Евгений Истомин, Memex.Team
Илья Волынкин, Газпром-Медиа Холдинг
Сергей Баранов, ArchDays
Ссылка…
Что такое распределенный монолит?
Все просто. Монолит может быть хорошим, модульным, построенным с учетом модели предметной области, где модули максимально автономны (имеют слабую связанность), имеют одну цель и при этом имеют высокое сцепление.
Возможно и обратное - тотальные зависимости всего от всего, именования сущностей как попало, любое мелкое изменение - как шрапнелью. С кучей соответствующих проблем.
И в там и там в монолите вызовы - локальные.
Если «распилить» монолит, то получим распиленный монолит, то есть по сути то же, что было, только с удаленными вызовами.
В первом случае - неплохой набор потенциальных микросервисов (с поправкой на инфраструктуру).
Во втором случае - полный фарш проблем. И вот именно этот случай в народе принято называть распределенным монолитом.
Чтобы так не произошло - сначала строим модель предметной области, получаем стратегический дизайн и начинаем двигаться в его сторону постепенно перенося код из монолита в нужные места микросервисов в соответствии со стратегическим дизайном (например в DDD). Или не микросервисов, а модулей все в том же монолите, постепенно двигаясь к первому варианту монолита - хорошему и модульному =)
Все просто. Монолит может быть хорошим, модульным, построенным с учетом модели предметной области, где модули максимально автономны (имеют слабую связанность), имеют одну цель и при этом имеют высокое сцепление.
Возможно и обратное - тотальные зависимости всего от всего, именования сущностей как попало, любое мелкое изменение - как шрапнелью. С кучей соответствующих проблем.
И в там и там в монолите вызовы - локальные.
Если «распилить» монолит, то получим распиленный монолит, то есть по сути то же, что было, только с удаленными вызовами.
В первом случае - неплохой набор потенциальных микросервисов (с поправкой на инфраструктуру).
Во втором случае - полный фарш проблем. И вот именно этот случай в народе принято называть распределенным монолитом.
Чтобы так не произошло - сначала строим модель предметной области, получаем стратегический дизайн и начинаем двигаться в его сторону постепенно перенося код из монолита в нужные места микросервисов в соответствии со стратегическим дизайном (например в DDD). Или не микросервисов, а модулей все в том же монолите, постепенно двигаясь к первому варианту монолита - хорошему и модульному =)
Микросервисы / распределенные системы
Что такое распределенный монолит? Все просто. Монолит может быть хорошим, модульным, построенным с учетом модели предметной области, где модули максимально автономны (имеют слабую связанность), имеют одну цель и при этом имеют высокое сцепление. Возможно…
Для визуалов, выглядит это примерно так.
Хочу рассказать об уровнях принятия решений в микросервисной архитектуре. То, что я использую в своей практике — это двойная петля обучения Криса Аргириса, адаптированная под архитектурный процесс. Привлекла она меня тем, что в ней выражены два уровне — «Что мы делаем?» и «Почему мы делаем то, что делаем?». Схематично роцесс показан на картинке, почитать подробнее можно, например, здесь: http://pds8.egloos.com/pds/200805/20/87/chris_argyris_learning.pdf
Красота этого подхода в том, что в нем явная петля обратной связь к управляющим значениям, как раз то самое «Почему мы делаем то, что мы делаем и делаем это именно так?». Очень похоже на вопросы, ответы на которые мы ищем в архитектуре и ответы на которые на масштабе позволяют поддерживать архитектурную целостность решения.
Красота этого подхода в том, что в нем явная петля обратной связь к управляющим значениям, как раз то самое «Почему мы делаем то, что мы делаем и делаем это именно так?». Очень похоже на вопросы, ответы на которые мы ищем в архитектуре и ответы на которые на масштабе позволяют поддерживать архитектурную целостность решения.
Адаптированный цикл выглядит так. Есть цель, а есть ASR, NFR(QA), принципы и ограничения в поддержку этой бизнес-ценности. Они ограничивают целевое решение. Без ограничений мы быстро свалимся в хаос.
Если по итогам реализации продукта мы видим отклонения от ожидаемых значений фитнес-функции, то можем либо принять корректирующее архитектурное решение (одиночная петля обучения), либо обнаружить, что в корректировке нуждаются основополагающие принципы, атрибуты качества или ограничения, в рамках которых принимаются архитектурные решения и тогда необходимо сначала пересмотреть их, обновить архитектурную базу знаний и второй петлей выйти на выбор архитектурных решений, позволяющих направить развитие архитектуры в требуемом направлении.
Если по итогам реализации продукта мы видим отклонения от ожидаемых значений фитнес-функции, то можем либо принять корректирующее архитектурное решение (одиночная петля обучения), либо обнаружить, что в корректировке нуждаются основополагающие принципы, атрибуты качества или ограничения, в рамках которых принимаются архитектурные решения и тогда необходимо сначала пересмотреть их, обновить архитектурную базу знаний и второй петлей выйти на выбор архитектурных решений, позволяющих направить развитие архитектуры в требуемом направлении.
Если копнуть глубже и посмотреть очень схематично на визуализацию микросервисной архитектуры, то мы увидим, что вполне возможно выделить два уровня. Первый будет в себя включать модель предметной области и техническую макро-архитектуру. Например, именно здесь мы определяем чаще всего такие вещи, как: отвественности компонентов (сервисов), интеграция с UI, протоколы взаимодействия, форматы данных, избыточность данных (redundant data), логирование и мониторинг (и другие входящие в состав microservices chassis параметры). Это не обязательный список и он может варьироваться в зависимости от контекста конкретного решения.
Второй же уровень вполне можно отдать на откуп команд. Главное условие — инженерные/архитектурные решения, принимаемые на этом уровне не должны нарушать целостность общего решения, выходить за рамки задаваемых ограничений. В рамках отдельных команд/сервисов (привет, закон Конвея) вполне могут приниматься решения о процессе разработки, по используемым фреймворкам и языкам программирования, по инструментам разработки и способам хранения данных.
Например, на уровне макро-архитектуры может быть зафиксирован список из 10 баз данных, которые могут быть использованы и команды вправе самостоятельно принимать решение о том, какая база у них будет, без лишних согласований.
Например, на уровне макро-архитектуры может быть зафиксирован список из 10 баз данных, которые могут быть использованы и команды вправе самостоятельно принимать решение о том, какая база у них будет, без лишних согласований.
Получается такая аккуратная картинка, которая достаточно неплохо встраивается в текущие процесссы любой организации от стартапа до very big enterprise.
Это один из множества способов сформировать достаточно стройную и понятную система работы с архитектурой со встроенным процессом анализа и непрерывных улучшений и с поддержкой эволюционного развития как самого продукта, так и его архитектуры.
Это один из множества способов сформировать достаточно стройную и понятную система работы с архитектурой со встроенным процессом анализа и непрерывных улучшений и с поддержкой эволюционного развития как самого продукта, так и его архитектуры.
Старенькая статья «Why Netflix Moved to a Microservices Architecture»
https://www.programmableweb.com/news/why-netflix-moved-to-microservices-architecture/elsewhere-web/2016/04/02
https://www.programmableweb.com/news/why-netflix-moved-to-microservices-architecture/elsewhere-web/2016/04/02
ProgrammableWeb
Why Netflix Moved to a Microservices Architecture
In 2008 when Netflix announced plans to move to the cloud, most observers were dubious. Now Netflix has become one of the first major companies to exist completely in the public cloud and their architectural shift to cloud based microservices led to many…
Продолжим тему истории компаний, на этот раз — SoundCloud. Объемная и достаточно детальная статья:
https://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html
https://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html