Найти тему
Хайтек

Суперприложение: как сделать сервис, которым будут пользоваться тысячи людей

Оглавление

Привычные решения и новшества

Для проектирования и мониторинга API есть много уже знакомых разработчикам API Design-инструментов: Postman, SwaggerHub, Stoplight, Readme, MuleSoft и другие, в том числе тесно привязанные к облачным провайдерам.

Сейчас разрабатываются и другие инструменты проектирования API: Redocly, Insomnia, Archbee, Cruderra и другие. В них пока нет полноценных инструментов мониторинга API, но это дело времени.

На определенном этапе перед командой разработки появляется задача сравнения проекта API с тем, что происходит в бэкенде на самом деле. И тогда инструменты тестирования и мониторинга выходят на первый план. Благодаря им можно не только отследить явные ошибочные ситуации использования API, но и выявить проблемы производительности на стыке задач APIOps, TestOps и DevOps.

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

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

-2

«Инструменты тестирования и мониторинга выходят на первый план»

На что нужно обращать внимание при сравнении проекта и реальности

В первую очередь, проверяют работу нисходящей цепочки контроля и отвечают на пять вопросов:

Какие есть пользовательские истории и какие из них содержат ошибки?Какие API Endpoints возвращают ошибочный статус? Сколько таких статусов?Ошибочная реакция Response Status на запрос верна? Или вызвана внутренней ошибкой обработки?Насколько валидны входящие и исходящие модели данных (DataModel) и заголовков (Headers)? Насколько они соответствуют изначальным требованиям?Верное ли значение поля (Field) передается в модели данных? Не нарушаются ли ограничения? Выставленные ограничения необходимы и достаточны?

Если ответы на эти вопросы есть, — это базовая степень контроля работы API продукта.

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

API Endpoints (в том числе HTTP, gRPC, WebSockets, server-sent events, webhooks и др.);брокеры сообщений (Kafka, Rabbit MQ и др.);задачи по расписанию (jobs или workers).

Для учета этих точек недостаточно одних инструментов API Design. Обычно применяют дополнительные инструменты мониторинга — готовые или настроенные под себя (например, при помощи Grafana + Prometheus). Это помогает выявить скрытые накапливающиеся проблемы, уведомить команду разработки и принять своевременные меры.

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

Есть уверенность, что все работает. Какие тесты необходимо провести?

ИТ-отрасли известна классическая пирамида тестирования, описывающая комплексный подход в покрытии IT-продукта тестами (по ISTQB):

модульное;интеграционное;системное;приемочное.

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

Также для уверенности в работоспособности продукта нужно обеспечить закрытие инфраструктурных вопросов:

включение автотестов в этапы сборки проекта в CI/CD;подключение рассылки оповещений (alerts) о критических состояниях системы;настройка мониторинга разрабатываемых сервисов, а также используемых внутренних и внешних продуктов;фиксация исключений и логов в отдельных системах для дальнейшего отслеживания и восстановления событий.

Выявлять проблему лучше еще до того, как пользователь сообщит о ней или уйдет. К счастью, ИТ-сообщество накопило открытую базу знаний в области тестирования. Если применять лучшие практики, то система будет работать как часы.

-3

«Выявлять проблему лучше еще до того, как пользователь сообщит о ней или уйдет»

Над чем еще стоит поработать: будущее в этой сфере

Для разового решения задачи сравнения проекта API с его реальным воплощением вполне достаточно существующих API Design инструментов.

Однако для более глубокого контроля API требуется нечто большее. Например, Continuous API Design с инструментами мониторинга и тестирования. А если смотреть еще на один уровень глубже, то также необходимо контролировать backend, выполняющий основную работу для обслуживания внешнего интерфейса API.

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

Читать далее:

«Джеймс Уэбб» прислал фото столкновения двух огромных галактик

«Бесполезная» бактерия на Земле обеспечит жизнь колонизаторам Марса

На пирамиде в Китае нашли портрет «царя предков». Он правил более 4 000 лет назад