Об DevOps и архитектуру

04 Apr 2022

Вовлеченность и Agile

Reading time: 1 minutes

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

Read more...

24 Mar 2022

Эволюция DevOps

Reading time: 3 minutes

15 лет назад DevOps начинался в попытке “подружить” разработку и эксплутацию – через культуру, обмен знаниями и совместную работу. Затем быстро развернулся в сторону ускорения поставки изменений из разработки в продакшн (активность Lean Value Stream Mapping), продолжился в понимание того, что программисты создают не просто код в репозитории (и даже не протестированный код в репозитории), а работающее приложение в продакшне (практики Observability и SRE). И последние несколько лет DevOps перешел к рассмотрению взаимодействие команд на масштабе (фреймворк Team Topologies).

Read more...

15 Dec 2021

Тестирование в IaC

Reading time: 1 minutes

Подход “Инфраструктура как Код” (IaC) противопоставляется подходу “Infrastructure as Scripts” в том, что к коду (в отличие от скриптов) начинают применять практики обычные для программирования, например тестирование. Вот что имеет смысл тестировать в IaC: контракты (входы и выходы) модулей мутации параметров ( "${env}-${name}" или if env=prod then https should be enabled ) внешние ограничения (“не должно быть security group с полностью открытыми портами”) Сами ресурсы, которые мы создаем внутри модуля тестировать, конечно же, смысла не имеет – эта часть декларативна и уже протестирована провайдером ресурса.

Read more...

11 Dec 2021

Различение между проектом и процессом

Reading time: 1 minutes

Из комментариев к обсуждению различия между проектом и процессом https://www.facebook.com/alex.turkhanov/posts/10227176872024711 : а) процесс не мобилизует ресурсы (проект мобилизует), он использует выделенные и зарезервированные под него; б) у процесса множественная причинность (у проекта токен-причинность), если мы сделаем вот такие действия над вот такими объектами, то из такой ситуации перейдем вот в такую; в) процесс есть инвариант , неизменная и неполная по составу и структуре основа для действий. Например, у Росатома есть процесс сооружения АЭС, события и действия, которые должны произойти, чтобы соорудить АЭС.

Read more...

02 Nov 2021

4 DORA Metrics

Reading time: 3 minutes

DORA в своем исследовании State Of Devops вывели метрики, которые показывают производительность организации: Lead Time Deployment Frequency MTTR Change Failure Rate В двух словах, это важнейшие метрики из Lean, примененные к разработке софта, и они означают эффективность производственного процесса в компании. В упомянутом отчете показывается, что у тех компаний, кто показывает наилучшие бизнес-результаты эти метрики также высоки. Подробнее об этом говорится в вышеупомянутом отчете State Of Devops, а еще подробнее в книге Accelerate.

Read more...

04 Oct 2021

Operator Pattern

Reading time: 1 minutes

Паттерн Operator предназначен для создания инфраструктурных продуктов через декларативные описания. К примеру, сам Kubernetes во многом является реализацией этого паттерна для своих объектов. От контроллера отличается тем, что контроллер — это функциональный объект. Чаще всего Оператор строится при помощи контроллеров (по крайней мере в Kuberenetes). От IaC отличается тем, что оператор не только описывает инфраструктуру декларативно, но и реализует жизненный цикл создания-управления-уничтожения этой инфраструктурой. К примеру, Terraform описывает инфраструктуру как код, но применяет это изменение человек.

Read more...

03 Aug 2021

Kubernetes

Reading time: 3 minutes

Kubernetes – это runtime для для написания распределенных инфраструктурных приложений с использованием Operator pattern, плюс оркестратор контейнеров. Ключевые составляющие: Хранилище описаний объектов Модель нотификаций об изменениях как описаний, так и самих объектов Готовые простые инструменты для работы с хранилищем и событиями Мутноватый, но в целом неплохой stdlib для того, чтобы это было применимо к реальным вещам (запуск контейнеров, модель прав доступа и ограничений ресурсов и т.д.) Встроенный оркестратор контейнеров, за счет которого появляется возможность через эти механизмы достраивать самого себя Иными словами, это state-machine интегрированная с оркестратором.

Read more...

02 Aug 2021

Цитадель

Reading time: 1 minutes

Citadel — архитектурный паттерн проектирования наряду с паттернами “Монолит” и “Микросервисы”. Состоит в выделении некоторой функциональности из монолита в виде “Outpost” и сохранении основного условно монолитного ядра. Для того, чтобы принять решение оставлять ли некоторую функциональность в монолите, или же вынести ее в микросервис кажется можно применить 6 причин делать микросервис. Хороший пример для выделения в Outpost — сервис аутентификации, на который обычно бывает высокая нагрузка, или сервис-представление для какого-нибудь счетчика, который выдает пользователю количество непрочитанных сообщений.

Read more...

02 Aug 2021

6 Причин Делать Микросервис

Reading time: 1 minutes

Микросервисы имеют и плюсы и минусы, на которых мы сейчас останавливаться не будем. Существует 6 причин разделять компоненты на микросервисы, вместо разработки монолита: Разная частота изменений (сервисы, которые меняются часто имеет смысл выделить в отдельный микросервис) Разный жизненный цикл (например, какой-то компонент требует особого вида тестирования или к нему особые требования у регуляторов) Разные требования к масштабированию (например, сильно нагружены чаще всего только 1-2 сервиса из десятков) Изоляция сбоев (если взорвется один сервис остальные продолжат работать, но при этом критичных компонентов не так много) Фасад к внешним зависимостям (устойчивость к смене их API, всякие AAA, и т.

Read more...

01 Aug 2021

API

Reading time: 1 minutes

Предоставление API можно рассматривать как способ подключения к деятельности других субъектов, или способ подключения к другому рынку. Тот, кто предоставляет API к своему сервису также предоставляет и способ использования своего продукта в деятельности предпринимателей со стороны. По видимому это одна из причин, почему многие вендоров участвуют в создании открытых стандартов. В этом смысле конструирование API наиболее удобных для каких-то конкретных пользователей можно рассматривать как упаковку имеющегося продукта под новые рынки. В этом же контексте по видимому можно применять те же способы разработки продуктов, которые применяются и для продуктов физического мира (такие как Lean Startup и т.

Read more...