Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Подсказка
Это фрагмент из электронной книги «Архитектура облачных нативных приложений .NET для Azure», доступен на .NET Docs или как бесплатный загружаемый PDF-файл, который можно прочитать в автономном режиме.
Еще один день, в офисе, работая над "следующей большой вещью".
Ваш мобильный телефон звонит. Это ваш дружественный вербовщик - тот, кто звонит ежедневно с захватывающими новыми возможностями.
Но на этот раз это отличается: стартап, справедливость и много финансирования.
Упоминание об облачных технологиях, микрослужбах и передовых технологиях выводит вас из себя.
Спустя несколько недель вы теперь новый сотрудник, участвующий в собрании по проектированию, где архитектурирует крупное приложение для электронной коммерции. Вы собираетесь конкурировать с ведущими сайтами электронной коммерции.
Как вы создадите его?
Если вы следуйте инструкциям за последние 15 лет, вы, скорее всего, создадите систему, показанную на рис. 1.1.
Рис. 1-1. Традиционный монолитный дизайн
Вы создаете большое основное приложение, содержащее всю логику домена. Он включает такие модули, как Identity, Catalog, Ordering и многое другое. Они напрямую взаимодействуют друг с другом в рамках одного процесса сервера. Модули совместно используют большую реляционную базу данных. Ядро предоставляет функциональные возможности через HTML-интерфейс и мобильное приложение.
Поздравляю! Вы только что создали монолитное приложение.
Не все плохо. Монолиты предлагают некоторые уникальные преимущества. Например, они просты в использовании...
- строить
- тест
- развёртывать
- устранение неполадок
- вертикальное масштабирование
Многие успешные приложения, которые существуют сегодня, были созданы как монолиты. Приложение является хитом и продолжает развиваться, итерация после итерации, добавление дополнительных функций.
В какой-то момент, однако, вы начинаете чувствовать себя неудобно. Вы обнаружите, что вы теряете контроль над приложением. По мере того как время продолжается, чувство становится более интенсивным, и вы в конечном итоге входите в состояние, известное как Fear Cycle:
- Приложение стало настолько сложно, что ни один человек не понимает его.
- Вы опасаейтесь внесения изменений - каждое изменение имеет непредвиденные и дорогостоящие побочные эффекты.
- Новые функции и исправления становятся сложными, трудоемкими и дорогостоящими для реализации.
- Каждый выпуск имеет минимально возможный размер и требует полного развертывания всего приложения.
- Один нестабильный компонент может завершить работу всей системы.
- Новые технологии и платформы не являются вариантом.
- Трудно реализовать гибкие методики доставки.
- Архитектурная эрозия начинается, когда кодовая база ухудшается из-за бесконечных "быстрых исправлений".
- Наконец, консультанты приходят и говорят вам переписать его.
Звук знакомый?
Многие организации устранили этот замкнутый цикл страха путем перехода на облачную архитектуру при создании систем. На рисунке 1–2 показана та же система, созданная с применением облачных методов и методик.
Рис. 1-2. Разработка на основе облака
Обратите внимание, что приложение разложено по набору небольших изолированных микрослужб. Каждая служба является автономной и инкапсулирует собственный код, данные и зависимости. Каждый из них развертывается в программном контейнере и управляется оркестратором контейнеров. Вместо большой реляционной базы данных каждая служба владеет собственным хранилищем данных, тип которого зависит от потребностей данных. Обратите внимание, что некоторые службы зависят от реляционной базы данных, а другие зависят от баз данных NoSQL. Одна служба сохраняет свое состояние в распределенном кэше. Обратите внимание, как весь трафик проходит через службу шлюза API, которая отвечает за маршрутизацию трафика к основным серверным службам и решает множество междисциплинарных задач. Самое главное, что приложение использует все преимущества масштабируемости, доступности и устойчивости, найденных на современных облачных платформах.
Облачные вычисления
Хм... Мы только что использовали термин Cloud Native. Вашей первой мыслью может быть: "Что именно это означает?" Другое модное слово, придуманное поставщиками программного обеспечения, чтобы продать больше товаров?"
К счастью, это далеко не так, и, надеюсь, эта книга поможет убедить вас.
За короткий срок облачные технологии стали ведущей тенденцией в индустрии программного обеспечения. Это новый способ создания больших, сложных систем. Этот подход полностью использует современные методики разработки программного обеспечения, технологии и облачную инфраструктуру. Облачная среда меняет подход к разработке, реализации, развертыванию и эксплуатации систем.
В отличие от постоянной шумихи, которая ведет нашу отрасль, облачно-родные технологии абсолютно реальны. Рассмотрим Cloud Native Computing Foundation (CNCF), консорциум из более чем 400 крупных корпораций. Ее устав заключается в том, чтобы сделать облачные вычисления вездесущими в технологиях и облачных стеках. Как одна из самых влиятельных групп с открытым исходным кодом, она размещает многие из самых быстрорастущих проектов с открытым исходным кодом в GitHub. К этим проектам относятся Kubernetes, Prometheus, Helm, Envoy и gRPC.
CNCF способствует экосистеме открытого источника и нейтралитета поставщиков. После этого в этой книге представлены принципы, шаблоны и лучшие практики, не привязанные к конкретным технологиям. В то же время мы обсудим службы и инфраструктуру, доступные в облаке Microsoft Azure для создания облачных систем.
Итак, что именно такое Cloud Native? Сядьте, расслабьтесь и позвольте нам помочь вам исследовать этот новый мир.