Топ неочевидных, но полезных инструментов для разработки в облаке AWS
Одна из главных «фишек» глобальных облаков – огромный выбор встроенных в их платформы готовых ИТ-сервисов для разработки бизнес-приложений. Их настолько много, и они настолько быстро развиваются, что далеко не каждый опытный ИТ-специалист успевает следить за новинками. Рассказываем, какие полезные приложения мы бы выбрали из облака Amazon и почему.
Базовые тренды-2020
Для того, чтобы понять, почему то или иное приложение полезно или популярно, нужно понимать, какие приоритетные задачи оно решает.
Общий тренд 2020 года в построении корпоративной ИТ-инфраструктуры – переход на разработку облачных приложений. Это подразумевает не просто миграцию бизнес-инструментов в облачную среду, а целенаправленное создание приложений специально под развертывание в облаке с фокусом на масштабируемость и гибкость конкретной облачной среды.
Поэтому важные тренды работы в облаке сегодня касаются преимущественно инструментов и технологий, которые помогают разрабатывать приложения в облаке:
● Containers (Контейнеры) – это масштабируемая среда в облаке, которая включает в себя всю логику, необходимую для запуска приложений.
Контейнеры изолируют среды выполнения приложений друг от друга, но совместно используют ядро ОС. Гибкие и стандартизированные, они поддерживают перенос приложений между всеми типами инфраструктуры, включая общедоступные и частные облака, виртуализированные серверы и серверы с открытым исходным кодом.
Благодаря этим особенностям контейнеры удобно использовать для создания облачных приложений, которые можно развернуть и запустить в любой облачной среде. Компания может выбрать любого облачного провайдера в любое время и также легко перейти к другому провайдеру.
Низкие расходы на эксплуатацию контейнеров наряду с высокой плотностью в одной виртуальной машине делают контейнеры идеальными для развертывания приложений в виде микросервисов, т. е. в виде набора независимо развертываемых сервисов.
● Serverless computing (Бессерверная парадигма предоставления инфраструктуры) – это модель облачных вычислений, в которой поставщик облачных сервисов запускает сервер и динамически распределяет необходимые ресурсы между потребителями.
Ценообразование основано на ресурсах, потребляемых приложением, а не на заранее приобретенной емкости. Разработчикам не нужно выделять серверы или управлять масштабированием инфраструктуры. Облачный провайдер позволяет разработчикам абстрагироваться от этих задач и, благодаря этому, быстрее внедрять код в продуктивную среду.
Допустим, произошло событие, которое запускает код приложения. Облачный провайдер динамически распределяет ресурсы для выполнения этого кода. Пользователь прекращает платить, как только код завершает свою работу.
В результате снижаются расходы бизнеса на инфраструктуру, упрощается структура операций, растет эффективность DevOps.
● Automation (Автоматизация). В 2020 году автоматизация разработки – это не столько тенденция, сколько растущая необходимость. Автоматизация развертывания, тестирования и оповещений позволяет быстрее и надежнее развертывать и обновлять приложения.
Любой код можно безопасно развернуть в облаке за счет множества автоматических тестов: если что-то идет не так, бизнес получает оповещения, чтобы баги можно было исправить до выпуска в продуктив.
● Statelessness, или Stateless protocol (Протокол без сохранения состояния) – локальные приложения часто хранят данные о своем состоянии (state) в инфраструктуре, в которой выполняется код. Поэтому приложение может быть повреждено при добавлении/удалении ресурсов сервера.
Облачные нативные приложения не привязаны к инфраструктуре, что означает возможность их выполнения в распределенном режиме, когда они сохраняют свое состояние независимо от базовой инфраструктуры. Их общение с сервером состоит из независимых пар «запрос-ответ».
● Right-sized capacity (Автоматическое распределение ресурсов облака)– облачные платформы, на которых развернуты приложения, динамически распределяют и перераспределяют свои ресурсы в зависимости от текущих потребностей приложения.
Традиционные ИТ-службы разрабатывают специализированное настраиваемое инфраструктурное решение, которое зачастую имеет слишком большой размер и основывается на оценках емкости при крайних сценариях, при этом практически отсутствует возможность его масштабирования в короткие сроки. Right-sizing устраняет эту проблему на уровне проектирования решения.
Желтая майка лидера
Что хорошего предлагает разработчикам в свете всего вышесказанного Amazon Web Services?
Список ресурсов AWS, относящихся к разработке облачных приложений, довольно обширный, все доступные инструменты в один материал не поместятся даже при беглом рассмотрении.
Мы выбрали топ приложений, которые, на наш взгляд, будут максимально востребованы бизнесом для целей разработки в ближайшем будущем.
● Amazon DynamoDB – полностью управляемая, мультирегиональная, многопользовательская, надежная база данных со встроенной системой безопасности, резервного копирования и восстановления, а также кэширования в памяти для интернет-приложений.
● Amazon Simple Storage Service (S3) – масштабируемая и недорогая веб-служба хранения объектов, предназначенная для оперативного резервного копирования и архивирования данных и программ приложений.
● AWS Lambda – вычислительный сервис, который позволяет разработчикам запускать код без необходимости управлять серверами. Он выполняет код только при необходимости и автоматически масштабируется.
● AWS Fargate – программное ядро для бессерверных вычислений на базе контейнеров, которое работает как с Amazon Elastic Container Service (ECS), так и с Amazon Elastic Kubernetes Service (EKS).
● Amazon Cognito облегчает контроль аутентификации пользователей, а также доступ к любым мобильным приложениям на устройствах, подключенных через Интернет.
● Amazon CloudFront – глобальный сервис CDN (content delivery network), который помогает в безопасной доставке данных, видео, приложений и API.
Также рассмотрим несколько узкоспециализированных областей.
Интеграция приложений
● AWS Step Functions позволяет координировать несколько сервисов AWS в бессерверных рабочих процессах, быстро создавать и обновлять приложения. Также можно объединять сервисы, такие как AWS Lambda и AWS Fargate, в многофункциональные приложения.
● Amazon EventBridge – серверная шина событий, предназначенная для простого соединения облачных нативных приложений с использованием данных из собственных приложений пользователя, интегрированных приложений SaaS и сервисов AWS.
Мобильная разработка
● AWS AppSync – управляемый сервис, который использует GraphQL, чтобы обеспечить простой доступ приложений к нужным данным. Это упрощает разработку, позволяя создавать гибкий API для безопасного доступа, манипулирования и объединения данных из нескольких источников.
Для мобильных и веб-приложений он также обеспечивает локальный доступ к данным, когда устройства отключаются, и синхронизацию данных с настраиваемым разрешением конфликтов, когда они снова подключаются к сети.
● AWS Amplify – платформа для разработки безопасных, масштабируемых мобильных и веб-приложений. Помогает аутентифицировать пользователей, надежно хранить данные и метаданные пользователей, разрешать выборочный доступ к данным, интегрировать машинное обучение (machine learning), анализировать метрики приложений и выполнять код на стороне сервера.
Охватывает весь рабочий процесс разработки приложений от контроля соответствия используемых версий ПО до развертывания в продуктивной среде и легко масштабируется от тысяч пользователей до десятков миллионов.
● Amazon Pinpoint – маркетинговая и аналитическая служба, размещенная в общедоступном облаке AWS, которая позволяет организациям взаимодействовать и отслеживать показатели, связанные с использованием приложений конечными пользователями.
Машинное обучение и искусственный интеллект
● Amazon CodeGuru – сервис для автоматического анализа кода и рекомендаций по производительности приложения. Он основан на машинном обучении, лучших практиках и уроках, извлеченных из миллионов обзоров кода и тысяч приложений, представленных в проектах с открытым исходным кодом и внутри AWS.
● Amazon Personalize –сервис машинного обучения, который позволяет разработчикам создавать индивидуальные рекомендации для клиентов, использующих их приложения.
● Amazon Forecast – полностью управляемый сервис, который использует машинное обучение для объединения данных временных рядов с дополнительными переменными для составления прогнозов.
● Amazon Transcribe использует процессы глубокого обучения для автоматического распознавание речи (ASR) в целях быстрого и точного преобразования речи в текст в различных приложениях.
Инструменты разработчика
● AWS Cloud9 – облачная интегрированная среда разработки (IDE) для написания, запуска и отладки кода только с помощью браузера.
● AWS Cloud Development Kit (AWS CDK) – среда разработки программного обеспечения с открытым исходным кодом для моделирования и предоставления ресурсов облачных приложений с использованием знакомых языков программирования.
● AWS X-Ray помогает разработчикам анализировать и отлаживать распределенные приложения.
● AWS CodePipeline – полностью управляемая служба непрерывной доставки, которая помогает автоматизировать конвейеры выпуска для быстрого и надежного обновления приложений и инфраструктуры.
Приведенный выше список полезных инструментов от Amazon можно пополнять постоянно – AWS учитывает текущие тренды разработки и добавляет все новый и новый функционал, который существенно помогает не только создавать и развертывать приложения, но и совместно работать над этими задачами.
Кейс: ИТ-задача и ее решение с помощью сервисов AWS
Одно из преимуществ работы в AWS – возможность сочетать и комбинировать как описанные выше, так и другие инструменты, а также базовые ресурсы облака, в нужные именно вам конфигурации для достижения поставленных целей.
Как эти инструменты применяются на практике, можно описать на примере контент-провайдера, пользующегося решениями облака AWS через наш сервис Direct Cloud Connect.
В роли заказчика выступил один из крупнейших российских мультимедийных сервисов, круглосуточно обеспечивающий пользователей развлекательным контентом. Ежемесячная аудитория насчитывает 17 млн человек. Сервис постоянно развивается и внедряет новые технологии для обеспечения высокого качества изображения и звука.
Подключение к облачным сервисам должно было решить такие задачи заказчика, как:
● развитие сервисов для обработки и анализа данных;
● организация «песочницы» для тестирования новых решений;
● размещение данных сервисов в надежной и высокопроизводительной ИТ-инфраструктуре;
● внедрение единого интерфейса и связи сервисов с локальной инфраструктурой заказчика для повышения удобства управления.
Облачные сервисы AWS стали оптимальной платформой для выполнения всех перечисленных задач.
Для технической реализации компания Linxdatacenter предоставила L2-канал QinQ от площадки Linxdatacenter в Москве до ЦОДа FR5 во Франкфурте. На базе прямого выделенного канала подключили заказчика к платформе AWS с использованием подключений Private и Public Virtual.
Канал Linxdatacenter обеспечивает минимальные сетевые задержки и стабильную работу с сервисами AWS. Надежность соединения гарантируется резервным подключением к платформе через другого провайдера.
В результате, все поставленные ИТ-задачи заказчик решает с помощью сервисов AWS:
● EC2 – вычисления в облаке,
● VPC – частное облако,
● S3 – хранение (бэкапы),
● Lambda, Athena - аналитика,
● Route53 - DNS,
● Elemental MediaPackage – подготовка и защита контента для live-трансляций,
● CloudFront (CDN от AWS) – тестирование раздачи 4К-контента.
Николай Ляшук, менеджер по продуктам компании Linxdatacenter