Эрика Ланги, старший архитектор решений Red Hat, рассказывает на портале Information Age о том, почему предприятиям следует внедрять нативно-облачную (cloud-native) разработку приложений.

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

Разработка нативно-облачных приложений — это создание и запуск новых приложений на основе принципов облачных вычислений. Целью является возможность действовать быстро, гибко и оперативно, чтобы сократить время, необходимое для развертывания, внедрения улучшений и реагирования на инциденты. Это достигается благодаря объединению четырех ключевых компонентов модели cloud-native — микросервисов, контейнеров, API и DevOps.

Микросервисы обеспечивают масштабирование

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

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

Контейнеры и модульность

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

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

Таким образом, использование контейнеров в нативно-облачной модели обеспечивает скорость и масштабируемость, которых невозможно достичь с помощью традиционной системной архитектуры, и удовлетворяет фундаментальную потребность бизнеса: изменения в ПО должны применяться быстро и беспрепятственно, чтобы задачи выполнялись эффективно и недорого. По всем этим причинам контейнеры являются одной из самых больших тенденций в разработке корпоративного ПО: недавний отчет Red Hat и CCS Insight показал, что 91% разработчиков в регионе EMEA в настоящее время разрабатывают и развертывают приложения на основе контейнеров, и более половины разработчиков (51%) считают внедрение контейнеров одним из главных приоритетов для своей команды.

API обеспечивают гибкость

Однако чтобы заставить контейнеры общаться и взаимодействовать друг с другом, вам потребуется платформа оркестровки, такая как Kubernetes. В основе контейнерных оркестровок лежат прикладные программные интерфейсы (API), представляющие собой наборы инструментов, определений и протоколов, которые позволяют продуктам и сервисам взаимодействовать без необходимости постоянного создания новой инфраструктуры подключения, а также помогают распределять вычислительные ресурсы и ресурсы хранения в системе.

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

DevOps обеспечивает скорость

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

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