Что такое облачное? Современный способ разработки программного обеспечения

Термин «облачный» часто используется, особенно поставщиками облачных услуг. Более того, у него даже есть собственная основа: Cloud Native Computing Foundation (CNCF), созданная в 2015 году Linux Foundation.

Определение "родной для облака"

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

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

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

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

Разработка облачных приложений обычно включает в себя DevOps, гибкую методологию, микросервисы, облачные платформы, контейнеры, такие как Kubernetes и Docker, и непрерывную доставку - короче говоря, все новые и современные методы развертывания приложений.

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

Видео по теме: Что такое облачный подход?

Из этого 60-секундного видео вы узнаете, как облачный подход меняет способ структурирования технологий предприятиями, от Крейга Маклакки, основателя и генерального директора Heptio, а также одного из изобретателей Kubernetes с открытым исходным кодом.

Различия между облачными и локальными приложениями

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

Языки

Локальные приложения, написанные для работы на серверах компании, как правило, написаны на традиционных языках, таких как C / C ++, C # или другом языке Visual Studio, если они развернуты на платформе Windows Server, и корпоративной Java. А если это на мэйнфрейме, скорее всего, на Cobol.

Облачные приложения, скорее всего, будут написаны на веб-ориентированном языке, что означает HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python и Ruby.

Возможность обновления

Облачные приложения всегда актуальны и актуальны. Облачные приложения всегда доступны.

Локальным приложениям требуются обновления, они обычно доставляются поставщиком по подписке и требуют простоя на время установки обновления.

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

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

Локальное приложение не может масштабироваться динамически.

Мульти аренды

У облачного приложения нет проблем с работой в виртуализированном пространстве и совместным использованием ресурсов с другими приложениями.

Многие локальные приложения либо плохо работают в виртуальной среде, либо вообще не работают и требуют невиртуализированного пространства.

Подключенные ресурсы

Локальное приложение довольно жестко связано с сетевыми ресурсами, такими как сети, безопасность, разрешения и хранилище. Многие из этих ресурсов необходимо жестко запрограммировать, и они ломаются, если что-либо перемещается или изменяется.

«Сеть и хранилище в облаке совершенно разные. Когда вы слышите термин «переплатформинг», это, как правило, работа по адаптации к изменениям в технологиях сетей, хранилищ и даже баз данных, чтобы приложение могло работать в облаке », - говорит Кавис из Deloitte.

Время простоя

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

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

Автоматизация

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

Локальными приложениями нужно управлять вручную.

Модульная конструкция

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

Безгражданство

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

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

Проблемы облачных вычислений

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

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

Вам также необходимо отказаться от старых методов разработчика. Модель водопада определенно не годится, и даже гибкой разработки может быть недостаточно. Таким образом, вы должны принять новые облачные подходы, такие как разработка минимально жизнеспособного продукта (MVP), многовариантное тестирование, быстрая итерация и тесное сотрудничество через организационные границы в модели DevOps.

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

Узнайте больше о связанных облачных технологиях

  • Платформа как услуга (PaaS) объяснила
  • Multicloud объяснил
  • Объяснение методологии Agile
  • Лучшие практики гибкой разработки
  • Девопс объяснил
  • Лучшие практики Devops
  • Объяснение микросервисов
  • Руководство по микросервисам
  • Объяснение контейнеров Docker и Linux
  • Kubernetes учебник
  • CI / CD (непрерывная интеграция и непрерывная доставка) объяснены
  • Лучшие практики CI / CD