Практика Ele.me в API — создание фреймворка API Everything

задняя часть внешний интерфейс сервер API
Практика Ele.me в API — создание фреймворка API Everything

Источник контента:5 января 2018 г. директор по исследованиям и разработкам Ele.me Лян Сяндун выступил с докладом «Практика Ele.me API Everything» на «Конференции по инновациям в области мобильных технологий 2018 [Примеры внедрения отраслевых технологий]». IT big coffee сообщил, что как эксклюзивный видео-партнер, он был выпущен с разрешения организатора и спикера.

Количество слов для чтения:2600 | 7 минут чтения

Посмотрите полное видео с гостевой речью и PPT,Пожалуйста, нажмите:t.cn/EwkEljh.

Резюме

Этот обмен подробно познакомит с концепцией и компонентами фреймворка Ele.me API Everything, по сравнению с традиционной разработкой, какие проблемы были решены, а какие необходимо решить.

Что такое API

Проще говоря, серверная служба открыта для внешнего мира в виде API в качестве промежуточного уровня для внешнего интерфейса для доступа к серверной части. API Everything адаптирует интерфейс службы SOA к внешним терминалам для доступа.

Зачем нужен API

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

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

Принципы технических решений продукта

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

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

жизненный цикл

除了对产品原则的考量外,我们还需要考虑整个API的生命周期。 API Everything作为SOA与前端之间的中间层,它的生命周期一般由API开发、API管理、API网关、API运维这样的流程构成。 The detailed rows of the above figure lists the details needed to consider each life cycle. For example, when the API is developed, it is necessary to consider the document and the Mock problem, and the API management phase considers access and limited flow, grayscale проблема.

планирование продукта

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

После завершения определения Stargate Cluster реализует функции, включая аутентификацию и аутентификацию, замену протокола, мониторинг и оповещение, расширение развертывания, а также объединение и адаптацию API. MockServer содержит реализацию Mock-функций, не только Mock API, но и Mock SOA. Прежде чем SOA будет готова, ее можно заранее реализовать через Mock SOA. Окончательный робот API — это в основном некоторые функции, связанные с тестированием.

системное взаимодействие

Внешний интерфейс обращается к службе SOA через Nginx.Серый цвет указывает на обычный доступ к службе, а красный цвет указывает на доступ к Mock сначала через строку запроса. Stargatecluster вызовет службу SOA относительно определения API, подготовленного порталом API. API Robot использует определения API для тестирования API и регрессионного тестирования.

Повышение эффективности — автоматизация

  • Автоматизация формирования документации по API:После написания комментариев и аннотаций к коду отправьте код, вы сможете ознакомиться с документацией по API.

  • Код API генерируется автоматически:Интерфейс SOA автоматически сопоставляется с интерфейсом Http через аннотацию, после чего генерируется код.

  • Автоматизация развертывания API:При развертывании службы SOA автоматически развертывается соответствующий веб-API.

  • API Mock генерируется автоматически:Данные MOCK автоматически генерируются в соответствии с МОДЕЛЕЙ API, и эта функция поддерживается.

  • Аварийный сигнал автоматического мониторинга API:Каждое приложение подключается к автоматическому мониторингу и оповещению всей связи.

Техническая архитектура StargateCluster

Кластер Stargate работает в среде докеров. ELESS в правом верхнем углу рисунка — это внутренняя среда публикации Ele.me.Когда среда SOA будет выпущена, она вызовет Stargate_core, затем войдет в MaxQ, а затем использует службу управления операциями Stargate для использования MaxQ и, наконец, уведомить Stargatenodes для анализа и обработки.

Кластер Stargate развернут на основе Docker

На рисунке показана конкретная среда развертывания кластера Stargate.Трафик сначала достигает Nginx от F5api-xxx.ele.me, а затем достигает среды Docker через восходящий поток.И наконец, Docker регистрирует IP-адрес в Nginx.

Среда развертывания

На рисунке показаны некоторые журналы развертывания, включая сообщения о развертывании, успешность развертывания и изменения.

APIPortal — Документация по автоматизации

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

API - Обсуждение

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

Процесс MockServer

ServiceProvider на рисунке должен полагаться на следующие сервисы, и эти сервисы можно имитировать через Mock Server.

Мок-сервер — автоматическое разрешение

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

Переднее и заднее разделение

Ранее мы говорили о таких инструментах, как StargateCluster, API Portal и Mock Server, которые можно использовать независимо. В практике разделения front-end и back-end разработки эти инструменты будут хорошо сочетаться. Вышеприведенная картинка представляет собой блок-схему всего процесса разработки, и вы можете видеть, что все части органично сочетаются друг с другом.

Практика применения — итерация объема поставки

Наш передний конец в основном дополнен соответствующей частью портала MOCK API. Первоначально запись Back-End Web Controller, а соответствующий тест теперь может быть автоматизирован веб-API, генерируемый Stargate Cluster. До того, как развитие ситуации часто происходит во время некоторых функций, оставленных, чтобы быть разработанным ФБР, ФБР, которое время становится дольше. И теперь конец разрабатывается один, время ФБР значительно сократилось.

Проблема решена?

Фреймворк API Everything вроде бы решает все проблемы, но на самом деле недостатки все же есть.

Можно ли автоматизировать регрессионное тестирование?

Мы предполагаем, что API Robot будет записывать онлайн-трафик, а затем воспроизводить его. Записанный трафик будет воспроизводиться во вновь запущенной системе, чтобы проверить наличие проблем с новой системой.

Чтобы выполнить регрессионный тест, вам нужно записать множество вещей, включая зависимости SOA1 и SOA2, сторонние приложения, Redis и базу данных. Восходящий запрос клиента также необходимо записать в соответствии с моментом времени, а затем интегрировать и проанализировать для извлечения соответствующего порядка, то есть дела. Весь этот процесс можно охарактеризовать как достаточно сложный.

На сегодня это все, всем спасибо!