Краткая история о том, как Twitter на Кафку переходил.
https://blog.twitter.com/engineering/en_us/topics/insights/2018/twitters-kafka-adoption-story.html
#case
https://blog.twitter.com/engineering/en_us/topics/insights/2018/twitters-kafka-adoption-story.html
#case
Twitter
Twitter’s Kafka adoption story
See why Twitter decided to adopt Kafka as its PubSub system and the challenges we faced during adoption.
Архитектурный шаблон, базирующийся на трех факторах:
1. Realtime GraphQL («Use GraphQL for a very simple and flexible frontend developer workflow.»)
2. Reliable eventing («Remove in-memory state manipulation in your backend APIs and persist them as atomic events instead»)
3. Async serverless («Write business logic as event handlers»)
Основная идея проста и не нова: в коде не должно храниться состояние, в идеале — вообще.
https://3factor.app
#pattern
1. Realtime GraphQL («Use GraphQL for a very simple and flexible frontend developer workflow.»)
2. Reliable eventing («Remove in-memory state manipulation in your backend APIs and persist them as atomic events instead»)
3. Async serverless («Write business logic as event handlers»)
Основная идея проста и не нова: в коде не должно храниться состояние, в идеале — вообще.
https://3factor.app
#pattern
Концептуальная схема self-healing (самовосстанавливающейся) системы, то есть такой системы, в которой автоматически выявляются аномалии и предпринимаются корректирующие действия.
Например: при отказе железа под кластером перевод на другой кластер, перезапуск хостов, изменение таблиц маршрутизации, расширение канала, остановка или запуск экземпляров сервисов.
Нередко в таких системах корректирующие действия появлятся как результат Chaos Testing на производственной среде.
#pattern
Например: при отказе железа под кластером перевод на другой кластер, перезапуск хостов, изменение таблиц маршрутизации, расширение канала, остановка или запуск экземпляров сервисов.
Нередко в таких системах корректирующие действия появлятся как результат Chaos Testing на производственной среде.
#pattern
❤1
В микросервисных кругах Kubernetes - весьма популярная штука, но, не смотря на высокую надежность, широкую поддержку сообществом и изобилие статей и книг, — он сложен, он развивается и он может подвести, если его неправильно готовить.
По ссылке — множество историй фейлов, связанных с кубером (последняя история так вообще всего лишь двухнедельной давности):
https://github.com/hjacobs/kubernetes-failure-stories
#case
По ссылке — множество историй фейлов, связанных с кубером (последняя история так вообще всего лишь двухнедельной давности):
https://github.com/hjacobs/kubernetes-failure-stories
#case
GitHub
GitHub - hjacobs/kubernetes-failure-stories: Compilation of public failure/horror stories related to Kubernetes
Compilation of public failure/horror stories related to Kubernetes - hjacobs/kubernetes-failure-stories
Техника... монолитизации — объединения сервисов в монолит.
Статья про Oat++, web-фрейморк для C++, так что и речь идет о нем, но в целом техника не зависит от языка.
Когда рекомендуют применять:
• Низкая нагрузка
• Отсутствие потребности в масштабировании
Заявленные выгоды:
• Снижение уровня потребления памяти
• Снижение затрат на инфраструктуру за счет сокращения нагрузки на сеть
Идея интересная, но я вижу такие риски:
• Когда потребуется масштабирование, команда и инфраструктура могут оказаться не готовы за счет отсутствия опыта развития и управления распределенной системой
• Усложняется тестирование, — есть автономные сервисы и к ним в довесок виртуальный монолит
• По описанию выглядит так, что для выделения сервиса из виртуального монолита требуется полная пересборка с измененным Monolith Config — не самый повторяемый и надежный процесс
При этом выгоды сомнительны, разве что если сервисы очень «говорливы», а сообщения достаточно объемны.
Поделитесь идеями, где можно применить (без привязки к фреймворку). Как минимум — подход не обычный.
https://oatpp.io/docs/monolithization/
#pattern
Статья про Oat++, web-фрейморк для C++, так что и речь идет о нем, но в целом техника не зависит от языка.
Когда рекомендуют применять:
• Низкая нагрузка
• Отсутствие потребности в масштабировании
Заявленные выгоды:
• Снижение уровня потребления памяти
• Снижение затрат на инфраструктуру за счет сокращения нагрузки на сеть
Идея интересная, но я вижу такие риски:
• Когда потребуется масштабирование, команда и инфраструктура могут оказаться не готовы за счет отсутствия опыта развития и управления распределенной системой
• Усложняется тестирование, — есть автономные сервисы и к ним в довесок виртуальный монолит
• По описанию выглядит так, что для выделения сервиса из виртуального монолита требуется полная пересборка с измененным Monolith Config — не самый повторяемый и надежный процесс
При этом выгоды сомнительны, разве что если сервисы очень «говорливы», а сообщения достаточно объемны.
Поделитесь идеями, где можно применить (без привязки к фреймворку). Как минимум — подход не обычный.
https://oatpp.io/docs/monolithization/
#pattern
oatpp.io
Monolithization | Oat++
Monolithization of microservices in Oat++ Web Framework.
Список open source инструментов для микросервисов
(со ссылками на сайты, репозитории с исходниками и лицензиями)
Контейнеры: rkt, Docker, FreeBSD Jail, LXC, OpenVZ
Оркестраторы контейнеров: Kubernetes, OpenShift, Nomad, LXD
API Gateways: 3scale, API Umbrella, Apigee, Apiman, DreamFactory, Fusio, Gravitee, Kong, KrakenD, Tyk
CI/CD: Jenkins, GitLab, Buildbot, Concourse, GoCD, Hudson, Spinnaker
Балансировщики: HAProxy, Apache modules, Balance, Distributor, GitHub Load Balancer (GLB) Director, Neutrino, OpenLoBa, Pen, Seesaw, Synapse, Traefik
Service registry/discovery: Baker Street, Consul, etcd, Registrator, Serf, ZooKeeper
Мониторинг: OpenNMS, Grafana, Graphite, Icinga, InfluxDB, LibreNMS, Naemon, Nagios, ntop, ELK, Prometheus, Sensu, Zabbix, Zenoss
(со ссылками на сайты, репозитории с исходниками и лицензиями)
Контейнеры: rkt, Docker, FreeBSD Jail, LXC, OpenVZ
Оркестраторы контейнеров: Kubernetes, OpenShift, Nomad, LXD
API Gateways: 3scale, API Umbrella, Apigee, Apiman, DreamFactory, Fusio, Gravitee, Kong, KrakenD, Tyk
CI/CD: Jenkins, GitLab, Buildbot, Concourse, GoCD, Hudson, Spinnaker
Балансировщики: HAProxy, Apache modules, Balance, Distributor, GitHub Load Balancer (GLB) Director, Neutrino, OpenLoBa, Pen, Seesaw, Synapse, Traefik
Service registry/discovery: Baker Street, Consul, etcd, Registrator, Serf, ZooKeeper
Мониторинг: OpenNMS, Grafana, Graphite, Icinga, InfluxDB, LibreNMS, Naemon, Nagios, ntop, ELK, Prometheus, Sensu, Zabbix, Zenoss
Роль Enteprise Architect сегодня
Статья просто и понятно объясняет изменения роли EA. Актуально для микросервисного стиля, как для частного случая.
В начале статьи автор рассказывает небольшую историю и задает контекст
- Команды стали автономнее
- Команды могут принимать серьезные инженерные решения (делегирование решений в команды)
- Команды стали изолированнее, знания в большей степени накапливаются в командах
Основываясь на своих наблюдениях автор пришел в выводу, что в современном мире EA должен:
Продолжать разработку
- Потратить немного времени на то, чтобы разобраться, как работает та или иная технология
- Писать код, распространяющий основные архитектурные идеи и помогающий развиваться разработчикам в компании
- Работать в паре с разработчиками из различных команд, чтобы не терять связь с землей
При этом он не часть команды, поэтому вклад в скорость команды не делает, что разумно.
Обеспечивать простой доступ к архитектуре каждому заинтересованному в ней
- Управление архитектурной базой знаний таким образом, чтобы каждый мог получить нужную информацию в нужное время
- Особенно о том, что уже реализовано и реализуется, чтобы не решать задачу дважды, трижды
- Пример из статьи — подготовить постер с архитектурой и раздать каждой команде, пусть висит на стене на видном месте, его сложнее игнорировать, чем wiki-страничку
Выстраивать мосты между командами
- Команды становятся изолированными друг от друга за счет своей автономности, архитектор за счет парной работы с членами команд может найти наилучших кандидатов для выстраивания мостов между командами
- И снова, за счет плотной работы с командами, архитектор может обнаружить команды, решающие похожие задачи и выстроить мостик вокруг этих задач
- Обнаружить разработчиков, у которых горят глаза от определенных технологий, платформ и помочь им в обучении других людей
- Собирать мнения команд о степени доступности, понятности и полезности архитектурной базы знаний и улучшать её на основе этих мнений
Таким образом цели и отвественность остаются теми же, что и раньше, но подход к работе меняется. И такой подход ведет к эволюционному развитию архитектуры в направлениях, о которых и подумать было сложно.
Статья просто и понятно объясняет изменения роли EA. Актуально для микросервисного стиля, как для частного случая.
В начале статьи автор рассказывает небольшую историю и задает контекст
- Команды стали автономнее
- Команды могут принимать серьезные инженерные решения (делегирование решений в команды)
- Команды стали изолированнее, знания в большей степени накапливаются в командах
Основываясь на своих наблюдениях автор пришел в выводу, что в современном мире EA должен:
Продолжать разработку
- Потратить немного времени на то, чтобы разобраться, как работает та или иная технология
- Писать код, распространяющий основные архитектурные идеи и помогающий развиваться разработчикам в компании
- Работать в паре с разработчиками из различных команд, чтобы не терять связь с землей
При этом он не часть команды, поэтому вклад в скорость команды не делает, что разумно.
Обеспечивать простой доступ к архитектуре каждому заинтересованному в ней
- Управление архитектурной базой знаний таким образом, чтобы каждый мог получить нужную информацию в нужное время
- Особенно о том, что уже реализовано и реализуется, чтобы не решать задачу дважды, трижды
- Пример из статьи — подготовить постер с архитектурой и раздать каждой команде, пусть висит на стене на видном месте, его сложнее игнорировать, чем wiki-страничку
Выстраивать мосты между командами
- Команды становятся изолированными друг от друга за счет своей автономности, архитектор за счет парной работы с членами команд может найти наилучших кандидатов для выстраивания мостов между командами
- И снова, за счет плотной работы с командами, архитектор может обнаружить команды, решающие похожие задачи и выстроить мостик вокруг этих задач
- Обнаружить разработчиков, у которых горят глаза от определенных технологий, платформ и помочь им в обучении других людей
- Собирать мнения команд о степени доступности, понятности и полезности архитектурной базы знаний и улучшать её на основе этих мнений
Таким образом цели и отвественность остаются теми же, что и раньше, но подход к работе меняется. И такой подход ведет к эволюционному развитию архитектуры в направлениях, о которых и подумать было сложно.
Titan — Data as a Code проект с открытым исходным кодом
Официальное описание:
«Titan's git-like CLI enables developers to clone, commit, checkout, push, and pull data just like code, making it easy to rollback to a previous state, build a test data library, or share a structured dataset with collaborators.»
Мы все ближе к Everything as a Code 🙂
#tools
Официальное описание:
«Titan's git-like CLI enables developers to clone, commit, checkout, push, and pull data just like code, making it easy to rollback to a previous state, build a test data library, or share a structured dataset with collaborators.»
Мы все ближе к Everything as a Code 🙂
#tools
Ода языку Go, микросервисы для Enterprise 🙂
Go преподносится как язык следующего поколяния для Entperprise-компаний.
На Go написаны Docker, etcd, Kubernetes, Terraform и istio; его используют такие компании как google, apple, dropbox, bbc, the economist, the new york times, ibm, twitter, facebook.
Go активно поддерживается Google, а его авторы активно участвовали в жизни C, Unix и JVM и него обширное и сильное сообщество (Gophers).
Далее приводится еще несколько преимуществ:
- Отличная реализация Concurrency
- Кросс-платформенность
- Garbage Collection
- Статическая типизация
- Приведена сравнительная таблица Go vs Java
В завершении примеры кода для реализации слоя контроллеров, слоя логирования, инит тестов, моков, реализации OAuth.
Go преподносится как язык следующего поколяния для Entperprise-компаний.
На Go написаны Docker, etcd, Kubernetes, Terraform и istio; его используют такие компании как google, apple, dropbox, bbc, the economist, the new york times, ibm, twitter, facebook.
Go активно поддерживается Google, а его авторы активно участвовали в жизни C, Unix и JVM и него обширное и сильное сообщество (Gophers).
Далее приводится еще несколько преимуществ:
- Отличная реализация Concurrency
- Кросс-платформенность
- Garbage Collection
- Статическая типизация
- Приведена сравнительная таблица Go vs Java
В завершении примеры кода для реализации слоя контроллеров, слоя логирования, инит тестов, моков, реализации OAuth.
Сравнение SOA и микросервисов от pwc.
Похоже, что pwc брали не академически-теоретический идеальный SOA из учебников, а среднестатистическую реализацию. А вот для микросервисов взяли эталон. Оно и понятно, это базовые свойства микросервисов и среднестатистически близкие к эталону реализации встречаются чаще просто потому, что иначе их совершенно невозможно поддерживать и развивать.
#common
Похоже, что pwc брали не академически-теоретический идеальный SOA из учебников, а среднестатистическую реализацию. А вот для микросервисов взяли эталон. Оно и понятно, это базовые свойства микросервисов и среднестатистически близкие к эталону реализации встречаются чаще просто потому, что иначе их совершенно невозможно поддерживать и развивать.
#common
Язык, редактор и инфраструктура — три в одном.
Речь о языке Dark.
Основная идея выражена во фразе «Speed of developer iteration is the single most important factor in how quickly a technology company can move».
Интересно как минимум ознакомиться с видео на сайте и статьями в блоге. Пока тенденция слабая, но все больше появляется языков со встроенными механизмами снижения инфраструктурной сложности (другой пример — ballerina.io), присущей микросервисным решениям.
В настоящий момент Dark находится в beta-тестировании.
В международном сообществе язык, а точнее — концепция подобных языков, активно обсуждается и полагаю, что в ближайшее время мы увидим больше подобных решений.
#tools
Речь о языке Dark.
Основная идея выражена во фразе «Speed of developer iteration is the single most important factor in how quickly a technology company can move».
Интересно как минимум ознакомиться с видео на сайте и статьями в блоге. Пока тенденция слабая, но все больше появляется языков со встроенными механизмами снижения инфраструктурной сложности (другой пример — ballerina.io), присущей микросервисным решениям.
В настоящий момент Dark находится в beta-тестировании.
В международном сообществе язык, а точнее — концепция подобных языков, активно обсуждается и полагаю, что в ближайшее время мы увидим больше подобных решений.
#tools
Пример организации пакетов при использовании DDD
Из примера видно, что одна команда может владеть несколькими сервисами, но вот несколько команд одним сервисом — уже нет. На каждом из уровней полная изолция по горизонтали. Домены и/или контексты могут общаться только либо через четко определенный интерфейс, либо через Anti Corruption Layer.
Из примера видно, что одна команда может владеть несколькими сервисами, но вот несколько команд одним сервисом — уже нет. На каждом из уровней полная изолция по горизонтали. Домены и/или контексты могут общаться только либо через четко определенный интерфейс, либо через Anti Corruption Layer.
Тезисно перевел статью о том, как организовать поиск, если у вас микросервисы. В статье два подхода со своими плюсами и минусами. Статья больше для того, чтобы самостоятельно подумать и принять решение, какой подход подойдет лучше.
#patterns
#patterns
Видео с ArchDays'19 уже заливается на youtube и завтра первые ролики будут опубликованы.
А пока — написал пост с анонсом ArchDays 2020.
Из важного — расширение тематики конференции.
Напишите, кого из зарубежных спикеров хотелось бы увидеть на конференции, уже пора писать им предложение выступить 🙂
А пока — написал пост с анонсом ArchDays 2020.
Из важного — расширение тематики конференции.
Напишите, кого из зарубежных спикеров хотелось бы увидеть на конференции, уже пора писать им предложение выступить 🙂
Кто/чем управляет от on premise до serverless. Видно как изменяется инфраструктурная сложность при движении слева направо.
Записи докладов с ArchDays 2019, поехали!
"Мы делили апельсин" или эволюция web’а tinkoff.ru за последние 3 года
Александр Поломодов
https://www.youtube.com/watch?v=1I5vwf5Ucbc
В этом докладе будет откровенный рассказ руководителя разработки и одновременно и.о. архитектора о том, зачем, что и как пришлось пройти технической команде привлечения для изменения tinkoff.ru за последние 3 года (spoiler: в заглавии).
Основной акцент будет сделан на причинах принятия тех или иных технических решений и итоговых результатах. История получится поучительной, т.к. оглядываясь в прошлое, понимаешь, что не все решения были достаточно оптимальными и часть из них стоило бы переиграть, если бы была такая возможность.
В итоге, слушатели получат план перехода на микросервисную архитектуру с разделением по областям бизнес/ разработка/тестирование/инфраструктура, который сработал для webа tinkoff.ru.
"Мы делили апельсин" или эволюция web’а tinkoff.ru за последние 3 года
Александр Поломодов
https://www.youtube.com/watch?v=1I5vwf5Ucbc
В этом докладе будет откровенный рассказ руководителя разработки и одновременно и.о. архитектора о том, зачем, что и как пришлось пройти технической команде привлечения для изменения tinkoff.ru за последние 3 года (spoiler: в заглавии).
Основной акцент будет сделан на причинах принятия тех или иных технических решений и итоговых результатах. История получится поучительной, т.к. оглядываясь в прошлое, понимаешь, что не все решения были достаточно оптимальными и часть из них стоило бы переиграть, если бы была такая возможность.
В итоге, слушатели получат план перехода на микросервисную архитектуру с разделением по областям бизнес/ разработка/тестирование/инфраструктура, который сработал для webа tinkoff.ru.
YouTube
ArchDays 2019 • Эволюция web’а tinkoff.ru за последние 3 года • Александр Поломодов
Александр Поломодов — "Мы делили апельсин" или эволюция web’а tinkoff.ru за последние 3 года
В этом докладе будет откровенный рассказ руководителя разработки и одновременно и.о. архитектора о том, зачем, что и как пришлось пройти технической команде привлечения…
В этом докладе будет откровенный рассказ руководителя разработки и одновременно и.о. архитектора о том, зачем, что и как пришлось пройти технической команде привлечения…
Inner Source и микросервисы: как получить больше плюсов, чем минусов
Александр Бындю
https://www.youtube.com/watch?v=lgNwo6cYYts
InnerSourcing и микросервисы дополняют друг друга и одновременно повышают порог вхождения новичков в эту тему. Я расскажу с точки зрения IT-архитектора и организатора процесса разработки:
1. В чем конкретно можно выиграть при использовании InnerSourcing.
2. Какие инструменты и паттерны нужны для достижения успеха, и что будет, если их не использовать.
3. С какими проблемами сталкиваются компании, где мы настраивали связку InnerSourcing+микросервисы, даже если делали всё максимально хорошо.
Александр Бындю
https://www.youtube.com/watch?v=lgNwo6cYYts
InnerSourcing и микросервисы дополняют друг друга и одновременно повышают порог вхождения новичков в эту тему. Я расскажу с точки зрения IT-архитектора и организатора процесса разработки:
1. В чем конкретно можно выиграть при использовании InnerSourcing.
2. Какие инструменты и паттерны нужны для достижения успеха, и что будет, если их не использовать.
3. С какими проблемами сталкиваются компании, где мы настраивали связку InnerSourcing+микросервисы, даже если делали всё максимально хорошо.
YouTube
ArchDays 2019 • Inner Source и микросервисы • Александр Бындю
Александр Бындю — Inner Source и микросервисы: как получить больше плюсов, чем минусов
InnerSourcing и микросервисы дополняют друг друга и одновременно повышают порог вхождения новичков в эту тему. Я расскажу с точки зрения IT-архитектора и организатора…
InnerSourcing и микросервисы дополняют друг друга и одновременно повышают порог вхождения новичков в эту тему. Я расскажу с точки зрения IT-архитектора и организатора…
Эволюционная архитектура при внедрении "монолита" (1С:ERP 2)
Глеб Стальной
https://www.youtube.com/watch?v=9pSyPE9z-oI
В докладе будет опровергнут распространенный в IT-среде стереотип, что решения на платформе 1С невозможно ни нормально интегрировать с другими системами, ни встроить в современный pipeline разработки.
На примере работы нашей команды будет показано для 1С:
1. как реализовать событийную архитектуру
2. как подключить гит для версионирования кода 1С
3. как писать BDD-сценарии
4. как настроить Continuous Inspection
И, самое главное, будет описан подход, который позволит расширять типовой функционал 1С:ERP Управление предприятием 2 так, чтобы не было мучительно больно, как во время первоначальной разработки, так и дальнейшей поддержки.
Глеб Стальной
https://www.youtube.com/watch?v=9pSyPE9z-oI
В докладе будет опровергнут распространенный в IT-среде стереотип, что решения на платформе 1С невозможно ни нормально интегрировать с другими системами, ни встроить в современный pipeline разработки.
На примере работы нашей команды будет показано для 1С:
1. как реализовать событийную архитектуру
2. как подключить гит для версионирования кода 1С
3. как писать BDD-сценарии
4. как настроить Continuous Inspection
И, самое главное, будет описан подход, который позволит расширять типовой функционал 1С:ERP Управление предприятием 2 так, чтобы не было мучительно больно, как во время первоначальной разработки, так и дальнейшей поддержки.
Путь в хаос или как мы строили Chaos Engineering в банке
Дмитрий Якубовский и Максим Козлов
https://www.youtube.com/watch?v=PVufzlkhRcI
Доклад расскажет о том, как мы на реальном проекте погрузились в мир Chaos Engineering (CE), ощутили всю боль мониторинга, узнали о психологии инженеров и как вставляли "напильники в серверы". Мы поговорим о преимуществах Chaos Engineering и без чего он не получится, расскажем, почему он отличается от нагрузочного тестирования и поделимся опытом организации экспертизы в компании. Цель доклада — рассказать о том, с какими проблемами и их решениями мы столкнулись при проведении "атак" на реальном проекте, сравним инструменты и их автоматизацию для проведения этих "атак". Это живой опыт, который мы проходим до сих пор.
Дмитрий Якубовский и Максим Козлов
https://www.youtube.com/watch?v=PVufzlkhRcI
Доклад расскажет о том, как мы на реальном проекте погрузились в мир Chaos Engineering (CE), ощутили всю боль мониторинга, узнали о психологии инженеров и как вставляли "напильники в серверы". Мы поговорим о преимуществах Chaos Engineering и без чего он не получится, расскажем, почему он отличается от нагрузочного тестирования и поделимся опытом организации экспертизы в компании. Цель доклада — рассказать о том, с какими проблемами и их решениями мы столкнулись при проведении "атак" на реальном проекте, сравним инструменты и их автоматизацию для проведения этих "атак". Это живой опыт, который мы проходим до сих пор.
YouTube
ArchDays 2019 • Путь в хаос или как мы строили Chaos Engineering в банке • Д. Якубовский & М. Козлов
Дмитрий Якубовский и Максим Козлов— Путь в хаос или как мы строили Chaos Engineering в банке
Доклад расскажет о том, как мы на реальном проекте погрузились в мир Chaos Engineering (CE), ощутили всю боль мониторинга, узнали о психологии инженеров и как вставляли…
Доклад расскажет о том, как мы на реальном проекте погрузились в мир Chaos Engineering (CE), ощутили всю боль мониторинга, узнали о психологии инженеров и как вставляли…