Поиск по сайту:

Что на самом деле означает Cloud Native?


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

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

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

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

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

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

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

Облачные особенности

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

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

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

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

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

Разделение ответственности

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

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

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

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

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

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

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

Cloud Native и DevOps

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

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

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

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

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

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

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

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

Краткое содержание

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

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