Как сделать API удобным для клиентов, особенно мобильных клиентов:)

  • есть ряд endpoint’ ов
  • есть ряд клиентов, которые обращаются в эти endpoint’ы за данными
Рис.1 “Как поставщики видят свой API”
  • реализация логики объединения данных на стороне клиента приводит к tight coupling между мобильным приложением и API, а с учетом того, что мобильные приложения живут долго, то это связь тянется тоже дооооолго — дальнейшая эволюция мобильных приложений и API затруднена
  • если приложения пишутся нативные, то часто требуется эту логику реализовывать несколько раз — а именно под Android и под iOS
  • реализация сложного объединения данных фактически на фронте — это не профильная задача мобильных разработчиков, т.е. мы не оптимально используем разделение труда
  • при необходимости изменения логики объединения данных нужен релиз мобильного приложения — а это гораздо дольше и заметнее изменения бекенд сервисов
Рис.2 “Как клиенты видят API”
  • использование архитектурного паттерны Backend For Fronted или для краткости BFF
  • предоставление API в виде GraphQL — open-source языка для выборок и манипуляции данными при обращениях через API
Рис.3 “Как сделать API удобным для клиентов”
Рис.4 “Сравним BFF (Backend For Frontend) и GraphQL”
Рис.5 “Откуда появились подходы и кто их использует”

Источники

  1. Pattern: Backends For Frontends — определение от Сэма Ньюмана
  2. GraphQL — страничка с Wikipedia
  3. Backends For Frontends — в радаре от ThoughtWorks
  4. Pattern: API Gateway / Backends for Frontends — Крис Ричардсон смешивает паттерны BFF и API Gateway
  5. Backends for Frontends pattern — описание паттерна BFF от Microsoft
  6. Create a backend for frontend application architecture — описание от IBM
  7. GraphQL — официальная страничка языка

--

--

--

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Alexander Polomodov

Alexander Polomodov

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

More from Medium

How to validate Value Object with “Valiktor”

Microservices did you know this ?

What are NoSQL databases and when to use them?

Prototype Design Pattern