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

Совет

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

Cloud Native .NET apps for Azure eBook cover thumbnail.

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

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

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

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

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

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

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

Traditional monolithic design

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

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

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

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

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

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

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

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

Звучит знакомо?

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

Cloud-Native Design

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

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

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

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

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

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

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

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

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