Общие сведения о облачных приложениях

Подсказка

Это фрагмент из электронной книги «Архитектура облачных нативных приложений .NET для Azure», доступен на .NET Docs или как бесплатный загружаемый PDF-файл, который можно прочитать в автономном режиме.

Миниатюра обложки электронной книги Azure с Cloud Native .NET приложениями.

Еще один день, в офисе, работая над "следующей большой вещью".

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

Но на этот раз это отличается: стартап, справедливость и много финансирования.

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

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

Как вы создадите его?

Если вы следуйте инструкциям за последние 15 лет, вы, скорее всего, создадите систему, показанную на рис. 1.1.

Традиционный монолитный дизайн

Рис. 1-1. Традиционный монолитный дизайн

Вы создаете большое основное приложение, содержащее всю логику домена. Он включает такие модули, как Identity, Catalog, Ordering и многое другое. Они напрямую взаимодействуют друг с другом в рамках одного процесса сервера. Модули совместно используют большую реляционную базу данных. Ядро предоставляет функциональные возможности через HTML-интерфейс и мобильное приложение.

Поздравляю! Вы только что создали монолитное приложение.

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

  • строить
  • тест
  • развёртывать
  • устранение неполадок
  • вертикальное масштабирование

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

В какой-то момент, однако, вы начинаете чувствовать себя неудобно. Вы обнаружите, что вы теряете контроль над приложением. По мере того как время продолжается, чувство становится более интенсивным, и вы в конечном итоге входите в состояние, известное как Fear Cycle:

  • Приложение стало настолько сложно, что ни один человек не понимает его.
  • Вы опасаейтесь внесения изменений - каждое изменение имеет непредвиденные и дорогостоящие побочные эффекты.
  • Новые функции и исправления становятся сложными, трудоемкими и дорогостоящими для реализации.
  • Каждый выпуск имеет минимально возможный размер и требует полного развертывания всего приложения.
  • Один нестабильный компонент может завершить работу всей системы.
  • Новые технологии и платформы не являются вариантом.
  • Трудно реализовать гибкие методики доставки.
  • Архитектурная эрозия начинается, когда кодовая база ухудшается из-за бесконечных "быстрых исправлений".
  • Наконец, консультанты приходят и говорят вам переписать его.

Звук знакомый?

Многие организации устранили этот замкнутый цикл страха путем перехода на облачную архитектуру при создании систем. На рисунке 1–2 показана та же система, созданная с применением облачных методов и методик.

 дизайнCloud-Native

Рис. 1-2. Разработка на основе облака

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

Облачные вычисления

Хм... Мы только что использовали термин Cloud Native. Вашей первой мыслью может быть: "Что именно это означает?" Другое модное слово, придуманное поставщиками программного обеспечения, чтобы продать больше товаров?"

К счастью, это далеко не так, и, надеюсь, эта книга поможет убедить вас.

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

В отличие от постоянной шумихи, которая ведет нашу отрасль, облачно-родные технологии абсолютно реальны. Рассмотрим Cloud Native Computing Foundation (CNCF), консорциум из более чем 400 крупных корпораций. Ее устав заключается в том, чтобы сделать облачные вычисления вездесущими в технологиях и облачных стеках. Как одна из самых влиятельных групп с открытым исходным кодом, она размещает многие из самых быстрорастущих проектов с открытым исходным кодом в GitHub. К этим проектам относятся Kubernetes, Prometheus, Helm, Envoy и gRPC.

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

Итак, что именно такое Cloud Native? Сядьте, расслабьтесь и позвольте нам помочь вам исследовать этот новый мир.