Минимально жизнеспособный продукт (Minimum Viable Product; MVP) – это прототип готового продукта, который можно проверить на соответствие требованиям с приложением минимальных усилий. Создание минимально жизнеспособного продукта целесообразно в тех случаях, когда высока вероятность внесения серьезных изменений в готовый продукт. При этом вы сэкономите значительный объем времени и усилий. В минимально жизнеспособном продукте отключены некоторые второстепенные функции или расширенные настройки, которые не нужны для оценки базовых концепций, либо делается упор на функциях, а не на дизайне или производительности. Подобно методологиям бережливой разработки и непрерывной доставки, минимально жизнеспособный продукт позволяет быстрее осуществлять рабочие итерации и улучшать продукт, уменьшая затраты и количество отходов.
Любая компьютерная программа выполняется на базе какой-либо инфраструктуры. В качестве подобной инфраструктуры может применяться оборудование, находящееся в собственности организации и управляемое этой же организацией. Либо оборудование может находиться в собственности одной организации, а управляться другой организацией. Могут также выделяться компьютерные ресурсы по требованию, которые при необходимости легко масштабируются. Концепции, связанные с инфраструктурой, обычно находятся в компетенции инженеров из отдела эксплуатации, но важны для всех, кто имеет отношение к программному продукту и работает в условиях, в которых размываются границы между разработкой программного продукта и его эксплуатацией.
Управление конфигурацией
В 1950-х годах Министерство обороны США в качестве технической дисциплины менеджмента разработало методологию управления конфигурацией (Configuration Management; CM). Позднее эта методология была принята во многих других областях. Управление конфигурацией – это процесс установления и поддержки согласованности между функциональными и физическими атрибутами, а также управление производительностью на протяжении всего жизненного цикла. Эта методология включает политики, процессы, документацию и инструменты, требуемые для реализации согласованной производительности, функциональности и атрибутов.
Различные организации и органы по стандартизации, такие как ITIL, IEEE (Institute of Electrical and Electronics Engineers, Институт инженеров по электротехнике и электронике), ISO (International Organization for Standardization, Международная организация по стандартизации) и SEI (Software Engineering Institute, Институт программной инженерии) предложили стандарт управления конфигурированием, который используется в индустрии разработки программного обеспечения. Как и в случае с другими народными моделями, появление подобного стандарта привело к некоторой путанице с применяемыми ранее определениями.
Зачастую управление конфигурацией сочетается с разными формами автоматизации инфраструктуры, контроля версий или выделения ресурсов, что приводит к появлению разногласий по поводу применения этого термина в других дисциплинах. Чтобы выработать общее понимание для читателей книги, определим управлением конфигурированием как процесс идентификации, управления, мониторинга и аудита продукта на протяжении всего его жизненного цикла, включая процессы, документацию, людей, инструменты, программное обеспечение и системы.
Облачные вычисления
Облачные вычисления, которые часто называют просто «облако», – это совместно выполняемые интернет-вычисления. Заказчики могут приобретать и использовать общие компьютерные ресурсы, предлагаемые разными провайдерами облачных вычислений. Облачные вычисления и хранилища позволят организациям сэкономить на приобретении, установке и поддержке своего собственного оборудования.
Сочетание высокой производительности, экономия затрат, а также гибкость и удобство, предлагаемые многими облачными решениями, представляют собой идеальный выбор для организаций, которые хотят минимизировать затраты и увеличить скорость итераций на этапе разработки. Ускорение итераций и уменьшение времени на цикл разработки являются ключевыми факторами, играющими роль при создании devops-культуры.
В то время как некоторые пользователи представляют облачные вычисления как синоним devops, это не всегда так. Ключевая часть devops – возможность оценивать и анализировать разные инструменты и процессы в целях идентификации средств, которые будут наиболее эффективны для вашей среды. Это вполне возможно сделать даже без перехода к облачной инфраструктуре.
Автоматизация инфраструктуры