70
Mobile Apps & APIs: Best Friends Forever Stewart Gleadow @stewgleadow [email protected] stewgleadow.com/talks

Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

Mobile Apps & APIs: Best Friends Forever

Stewart Gleadow @stewgleadow [email protected] stewgleadow.com/talks

Page 2: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

2008 201620122010

Page 3: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

2008 201620122010

greenfields

Page 4: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

2008 201620122010

greenfieldsmaintenance/evolution

Page 5: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

2008 2016

microservices

20122010

continuous delivery

greenfieldsmaintenance/evolution

Page 6: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

TRENDS FOR BACKENDS

BACKEND FOR FRONTEND PATTERN

PRODUCT TEAM STRUCTURES

CHALLENGES & GETTING STARTED

Page 7: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

TRENDS FOR BACKENDS

BACKEND FOR FRONTEND PATTERN

PRODUCT TEAM STRUCTURES

CHALLENGES & GETTING STARTED

Page 8: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BIG LEGACY THING

Page 9: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BIG LEGACY THING

Page 10: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BIG LEGACY THING

API

Page 11: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

microservices

Page 12: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution
Page 13: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

serverless

Page 14: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

serverlesseg. AWS

• S3 • SQS • Lambda

Page 15: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution
Page 16: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

$10 (in stock)

BUY NOW

ADD TO CART

Page 17: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

$10 (in stock)

BUY NOW

ADD TO CART

product

Page 18: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

$10 (in stock)

BUY NOW

ADD TO CART

product

recommendations

Page 19: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

$10 (in stock)

BUY NOW

ADD TO CART

product

favourites

warehouse

checkout

accountpostal

recommendations

Page 20: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

http://en.wikipedia.org/wiki/IPhone_5S

Mobile apps: slow to develop, update and maintain

Page 21: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

http://en.wikipedia.org/wiki/IPhone_5S

Mobile apps: slow to develop, update and maintain

Missing features in the API

Rolling out updates takes a long time

Dealing with backwards compatibility

Many requests for simple actions

Page 22: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

TRENDS FOR BACKENDS

BACKEND FOR FRONTEND PATTERN

PRODUCT TEAM STRUCTURES

CHALLENGES & GETTING STARTED

Page 23: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

Shield your apps from rapidly evolving backends

Page 24: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BACK

END F

OR FR

ONTE

ND

Shield your apps from rapidly evolving backends

Page 25: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BACK

END F

OR FR

ONTE

NDServers and

serverless

Page 26: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

CONF

IGURA

TION A

PI

Page 27: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

CONF

IGURA

TION A

PI

Static TV Guide

Static TV Content

.NET

node.js

clojure

Page 28: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

Backend for frontend characteristics

Stateless, no database

Tuned for larger, cacheable responses

Failure tolerant and scaleable

Aggregate functionality, driven by the experience

Page 29: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

http://en.wikipedia.org/wiki/Lego

Chunky vs chatty APIs

Fewer requests with larger responses

Keep responses cacheable

Monitor parsing performance on older devices

Page 30: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILE

Page 31: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

POST /register { username: “me”, password: “mine”, }

409 Conflict

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILE

Page 32: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

POST /login { username: “me”, password: “mine”, }

201 Created Set-Cookie: mytoken=c3Rld0ByZWEtZ3Jvd { token: “c3Rld0ByZWEtZ3Jvd” }

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILE

Page 33: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

GET /details Cookie: mytoken=c3Rld0ByZWEtZ3Jvd

200 OK { details: { name: “Stewart”, twitter: “@stewgleadow” } }

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILE

Page 34: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILEGET /history Cookie: mytoken=c3Rld0ByZWEtZ3Jvd

200 OK { history: [ { item: { … } }, { item: { … } } ] }

Page 35: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILE

Page 36: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

POST /register { username: “me”, password: “mine”, }

201 Created Set-Cookie: mytoken=c3Rld0ByZWEtZ3Jvd { details: { name: “Stewart”, twitter: “@stewgleadow” }, history: [ { item: { … } }, { item: { … } } ] }

PROFILE

SIGN IN

SIGN UP

Hi, Stewart

LOGOUT

PROFILE

Page 37: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

POST /register { username: “me”, password: “mine”, }

201 Created Set-Cookie: mytoken=c3Rld0ByZWEtZ3Jvd { details: { name: “Stewart”, twitter: “@stewgleadow” }, history: [ { item: { … } }, { item: { … } } ] }

PROFILE

Hi, Stewart

LOGOUT

PROFILE

LOGIN

REGISTER

Page 38: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

$10 (in stock)

BUY NOW

ADD TO CART

product

favourites

warehouse

checkout

accountpostal

recommendations

Page 39: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

$10 (in stock)

BUY NOW

ADD TO CART

Two requests:

1. All product information 2. Personalised Data

Page 40: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFFget product

Page 41: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

get core product detailsget product

Page 42: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

get core product details

get other details in parallel

get product

Page 43: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

get core product details

get other details in parallel

return alltransform data

get product

Page 44: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

The backend for front end

Fewer requests, simpler interactions

Force logic to the backend

Deal with backwards compatibility

http://www.flickr.com/photos/setaou/2935943672/

Page 45: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

TRENDS FOR BACKENDS

BACKEND FOR FRONTEND PATTERN

PRODUCT TEAM STRUCTURES

CHALLENGES & GETTING STARTED

Page 46: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

How many BFFs should I have?

Page 47: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

How many BFFs should I have?

Treat technology platforms as a product?

Treat separate audiences and feature sets as a product?

Page 48: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

BFF

Page 49: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

BFF

Page 50: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

CREA

TORS

LISTE

NERS

Page 51: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

platform/core teams

BFF

experience teams

Page 52: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

http://www.flickr.com/photos/peternijenhuis/6959653638/

BFF organisational pattern

Split around your concept of a product

People problems trump technology

Product teams own their experience API

Page 53: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

TRENDS FOR BACKENDS

BACKEND FOR FRONTEND PATTERN

PRODUCT TEAM STRUCTURES

CHALLENGES & GETTING STARTED

Page 54: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

?

Page 55: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

? caching

Page 56: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

? caching

single-point of failure

Page 57: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

? caching

single-point of failure

duplication

Page 58: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

? caching

single-point of failure

duplication

Page 59: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

http://www.flickr.com/photos/jakecaptive/3205277810

Does this change how you build the apps themselves?

Cross-platform mobile tools become less appealing

Get’s you closer to continuous delivery

Page 60: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

API

Getting started

Page 61: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

API

Getting started

Page 62: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

API

Migration strategy

Page 63: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

API

Other solutions

Page 64: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

API

GraphQL

Other solutions

Page 65: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

BFF

API

GraphQL

Apigee Mulesoft API Gateway

Other solutions

Page 66: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

TRENDS FOR BACKENDS

BACKEND FOR FRONTEND PATTERN

PRODUCT TEAM STRUCTURES

CHALLENGES & GETTING STARTED

Page 67: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

Mobile Apps & APIs: Best Friends Forever

Stewart Gleadow @stewgleadow [email protected] stewgleadow.com/talks

Page 68: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

Questions?

Page 69: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

Mobile Apps & APIs: Best Friends Forever

Stewart Gleadow @stewgleadow [email protected] stewgleadow.com/talks

Page 70: Mobile Apps & APIs: Best Friends Forever · 2008 2016 microservices 2010 2012 continuous delivery greenfields maintenance/evolution

REFERENCES• Sam Newman, Pattern: Backends For Frontends: http://samnewman.io/patterns/architectural/bff/

• Stewart Gleadow, Legacy To Mobile First, https://speakerdeck.com/sgleadow/legacy-to-mobile-first

• Software Engineering Daily interview with Lukasz Plotnicki, Moving To Microservices At SoundCloud: http://softwareengineeringdaily.com/2016/02/04/moving-to-microservices-at-soundcloud-with-lukasz-plotnicki/

• Stewart Gleadow, Cameron Barrie, James Brett, Evolving Mobile Architectures @ Mi9: http://www.slideshare.net/sgleadow/evolving-mobilearchitectures

• Lucasz Plotnicki, BFF @ SoundCloud: https://www.thoughtworks.com/insights/blog/bff-soundcloud

• Jan Stenberg, A Pattern For API Backends Serving Frontends: http://www.infoq.com/news/2015/12/bff-backend-frontend-pattern

• Stewart Gleadow, The Next Killer App Is Not An App: https://www.thoughtworks.com/p2magazine/issue02/mobile/

• Martin Fowler, Microservices: http://martinfowler.com/articles/microservices.html

• Sam Newman, Demistifying Conways Law: http://www.thoughtworks.com/insights/blog/demystifying-conways-law

• Michael Feathers, Microservices Until Macro Complexity: https://michaelfeathers.silvrback.com/microservices-until-macro-complexity

• Anthony Green, What Is A Microservice And Why Does It Matter: http://www.brunton-spall.co.uk/post/2014/05/21/what-is-a-microservice-and-why-does-it-matter

• Richard Clayton, Failing At Microservices: https://rclayton.silvrback.com/failing-at-microservices

• Fred George, Microservices Architecture: http://yow.eventer.com/yow-2012-1012/micro-services-architecture-by-fred-george-1286

• Todd Hoff, Microservices Not A Free Lunch: http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html

• Martin Fowler, Strangler Application: http://martinfowler.com/bliki/StranglerApplication.html

• Stewart Gleadow, No App Is An Island: https://speakerdeck.com/sgleadow/no-app-is-an-island

• Sam Newman, Practical Microservices: http://www.slideshare.net/spnewman/practical-microservices-yow-2013

• Jason Goetz, REST API Design: Chunky APIs, Chatty APIs: http://www.jamasoftware.com/blog/rest-api-design/