Зачем крупным компаниям микросервисы, контейнеры и Kubernetes: как эти три технологии выводят IT на новый уровень

И в чем российские компании пока отстают от мировых трендов: смотрим на реальных кейсах.

Зачем крупным компаниям микросервисы, контейнеры и Kubernetes: как эти три технологии выводят IT на новый уровень

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

В этом помогают такие технологии как микросервисы и контейнеризация, а для управления ими используют Kubernetes — этот инструмент уже стал стандартом разработки и позволяет IT-отделам создавать продвинутые архитектуры для достижения бизнес-целей компании.

Расскажем, что это за технологии, как они работают и когда стоит подумать об их внедрении.

Краткая справка: что такое микросервисы, контейнеры и Kubernetes

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

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

Упрощенно можно сказать, что в случае монолита все компоненты приложения находятся в одном блоке, а в случае микросервиса — части приложения раскиданы по разным блокам, при этом, как правило, в одном блоке находится одна функция или компонент приложения.

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

Слева — монолит, а справа приложение разбито на микросервисы
Слева — монолит, а справа приложение разбито на микросервисы

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

Микросервисы упакованы в контейнеры, чтобы исключить сюрпризы при развертывании кода
Микросервисы упакованы в контейнеры, чтобы исключить сюрпризы при развертывании кода

Естественно, что большие приложения — это много контейнеров с микросервисами внутри. Чем больше приложение, тем больше у него составных частей. Всем этим добром: и контейнерами, и серверами, на которых они запущены, — надо управлять. Для этого и придумали Kubernetes. С его помощью можно одной кнопкой обновить нужную часть приложения, откатить обновление назад, выделить ресурсы там, где их не хватает, и сократить мощности там, где их много.

Kubernetes управляет контейнерами, внутри которых находятся микросервисы с частями приложения
Kubernetes управляет контейнерами, внутри которых находятся микросервисы с частями приложения

При этом микросервисы и Kubernetes можно интегрировать с теми IT-системами, что уже работают в компании — не всегда нужно всё перестраивать с нуля, чтобы построить хорошо работающий конвейер разработки и быстрее выпускать новые продукты.

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

Какие бизнес-возможности можно получить, внедрив Kubernetes

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

Быстрый вывод продуктов на рынок за счет эффективности разработки

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

Кроме того, он позволяет разработчикам использовать множество готовых решений и стандартизировать процессы, что также ускоряет Time-to-Market, то есть время вывода сервисов на рынок.

DevOps-инженеры и разработчики могут применять множество инструментов, совместимых с Kubernetes: для мониторинга и анализа, управления приложениями, построения CI/CD и других задач. IT-отделу удобно работать, а компания получает все преимущества новых технологий.

Вот несколько примеров.

Airbnb перешли от монолитной архитектуры к микросервисам. Целью было масштабировать процесс непрерывной разработки и доставки приложений так, чтобы около 1 000 инженеров компании могли одновременно настраивать и развертывать более 250 критических сервисов. В результате IT-команда Airbnb может выполнять в среднем более 500 развертываний в день. А значит, вовремя обновлять свои сервисы и поддерживать конкурентоспособность.

The New York Times — сегодня на Kubernetes работает большинство клиентских приложений компании. Решающее значение при выборе сыграло увеличение скорости развертывания и производительности. Ранее развертывания занимали до 45 минут, а теперь выполняются всего за несколько минут. Разработчики могут самостоятельно отправлять обновления тогда, когда это нужно, а не запрашивать заранее ресурсы и не ждать еженедельного развертывания по расписанию, как это было раньше.

J.P.Morgan — крупнейший американский банк перенес на Kubernetes более 3 000 приложений на .NET и Java. Это позволило улучшить среднее время вывода продуктов на рынок, на 700% повысить производительность, сократить утилизацию инфраструктуры на 300% и на 45% уменьшить расходы.

Adidas — перенесли весь интернет-магазин на Kubernetes за полгода. Время загрузки сайта сократилось вдвое. Обновления стали развертывать 3-4 раза в день вместо раза в 4-6 недель. Быстрый, надежный и удобный интернет-магазин компания называет своим конкурентным преимуществом.

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

Когда нагрузка на IT-сервисы меняется, например, растет трафик во время распродажи, систему нужно масштабировать — добавлять к ней дополнительные ресурсы, чтобы справиться с новой нагрузкой.

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

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

Компания не переплачивает за мощности, когда они ей не нужны, то есть оптимизирует затраты на IT, в том числе за счет улучшения утилизации в 2-3 раза, и не рискует потерять клиентов из-за того, что приложение зависло во время роста обращений.

Вот несколько реальных примеров.

Tinder. Из-за большого объема трафика инженерная команда Tinder столкнулась с проблемами увеличения мощностей и стабильности работы. Kubernetes стал выходом из ситуации: на него перенесли 200 сервисов — это 48 000 работающих контейнеров. Перенос помог обеспечить бесперебойную работу бизнеса. В устаревшей инфраструктуре при росте трафика приходилось несколько минут ждать подключения новых ресурсов. С Kubernetes это происходит за несколько секунд.

Spotify — аудиоплатформа с миллионами пользователей, которая одной из первых начала использовать Kubernetes. И теперь извлекает немалую выгоду из автоматического масштабирования, оптимизируя затраты на IT. Кроме того, Kubernetes позволяет за секунды и минуты запускать новые сервисы — ранее этот процесс занимал более часа.

Pokemon Go быстро вырос до 500 миллионов загрузок и более 20 миллионов активных пользователей в день. Инженеры компании никогда не думали, что их пользовательская база увеличится в геометрической прогрессии за такое короткое время, серверы не справлялись с трафиком. Ресурсов не хватало из-за активности миллионов пользователей по всему миру в режиме реального времени. Kubernetes помог обеспечить бесперебойную работу приложений, а разработчики смогли сконцентрироваться на новых функциях игры.

Возможность быстро внедрять новые технологии: облачные сервисы, машинное обучение, большие данные, AI

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

Технологии, с которыми сочетается Kubernetes

Облачные сервисы, работа с облачными приложениями и гибридными облаками. С Kubernetes проще перенести приложения в облако, можно управлять ими как on premises, так и в облачной среде. Это особенно актуально, если компания использует гибридную инфраструктуру, например, тестовые среды в облаке, а основная разработка на своих серверах.

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

Kubernetes поддерживает специальный механизм, который называют федерация кластеров (один кластер — группа серверов в составе Kubernetes). Он позволяет синхронизировать работу кластеров, находящихся в разных облаках, и управлять ими. Например, сейчас такой механизм позволяет совместно использовать кластеры (и находящиеся на них приложения) в облаке Mail.ru Cloud Solutions и AWS.

Машинное обучение и искусственный интеллект. Для построения и обучения нейросетей необходимы большие вычислительные мощности. С помощью Kubernetes можно эффективно использовать ресурсы и проводить все вычисления внутри кластера. Исследователю данных или инженеру ML нужно только очистить данные и написать код. Остальное сделает Kubernetes.

Так, в Babylon Health — компании, которая разрабатывает медицинские сервисы на основе машинного обучения и искусственного интеллекта, не хватило собственных вычислительных ресурсов. Поэтому пользовательские приложения перенесли на платформу Kubernetes, чтобы использовать инструментарий для машинного обучения. Теперь инженеры могут мгновенно проводить нужные операции, также сократилось время проверок — ранее они занимали 10 часов, теперь 20 минут.

Большие данные. Kubernetes разработан специально для высоких нагрузок, поэтому идеально подходит для Data Science и работы с большими данными, он легко интегрируется с облачными Big Data-решениями. Аналитикам компании будет проще выстраивать пайплайны для работы с большими данными и извлекать из них нужную информацию.

Вот, что скрывается под капотом эффективной системы BI-аналитики
Вот, что скрывается под капотом эффективной системы BI-аналитики

Как развернуть Kubernetes: почему в облаке

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

Проще всего перейти на Kubernetes, если использовать его как уже готовый облачный сервис. В облаке настроенные кластеры можно запустить буквально за десять минут, точно также вы сможете быстрее разворачивать приложения и сервисы компании. Кроме того, облачная платформа позволит использовать неограниченное масштабирование — то есть даже высоконагруженные сервисы могут рассчитывать на то, что нужные ресурсы будут выделены мгновенно и без проблем.

Облачная модель также позволяет экономить на расходах за счет оплаты только за используемые ресурсы и сокращения издержек на тестовые среды в 2-3 раза.

Например, Wunderman Thompson — старейшее диджитал-агентство России, перенесли инфраструктуру на Kubernetes в облако Mail.ru Cloud Solutions, чтобы не заниматься инфраструктурой кластера, концентрироваться на разработке и платить только за используемые ресурсы.

А в «УРУС» попробовали Kubernetes в разных видах: самостоятельный деплоймент на Bare Metal, в Google Cloud, а затем перенесли свою платформу в Mail.ru Cloud Solutions. Благодаря автоматизации процессов разработки и CI/CD Kubernetes в компании занимается всего один специалист, удалось минимизировать затраты и быстро получать нужные ресурсы и сервисы.

Что еще почитать по теме:

1616
25 комментариев

“Одно из преимуществ микросервисной архитектуры в том, что части приложения можно разрабатывать и обновлять независимо — например, обновить только один блок, а остальные не менять.” - а в монолитном приложении нельзя обновить только один блок? То есть если я делаю авторизацию, то мне обязательно нужно весь код потеребить остальной, только потому что я пишу монолитное приложение? Лепят абстракцию над абстракцией лишь бы бабок заработать. 
 
Даю новую идею, создать сервис, который бы управлял кубернетесом, не иметь один кубернетес - а сеть кубернетесов. А над ним еще один. И еще сверху сервис, чтобы управлять всем этим. Сверху еще одну абстракцию. О, вот теперь экономно! Но конкуренты делают новый сервис, где каждая переменная это микросервис, вот это поворот! Теперь у сайта с посещаемостью 3000 чел в день 600 000 микросервисов, вау... У этого лендинга штат из 6 девопсов и корпоративные контракты с майл.ру.Облаком.  Наконец-то можно обновить картинку на сайте без головной боли, как мы раньше жили!

14
Ответить

Комментарий недоступен

4
Ответить

Вы удивитесь но управление кластерами кубернетиса уже есть - Federation зовется. Статья конечно ни о чем и классический высер МРГ, но вы тоже не очень правы))

1
Ответить

Как правило, в монолитах довольно сложно рестартнуть только кусок процесса

Ответить

 Но конкуренты делают новый сервис, где каждая переменная это микросервис

О, а это описание aws lambda 

Ответить

Что за маркетинговый булшит?

6
Ответить

Мне так никто и не смог рассказать как я должен сложные запросы в БД делать с кучей джоинов если данные надо раскидать в отдельные БД (по независимой БД на микросервис). Предложили создать ещё один микросервис который будет делать хуиллиард запросов по микросервисам и соединять данные, и это вместо одного комплексного запроса в одну БД. Я когда об этом думаю сразу желаю всего вам самого хорошего с вашими микросервисами, хорошего настроения главное, держитесь там! А я на монолите спокойно поживу.

4
Ответить