Что на самом деле означает Cloud Native? — CloudSavvy ИТ

Иллюстрация, показывающая стилизованный значок облака с подключенными к нему различными устройствамиНадя Ц / Shutterstock.com

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

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

Различные определения

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

Microsoft говорит термин описывает системы, которые «охватывают быстрые изменения, крупномасштабность и устойчивость». К VMWare, это «подход к созданию и запуску приложений, использующий преимущества модели предоставления облачных вычислений». Oracle подчеркивает, как облачная среда основана на «распределенных вычислениях».

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

В Устав Cloud Native Computing Foundation определяет эту концепцию как парадигму «слабосвязанных систем, которые являются устойчивыми, управляемыми и наблюдаемыми». Они способствуют «значительным изменениям. [made] часто и предсказуемо с минимальным трудом ».

Облачные родные черты

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

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

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

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

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

Разделение проблем

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

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

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

Преимущества для бизнеса

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

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

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

Cloud Native и DevOps

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

Цикл DevOps поддерживает тесный цикл между планированием, сборкой, тестированием, выпуском и мониторингом. Это увеличивает скорость разработки за счет четкого определения последовательности событий в жизненном цикле новой функции. Соблюдение принципов DevOps увеличивает вероятность того, что система станет эффективным «гражданином облака».

Эти двое имеют тенденцию возникать друг из друга. Если вы сознательно практикуете один из терминов, вы, вероятно, уже пользуетесь преимуществами другого. Облачные системы автоматически развертываются с регулярной частотой; эффективное использование инструментов DevOps, таких как конвейеры CI / CD, является логичным способом реализации быстрых потоков разработки.

А как насчет «Облака с поддержкой?»

Вы можете встретить системы, описанные как «облачные», а не облачные. Этот термин обычно относится к приложениям, которые переходят от традиционных моделей разработки и развертывания к облачным альтернативам.

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

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

Использование облака в системе — это первый шаг на пути к превращению ее в «гражданина» естественного облака. За ним может последовать «облачный» подход, когда приложение преимущественно работает в облаке с высокой степенью разделения сервисов. Между компонентами все еще могут быть какие-то обязательные связи или обратные связи с унаследованной инфраструктурой. После того, как они будут устранены, архитектуру можно будет назвать «родной для облака».

Резюме

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.