В последнее время всё чаще звучат слова про концепцию контейнеризации и изоляции процессов, которые ещё Docker начал развивать в 2013 году. А концепция оркестрации контейнеров стала реализовываться на базе Kubernetes в 2014. По прогнозам, к концу 2021, 3/4 мировых компаний будут использовать контейнерные приложения.
Рассмотрим, что за "зверь" Kubernetes, что предшествовало его появлению в IT-эволюции и на каком этапе находится его современное развитие.
С чего всё начиналось
Раньше все приложения были "монолитными". В них один экземпляр выполнял все бизнес-функции. Они были развёрнуты на оборудовании, которое физически находилось на территории организации и "время простоя" таких приложений не было чем-то критичным.
Технологический бум начала двухтысячных изменил функции, выполняемые приложениями. Развитие веб-приложений сделало ожидаемым работу 24/7, при этом предел нагрузки на них не был определён, стало очевидно, что они должны справляться с различной нагрузкой.
Приложения перенесли в "облака", но и они не справлялись со всеми задачами:
- длительная сборка и "простои" во время неё;
- во время неудач отказывало всё приложение полностью;
- медленная разработка, связывающая всех разработчиков;
- неоптимальное использование ресурсов в облаке.
Следующим шагом на пути решения проблем стали "микросервисы". Эта концепция подразумевает не одно большое приложение, а много "служб", каждая из которых отвечает за свою функцию, поэтому при поломке одной работают все остальные.
Что это дало:
- сокращение времени развёртывания;
- устойчивость к сбоям;
- колебания нагрузки можно было рассчитать более точно.
Несмотря на решение старых проблем, использование микросервисов спровоцировало появление новых.
С чем пришлось столкнуться:
- избыточное использование облачных ресурсов: в архитектуре слишком много взаимосвязанных частей, поэтому вручную ресурсы контролировать невозможно;
- сложности с развёртыванием: нужно было убедиться, что все сервисы сохраняют свою связь и сохраняются все необходимые зависимости;
- сложность растёт с увеличением количества сервисов.
Вызов новых задач потребовал ответных мер, ими стало появление двух явлений. Первой из них появилась контейнеризация. Эта концепция предполагает запуск приложений в изолированных пространствах (контейнерах), которые используют одну и ту же операционную систему. Проще говоря, контейнер — это виртуальный компьютер, работающий внутри другого компьютера (хоста). Файловые системы контейнеров ограничены, они не видят друг друга.
Какие преимущества появились:
- разделение приложения и инфраструктуры;
- изоляция ресурсов.
К чему всё пришло
Сразу после этого появилось второе явление: оркестровка контейнеров. Эта система позволяет запускать и останавливать контейнеры, разворачивать их, масштабировать и управлять ими. Команда Google работала над таким решением и открыла исходный код к проекту под названием kubernetes в 2014 году.
Kubernetes (K8s) — это система для автоматизации развёртывания, масштабирования и управления контейнерными приложениями.
Какие функции может выполнять Kubernetes:
- запускает контейнерные приложения любого масштаба;
- самостоятельно "лечит" приложения, делая устойчивыми к сбоям;
- может автоматически масштабировать контейнеры, управляя нагрузкой и использованием облачных ресурсов;
- упрощает процесс развёртывания в несколько команд;
- управляет конфиденциальностью и конфигурациями;
- есть оркестровка хранилища: обеспечивает отличную интеграцию с различными решениями для хранения данных, поддерживаемыми облачными провайдерами.
Что было дальше
Важным этапом развития является предоставление облачного Kubernetes https://mcs.mail.ru/containers/ (как сервиса). Преимуществами его являются: возможность создавать большое количество тестовых сред, снижение затрат на хостинг, автоматизация процессов CI/CD, стандартизация разработки в распределенных командах и при работе с аутсорсерами.
В этом случае компания берёт на себя большую и сложную работу по развёртыванию виртуальных машин, настройке сети, обновлению кластера и узлов, резервное копирование, безопасность хранилища данных и оборудования, а также предоставляют техническую поддержку в режиме 24/7. По этой причине использование облачного сервиса является самым оптимальным для работы с Kubernetes.
Подпишись на наш Telegram-канал. В нем мы публикуем главное из жизни Саратова и области с комментариями
Теги: