0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Перед тем, как начать перенос приложения в облако и приступить к выстраиванию<strong>Cloud Native</strong>-архитектуры, следует убедиться, что ваше приложение к этому переносу по-настоящему готово. Специалисты выделяют 5 базовых принципов, которые характерны для современных Cloud Native-приложений.</p>
1
<p>Перед тем, как начать перенос приложения в облако и приступить к выстраиванию<strong>Cloud Native</strong>-архитектуры, следует убедиться, что ваше приложение к этому переносу по-настоящему готово. Специалисты выделяют 5 базовых принципов, которые характерны для современных Cloud Native-приложений.</p>
2
<h2>1. Динамичность</h2>
2
<h2>1. Динамичность</h2>
3
<p>Под динамичностью понимается возможность быстро развернуть и сконфигурировать систему на любой новой площадке, что особенно актуально в случае внезапной смены облачного провайдера. Средствами достижения динамичности являются такие известные подходы, как CI/CD и Infrastructure As Code (IaC).</p>
3
<p>Под динамичностью понимается возможность быстро развернуть и сконфигурировать систему на любой новой площадке, что особенно актуально в случае внезапной смены облачного провайдера. Средствами достижения динамичности являются такие известные подходы, как CI/CD и Infrastructure As Code (IaC).</p>
4
<p><strong>Инструменты</strong>: Terraform, Ansible, Salt, Foreman, Pulumi, Cloudify, AWS Cloud Formation.</p>
4
<p><strong>Инструменты</strong>: Terraform, Ansible, Salt, Foreman, Pulumi, Cloudify, AWS Cloud Formation.</p>
5
<h2>2. Возможность эксплуатации</h2>
5
<h2>2. Возможность эксплуатации</h2>
6
<p>Здесь мы говорим о возможности управлять жизненным циклом систем в автоматизированном режиме. Говоря по правде, это свойство довольно тесно связано с динамичностью, так как включает в себя, в первую очередь, использование CI/CD-пайплайнов для автоматического развертывания программных приложений. То есть должна быть возможность быстро выкатывать новые сборки, отслеживая статус выполнения на разных средах и выполняя откат при сбоях.</p>
6
<p>Здесь мы говорим о возможности управлять жизненным циклом систем в автоматизированном режиме. Говоря по правде, это свойство довольно тесно связано с динамичностью, так как включает в себя, в первую очередь, использование CI/CD-пайплайнов для автоматического развертывания программных приложений. То есть должна быть возможность быстро выкатывать новые сборки, отслеживая статус выполнения на разных средах и выполняя откат при сбоях.</p>
7
<p><strong>Инструменты</strong>: GitLab CI/CD, Jenkins, GoCD и пр.</p>
7
<p><strong>Инструменты</strong>: GitLab CI/CD, Jenkins, GoCD и пр.</p>
8
<h2>3. Возможность наблюдения</h2>
8
<h2>3. Возможность наблюдения</h2>
9
<p>В данном случае речь идет о мониторинге инфраструктуры и бизнес-метрик. Сложно переоценить значение мониторинга, причем не важно, о проекте какого масштаба мы говорим: Startup либо Enterprise. Однако на практике до сих пор есть проекты (и их немало), где мониторинга нет, а это чревато серьезными проблемами.</p>
9
<p>В данном случае речь идет о мониторинге инфраструктуры и бизнес-метрик. Сложно переоценить значение мониторинга, причем не важно, о проекте какого масштаба мы говорим: Startup либо Enterprise. Однако на практике до сих пор есть проекты (и их немало), где мониторинга нет, а это чревато серьезными проблемами.</p>
10
<p>Когда мы говорим о переходе в облако, то здесь мониторинг поможет проверять хотя бы заявленный SLA провайдера, получая ретроспективу производительности при спорных ситуациях, не говоря уже о том, что мониторинг позволяет находить узкие места в архитектуре программных приложений, чтобы исправить их до того, как эти потенциальные проблемы станут оказывать влияние на пользователей.</p>
10
<p>Когда мы говорим о переходе в облако, то здесь мониторинг поможет проверять хотя бы заявленный SLA провайдера, получая ретроспективу производительности при спорных ситуациях, не говоря уже о том, что мониторинг позволяет находить узкие места в архитектуре программных приложений, чтобы исправить их до того, как эти потенциальные проблемы станут оказывать влияние на пользователей.</p>
11
<p><strong>Инструменты</strong>: Zabbix, Prometheus, Grafana, Fluentd, OpenTracing, Jaeger. Также у облачных провайдеров возможно наличие собственного встроенного мониторинга.</p>
11
<p><strong>Инструменты</strong>: Zabbix, Prometheus, Grafana, Fluentd, OpenTracing, Jaeger. Также у облачных провайдеров возможно наличие собственного встроенного мониторинга.</p>
12
<h2>4. Эластичность</h2>
12
<h2>4. Эластичность</h2>
13
<p>Эластичность -- не что иное, как возможность масштабирования приложений с учетом меняющейся нагрузки. Тут уместно вспомнить автоматическое масштабирование и<strong>Kubernetes</strong>-- стандарт оркестрации контейнерных приложений, поддерживающий все нужные уровни масштабирования. Также ряд провайдеров поддерживает автомасштабирование на уровне кластера из коробки. Впрочем, построить эластичное приложение можно и без Kubernetes, а на основе чистого IaaS, применяя для обработки изменений нагрузки мониторинг и преднастроенные хуки.</p>
13
<p>Эластичность -- не что иное, как возможность масштабирования приложений с учетом меняющейся нагрузки. Тут уместно вспомнить автоматическое масштабирование и<strong>Kubernetes</strong>-- стандарт оркестрации контейнерных приложений, поддерживающий все нужные уровни масштабирования. Также ряд провайдеров поддерживает автомасштабирование на уровне кластера из коробки. Впрочем, построить эластичное приложение можно и без Kubernetes, а на основе чистого IaaS, применяя для обработки изменений нагрузки мониторинг и преднастроенные хуки.</p>
14
<h2>5. Отказоустойчивость</h2>
14
<h2>5. Отказоустойчивость</h2>
15
<p>В случае сбоя приложение должно иметь возможность быстрого восстановления, то есть влияние на пользователей должно быть минимальным. Да, определенные гарантии дают и облачные провайдеры, однако надо все равно обеспечить пресловутую отказоустойчивость на уровне инфраструктуры и самих программных приложений.</p>
15
<p>В случае сбоя приложение должно иметь возможность быстрого восстановления, то есть влияние на пользователей должно быть минимальным. Да, определенные гарантии дают и облачные провайдеры, однако надо все равно обеспечить пресловутую отказоустойчивость на уровне инфраструктуры и самих программных приложений.</p>
16
<p><em>По материалам блога https://habr.com/ru/company/vk/blog/.</em></p>
16
<p><em>По материалам блога https://habr.com/ru/company/vk/blog/.</em></p>
17
17