Принципы построения Cloud Native-приложений | OTUS

Принципы построения Cloud Native-приложений

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

1. Динамичность

Под динамичностью понимается возможность быстро развернуть и сконфигурировать систему на любой новой площадке, что особенно актуально в случае внезапной смены облачного провайдера. Средствами достижения динамичности являются такие известные подходы, как CI/CD и Infrastructure As Code (IaC).

Инструменты: Terraform, Ansible, Salt, Foreman, Pulumi, Cloudify, AWS Cloud Formation.

2. Возможность эксплуатации

Здесь мы говорим о возможности управлять жизненным циклом систем в автоматизированном режиме. Говоря по правде, это свойство довольно тесно связано с динамичностью, так как включает в себя, в первую очередь, использование CI/CD-пайплайнов для автоматического развертывания программных приложений. То есть должна быть возможность быстро выкатывать новые сборки, отслеживая статус выполнения на разных средах и выполняя откат при сбоях.

Инструменты: GitLab CI/CD, Jenkins, GoCD и пр.

3. Возможность наблюдения

В данном случае речь идет о мониторинге инфраструктуры и бизнес-метрик. Сложно переоценить значение мониторинга, причем не важно, о проекте какого масштаба мы говорим: Startup либо Enterprise. Однако на практике до сих пор есть проекты (и их немало), где мониторинга нет, а это чревато серьезными проблемами.

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

Инструменты: Zabbix, Prometheus, Grafana, Fluentd, OpenTracing, Jaeger. Также у облачных провайдеров возможно наличие собственного встроенного мониторинга.

4. Эластичность

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

5. Отказоустойчивость

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

По материалам блога https://habr.com/ru/company/vk/blog/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто