Фантастическая статья о выборе CI-платформы, куча полезных и интересных исследований для всех, кто сейчас оценивает CI и системы сборки: https://buoyant.io/2020/09/16/linkerds-ci-kubernetes-in-docker-github-actions/
buoyant.io
Rebuilding Linkerd's CI with K8s in Docker (kind) and GitHub Actions
This post is a writeup of a talk I gave last month at KubeCon EU 2020. Introduction In mid-2019, the Linkerd project’s continuous integration (CI) took 45 minutes, all tests were serialized on a single Kubernetes cluster, and multi-hour backups were common.…
На ArchDays все-таки будет выступление про LeanIX!
Сергей Лукин расскажет и покажет как документировать 150+ микросервисов в LeanIX. Я очень давно хотел посмотреть на этот инструмент вблизи, но всё как-то не было возможности, в России он не сильно распространен.
Ссылочка на описание выступления: https://archdays.ru/?speaker=430
К слову, у LeanIX очень крутые ресурсы по Enterprise-архитектуре, через ресурсы о них в свое время и узнал: https://www.leanix.net/en/resources/
Сергей Лукин расскажет и покажет как документировать 150+ микросервисов в LeanIX. Я очень давно хотел посмотреть на этот инструмент вблизи, но всё как-то не было возможности, в России он не сильно распространен.
Ссылочка на описание выступления: https://archdays.ru/?speaker=430
К слову, у LeanIX очень крутые ресурсы по Enterprise-архитектуре, через ресурсы о них в свое время и узнал: https://www.leanix.net/en/resources/
20 ноября пройдет конференция по микросервисной архитектуре ArchDays, проходить будет в онлайне, подготовка идет полным ходом. В этом году значительно меньше про переход от монолита к микросервисам и больше про сами микросервисы и архитектуру распределенных систем в целом.
Участникам этого канала скидка 30% по промокоду microservices_arch 👌
http://archdays.ru
Участникам этого канала скидка 30% по промокоду microservices_arch 👌
http://archdays.ru
archdays.ru
ArchDays 2025
Конференция по архитектуре IT-решений. 7 ноября Москва + Online
Не супер-подробная, но достаточно интересная статья про полирепо 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 баз данных, которые могут быть использованы и команды вправе самостоятельно принимать решение о том, какая база у них будет, без лишних согласований.