Файл: Дэвис Дженнифер, Дэниелс КэтринД94 Философия DevOps. Искусство управления it. Спб. Питер, 2017. 416 с. ил. Серия Бестселлеры OReilly.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.11.2023
Просмотров: 396
Скачиваний: 25
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Знакомство с масштабированием
Довольно сложно предугадать тот момент, когда в команде, отделе или органи- зации необходимо внедрять те или иные изменения. Поскольку эти изменения порой неочевидны, весьма полезными будут некоторые советы по их внедрению.
Если мы рассматриваем прогресс в качестве составной части разнородного ланд- шафта, который либо способствует, либо мешает будущим начинаниям, это помо- жет нам планировать, выполнять и корректировать текущее состояние с учетом предварительно поставленных целей. Эти цели могут достигаться как постепенны- ми, но управляемыми действиями, так и динамическими скачками. Опыт обычно подсказывает, когда и как следует менять направление прогресса, а также то, какие стратегии нужно применять в тех или иных средах.
В этой главе освещаются причины возникновения проблем, возникающих в про- цессе масштабирования организаций. Кроме того, вниманию читателя предлага- ется детальное рассмотрение взаимодействия между тремя рассмотренными ранее
Глава 14. Масштабирование: критические точки
281
столпами эффективных devops-практик и различными разновидностями проблем, возникающих в процессе масштабирования. В продолжение темы предыдущих глав будут рассмотрены некоторые неправильные представления и общие вопро- сы, возникающие в процессе устранения проблем.
Рассмотрение корпоративных devops-практик
Не существует «корпоративных devops-практик», предусматривающих исполь- зование уникальных инструментов и методик, которые применялись бы исклю- чительно в компаниях, в которых работает большое количество сотрудников.
Также не существует единого определения успеха, позволяющего получить однозначный результат, к которому стремятся все компании и организации.
Чтобы успешно внедрять изменения, нужно превратить организацию в удобный для применения и сбалансированный инструмент, обладающий необходимой степенью гибкости.
Как в крупных компаниях, так и в небольших организациях необходимым услови- ем для выработки силы, баланса и оперативности является devops-пакт. Культура сотрудничества и близости способствует укреплению «слабых связей» и более оперативному распространению информации внутри компании. Крупные органи- зации отличаются друг от друга способами применения принципов, а не самими принципами.
Многие полагают, что devops-практики могут применяться только в новых про- ектах, выполняемых в небольших стартапах, и непригодны в крупных компаниях или наследственных системах, которым присущи технические и культурные долги.
Тем не менее в отчете 2015 State of DevOps Report (отчет о состоянии devops за
2015 год), подготовленном компанией Puppet Labs, утверждается, что это далеко не так (https://puppet.com/resources/white-paper/2015-state-devops-report).
Высокая производительность достигается за счет контролируемости и развертываемости.
Исследователи, подготовившие этот отчет, обнаружили, что культурные принци- пы devops могут применяться в любых организациях, независимо от их размеров.
Кроме того, такие технические принципы, как процесс непрерывной доставки и улучшенного развертывания, применимы для любого хорошо разработанного и спроектированного проекта по разработке ПО, включая унаследованный про- граммный код, который выполняется на мэйнфреймах. Абсолютно новый проект, основанный на использовании микросервисов, не может быть успешным по при- чине своей новизны и тех же микросервисов. Он должен быть тщательно спроек- тированным, проверяемым и легко развертываемым. Эти принципы применяются по отношению ко всем программным проектам, как старым, так и новым.
282
Часть V. Масштабирование
Стратегическое расширение или сокращение
организаций с помощью devops
Успешные организации должны знать способы масштабирования в тех случаях, когда возникает необходимость расширения или сокращения. В зависимости от ситуации и исполнителей изменяются трактовки масштабирования. Таким образом, масштабирование является еще одним примером народной модели, поэтому для эффективного обсуждения этого процесса в организации следует уточнить вид масштабирования. Например, масштабирование может подразу- мевать следующее:
расширение клиентской базы;
увеличение прибыли;
расширение проекта или команды с целью достижения соответствия опре- деленным требованиям;
поддержка или улучшение соотношения количества сотрудников и систем либо денежных затрат;
более быстрый рост по сравнению с конкурентами.
Дополнительные сложности возникают из-за модификаторов, которые придают дополнительный вес терминам. Пример использования модификатора — слово- сочетание «крупномасштабные» системы. Насколько «крупными» считаются системы, если с помощью управляемых служб один инженер может быстро раз- вернуть и свернуть сотни систем буквально за считанные минуты, а не за меся- цы, как это было ранее? Если рассматривать эту проблему через призму быстро развивающейся доступности систем, то возникает вопрос о том, существует ли набор принципов, методов и технологий, применимых в определенном поднабо- ре организаций?
Ответ на этот вопрос отрицательный. В дополнение к практикам, рассмотренным в части IV, в 2015 году компания Etsy насчитывала около 800 сотрудников, 1,5 млн активных продавцов и 22,6 млн активных продавцов с годовым объемом продаж
1,93 млрд долларов. Как показывает другой пример, компания Target в 2015 году насчитывала около 347 тыс. сотрудников и имела 72 млрд долларов годового до- хода. Несмотря на различия в размерах, обе компании адаптировали принципы и методы, основанные на текущих культурах. В результате были выбраны страте- гии, которые являются оптимальными в современных условиях.
Соображения по выполнению масштабирования
Невозможно выработать единый механизм, который позволил бы решить все про- блемы, особенно связанные с устранением человеческого фактора из систем. В ре- альном мире архитекторы разрабатывают проекты на основе своих знаний, опыта,
Глава 14. Масштабирование: критические точки
283
интуиции и механического процесса. Проект здания зависит от ряда факторов, среди которых технические требования, особенности прилегающей территории, историческая обусловленность, а также влияние окружающей среды.
Дома возводятся на основе чертежей и 3D-моделирования. В основу внешнего и внутреннего проектов зданий архитекторы закладывают существующие куль- турные традиции и тенденции
1
. Универсального проекта здания, который удовлет- ворял бы всем требованиям, не существует. То же самое касается и программных проектов и организаций.
Не следует судить о системах в целом на основании отдельных компонентов или своего опыта. Благодаря построению, управлению и использованию систем фор- мируется большой и сложный набор откликов. В сложных системах не бывает простых линейных случаев отказа, для которых может быть идентифицирована единая первопричина. В процессе проектирования и масштабирования систем следует учитывать все факторы, а особенно их взаимодействие.
Например, в зависимости от используемого программного обеспечения и его конфигурации один и тот же сервер базы данных будет различным образом отве- чать на 50 операций считывания одинаковых и разных данных. Если база данных является распределенной и находится на нескольких серверах, ее характеристики и поведение снова изменятся. Далеко не всегда поведение, наблюдавшееся в прош- лом, влияет на поведение в будущем.
Благодаря опыту управления подобным сервером базы данных вы сможете более эффективно работать с другими людьми. Подобный опыт облегчает формирование и рост команд, а также способствует устранению пробелов в знаниях. Более того, сведение способов управления системами к простым повторяющимся действиям критическо важно для снижения общего уровня сложности. К тому же процесс упрощения сам по себе непрост. То, что работает в одной среде, может оказаться совершенно непригодным для другой среды.
Планирование масштабирования
Идентификация поведения системы и основных факторов, влияющих на ее работу, позволит сформировать набор приоритетных систем для текущей среды. Для на- чала следует сформулировать свои цели. Ставите ли вы своей задачей получение определенного опыта? Как вы будете реагировать на перебои в работе? Будете ли вы стремиться к восстановлению доверительных отношений после устранения бреши в системе безопасности?
В настоящее время благодаря специальному программному обеспечению можно освоить искусство дизайна. Более того, специалисты, добившиеся значитель- ных достижений в этой сфере, могут получить звание архитектора. Различные
1
Jun’ichiro Tanizaki, In Praise Of Shadows (New Haven, CT: Leete’s Island Books, 1977).
284
Часть V. Масштабирование истории, посвященные архитектуре программного обеспечения, ограничивают наше понимание ПО, мешая рассмотреть его с других позиций. Не бывает плохих монолитных программных структур, также некорректно сравнивать их с микро- сервисами. Благодаря изучению технологий, процессов и стратегий действий в конфликтных ситуациях гарантированно принимаются продуманные решения в пользу гибкости или негибкости в определенной среде. Принятие осознанных решений по поводу гибкого подхода, применяемого в организации, позволит более целенаправленно подготовиться к будущим изменениям. Лучшей подго- товке также способствует прочный фундамент, которому присуща необходимая степень гибкости, а также возможность статического или динамического отклика в ответ на изменения.
Организационная структура
Процесс масштабирования упрощается в случае пересмотра способов организации команд. Небольшие многофункциональные команды, члены которых обладают определенными навыками (например, разработка внешнего и внутреннего интер- фейса, дизайн, взаимодействие с пользователем и выполнение операций), при- меняемые для создания того или иного проекта, более успешны в продвижении своего продукта.
Несмотря на вышесказанное, монофункциональным командам также свойственны определенные преимущества. Среди них — более широкие возможности по обме- ну знаниями и узкая специализация внутри определенной команды или отдела.
Если выявляется, что монофункциональные команды прекрасно взаимодействуют с остальными сотрудниками организации, не стоит их переформатировать ради самой идеи переорганизации. Важна не сама структура организации, а налажива- ние взаимодействия между командами с целью повышения общей эффективности организации в целом.
В иерархических организациях пресекаются на корню любые начинания, в резуль- тате чего сотрудники начинают чувствовать беспомощность. С другой стороны, в подобных организациях повышению эффективности способствует разница в расстановке сил и в статусе сотрудников. Если же в организации осуществляется массовая реорганизация, направленная на устранение иерархической структуры, это может привести к появлению определенных проблем. В таких организациях необходимо контролировать соблюдение баланса между пользой для организации в целом и ущербом для морального состояния сотрудников.
Местонахождение
Распределение организаций и команд в разных местах может привести к серь- езным проблемам с эффективностью применения коммуникативных навыков компании в целом.
Глава 14. Масштабирование: критические точки
285
Если организация размещена в нескольких местах, очень быстро выявляется, что процессы общения и принятия решений (если таковые вообще наблюдаются) зависят от возможности личного общения с каждым сотрудником. Если в бли- жайшем будущем планируется масштабирование отдельно расположенных под- разделений, следует убедиться в возможности письменного общения с каждым сотрудником.
С точки зрения логистики многочисленные местоположения порождают но- вые идеи, связанные с ИТ-технологиями и инфраструктурой. Если, например, у одного офиса или подразделения имеется доступ к какому-либо жизненно важному ресурсу (современные принтеры, служба поддержки, более скоростное подключение к Интернету и т. п.), сотрудники других офисов могут почувство- вать себя людьми второго сорта. Подобная ситуация негативно сказывается как на моральном климате коллектива, так и на общей производительности. Поэто- му следует удостовериться в том, что различная инфраструктура, применяемая в разных подразделениях, не будет мешать нормальной рабочей загрузке и схеме организации работ.
Глобальное понимание культурных аспектов и ожиданий клиентов также задает способы управления локальными службами поддержки. В условиях технологиче- ского прогресса и глобальной конкуренции компания должна правильно опреде- лить тот момент, когда нужно приложить максимум усилий, чтобы выделиться на фоне других компаний. Для выполнения этой задачи может понадобиться более разнообразное распределение рабочей силы.
Чтобы компания прошла определенный этап своего развития, нужно про- думать порядок работы удаленных команд. Если этого не делать, скорость реагирования на изменения внутри организации будет падать. Все это может привести к дублированию усилий и уменьшению степени удовлетворения отдельных сотрудников и команд, поскольку сотрудники будут стремиться наладить контакты.
Командная гибкость
На данный момент было выполнено немало исследований оптимального разме- ра команд. Небольшим командам обычно не хватает ресурсов для выполнения всех работ, особенно с учетом необходимого количества человеко-часов или знаний. В более крупных командах (9–10 человек), в которых выстраивают- ся определенные взаимоотношения и осуществляется взаимодействие между сотрудниками, труднее принимать своевременные и наиболее эффективные решения. Большие команды склонны к принятию групповых решений. Ин- дивидуальные предложения зачастую отклоняются в интересах группы, что негативно сказывается на креативных способностях сотрудников и их умении решать проблемы.
Довольно сложно предугадать тот момент, когда в команде, отделе или органи- зации необходимо внедрять те или иные изменения. Поскольку эти изменения порой неочевидны, весьма полезными будут некоторые советы по их внедрению.
Если мы рассматриваем прогресс в качестве составной части разнородного ланд- шафта, который либо способствует, либо мешает будущим начинаниям, это помо- жет нам планировать, выполнять и корректировать текущее состояние с учетом предварительно поставленных целей. Эти цели могут достигаться как постепенны- ми, но управляемыми действиями, так и динамическими скачками. Опыт обычно подсказывает, когда и как следует менять направление прогресса, а также то, какие стратегии нужно применять в тех или иных средах.
В этой главе освещаются причины возникновения проблем, возникающих в про- цессе масштабирования организаций. Кроме того, вниманию читателя предлага- ется детальное рассмотрение взаимодействия между тремя рассмотренными ранее
Глава 14. Масштабирование: критические точки
281
столпами эффективных devops-практик и различными разновидностями проблем, возникающих в процессе масштабирования. В продолжение темы предыдущих глав будут рассмотрены некоторые неправильные представления и общие вопро- сы, возникающие в процессе устранения проблем.
Рассмотрение корпоративных devops-практик
Не существует «корпоративных devops-практик», предусматривающих исполь- зование уникальных инструментов и методик, которые применялись бы исклю- чительно в компаниях, в которых работает большое количество сотрудников.
Также не существует единого определения успеха, позволяющего получить однозначный результат, к которому стремятся все компании и организации.
Чтобы успешно внедрять изменения, нужно превратить организацию в удобный для применения и сбалансированный инструмент, обладающий необходимой степенью гибкости.
Как в крупных компаниях, так и в небольших организациях необходимым услови- ем для выработки силы, баланса и оперативности является devops-пакт. Культура сотрудничества и близости способствует укреплению «слабых связей» и более оперативному распространению информации внутри компании. Крупные органи- зации отличаются друг от друга способами применения принципов, а не самими принципами.
Многие полагают, что devops-практики могут применяться только в новых про- ектах, выполняемых в небольших стартапах, и непригодны в крупных компаниях или наследственных системах, которым присущи технические и культурные долги.
Тем не менее в отчете 2015 State of DevOps Report (отчет о состоянии devops за
2015 год), подготовленном компанией Puppet Labs, утверждается, что это далеко не так (https://puppet.com/resources/white-paper/2015-state-devops-report).
Высокая производительность достигается за счет контролируемости и развертываемости.
Исследователи, подготовившие этот отчет, обнаружили, что культурные принци- пы devops могут применяться в любых организациях, независимо от их размеров.
Кроме того, такие технические принципы, как процесс непрерывной доставки и улучшенного развертывания, применимы для любого хорошо разработанного и спроектированного проекта по разработке ПО, включая унаследованный про- граммный код, который выполняется на мэйнфреймах. Абсолютно новый проект, основанный на использовании микросервисов, не может быть успешным по при- чине своей новизны и тех же микросервисов. Он должен быть тщательно спроек- тированным, проверяемым и легко развертываемым. Эти принципы применяются по отношению ко всем программным проектам, как старым, так и новым.
282
Часть V. Масштабирование
Стратегическое расширение или сокращение
организаций с помощью devops
Успешные организации должны знать способы масштабирования в тех случаях, когда возникает необходимость расширения или сокращения. В зависимости от ситуации и исполнителей изменяются трактовки масштабирования. Таким образом, масштабирование является еще одним примером народной модели, поэтому для эффективного обсуждения этого процесса в организации следует уточнить вид масштабирования. Например, масштабирование может подразу- мевать следующее:
расширение клиентской базы;
увеличение прибыли;
расширение проекта или команды с целью достижения соответствия опре- деленным требованиям;
поддержка или улучшение соотношения количества сотрудников и систем либо денежных затрат;
более быстрый рост по сравнению с конкурентами.
Дополнительные сложности возникают из-за модификаторов, которые придают дополнительный вес терминам. Пример использования модификатора — слово- сочетание «крупномасштабные» системы. Насколько «крупными» считаются системы, если с помощью управляемых служб один инженер может быстро раз- вернуть и свернуть сотни систем буквально за считанные минуты, а не за меся- цы, как это было ранее? Если рассматривать эту проблему через призму быстро развивающейся доступности систем, то возникает вопрос о том, существует ли набор принципов, методов и технологий, применимых в определенном поднабо- ре организаций?
Ответ на этот вопрос отрицательный. В дополнение к практикам, рассмотренным в части IV, в 2015 году компания Etsy насчитывала около 800 сотрудников, 1,5 млн активных продавцов и 22,6 млн активных продавцов с годовым объемом продаж
1,93 млрд долларов. Как показывает другой пример, компания Target в 2015 году насчитывала около 347 тыс. сотрудников и имела 72 млрд долларов годового до- хода. Несмотря на различия в размерах, обе компании адаптировали принципы и методы, основанные на текущих культурах. В результате были выбраны страте- гии, которые являются оптимальными в современных условиях.
Соображения по выполнению масштабирования
Невозможно выработать единый механизм, который позволил бы решить все про- блемы, особенно связанные с устранением человеческого фактора из систем. В ре- альном мире архитекторы разрабатывают проекты на основе своих знаний, опыта,
Глава 14. Масштабирование: критические точки
283
интуиции и механического процесса. Проект здания зависит от ряда факторов, среди которых технические требования, особенности прилегающей территории, историческая обусловленность, а также влияние окружающей среды.
Дома возводятся на основе чертежей и 3D-моделирования. В основу внешнего и внутреннего проектов зданий архитекторы закладывают существующие куль- турные традиции и тенденции
1
. Универсального проекта здания, который удовлет- ворял бы всем требованиям, не существует. То же самое касается и программных проектов и организаций.
Не следует судить о системах в целом на основании отдельных компонентов или своего опыта. Благодаря построению, управлению и использованию систем фор- мируется большой и сложный набор откликов. В сложных системах не бывает простых линейных случаев отказа, для которых может быть идентифицирована единая первопричина. В процессе проектирования и масштабирования систем следует учитывать все факторы, а особенно их взаимодействие.
Например, в зависимости от используемого программного обеспечения и его конфигурации один и тот же сервер базы данных будет различным образом отве- чать на 50 операций считывания одинаковых и разных данных. Если база данных является распределенной и находится на нескольких серверах, ее характеристики и поведение снова изменятся. Далеко не всегда поведение, наблюдавшееся в прош- лом, влияет на поведение в будущем.
Благодаря опыту управления подобным сервером базы данных вы сможете более эффективно работать с другими людьми. Подобный опыт облегчает формирование и рост команд, а также способствует устранению пробелов в знаниях. Более того, сведение способов управления системами к простым повторяющимся действиям критическо важно для снижения общего уровня сложности. К тому же процесс упрощения сам по себе непрост. То, что работает в одной среде, может оказаться совершенно непригодным для другой среды.
Планирование масштабирования
Идентификация поведения системы и основных факторов, влияющих на ее работу, позволит сформировать набор приоритетных систем для текущей среды. Для на- чала следует сформулировать свои цели. Ставите ли вы своей задачей получение определенного опыта? Как вы будете реагировать на перебои в работе? Будете ли вы стремиться к восстановлению доверительных отношений после устранения бреши в системе безопасности?
В настоящее время благодаря специальному программному обеспечению можно освоить искусство дизайна. Более того, специалисты, добившиеся значитель- ных достижений в этой сфере, могут получить звание архитектора. Различные
1
Jun’ichiro Tanizaki, In Praise Of Shadows (New Haven, CT: Leete’s Island Books, 1977).
284
Часть V. Масштабирование истории, посвященные архитектуре программного обеспечения, ограничивают наше понимание ПО, мешая рассмотреть его с других позиций. Не бывает плохих монолитных программных структур, также некорректно сравнивать их с микро- сервисами. Благодаря изучению технологий, процессов и стратегий действий в конфликтных ситуациях гарантированно принимаются продуманные решения в пользу гибкости или негибкости в определенной среде. Принятие осознанных решений по поводу гибкого подхода, применяемого в организации, позволит более целенаправленно подготовиться к будущим изменениям. Лучшей подго- товке также способствует прочный фундамент, которому присуща необходимая степень гибкости, а также возможность статического или динамического отклика в ответ на изменения.
Организационная структура
Процесс масштабирования упрощается в случае пересмотра способов организации команд. Небольшие многофункциональные команды, члены которых обладают определенными навыками (например, разработка внешнего и внутреннего интер- фейса, дизайн, взаимодействие с пользователем и выполнение операций), при- меняемые для создания того или иного проекта, более успешны в продвижении своего продукта.
Несмотря на вышесказанное, монофункциональным командам также свойственны определенные преимущества. Среди них — более широкие возможности по обме- ну знаниями и узкая специализация внутри определенной команды или отдела.
Если выявляется, что монофункциональные команды прекрасно взаимодействуют с остальными сотрудниками организации, не стоит их переформатировать ради самой идеи переорганизации. Важна не сама структура организации, а налажива- ние взаимодействия между командами с целью повышения общей эффективности организации в целом.
В иерархических организациях пресекаются на корню любые начинания, в резуль- тате чего сотрудники начинают чувствовать беспомощность. С другой стороны, в подобных организациях повышению эффективности способствует разница в расстановке сил и в статусе сотрудников. Если же в организации осуществляется массовая реорганизация, направленная на устранение иерархической структуры, это может привести к появлению определенных проблем. В таких организациях необходимо контролировать соблюдение баланса между пользой для организации в целом и ущербом для морального состояния сотрудников.
Местонахождение
Распределение организаций и команд в разных местах может привести к серь- езным проблемам с эффективностью применения коммуникативных навыков компании в целом.
Глава 14. Масштабирование: критические точки
285
Если организация размещена в нескольких местах, очень быстро выявляется, что процессы общения и принятия решений (если таковые вообще наблюдаются) зависят от возможности личного общения с каждым сотрудником. Если в бли- жайшем будущем планируется масштабирование отдельно расположенных под- разделений, следует убедиться в возможности письменного общения с каждым сотрудником.
С точки зрения логистики многочисленные местоположения порождают но- вые идеи, связанные с ИТ-технологиями и инфраструктурой. Если, например, у одного офиса или подразделения имеется доступ к какому-либо жизненно важному ресурсу (современные принтеры, служба поддержки, более скоростное подключение к Интернету и т. п.), сотрудники других офисов могут почувство- вать себя людьми второго сорта. Подобная ситуация негативно сказывается как на моральном климате коллектива, так и на общей производительности. Поэто- му следует удостовериться в том, что различная инфраструктура, применяемая в разных подразделениях, не будет мешать нормальной рабочей загрузке и схеме организации работ.
Глобальное понимание культурных аспектов и ожиданий клиентов также задает способы управления локальными службами поддержки. В условиях технологиче- ского прогресса и глобальной конкуренции компания должна правильно опреде- лить тот момент, когда нужно приложить максимум усилий, чтобы выделиться на фоне других компаний. Для выполнения этой задачи может понадобиться более разнообразное распределение рабочей силы.
Чтобы компания прошла определенный этап своего развития, нужно про- думать порядок работы удаленных команд. Если этого не делать, скорость реагирования на изменения внутри организации будет падать. Все это может привести к дублированию усилий и уменьшению степени удовлетворения отдельных сотрудников и команд, поскольку сотрудники будут стремиться наладить контакты.
Командная гибкость
На данный момент было выполнено немало исследований оптимального разме- ра команд. Небольшим командам обычно не хватает ресурсов для выполнения всех работ, особенно с учетом необходимого количества человеко-часов или знаний. В более крупных командах (9–10 человек), в которых выстраивают- ся определенные взаимоотношения и осуществляется взаимодействие между сотрудниками, труднее принимать своевременные и наиболее эффективные решения. Большие команды склонны к принятию групповых решений. Ин- дивидуальные предложения зачастую отклоняются в интересах группы, что негативно сказывается на креативных способностях сотрудников и их умении решать проблемы.