Почему вы должны использовать докер и контейнеры

498

Что было до Докеров

Уже много лет корпоративное программное обеспечение обычно развертывается либо на «голом металле» (т.е. устанавливается в операционной системе, которая имеет полный контроль над базовым оборудованием), либо на виртуальной машине (т.е. установлена в операционной системе, которая разделяет базовое оборудование с другими «гостевыми» операционными системами). Естественно, установка на голом металле затрудняла перемещение программного обеспечения и его трудно обновить - два ограничения, из-за которых ИТ-специалисты затруднялись реагировать на изменения в бизнес-потребностях.

Затем появилась виртуализация. Платформы виртуализации (также называемые «гипервизорами») позволяли нескольким виртуальным машинам совместно использовать одну физическую систему, каждая виртуальная машина, имитирующая поведение всей системы, в комплекте с собственной операционной системой, хранилищем и вводом-выводом, , Теперь ИТ-специалисты могут более эффективно реагировать на изменения в бизнесе, поскольку виртуальные машины могут быть клонированы, скопированы, перенесены и развернуты вверх или вниз, чтобы удовлетворить спрос или сохранить ресурсы. Виртуальные машины также помогли сократить расходы, потому что больше виртуальных машин можно было объединить на меньшее количество физических машин. Устаревшие системы, работающие с более старыми приложениями, могут быть превращены в виртуальные машины и физически списываться, чтобы сэкономить еще больше денег.

Но у виртуальных машин все еще есть своя проблема. Виртуальные машины большие (гигабайты), каждая из которых содержит полную операционную систему. Только так много виртуализированных приложений могут быть объединены в одну систему. Предоставление VM все еще занимает довольно много времени. Наконец, переносимость виртуальных машин ограничена. После определенного момента, виртуальные машины не могут обеспечить скорость, ловкость и экономию, которые требуют быстро развивающиеся компании.

Преимущества докерного контейнера

Контейнеры работают немного как VM, но гораздо более конкретным и гранулированным способом. Они изолируют одно приложение и его зависимости - все внешние библиотеки программного обеспечения, которые приложение должно запускать - как из базовой операционной системы, так и из других контейнеров. Все контейнеризованные приложения используют единую общую операционную систему (Linux или Windows), но они разделены друг от друга и от системы в целом.

Преимущества контейнеров Docker проявляются во многих местах. Вот некоторые из основных преимуществ Docker и контейнеров:

Docker обеспечивает более эффективное использование системных ресурсов

Экземпляры контейнеризованных приложений используют гораздо меньше памяти, чем виртуальные машины, они запускаются и останавливаются быстрее, и их можно упаковывать гораздо более плотно на их хост-аппаратное обеспечение. Все это сокращает расходы на ИТ.

Экономия затрат будет зависеть от того, какие приложения находятся в игре, и насколько ресурсоемкими они могут быть, но контейнеры неизменно работают более эффективно, чем виртуальные машины. Также можно сэкономить на стоимости лицензий на программное обеспечение, поскольку для запуска одинаковых рабочих нагрузок требуется гораздо меньше экземпляров операционной системы.

Docker обеспечивает более быстрый цикл доставки программного обеспечения

Программное обеспечение предприятия должно быстро реагировать на меняющиеся условия. Это как простое масштабирование для удовлетворения спроса, так и простое обновление для добавления новых функций, необходимых бизнесу.

Контейнеры-докеры позволяют легко выводить новые версии программного обеспечения с новыми бизнес-функциями в производство и быстро переходить к предыдущей версии, если вам нужно. Они также облегчают реализацию стратегий.

Docker позволяет переносить приложения

Там, где вы запускаете деловое приложение, - за брандмауэром, ради сохранения вещей и обеспечения безопасности; или в публичном облаке, для простого доступа общественности и высокой эластичности ресурсов. Поскольку контейнеры Docker инкапсулируют все приложения, которые необходимо запустить (и только их), они позволяют легко переносить приложения между средами. Любой хост с установленной версией Docker - будь то ноутбук разработчика или общедоступный облачный экземпляр - может запускать контейнер Docker.

Docker светит для архитектуры микросервисов

Легкие, портативные и автономные контейнеры Docker упрощают сбор программного обеспечения по линиям перспективного мышления, так что вы не пытаетесь решить проблемы завтрашнего дня со вчерашними методами разработки.

Один из контейнеров шаблонов программного обеспечения упрощается - это микросервисы, где приложения состоят из многих слабосвязанных компонентов. Разлагая традиционные «монолитные» приложения на отдельные сервисы, микросервисы позволяют масштабировать, модифицировать и обслуживать различные части бизнес-приложения отдельно - отдельными командами и отдельными временными рамками, если это соответствует потребностям бизнеса.

Контейнеры не требуются для внедрения микросервисов, но они отлично подходят для подхода к микросервисам и для гибких процессов разработки в целом.

Проблемы

Первое, что нужно помнить о контейнерах, - это тот же совет, который применим к любой программной технологии: это не серебряная пуля. Контейнеры-докеры сами по себе не могут решить каждую проблему. Особенно:

Docker не будет исправлять ваши проблемы с безопасностью

Программное обеспечение в контейнере может быть более безопасным по умолчанию, чем программное обеспечение, работающее на голом металле, но это похоже на то, что дом с закрытыми дверцами более безопасен, чем дом с разблокированными дверями. Он ничего не говорит о состоянии окрестности, о видимом присутствии ценных вещей, заманчивых для вора, подпрограммах людей, живущих там, и так далее. Контейнеры могут добавить уровень безопасности в приложение, но только как часть общей программы обеспечения безопасности приложения в контексте.

Docker не превращает приложения магически в микросервисы

Если вы контейнерируете существующее приложение, это может сократить потребление ресурсов и упростить развертывание. Но это не автоматически изменяет дизайн приложения или как он взаимодействует с другими приложениями. Эти преимущества приходят только за счет времени и усилий разработчиков, а не просто от того, чтобы вы переместите все в контейнеры. Поместите в контейнер старое школьное монолитное приложение или приложение в стиле SOA, и в итоге вы получите старое приложение в контейнере. Это не делает его более полезным для вашей работы; во всяком случае, это может сделать его менее полезным.

Docker не заменяет виртуальные машины

Один упорный миф о контейнерах заключается в том, что они делают устаревшие виртуальные машины. Многие приложения, которые использовались для работы в виртуальной машине, могут быть перемещены в контейнер, но это не значит, что все они могут или должны. Например, если вы находитесь в отрасли с тяжелыми нормативными требованиями, возможно, вы не сможете обменять контейнеры для виртуальных машин, поскольку виртуальные машины обеспечивают большую изоляцию, чем контейнеры.

Работы по развитию предпринимательства печально известны тем, что они скрыты и не реагируют на изменения. Предприятия-разработчики все время сталкиваются с такими ограничениями, наложенными на них ИТ, требованиями, предъявляемыми ими бизнесом в целом. Докер и контейнеры предоставляют разработчикам больше свободы, которую они жаждут, и в то же время предоставляют способы создания бизнес-приложений, которые быстро реагируют на меняющиеся условия ведения бизнеса.

К списку публикаций