Мнение автора может не совпадать с мнением редакции
Среди наших проектов есть «Тайный Санта» — кроссплатформенное мобильное приложение для анонимного обмена подарками. Другими словами, легаси-проект с легаси-кодом, который ранее запускался на выделенном сервере. Однако с ростом нагрузки начали появляться и проблемы, мы стали получать больше ошибок отказа обслуживания. Ко всему прочему сама перспектива выхода из строя сервера уже не казалась такой нереальной, это привело бы к катастрофе. Ситуацию требовалось срочно менять.
Выбираем способ реализации. Разделяй и властвуй
Так как мы живём в мире микросервисов, мы приняли решение сделать новую версию продукта уже на микросервисной архитектуре. Нам были необходимы «бесшовные» обновления нашего кода и масштабируемость под нагрузкой. Был нужен какой-то инструмент похожий на кластерную операционную систему (ОС) для управления контейнерами. И, как вы уже поняли, мы его нашли — это Kubernetes.
Kubernetes, как я сказал выше, в моём представлении — это ничто иное, как «кластерная ОС для управления контейнерами». Это уровень абстракции над обычной операционной системой, который позволяет через определённые манифесты запускать контейнеризированные приложения.
объединение в кластер нескольких серверов;
лимитирование потребления ресурсов;
контроль над обновлениями;
автомасштабируемость и отказоустойчивость.
Вообще о самом Kubernetes я готов говорить часами, но сегодня предлагаю акцентировать внимание именно на проекте «Тайный Санта».
Взгляд изнутри, готовим Kubernetes
Итак, мы подготовили микросервисы, используя классические frontend и backend. Далее нам нужно было только перенести их в Kubernetes. Всё.
Для данного проекта мы имеем два «контура». Первый — Dev-контур, кластер, который развёрнут у нас в компании. Внутри него есть пространство имён (namespace), в котором мы запускаем наше приложение.