Контейнерные технологии — это основа DevOps, современных гибких методов разработки ПО. Директор по управлению продуктами Couchbase Анил Кумар рассказывает на портале Information Age о том, какую часть ИТ-ифраструктуры им можно доверить, а какую — нет.
Цифровая трансформация радикально меняет способы ведения бизнеса в организациях по всему миру. Опираясь на практику DevOps, ИТ-команды помогают снизить затраты, повысить гибкость и создать новую эру инноваций. Но что движет саму DevOps? Задавая этот вопрос, можно все чаще услышать один ответ: контейнеры. Многие рыночные наблюдатели рассматривают их как основу эволюции облачных вычислений, считая, что они наделяют разработчиков масштабируемостью и гибкостью и на тех направлениях, где в них больше всего нуждаются. Однако для корпоративных архитекторов, которым поручено поддерживать ИТ-инфраструктуру, «мечта» о контейнерах может очень быстро превратиться в кошмар: это связано с проблемами разрастания контейнеров и совместимости с устаревшими технологиями, включая централизованные БД. Эти проблемы угрожают подорвать эффективность проекта DevOps, а вместе с ним усилия по цифровой трансформации, которые сейчас так важны для роста бизнеса.
Преимущества контейнеров
Контейнеры можно охарактеризовать как современные строительные блоки для облачных вычислений. Как и виртуальные машины (ВМ), они представляют из себя компактную, автономную, согласованную и предсказуемую среду, где разработчики могут запускать приложения, библиотеки и связанные с ними зависимости в изоляции от других приложений. В отличие от ВМ, они более легкие, их развертывание связано с меньшими накладными расходами, что, в свою очередь, позволяет быстро и эффективно масштабировать их в частных, публичных и гибридных облачных средах.
Поэтому вовсе неудивительно, что за последние годы контейнеры заработали репутацию надежных инструментов. Скорость и простота настройки тестовых сред с перспективой масштабирования до производственного уровня — когда-то эти возможности были недосягаемыми для разработчиков. По некоторым данным, в 2018 г. контейнерные технологии применяло более 80% ИТ-команд, тогда как годом ранее — 58%. Достаточно сказать, что одна лишь Google запускает более 2 млрд. контейнеров в неделю.
Недостатки контейнеров
Несмотря на все преимущества контейнеров, их быстрое внедрение открыло присутствующий в ИТ-архитектуре изъян между рабочими нагрузками приложений без сохранения состояния (stateless application workloads) и с сохранением состояния (stateful application workloads), последние работают в традиционной инфраструктуре. Понимая, что инструменты оркестрации контейнеров типа Kubernetes дают значительно больше контроля над контейнерными средами, компании оценили преимущества приложений без сохранения состояния, к числу которых можно отнести интерактивный подход к услугам, гибкость сворачивания экземпляров, повторное развертывание, а также возможность подключения нескольких приложений к сервисам с помощью API.
Организации в полной мере воспользовались выгодами, которые несут контейнеры, однако столкнулись с проблемой — унаследованной инфраструктурой. Другими словами, архитектура, построенная для приложений с сохранением состояния, не может предложить тот же уровень гибкости, маневренности и быстрого развития, которые предлагает архитектура приложений без сохранения состояния. Первые часто разворачиваются в отдельных хранилищах с собственной независимой сетью, политиками и инфраструктурой — это значит, что их гораздо сложнее масштабировать без прямого вмешательства или подключать к другим приложениям с помощью API.
В конечном итоге унаследованная инфраструктура не просто не развивается, она сдерживает корпоративных архитекторов. Несмотря на вложенные в нее усилия и инвестиции, постоянное совершенствование унаследованных приложений и их БД, они не могут конкурировать с приложениями, которые работают без сохранения состояния. Очевидно, что архитекторам нужно преодолеть разрыв между инфраструктурами, если этого не сделать сейчас, то потом его преодолеть будет еще труднее. Нужно понимать, что это непростая задача, поскольку контейнерная схема работы разнится с традиционным монолитным подходом к БД и инфраструктуре.
Проблемы также создает замена устаревших БД на более современные альтернативы. Дело в том, что первые поддерживают критически важные для бизнеса приложения, тогда как нет никаких гарантий, что NoSQL будет автоматически поддерживать контейнеры
DevOps — путь к успеху
БД всегда были важнейшей частью корпоративных ИТ. Современные БД разрабатываются для бесшовной работы с новыми инструментами для оркестровки контейнеров, такими как Kubernetes, что упрощает связывание контейнеров с централизованными БД в облаке, а также управление ими. С помощью этих инструментов ИТ-архитекторы могут, наконец, получить целостную ИТ-инфраструктуру, где все компоненты связаны между собой и гарантируют бесшовный опыт работы. Чтобы добиться этого, им нужно определить, какие из их приложений необходимо быстро перевести из состояния stateful в состояние stateless. Это позволит развивать софт в направлении эволюции контейнерной технологии, тогда как группа устаревших приложений, которым не грозит риск морального устаревания, продолжат работать в унаследованной среде.
К таким можно отнести финансовые приложения, главной задачей которых является последовательное, быстрое и прозрачное выполнение одного и того же действия. Но, что важно, к унаследованным БД должны быть подключены только их финансовые или платежные функции, тогда как другие части программ, которые отвечают за взаимодействие с клиентом или конечным пользователем, нужно модернизировать, чтобы предприятие могло оперативно реагировать на запросы клиентов и предлагать им нужный опыт.
Со временем почти все бизнес-приложения будут разрабатываться на базе контейнерных технологий. Если эта эволюция будет протекать гладко, контейнеры докажут, что они — лучший выбор как для DevOps, так и ИТ-архитекторов.
ИТ-архитекторы играют все более важную роль в организации — от них зависит не только поддержка налаженных процессов, но и создание правильной среды для обеспечения успеха, основанного на инновациях. Контейнеры — это одно из последних достижений в области технологий, которое проверяет их способность идти в ногу с командами DevOps. В будущем к ним добавятся новые вызовы. Чтобы поддерживать ценность бизнеса, ИТ-архитекторам нужно постоянно анализировать, как интегрировать возникающие технологии с текущими.