Обложка: Разработка в AWS: полезные инструменты и фичи

Разработка в AWS: полезные инструменты и фичи

Николай Ляшук
Николай Ляшук

менеджер по проектам Linxdatacenter

В статье я расскажу, какие полезные приложения и инструменты разработки приложений можно выбрать из облака Amazon Web Services и почему на них стоит обратить внимание.

The big picture

Корпоративная ИТ-инфраструктура перебирается в облака.

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

В итоге так называемые «глобальные облака» – публичные облачные платформы мировых гигантов Google, Microsoft и Amazon Web Services – способны предоставлять бизнесу специализированную масштабируемую среду для создания широкого спектра ИТ-приложений.

При этом им удается закрыть потребности всех этапов разработки, от создания прототипа и MVP до тестирования и запуска в продуктив.

Этому способствует бурное развитие таких инструментов, как контейнеры, бессерверные модели предоставления ресурсов облака, автоматизация разработки, использование протокола без сохранения состояния, а также right-sizing – гибкое автоматическое распределение облачных мощностей под задачи работы приложения.

Так, контейнеры поддерживают перенос приложений между всеми типами инфраструктуры, включая общедоступные и частные облака, виртуализированные серверы и серверы с открытым исходным кодом. Бессерверные вычисления (Serverless computing) позволяют снять с разработчиков задачи по управлению масштабированием инфраструктуры и ускоряют внедрение кода в продуктивную среду.

Автоматизация позволяет быстрее и надежнее развертывать и обновлять приложения, а протокол без сохранения состояния (Stateless protocol) снимает привязку приложений к инфраструктуре и позволяет им сохранять свое состояние (state) независимо от базовой инфраструктуры.

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

Почему AWS?

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

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

Так, совсем недавно AWS впервые в своей истории запустил поддержку совместимости с macOS. Инстансы Mac mini стали доступны в Elastic Compute Cloud (EC2), позволив разработчикам создавать приложения для iPhone, iPad, Mac в среде AWS.

У разработчиков появился крупный провайдер облачных вычислений, который позволит им запускать инструменты разработки Xcode и Swift в облаке, избавляя их от необходимости обслуживать и настраивать машины Mac.

Неудивительно, что на днях компания сообщила о регистрации всплеска интереса к ресурсам AWS со стороны стартапов в области логистики, финтеха, банковских услуг и e-commerce.

На основе опыта работы в AWS мы сформировали собственный топ инструментов, полезных и востребованных для задач софтверной разработки.

Начнем с инструментов разработчика

AWS Cloud9 – облачная интегрированная среда разработки (IDE) для написания, запуска и отладки кода в браузере. Она включает в себя редактор кода, отладчик и терминал, а также встроенную поддержку языков программирования JavaScript, Python и PHP.

AWS Cloud Development Kit (AWS CDK) – среда разработки программного обеспечения с открытым исходным кодом для моделирования и предоставления ресурсов облачных приложений с использованием привычных языков программирования.

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

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

Инструмент позволяет создавать собственные структуры, «заточенные» под специфику и требованиям организации, работать над ними совместно и адаптировать под новые бизнес-проекты.

AWS X-Ray – помогает разработчикам анализировать продукты и распределенные приложения, например, приложения на базе архитектуры микросервисов, а также устранять ошибки.

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

X‑Ray также обеспечивает комплексное отслеживание маршрутов запросов в приложении и формирует карту внутренних компонентов. X-Ray одинаково эффективен при анализе продукта на разных стадиях разработки и развертывания, а также вне зависимости от уровня сложности архитектуры.

AWS CodePipeline – управляемая служба непрерывной доставки, которая помогает автоматизировать процесс, позволяя чаще тестировать и выпускать код.

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

Автоматически останавливает конвейер релизов в случае инцидентов, которые могут представлять собой сбои в блочном тестировании. CodePipeline использует AWS Identity и Access Management для управления доступом сотрудника, который имеет доступ к управлению рабочим процессом.

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

С помощью Lambda можно запускать практически любые виды приложений и серверных сервисов, просто загрузив программный код в Lambda. Инструмент позволяет настроить автоматический запуск программного кода из других сервисов AWS или вызывать его непосредственно из мобильного или интернет‑приложения.

AWS Fargate – программное ядро для бессерверных вычислений на базе контейнеров, которое работает как с Amazon Elastic Container Service (ECS), так и с Amazon Elastic Kubernetes Service (EKS).

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

Избыточное выделение вычислительных ресурсов и переплата за них полностью исключаются.

Для интеграции приложений

AWS Step Functions – позволяет координировать несколько сервисов AWS в бессерверных рабочих процессах, быстро создавать и обновлять приложения. Также можно объединять сервисы, такие как AWS Lambda и AWS Fargate, в многофункциональные приложения.

Amazon EventBridge – серверная шина событий, предназначенная для простого соединения облачных нативных приложений с использованием данных из собственных приложений пользователя, интегрированных приложений SaaS и сервисов AWS.

Мобильная разработка

AWS AppSync – управляемый сервис, который использует GraphQL, чтобы обеспечить простой доступ приложений к нужным данным. Это упрощает разработку, позволяя создавать гибкий API для безопасного доступа, манипулирования и объединения данных из нескольких источников.

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

AWS Amplify – платформа для разработки безопасных, масштабируемых мобильных и веб-приложений.

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

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

Amazon Pinpoint – маркетинговая и аналитическая служба, размещенная в общедоступном облаке AWS, которая позволяет организациям взаимодействовать и отслеживать показатели, связанные с использованием приложений конечными пользователями.

Разное полезное

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

Amazon CloudFront – глобальный сервис CDN (content delivery network), который помогает в безопасной доставке данных, видео, приложений и API.

Amazon DynamoDB – полностью управляемая, мультирегиональная, многопользовательская, надежная база данных со встроенной системой безопасности, резервного копирования и восстановления, а также кэширования в памяти для интернет-приложений.

Amazon Simple Storage Service (S3) – масштабируемая и недорогая веб-служба хранения объектов, предназначенная для оперативного резервного копирования и архивирования данных и программ приложений.

Amazon CodeGuru – сервис для автоматического анализа кода и рекомендаций по производительности приложения. Основан на машинном обучении, лучших практиках и уроках, извлеченных из миллионов обзоров кода и тысяч приложений, представленных в проектах с открытым исходным кодом и внутри AWS.