До бурного прихода технологии виртуализации компьютерное «железо» использовалось очень неэффективно. По сути, один компьютер или сервер решал только одну задачу. Скажем, вся бухгалтерия находилась на одном сервере, управление складом и логистика – на другом, инженеры-проектировщики трудились на третьем и так далее. Заметный избыток вычислительных мощностей оставался невостребованным. Более того, чтобы добавить задачу, часто приходилось покупать новый компьютер.
Виртуализация позволила относиться к вычислительным мощностям гораздо бережнее. На одном сервере могло запускаться сразу несколько виртуальных машин. Для конечного пользователя ничего не менялось: он по-прежнему видел на своем мониторе один компьютер, который решал именно его задачи. Но вычислительные ресурсы использовались более рационально. Кроме того, виртуальный сервер можно было запустить в облаке стороннего провайдера, чтобы не тратиться на закупку нового оборудования.
Теперь же популярным трендом стала контейнеризация. Призывы переходить в контейнеры звучат тут и там. Самое время разобраться, что это такое, и действительно ли эта технология настолько полезна.
От виртуалок к контейнерам
Прежде всего, подчеркнем, что контейнеры не вытеснили виртуализацию. Это разные направления, которые существуют параллельно, они не претендуют на территорию друг друга, и каждая из технологий имеет свои плюсы и минусы.
Главная особенность виртуальной машины – большие размеры. Она содержит в себе операционную систему, все программное окружение, а также требует резервировать для себя немало места для бесперебойной работы
Контейнерная технология, наоборот, выглядит как мозаика из множества контейнеров. Каждый виртуальный контейнер – это изолированная капсула, в которой работает приложение. Ее границы задаются не «железом», а ПО. На практике обычно ограничиваются подходом «один контейнер – одно приложение». Каждая новая функция – еще один контейнер. Стало больше клиентов – запустили еще несколько контейнеров, чтобы никто не остался обделенным.
Это ячейки-контейнеры – основной способ практической реализации микросервисного подхода к разработке приложений. Совокупность нескольких контейнеров и их взаимосвязи формируют микросервисное приложение. Запускаются такие приложения в среде исполнения, часто именуемой «кластером».
Очевидно, что контейнеров-микросервисов будет не много, а очень много. Особенно если такую систему внедряет крупная компания, у которой осуществляются миллионы операций каждый день. Поэтому здесь не обойтись без оркестратора контейнеров. «Оркестратор» – IT-термин, он, по сути, обозначает среду, управляющее программное обеспечение. Это ПО следит за работой всех микросервисов, чинит их, переносит с машины на машину, строит всю сеть контейнеров.
Оркестраторов существует немало, например, Docker Swarm или Mesos. Однако самым распространенным сегодня является Kubernetes. Это ПО стало де-факто стандартом индустрии, подобно тому, как Windows давно является стандартом для персональных компьютеров. В пользу Kubernetes говорит то, что он стабильно работает, что было проверено большим количеством компаний. Но, что еще важнее, – на рынке труда имеется достаточно специалистов, умеющих работать с Kubernetes.
Как Kubernetes помогает бизнесу?
Прежде всего эта среда автоматизирует процессы управления как инфраструктурой, так и самим приложением. Kubernetes еще иногда называют «новым Linux». Все операции проходят в Kubernetes автоматически. Бизнес экономит на аппаратных решениях и персонале. Кроме того, если компания захочет снять с себя заботы по администрированию приложений, то может арендовать кластеры в облаке и сосредоточится только на разработке.
Во-вторых, Kubernetes повышает гибкость в облачных средах. Компания может работать не с одним, а с несколькими облаками. Эти облака могут принадлежать разным провайдерам, они могут быть как частными, так и публичными. Подобное многообразие – не помеха для Kubernetes. Система упрощает запуск любого приложения как в публичном облаке, так и на платформе из публичного и частного облаков. Далее Kubernetes позволяет эффективно распределять рабочие нагрузки в облаке, избегать привязки к поставщику и тем самым повышает рентабельность инвестиций в ИТ.
В-третьих, Kubernetes помогает бизнесу сократить расходы на ИТ-инфраструктуру. Для развертывания всех приложений требуются минимальные ресурсы. Бизнес извлекает максимум выгоды из вложений в аппаратуру, ПО и облака.
В-четвертых, исчезает проблема роста, когда нужно быстро масштабировать систему. Kubernetes мгновенно масштабирует приложения, просто добавляя или наоборот удаляя контейнеры. Также размер кластера в зависимости от нагрузки уменьшается или увеличивается. За счет масштабирования кластера система становится более производительной и отказоустойчивой.
В-пятых, с помощью Kubernetes легко мигрировать с одной инфраструктуры на другую. При этом ее тип не важен. Можно запросто перейти с физического сервера на облачную платформу. Или на гибридную, когда часть контейнеров находится на собственном «железе» (on-premise), а часть – в облаке.
Наработка на отказ
Вариантов применения контейнерных технологий множество. Бизнес может использовать Kubernetes для полного аутсорсинга ЦОД, мобильных и веб-приложений, поддержки SaaS, облачного веб-хостинга или высокопроизводительных вычислений. Kubernetes обеспечивает отказоустойчивость важных систем и поддерживает работоспособность даже при выходе из строя отдельных приложений.
Отказоустойчивость обеспечивается тем, что в случае сбоя не требуется переустанавливать всю систему. Достаточно заменить неисправный контейнер или откатить его к предыдущей версии, когда все работало стабильно.
За счет этой особенности гораздо проще обновлять систему. Не нужно останавливать весь виртуальный сервер для переустановки, достаточно просто поменять контейнер. И если что-то пойдет не так, можно быстро вернуть предыдущую версию.
Также решается вопрос совместимости. Типичная ситуация: у разработчика все работало, но как только приложение перенесли в рабочую среду, оно наотрез отказалось функционировать. Контейнеры устроены иначе: они объединяют все компоненты ПО в один изолированный от внешней среды пакет. Поэтому неважно, на какой инфраструктуре разворачивается приложение, оно везде будет работать одинаково.
Оркестр для оркестрантов
А что же делать, если Kubernetes-кластеров очень много? Допустим, компания большая перенесла значительную часть функционала в контейнеры, число транзакций велико, а количество клиентов или подписчиков продолжает увеличиваться.
Развернуть один кластер может даже неопытный разработчик всего за пару часов. Но вот управление целым флотом кластеров – задача порой непосильная. Либо она потянет за собой такое количество нормо-часов работы IT-отдела, что вся экономия от внедрения новых технологий сойдет на нет.
В этом случае следует обратить внимание на вендорские решения. Например, на Tanzu от VMware.
VMware Tanzu – это не один продукт, а большое семейство, состоящее приблизительно из 10 разных продуктов. Оно покрывает полный жизненный цикл микросервисного приложения. Продукты можно условно разделить на три основных категории: «создавать», «запускать» и «управлять».
О том, как Tanzu позволяет приручить Kubernetes и каковы возможности этого продукта, мы расскажем на страницах нашего канала в Дзен. Следите за публикациями!
#it-технологии #Инновации #технологии #облачное хранилище #персональные данные #компьютер #it компании