post-thumb

Переход к облачным технологиям

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

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

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

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

Это приводит к повышению производительности и/или снижению эксплуатационных расходов.

Стоимость. Более эффективные приложения обычно дешевле в эксплуатации.

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

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

Чтобы воспользоваться преимуществами облачной платформы, в том числе плат-

форм IaaS (таких как AWS), вы должны проектировать приложения так, чтобы они не были привязаны к конкретному физическому ресурсу. Например, если вы обращаетесь к вводу-выводу напрямую с такой платформы, как Linux, вам необходимо получить доступ к уровню абстракции облака или к его собственным API.

Облака могут обеспечить уровень абстракции или виртуализации между приложением и базовыми физическими (или виртуальными) ресурсами независимо от того, разработаны они для облака или нет.

Дэвид Линтикум (David Linthicum), главный специалист по облачной стратегии, Deloitte Consulting LLP

Компоненты облачных сервисов

Независимо от уровня зрелости, поставщик облачных вычислений всегда предлагает такие возможности, как вычисления, хранение, сетевое взаимодействие и мониторинг. В зависимости от уровня зрелости облака организации и команды, разрабатывающей систему, стоит начать переход в cloud native, используя эти строительные блоки базовой инфраструктуры. Инстансы виртуального сервера, блочное дисковое хранилище, хранилище объектов, волоконно-оптические линии и VPN, балансировщики нагрузки, мониторинг облачного API и мониторинг инстансов — это все типы строительных блоков, которые клиент будет использовать в начале работы с облаком. Аналогично компонентам, доступным в существующем локальном центре обработки данных, эти сервисы позволят командам разработчиков начать знакомство с приложениями в облаке.

Применение данных сервисов — это минимум, необходимый для разработки архитектуры cloud native и отражающий относительно низкий уровень на оси сервисов cloud native.

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

Принципы проектирования 12-факторных приложений

«Двенадцатифакторное приложение» — это методология создания приложений программного обеспечения в виде сервисов, называемых веб-приложениями (web apps) или software-as-a-service (SaaS) (https://12factor.net/). Эта методология была предложена в конце 2011 года, и ее факторы часто называют базовыми строительными блоками для разработки масштабируемых и надежных приложений cloud native. Ее принципы применяются к приложениям, написанным на любом языке программирования и использующим любую комбинацию вспомогательных сервисов (база данных, очередь, кэш-память и т. д.), они становятся все более полезными на любой платформе облачного поставщика. Идея, лежащая в основе 12-факторного приложения, заключается в том, что при разработке приложений необходимо учитывать 12 важных факторов, которые сводят к минимуму время и затраты на добавление новых разработчиков, обеспечивают возможность чистого взаимодействия со средой, позволяют развернуть приложение у поставщиков облачных сервисов, способны минимизировать расхождения между средами и разрешить масштабирование приложения. (https://12factor.net/).

Приложение двенадцати факторов — это методология для создания SaaS-приложений, которые:

  • Используют декларативный формат для описания процесса установки и настройки, что сводит к минимуму затраты времени и ресурсов для новых разработчиков, подключённых к проекту;
  • Имеют соглашение с операционной системой, предполагающее максимальную переносимость между средами выполнения;
  • Подходят для развёртывания на современных облачных платформах, устраняя необходимость в серверах и системном администрировании;
  • Сводят к минимуму расхождения между средой разработки и средой выполнения, что позволяет использовать непрерывное развёртывание (continuous deployment) для максимальной гибкости;
  • И могут масштабироваться без существенных изменений в инструментах, архитектуре и практике разработки.

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

Двенадцать факторов

I. Кодовая база

Одна кодовая база, отслеживаемая в системе контроля версий, – множество развёртываний

II. Зависимости

Явно объявляйте и изолируйте зависимости

III. Конфигурация

Сохраняйте конфигурацию в среде выполнения

IV. Сторонние службы (Backing Services)

Считайте сторонние службы (backing services) подключаемыми ресурсами

V. Сборка, релиз, выполнение

Строго разделяйте стадии сборки и выполнения

VI. Процессы

Запускайте приложение как один или несколько процессов не сохраняющих внутреннее состояние (stateless)

VII. Привязка портов (Port binding)

Экспортируйте сервисы через привязку портов

VIII. Параллелизм

Масштабируйте приложение с помощью процессов

IX. Утилизируемость (Disposability)

Максимизируйте надёжность с помощью быстрого запуска и корректного завершения работы

X. Паритет разработки/работы приложения

Держите окружения разработки, промежуточного развёртывания (staging) и рабочего развёртывания (production) максимально похожими

XI. Журналирование (Logs)

Рассматривайте журнал как поток событий

XII. Задачи администрирования

Выполняйте задачи администрирования/управления с помощью разовых процессов

comments
comments powered by Disqus