Книга: Руководство по DevOps
Создавайте слабосвязанные архитектуры, чтобы обеспечить продуктивность и безопасность труда разработчиков
Создавайте слабосвязанные архитектуры, чтобы обеспечить продуктивность и безопасность труда разработчиков
Когда мы имеем сильно связанную архитектуру, небольшие изменения могут привести к крупномасштабным сбоям. В результате все, кто имеет дело с какой-то одной частью системы, должны постоянно координировать с другими отделами все задачи, влияющие на другие части системы, и эта координация осуществляется через сложные бюрократические процедуры управления изменениями.
Кроме того, проверка слаженности системы требует учета изменений, внесенных сотнями или даже тысячами других разработчиков, а они могут, в свою очередь, зависеть от десятков, сотен и тысяч взаимосвязанных систем. Тестирование осуществляется в условиях ограниченной интеграции тестовых сред, часто требующих недель на настройку. В результате не только требуется много времени на внедрение изменений (обычно недели или месяцы), но также низкими оказываются производительность труда разработчиков и результаты развертывания.
Напротив, если архитектура позволяет небольшим командам разработчиков реализовывать, тестировать и развертывать код в производство независимо, быстро и безопасно, мы можем увеличить и поддерживать на высоком уровне продуктивность разработчиков и улучшить результаты развертывания. Такими характеристиками обладает сервис-ориентированная архитектура (SOA), впервые описанная в 1990-е гг., в которой сервисы тестируются и развертываются независимо друг от друга. Ключевая особенность архитектуры SOA заключается в том, что она состоит из слабосвязанных сервисов с ограниченными контекстами [53].
Слабосвязанная архитектура означает, что сервисы можно обновлять в производстве независимо друг от друга, без необходимости обновления других сервисов. Сервисы должны быть отделены от других сервисов и, что не менее важно, от общих баз данных (хотя они могут совместно использовать сервисы баз данных при условии, что они не имеют никаких общих схем).
Ограниченные контексты описаны в книге Эрика Эванса «Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем»[54]. Идея в том, что разработчики должны быть в состоянии понять и обновить код сервиса, не зная ничего об устройстве других сервисов, вместе с которыми он функционирует. Сервисы взаимодействуют друг с другом только через API и не имеют общих структур данных, схем баз данных или других внутренних представлений объектов. Ограниченные контексты обеспечивают разграничения между сервисами и имеют хорошо определенные интерфейсы, что, ко всему прочему, упрощает тестирование.
Рэнди Шуп, бывший технический директор Google App Engine, отметил: «Организации с этими типами сервис-ориентированной архитектуры, такие как Google и Amazon, невероятно гибки и масштабируемы. Эти организации имеют десятки тысяч разработчиков, небольшие группы которых все еще способны быть невероятно продуктивными».
- Архетипы организационной структуры
- Проблемы часто бывают вызваны чрезмерно функциональной ориентацией («оптимизацией затрат»)
- Создать условия для команд, ориентированных на рынок («оптимизация скорости»)
- Создание функционально ориентированной работы
- Тестирование, эксплуатация и безопасность — повседневная работа каждого
- Каждый член команды может стать универсалом
- Финансируйте не проекты, а сервисы и продукты
- Устанавливайте границы между командами в соответствии с законом Конвея
- Создавайте слабосвязанные архитектуры, чтобы обеспечить продуктивность и безопасность труда разработчиков
- Сохраняйте размеры команд небольшими (правило «команда на две пиццы»)
- Практический пример
- Программа API Enablement компании Target (2015 г.)
- Заключение
- Рекомендации по выбору архитектуры: Classic или SuperServer?
- Надежность и безопасность
- Эффективное взаимодействие процессов архитектуры Classic Server
- Интегрированная безопасность (NT Integrated Security)
- Безопасность временных таблиц
- Безопасность внешних таблиц. Параметр EXTERNAL FILE DIRECTORY
- Как сделать, чтобы компьютер выключался
- Глава 10 Информационная безопасность бизнеса
- 11.4. Информационная безопасность и ее основные компоненты
- Не допускайте того, чтобы поток пользовательского интерфейса блокировался на длительное время
- Часть IV Чтобы вас не рассекретили…
- Что нужно для того, чтобы компьютер проработал долго и надежно