Chris Bailey

(@Chris__Bailey)
Discover. Collaborate. Deploy.
VS
BFF
{
“name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"homeworld": "https://swapi.co/api/planets/1/",
"films": [
"https://swapi.co/api/films/2/",
"https://swapi.co/api/films/6/",
"https://swapi.co/api/films/3/",
"https://swapi.co/api/films/1/",
"https://swapi.co/api/films/7/"
],
"species": [
"https://swapi.co/api/species/1/"
],
"vehicles": [
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/30/"
],
"starships": [
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/22/"
],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-20T21:17:56.891000Z",
"url": "https://swapi.co/api/people/1/"
}
{
“name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"homeworld": "https://swapi.co/api/planets/1/",
"films": [
"https://swapi.co/api/films/2/",
"https://swapi.co/api/films/6/",
"https://swapi.co/api/films/3/",
"https://swapi.co/api/films/1/",
"https://swapi.co/api/films/7/"
],
"species": [
"https://swapi.co/api/species/1/"
],
"vehicles": [
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/30/"
],
"starships": [
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/22/"
],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-20T21:17:56.891000Z",
"url": "https://swapi.co/api/people/1/"
}
Planet Query Reference
{
“name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"homeworld": "https://swapi.co/api/planets/1/",
"films": [
"https://swapi.co/api/films/2/",
"https://swapi.co/api/films/6/",
"https://swapi.co/api/films/3/",
"https://swapi.co/api/films/1/",
"https://swapi.co/api/films/7/"
],
"species": [
"https://swapi.co/api/species/1/"
],
"vehicles": [
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/30/"
],
"starships": [
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/22/"
],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-20T21:17:56.891000Z",
"url": "https://swapi.co/api/people/1/"
}
Planet Query Reference
Film Query References
Species Query References
Vehicle Query References
Starship Query References
Q: What films feature Luke
Skywalker?
{
“name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"homeworld": "https://swapi.co/api/planets/1/",
"films": [
"https://swapi.co/api/films/2/",
"https://swapi.co/api/films/6/",
"https://swapi.co/api/films/3/",
"https://swapi.co/api/films/1/",
"https://swapi.co/api/films/7/"
],
"species": [
"https://swapi.co/api/species/1/"
],
"vehicles": [
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/30/"
],
"starships": [
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/22/"
],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-20T21:17:56.891000Z",
"url": "https://swapi.co/api/people/1/"
}
Call #1
{
“name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"gender": "male",
"homeworld": "https://swapi.co/api/planets/1/",
"films": [
"https://swapi.co/api/films/2/",
"https://swapi.co/api/films/6/",
"https://swapi.co/api/films/3/",
"https://swapi.co/api/films/1/",
"https://swapi.co/api/films/7/"
],
"species": [
"https://swapi.co/api/species/1/"
],
"vehicles": [
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/30/"
],
"starships": [
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/22/"
],
"created": "2014-12-09T13:50:51.644000Z",
"edited": "2014-12-20T21:17:56.891000Z",
"url": "https://swapi.co/api/people/1/"
}
Film Query References
Call #1
Call #2
{
"title": "The Empire Strikes Back",
"episode_id": 5,
"opening_crawl": "It is a dark time for thernRebellion. Although the DeathrnStar has been destroyed,rnImperial troops have driven thernRebel forces from their hiddenrnbase and pursued them acrossrnthe galaxy.
rnrnEvading the dreaded ImperialrnStarfleet, a group of freedomrnfighters led by Luke Skywalkerrnhas established a new secretrnbase on the remote ice worldrnof Hoth.rnrnThe evil lord Darth Vader,rnobsessed with
finding youngrnSkywalker, has dispatchedrnthousands of remote probes intornthe far reaches of space....",
"director": "Irvin Kershner",
"producer": "Gary Kurtz, Rick McCallum",
"release_date": "1980-05-17",
"characters": [
"https://swapi.co/api/people/1/",
"https://swapi.co/api/people/2/",
"https://swapi.co/api/people/3/",
"https://swapi.co/api/people/4/",
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/10/",
"https://swapi.co/api/people/13/",
"https://swapi.co/api/people/14/",
"https://swapi.co/api/people/18/",
"https://swapi.co/api/people/20/",
"https://swapi.co/api/people/21/",
"https://swapi.co/api/people/22/",
"https://swapi.co/api/people/23/",
"https://swapi.co/api/people/24/",
"https://swapi.co/api/people/25/",
"https://swapi.co/api/people/26/"
],
"planets": [
"https://swapi.co/api/planets/4/",
"https://swapi.co/api/planets/5/",
"https://swapi.co/api/planets/6/",
"https://swapi.co/api/planets/27/"
],
"starships": [
"https://swapi.co/api/starships/15/",
"https://swapi.co/api/starships/10/",
"https://swapi.co/api/starships/11/",
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/21/",
"https://swapi.co/api/starships/22/",
"https://swapi.co/api/starships/23/",
"https://swapi.co/api/starships/3/",
"https://swapi.co/api/starships/17/"
],
"vehicles": [
"https://swapi.co/api/vehicles/8/",
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/16/",
"https://swapi.co/api/vehicles/18/",
"https://swapi.co/api/vehicles/19/",
"https://swapi.co/api/vehicles/20/"
],
"species": [
"https://swapi.co/api/species/6/",
"https://swapi.co/api/species/7/",
"https://swapi.co/api/species/3/",
"https://swapi.co/api/species/2/",
"https://swapi.co/api/species/1/"
],
"created": "2014-12-12T11:26:24.656000Z",
"edited": "2017-04-19T10:57:29.544256Z",
"url": "https://swapi.co/api/films/2/"
}
Call #2
{
"title": "The Empire Strikes Back",
"episode_id": 5,
"opening_crawl": "It is a dark time for thernRebellion. Although the DeathrnStar has been destroyed,rnImperial troops have driven thernRebel forces from their hiddenrnbase and pursued them acrossrnthe galaxy.
rnrnEvading the dreaded ImperialrnStarfleet, a group of freedomrnfighters led by Luke Skywalkerrnhas established a new secretrnbase on the remote ice worldrnof Hoth.rnrnThe evil lord Darth Vader,rnobsessed with
finding youngrnSkywalker, has dispatchedrnthousands of remote probes intornthe far reaches of space....",
"director": "Irvin Kershner",
"producer": "Gary Kurtz, Rick McCallum",
"release_date": "1980-05-17",
"characters": [
"https://swapi.co/api/people/1/",
"https://swapi.co/api/people/2/",
"https://swapi.co/api/people/3/",
"https://swapi.co/api/people/4/",
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/10/",
"https://swapi.co/api/people/13/",
"https://swapi.co/api/people/14/",
"https://swapi.co/api/people/18/",
"https://swapi.co/api/people/20/",
"https://swapi.co/api/people/21/",
"https://swapi.co/api/people/22/",
"https://swapi.co/api/people/23/",
"https://swapi.co/api/people/24/",
"https://swapi.co/api/people/25/",
"https://swapi.co/api/people/26/"
],
"planets": [
"https://swapi.co/api/planets/4/",
"https://swapi.co/api/planets/5/",
"https://swapi.co/api/planets/6/",
"https://swapi.co/api/planets/27/"
],
"starships": [
"https://swapi.co/api/starships/15/",
"https://swapi.co/api/starships/10/",
"https://swapi.co/api/starships/11/",
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/21/",
"https://swapi.co/api/starships/22/",
"https://swapi.co/api/starships/23/",
"https://swapi.co/api/starships/3/",
"https://swapi.co/api/starships/17/"
],
"vehicles": [
"https://swapi.co/api/vehicles/8/",
"https://swapi.co/api/vehicles/14/",
"https://swapi.co/api/vehicles/16/",
"https://swapi.co/api/vehicles/18/",
"https://swapi.co/api/vehicles/19/",
"https://swapi.co/api/vehicles/20/"
],
"species": [
"https://swapi.co/api/species/6/",
"https://swapi.co/api/species/7/",
"https://swapi.co/api/species/3/",
"https://swapi.co/api/species/2/",
"https://swapi.co/api/species/1/"
],
"created": "2014-12-12T11:26:24.656000Z",
"edited": "2017-04-19T10:57:29.544256Z",
"url": "https://swapi.co/api/films/2/"
}
Call #2
{
"title": "Revenge of the Sith",
"episode_id": 3,
"opening_crawl": "War! The Republic is crumblingrnunder attacks by the ruthlessrnSith Lord, Count Dooku.rnThere are heroes on both sides.rnEvil is everywhere.rnrnIn a stunning move, thernfiendish droid leader, GeneralrnGrievous, has swept into thernRepublic capital and kidnappedrnChancellor Palpatine, leader ofrnthe Galactic Senate.rnrnAs the Separatist Droid
Armyrnattempts to flee the besiegedrncapital with their valuablernhostage, two Jedi Knights lead arndesperate mission to rescue therncaptive Chancellor....",
"director": "George Lucas",
"producer": "Rick McCallum",
"release_date": "2005-05-19",
"characters": [
"https://swapi.co/api/people/1/",
"https://swapi.co/api/people/2/",
"https://swapi.co/api/people/3/",
"https://swapi.co/api/people/4/",
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/6/",
"https://swapi.co/api/people/7/",
"https://swapi.co/api/people/10/",
"https://swapi.co/api/people/11/",
"https://swapi.co/api/people/12/",
"https://swapi.co/api/people/13/",
"https://swapi.co/api/people/20/",
"https://swapi.co/api/people/21/",
"https://swapi.co/api/people/33/",
"https://swapi.co/api/people/46/",
"https://swapi.co/api/people/51/",
"https://swapi.co/api/people/52/",
"https://swapi.co/api/people/53/",
"https://swapi.co/api/people/54/",
"https://swapi.co/api/people/55/",
"https://swapi.co/api/people/56/",
"https://swapi.co/api/people/58/",
"https://swapi.co/api/people/63/",
"https://swapi.co/api/people/64/",
"https://swapi.co/api/people/67/",
"https://swapi.co/api/people/68/",
"https://swapi.co/api/people/75/",
"https://swapi.co/api/people/78/",
"https://swapi.co/api/people/79/",
"https://swapi.co/api/people/80/",
"https://swapi.co/api/people/81/",
"https://swapi.co/api/people/82/",
"https://swapi.co/api/people/83/",
"https://swapi.co/api/people/35/"
],
"planets": [
"https://swapi.co/api/planets/2/",
"https://swapi.co/api/planets/5/",
"https://swapi.co/api/planets/8/",
"https://swapi.co/api/planets/9/",
"https://swapi.co/api/planets/12/",
"https://swapi.co/api/planets/13/",
"https://swapi.co/api/planets/14/",
"https://swapi.co/api/planets/15/",
"https://swapi.co/api/planets/16/",
"https://swapi.co/api/planets/17/",
"https://swapi.co/api/planets/18/",
"https://swapi.co/api/planets/19/",
"https://swapi.co/api/planets/1/"
],
"starships": [
"https://swapi.co/api/starships/48/",
"https://swapi.co/api/starships/59/",
"https://swapi.co/api/starships/61/",
"https://swapi.co/api/starships/32/",
"https://swapi.co/api/starships/63/",
"https://swapi.co/api/starships/64/",
"https://swapi.co/api/starships/65/",
"https://swapi.co/api/starships/66/",
"https://swapi.co/api/starships/74/",
"https://swapi.co/api/starships/75/",
"https://swapi.co/api/starships/2/",
"https://swapi.co/api/starships/68/"
],
"vehicles": [
"https://swapi.co/api/vehicles/33/",
"https://swapi.co/api/vehicles/50/",
"https://swapi.co/api/vehicles/53/",
"https://swapi.co/api/vehicles/56/",
"https://swapi.co/api/vehicles/60/",
"https://swapi.co/api/vehicles/62/",
"https://swapi.co/api/vehicles/67/",
"https://swapi.co/api/vehicles/69/",
"https://swapi.co/api/vehicles/70/",
"https://swapi.co/api/vehicles/71/",
"https://swapi.co/api/vehicles/72/",
"https://swapi.co/api/vehicles/73/",
"https://swapi.co/api/vehicles/76/"
],
"species": [
"https://swapi.co/api/species/19/",
"https://swapi.co/api/species/33/",
"https://swapi.co/api/species/2/",
"https://swapi.co/api/species/3/",
"https://swapi.co/api/species/36/",
"https://swapi.co/api/species/37/",
"https://swapi.co/api/species/6/",
"https://swapi.co/api/species/1/",
"https://swapi.co/api/species/34/",
"https://swapi.co/api/species/15/",
"https://swapi.co/api/species/35/",
"https://swapi.co/api/species/20/",
"https://swapi.co/api/species/23/",
"https://swapi.co/api/species/24/",
"https://swapi.co/api/species/25/",
"https://swapi.co/api/species/26/",
"https://swapi.co/api/species/27/",
"https://swapi.co/api/species/28/",
"https://swapi.co/api/species/29/",
"https://swapi.co/api/species/30/"
],
"created": "2014-12-20T18:49:38.403000Z",
"edited": "2015-04-11T09:45:44.862122Z",
Call #3
{
"title": "Return of the Jedi",
"episode_id": 6,
"opening_crawl": "Luke Skywalker has returned tornhis home planet of Tatooine inrnan attempt to rescue hisrnfriend Han Solo from thernclutches of the vile gangsterrnJabba the Hutt.rnrnLittle does Luke know that thernGALACTIC EMPIRE has
secretlyrnbegun construction on a newrnarmored space station evenrnmore powerful than the firstrndreaded Death Star.rnrnWhen completed, this ultimaternweapon will spell certain doomrnfor the small band of rebelsrnstruggling to restore freedomrnto the
galaxy...",
"director": "Richard Marquand",
"producer": "Howard G. Kazanjian, George Lucas, Rick McCallum",
"release_date": "1983-05-25",
"characters": [
"https://swapi.co/api/people/1/",
"https://swapi.co/api/people/2/",
"https://swapi.co/api/people/3/",
"https://swapi.co/api/people/4/",
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/10/",
"https://swapi.co/api/people/13/",
"https://swapi.co/api/people/14/",
"https://swapi.co/api/people/16/",
"https://swapi.co/api/people/18/",
"https://swapi.co/api/people/20/",
"https://swapi.co/api/people/21/",
"https://swapi.co/api/people/22/",
"https://swapi.co/api/people/25/",
"https://swapi.co/api/people/27/",
"https://swapi.co/api/people/28/",
"https://swapi.co/api/people/29/",
"https://swapi.co/api/people/30/",
"https://swapi.co/api/people/31/",
"https://swapi.co/api/people/45/"
],
"planets": [
"https://swapi.co/api/planets/5/",
"https://swapi.co/api/planets/7/",
"https://swapi.co/api/planets/8/",
"https://swapi.co/api/planets/9/",
"https://swapi.co/api/planets/1/"
],
"starships": [
"https://swapi.co/api/starships/15/",
"https://swapi.co/api/starships/10/",
"https://swapi.co/api/starships/11/",
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/22/",
"https://swapi.co/api/starships/23/",
"https://swapi.co/api/starships/27/",
"https://swapi.co/api/starships/28/",
"https://swapi.co/api/starships/29/",
"https://swapi.co/api/starships/3/",
"https://swapi.co/api/starships/17/",
"https://swapi.co/api/starships/2/"
],
"vehicles": [
"https://swapi.co/api/vehicles/8/",
"https://swapi.co/api/vehicles/16/",
"https://swapi.co/api/vehicles/18/",
"https://swapi.co/api/vehicles/19/",
"https://swapi.co/api/vehicles/24/",
"https://swapi.co/api/vehicles/25/",
"https://swapi.co/api/vehicles/26/",
"https://swapi.co/api/vehicles/30/"
],
"species": [
"https://swapi.co/api/species/1/",
"https://swapi.co/api/species/2/",
"https://swapi.co/api/species/3/",
"https://swapi.co/api/species/5/",
"https://swapi.co/api/species/6/",
"https://swapi.co/api/species/8/",
"https://swapi.co/api/species/9/",
"https://swapi.co/api/species/10/",
"https://swapi.co/api/species/15/"
],
"created": "2014-12-18T10:39:33.255000Z",
"edited": "2015-04-11T09:46:05.220365Z",
Call #4
{
"title": "A New Hope",
"episode_id": 4,
"opening_crawl": "It is a period of civil war.rnRebel spaceships, strikingrnfrom a hidden base, have wonrntheir first victory againstrnthe evil Galactic Empire.rnrnDuring the battle, Rebelrnspies managed to steal
secretrnplans to the Empire'srnultimate weapon, the DEATHrnSTAR, an armored spacernstation with enough powerrnto destroy an entire planet.rnrnPursued by the Empire'srnsinister agents, PrincessrnLeia races home aboard
herrnstarship, custodian of thernstolen plans that can save herrnpeople and restorernfreedom to the galaxy....",
"director": "George Lucas",
"producer": "Gary Kurtz, Rick McCallum",
"release_date": "1977-05-25",
"characters": [
"https://swapi.co/api/people/1/",
"https://swapi.co/api/people/2/",
"https://swapi.co/api/people/3/",
"https://swapi.co/api/people/4/",
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/6/",
"https://swapi.co/api/people/7/",
"https://swapi.co/api/people/8/",
"https://swapi.co/api/people/9/",
"https://swapi.co/api/people/10/",
"https://swapi.co/api/people/12/",
"https://swapi.co/api/people/13/",
"https://swapi.co/api/people/14/",
"https://swapi.co/api/people/15/",
"https://swapi.co/api/people/16/",
"https://swapi.co/api/people/18/",
"https://swapi.co/api/people/19/",
"https://swapi.co/api/people/81/"
],
"planets": [
"https://swapi.co/api/planets/2/",
"https://swapi.co/api/planets/3/",
"https://swapi.co/api/planets/1/"
],
"starships": [
"https://swapi.co/api/starships/2/",
"https://swapi.co/api/starships/3/",
"https://swapi.co/api/starships/5/",
"https://swapi.co/api/starships/9/",
"https://swapi.co/api/starships/10/",
"https://swapi.co/api/starships/11/",
"https://swapi.co/api/starships/12/",
"https://swapi.co/api/starships/13/"
],
"vehicles": [
"https://swapi.co/api/vehicles/4/",
"https://swapi.co/api/vehicles/6/",
"https://swapi.co/api/vehicles/7/",
"https://swapi.co/api/vehicles/8/"
],
"species": [
"https://swapi.co/api/species/5/",
"https://swapi.co/api/species/3/",
"https://swapi.co/api/species/2/",
"https://swapi.co/api/species/1/",
"https://swapi.co/api/species/4/"
],
"created": "2014-12-10T14:23:31.880000Z",
"edited": "2015-04-11T09:46:52.774897Z",
"url": "https://swapi.co/api/films/1/"
}
Call #5
{
"title": "The Force Awakens",
"episode_id": 7,
"opening_crawl": "Luke Skywalker has vanished.rnIn his absence, the sinisterrnFIRST ORDER has risen fromrnthe ashes of the Empirernand will not rest untilrnSkywalker, the last Jedi,rnhas been destroyed.
rn rnWith the support of thernREPUBLIC, General Leia Organarnleads a brave RESISTANCE.rnShe is desperate to find herrnbrother Luke and gain hisrnhelp in restoring peace andrnjustice to the galaxy.rn
rnLeia has sent her most daringrnpilot on a secret missionrnto Jakku, where an old allyrnhas discovered a clue tornLuke's whereabouts....",
"director": "J. J. Abrams",
"producer": "Kathleen Kennedy, J. J. Abrams, Bryan Burk",
"release_date": "2015-12-11",
"characters": [
"https://swapi.co/api/people/1/",
"https://swapi.co/api/people/3/",
"https://swapi.co/api/people/5/",
"https://swapi.co/api/people/13/",
"https://swapi.co/api/people/14/",
"https://swapi.co/api/people/27/",
"https://swapi.co/api/people/84/",
"https://swapi.co/api/people/85/",
"https://swapi.co/api/people/86/",
"https://swapi.co/api/people/87/",
"https://swapi.co/api/people/88/"
],
"planets": [
"https://swapi.co/api/planets/61/"
],
"starships": [
"https://swapi.co/api/starships/77/",
"https://swapi.co/api/starships/10/"
],
"vehicles": [],
"species": [
"https://swapi.co/api/species/3/",
"https://swapi.co/api/species/2/",
"https://swapi.co/api/species/1/"
],
"created": "2015-04-17T06:51:30.504780Z",
"edited": "2015-12-17T14:31:47.617768Z",
"url": "https://swapi.co/api/films/7/"
}
Call #6
{
"name": "Luke Skywalker",
"films": [
"The Empire Strikes Back”,
"Revenge of the Sith”,
"Return of the Jedi”,
"A New Hope",
"The Force Awakens”
]
}
6 Calls provides the data to create:
Backend

For Frontend
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API Hosted Services
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API
ROUTING PROXY
Micro-Services Hosted Services
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API
ROUTING PROXY
Micro-Services Hosted Services
API Team
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API
ROUTING PROXY
Micro-Services Hosted Services
Web Team
API Team
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API
ROUTING PROXY
Micro-Services Hosted Services
Android Team
Web Team
API Team
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
API Team
First Paint Time
Server Side Rendering
First Paint Time
Server Side Rendering
First Paint Time
Search Engine Optimisation
Server Side Rendering
First Paint Time
Search Engine Optimisation
Network Payload Size
Request Frequency
Server Side Rendering
First Paint Time
Search Engine Optimisation
Network Payload Size
CPU Usage
Request Frequency
Battery Usage
Memory Usage
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Backend API
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
API Team
Swift @ IBM
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
API Team
BFF API
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted ServicesBFF API
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
UI Engineering Systems Engineering
1/17/17
Client Library B
Client Library A
Client Library C
Client Library D
Client Library E
Client Library F
Route A
Route B
Route C
Route D
Route E
Service A
Service B
Service C
Service D
Service E
Service D
Web Server
1/17/17
1/17/17
+
1/17/17
1/17/17
TV
1/17/17
TV
iOS
1/17/17
TV
iOS
Android
Windows
Browsers
TV
iOS
Android
Windows
Browsers
TV
iOS
Android
Windows
Browsers
1/17/17
TV
iOS
Android
Windows
Browsers
UI Engineering
1/17/17
Remote

Service

Layer
TV
iOS
Android
Windows
Browsers
UI Engineering
1/17/17
Remote

Service

Layer
TV
iOS
Android
Windows
Browsers
UI Engineering
Search
MAP
GPS
Catalog
User
Playback
UI Engineering
1/17/17
Remote

Service

Layer
TV
iOS
Android
Windows
Browsers
UI Engineering
Search
MAP
GPS
Catalog
User
Playback
UI Engineering
1/17/17
Remote

Service

Layer
TV
iOS
Android
Windows
Browsers
UI Engineering Systems Engineering
Search
MAP
GPS
Catalog
User
Playback
“The BFF is tightly coupled to a specific user experience, and will
typically be maintained by the same team as the user interface,
thereby making it easier to define and adapt the API as the UI requires,
while also simplifying process of lining up release of both the client and
server components.”
— Sam Newman, ThoughtWorks
{
"name": "Luke Skywalker",
"films": [
"The Empire Strikes Back”,
"Revenge of the Sith”,
"Return of the Jedi”,
"A New Hope",
"The Force Awakens”
]
}
GraphQL is a query language for your API, 

and a server-side runtime for executing queries
by using a type system you define for your data.
type Query {
hero: Character
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
class Character {
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
class Character {
int id;
String name;
Planet homeWorld;
Films[] films;

}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
class Character {
int id;
String name;
Planet homeWorld;
Films[] films;

String getName() {
return this.name;
}

}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
class Character {
int id;
String name;
Planet homeWorld;
Films[] films;

String getName() {
return this.name;
}

Film[] getFilms() {

return this.films;
}
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
class Character {
int id;
String name;
Planet homeWorld;
Films[] films;

String getName() {
return this.name;
}

Film[] getFilms() {

return this.films;
}
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
{
hero (id: 1) {
name
films {
title
}
}
}
class Character {
int id;
String name;
Planet homeWorld;
Films[] films;

String getName() {
return this.name;
}

Film[] getFilms() {

return this.films;
}
}
type Query {
hero: Character
}
type Character {
id: Int
name: String
homeWorld: Planet
films: [Film]
}
type Planet {
id: Int
name: String
climate: String
}
type Film {
id: Int
title: String
openingCrawl: Int
characters: [Character]
}
class Character {
int id;
String name;
Planet homeWorld;
Films[] films;

String getName() {
return this.name;
}

Film[] getFilms() {

return this.films;
}
}
{
"hero": {
"name": "Luke Skywalker",
"films": [
"The Empire Strikes Back”,
"Revenge of the Sith”,
"Return of the Jedi”,
"A New Hope",
"The Force Awakens”
]
}
}
So Which?
BFF
BFF
Specific Users
BFF
Specific Users
Building Solutions
BFF
Specific Users
Building Solutions
Very Low Data Usage
BFF
Specific Users
Building Solutions
Very Low Data Usage
Agility
BFF
Specific Users
Building Solutions
Very Low Data Usage
Agility
Fullstack
BFF
Specific Users General Users
Building Solutions
Very Low Data Usage
Agility
Fullstack
BFF
Specific Users General Users
Building Solutions Projecting Capabilities
Very Low Data Usage
Agility
Fullstack
BFF
Specific Users General Users
Building Solutions Projecting Capabilities
Very Low Data Usage Low Data Usage
Agility
Fullstack
BFF
Specific Users General Users
Building Solutions Projecting Capabilities
Very Low Data Usage Low Data Usage
Agility Stability
Fullstack
BFF
Specific Users General Users
Building Solutions Projecting Capabilities
Very Low Data Usage Low Data Usage
Agility Stability
Fullstack Flexible
Maybe Both?
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
UI Engineering Systems Engineering
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
UI Engineering Systems Engineering
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
UI Engineering Systems Engineering
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices
ROUTING PROXY
Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
UI Engineering Systems Engineering
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Micro-Services Hosted Services
iOS Team
Android Team
Web Team
BFF API
UI Engineering Systems Engineering
Questions

Index - BFFs vs GraphQL

  • 1.
  • 6.
    { “name": "Luke Skywalker", "height":"172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.co/api/planets/1/", "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ], "species": [ "https://swapi.co/api/species/1/" ], "vehicles": [ "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/30/" ], "starships": [ "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/" ], "created": "2014-12-09T13:50:51.644000Z", "edited": "2014-12-20T21:17:56.891000Z", "url": "https://swapi.co/api/people/1/" }
  • 7.
    { “name": "Luke Skywalker", "height":"172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.co/api/planets/1/", "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ], "species": [ "https://swapi.co/api/species/1/" ], "vehicles": [ "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/30/" ], "starships": [ "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/" ], "created": "2014-12-09T13:50:51.644000Z", "edited": "2014-12-20T21:17:56.891000Z", "url": "https://swapi.co/api/people/1/" } Planet Query Reference
  • 8.
    { “name": "Luke Skywalker", "height":"172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.co/api/planets/1/", "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ], "species": [ "https://swapi.co/api/species/1/" ], "vehicles": [ "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/30/" ], "starships": [ "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/" ], "created": "2014-12-09T13:50:51.644000Z", "edited": "2014-12-20T21:17:56.891000Z", "url": "https://swapi.co/api/people/1/" } Planet Query Reference Film Query References Species Query References Vehicle Query References Starship Query References
  • 9.
    Q: What filmsfeature Luke Skywalker?
  • 10.
    { “name": "Luke Skywalker", "height":"172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.co/api/planets/1/", "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ], "species": [ "https://swapi.co/api/species/1/" ], "vehicles": [ "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/30/" ], "starships": [ "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/" ], "created": "2014-12-09T13:50:51.644000Z", "edited": "2014-12-20T21:17:56.891000Z", "url": "https://swapi.co/api/people/1/" } Call #1
  • 11.
    { “name": "Luke Skywalker", "height":"172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.co/api/planets/1/", "films": [ "https://swapi.co/api/films/2/", "https://swapi.co/api/films/6/", "https://swapi.co/api/films/3/", "https://swapi.co/api/films/1/", "https://swapi.co/api/films/7/" ], "species": [ "https://swapi.co/api/species/1/" ], "vehicles": [ "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/30/" ], "starships": [ "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/" ], "created": "2014-12-09T13:50:51.644000Z", "edited": "2014-12-20T21:17:56.891000Z", "url": "https://swapi.co/api/people/1/" } Film Query References Call #1
  • 12.
  • 13.
    { "title": "The EmpireStrikes Back", "episode_id": 5, "opening_crawl": "It is a dark time for thernRebellion. Although the DeathrnStar has been destroyed,rnImperial troops have driven thernRebel forces from their hiddenrnbase and pursued them acrossrnthe galaxy. rnrnEvading the dreaded ImperialrnStarfleet, a group of freedomrnfighters led by Luke Skywalkerrnhas established a new secretrnbase on the remote ice worldrnof Hoth.rnrnThe evil lord Darth Vader,rnobsessed with finding youngrnSkywalker, has dispatchedrnthousands of remote probes intornthe far reaches of space....", "director": "Irvin Kershner", "producer": "Gary Kurtz, Rick McCallum", "release_date": "1980-05-17", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/people/2/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/4/", "https://swapi.co/api/people/5/", "https://swapi.co/api/people/10/", "https://swapi.co/api/people/13/", "https://swapi.co/api/people/14/", "https://swapi.co/api/people/18/", "https://swapi.co/api/people/20/", "https://swapi.co/api/people/21/", "https://swapi.co/api/people/22/", "https://swapi.co/api/people/23/", "https://swapi.co/api/people/24/", "https://swapi.co/api/people/25/", "https://swapi.co/api/people/26/" ], "planets": [ "https://swapi.co/api/planets/4/", "https://swapi.co/api/planets/5/", "https://swapi.co/api/planets/6/", "https://swapi.co/api/planets/27/" ], "starships": [ "https://swapi.co/api/starships/15/", "https://swapi.co/api/starships/10/", "https://swapi.co/api/starships/11/", "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/21/", "https://swapi.co/api/starships/22/", "https://swapi.co/api/starships/23/", "https://swapi.co/api/starships/3/", "https://swapi.co/api/starships/17/" ], "vehicles": [ "https://swapi.co/api/vehicles/8/", "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/16/", "https://swapi.co/api/vehicles/18/", "https://swapi.co/api/vehicles/19/", "https://swapi.co/api/vehicles/20/" ], "species": [ "https://swapi.co/api/species/6/", "https://swapi.co/api/species/7/", "https://swapi.co/api/species/3/", "https://swapi.co/api/species/2/", "https://swapi.co/api/species/1/" ], "created": "2014-12-12T11:26:24.656000Z", "edited": "2017-04-19T10:57:29.544256Z", "url": "https://swapi.co/api/films/2/" } Call #2
  • 14.
    { "title": "The EmpireStrikes Back", "episode_id": 5, "opening_crawl": "It is a dark time for thernRebellion. Although the DeathrnStar has been destroyed,rnImperial troops have driven thernRebel forces from their hiddenrnbase and pursued them acrossrnthe galaxy. rnrnEvading the dreaded ImperialrnStarfleet, a group of freedomrnfighters led by Luke Skywalkerrnhas established a new secretrnbase on the remote ice worldrnof Hoth.rnrnThe evil lord Darth Vader,rnobsessed with finding youngrnSkywalker, has dispatchedrnthousands of remote probes intornthe far reaches of space....", "director": "Irvin Kershner", "producer": "Gary Kurtz, Rick McCallum", "release_date": "1980-05-17", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/people/2/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/4/", "https://swapi.co/api/people/5/", "https://swapi.co/api/people/10/", "https://swapi.co/api/people/13/", "https://swapi.co/api/people/14/", "https://swapi.co/api/people/18/", "https://swapi.co/api/people/20/", "https://swapi.co/api/people/21/", "https://swapi.co/api/people/22/", "https://swapi.co/api/people/23/", "https://swapi.co/api/people/24/", "https://swapi.co/api/people/25/", "https://swapi.co/api/people/26/" ], "planets": [ "https://swapi.co/api/planets/4/", "https://swapi.co/api/planets/5/", "https://swapi.co/api/planets/6/", "https://swapi.co/api/planets/27/" ], "starships": [ "https://swapi.co/api/starships/15/", "https://swapi.co/api/starships/10/", "https://swapi.co/api/starships/11/", "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/21/", "https://swapi.co/api/starships/22/", "https://swapi.co/api/starships/23/", "https://swapi.co/api/starships/3/", "https://swapi.co/api/starships/17/" ], "vehicles": [ "https://swapi.co/api/vehicles/8/", "https://swapi.co/api/vehicles/14/", "https://swapi.co/api/vehicles/16/", "https://swapi.co/api/vehicles/18/", "https://swapi.co/api/vehicles/19/", "https://swapi.co/api/vehicles/20/" ], "species": [ "https://swapi.co/api/species/6/", "https://swapi.co/api/species/7/", "https://swapi.co/api/species/3/", "https://swapi.co/api/species/2/", "https://swapi.co/api/species/1/" ], "created": "2014-12-12T11:26:24.656000Z", "edited": "2017-04-19T10:57:29.544256Z", "url": "https://swapi.co/api/films/2/" } Call #2
  • 15.
    { "title": "Revenge ofthe Sith", "episode_id": 3, "opening_crawl": "War! The Republic is crumblingrnunder attacks by the ruthlessrnSith Lord, Count Dooku.rnThere are heroes on both sides.rnEvil is everywhere.rnrnIn a stunning move, thernfiendish droid leader, GeneralrnGrievous, has swept into thernRepublic capital and kidnappedrnChancellor Palpatine, leader ofrnthe Galactic Senate.rnrnAs the Separatist Droid Armyrnattempts to flee the besiegedrncapital with their valuablernhostage, two Jedi Knights lead arndesperate mission to rescue therncaptive Chancellor....", "director": "George Lucas", "producer": "Rick McCallum", "release_date": "2005-05-19", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/people/2/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/4/", "https://swapi.co/api/people/5/", "https://swapi.co/api/people/6/", "https://swapi.co/api/people/7/", "https://swapi.co/api/people/10/", "https://swapi.co/api/people/11/", "https://swapi.co/api/people/12/", "https://swapi.co/api/people/13/", "https://swapi.co/api/people/20/", "https://swapi.co/api/people/21/", "https://swapi.co/api/people/33/", "https://swapi.co/api/people/46/", "https://swapi.co/api/people/51/", "https://swapi.co/api/people/52/", "https://swapi.co/api/people/53/", "https://swapi.co/api/people/54/", "https://swapi.co/api/people/55/", "https://swapi.co/api/people/56/", "https://swapi.co/api/people/58/", "https://swapi.co/api/people/63/", "https://swapi.co/api/people/64/", "https://swapi.co/api/people/67/", "https://swapi.co/api/people/68/", "https://swapi.co/api/people/75/", "https://swapi.co/api/people/78/", "https://swapi.co/api/people/79/", "https://swapi.co/api/people/80/", "https://swapi.co/api/people/81/", "https://swapi.co/api/people/82/", "https://swapi.co/api/people/83/", "https://swapi.co/api/people/35/" ], "planets": [ "https://swapi.co/api/planets/2/", "https://swapi.co/api/planets/5/", "https://swapi.co/api/planets/8/", "https://swapi.co/api/planets/9/", "https://swapi.co/api/planets/12/", "https://swapi.co/api/planets/13/", "https://swapi.co/api/planets/14/", "https://swapi.co/api/planets/15/", "https://swapi.co/api/planets/16/", "https://swapi.co/api/planets/17/", "https://swapi.co/api/planets/18/", "https://swapi.co/api/planets/19/", "https://swapi.co/api/planets/1/" ], "starships": [ "https://swapi.co/api/starships/48/", "https://swapi.co/api/starships/59/", "https://swapi.co/api/starships/61/", "https://swapi.co/api/starships/32/", "https://swapi.co/api/starships/63/", "https://swapi.co/api/starships/64/", "https://swapi.co/api/starships/65/", "https://swapi.co/api/starships/66/", "https://swapi.co/api/starships/74/", "https://swapi.co/api/starships/75/", "https://swapi.co/api/starships/2/", "https://swapi.co/api/starships/68/" ], "vehicles": [ "https://swapi.co/api/vehicles/33/", "https://swapi.co/api/vehicles/50/", "https://swapi.co/api/vehicles/53/", "https://swapi.co/api/vehicles/56/", "https://swapi.co/api/vehicles/60/", "https://swapi.co/api/vehicles/62/", "https://swapi.co/api/vehicles/67/", "https://swapi.co/api/vehicles/69/", "https://swapi.co/api/vehicles/70/", "https://swapi.co/api/vehicles/71/", "https://swapi.co/api/vehicles/72/", "https://swapi.co/api/vehicles/73/", "https://swapi.co/api/vehicles/76/" ], "species": [ "https://swapi.co/api/species/19/", "https://swapi.co/api/species/33/", "https://swapi.co/api/species/2/", "https://swapi.co/api/species/3/", "https://swapi.co/api/species/36/", "https://swapi.co/api/species/37/", "https://swapi.co/api/species/6/", "https://swapi.co/api/species/1/", "https://swapi.co/api/species/34/", "https://swapi.co/api/species/15/", "https://swapi.co/api/species/35/", "https://swapi.co/api/species/20/", "https://swapi.co/api/species/23/", "https://swapi.co/api/species/24/", "https://swapi.co/api/species/25/", "https://swapi.co/api/species/26/", "https://swapi.co/api/species/27/", "https://swapi.co/api/species/28/", "https://swapi.co/api/species/29/", "https://swapi.co/api/species/30/" ], "created": "2014-12-20T18:49:38.403000Z", "edited": "2015-04-11T09:45:44.862122Z", Call #3
  • 16.
    { "title": "Return ofthe Jedi", "episode_id": 6, "opening_crawl": "Luke Skywalker has returned tornhis home planet of Tatooine inrnan attempt to rescue hisrnfriend Han Solo from thernclutches of the vile gangsterrnJabba the Hutt.rnrnLittle does Luke know that thernGALACTIC EMPIRE has secretlyrnbegun construction on a newrnarmored space station evenrnmore powerful than the firstrndreaded Death Star.rnrnWhen completed, this ultimaternweapon will spell certain doomrnfor the small band of rebelsrnstruggling to restore freedomrnto the galaxy...", "director": "Richard Marquand", "producer": "Howard G. Kazanjian, George Lucas, Rick McCallum", "release_date": "1983-05-25", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/people/2/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/4/", "https://swapi.co/api/people/5/", "https://swapi.co/api/people/10/", "https://swapi.co/api/people/13/", "https://swapi.co/api/people/14/", "https://swapi.co/api/people/16/", "https://swapi.co/api/people/18/", "https://swapi.co/api/people/20/", "https://swapi.co/api/people/21/", "https://swapi.co/api/people/22/", "https://swapi.co/api/people/25/", "https://swapi.co/api/people/27/", "https://swapi.co/api/people/28/", "https://swapi.co/api/people/29/", "https://swapi.co/api/people/30/", "https://swapi.co/api/people/31/", "https://swapi.co/api/people/45/" ], "planets": [ "https://swapi.co/api/planets/5/", "https://swapi.co/api/planets/7/", "https://swapi.co/api/planets/8/", "https://swapi.co/api/planets/9/", "https://swapi.co/api/planets/1/" ], "starships": [ "https://swapi.co/api/starships/15/", "https://swapi.co/api/starships/10/", "https://swapi.co/api/starships/11/", "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/22/", "https://swapi.co/api/starships/23/", "https://swapi.co/api/starships/27/", "https://swapi.co/api/starships/28/", "https://swapi.co/api/starships/29/", "https://swapi.co/api/starships/3/", "https://swapi.co/api/starships/17/", "https://swapi.co/api/starships/2/" ], "vehicles": [ "https://swapi.co/api/vehicles/8/", "https://swapi.co/api/vehicles/16/", "https://swapi.co/api/vehicles/18/", "https://swapi.co/api/vehicles/19/", "https://swapi.co/api/vehicles/24/", "https://swapi.co/api/vehicles/25/", "https://swapi.co/api/vehicles/26/", "https://swapi.co/api/vehicles/30/" ], "species": [ "https://swapi.co/api/species/1/", "https://swapi.co/api/species/2/", "https://swapi.co/api/species/3/", "https://swapi.co/api/species/5/", "https://swapi.co/api/species/6/", "https://swapi.co/api/species/8/", "https://swapi.co/api/species/9/", "https://swapi.co/api/species/10/", "https://swapi.co/api/species/15/" ], "created": "2014-12-18T10:39:33.255000Z", "edited": "2015-04-11T09:46:05.220365Z", Call #4
  • 17.
    { "title": "A NewHope", "episode_id": 4, "opening_crawl": "It is a period of civil war.rnRebel spaceships, strikingrnfrom a hidden base, have wonrntheir first victory againstrnthe evil Galactic Empire.rnrnDuring the battle, Rebelrnspies managed to steal secretrnplans to the Empire'srnultimate weapon, the DEATHrnSTAR, an armored spacernstation with enough powerrnto destroy an entire planet.rnrnPursued by the Empire'srnsinister agents, PrincessrnLeia races home aboard herrnstarship, custodian of thernstolen plans that can save herrnpeople and restorernfreedom to the galaxy....", "director": "George Lucas", "producer": "Gary Kurtz, Rick McCallum", "release_date": "1977-05-25", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/people/2/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/4/", "https://swapi.co/api/people/5/", "https://swapi.co/api/people/6/", "https://swapi.co/api/people/7/", "https://swapi.co/api/people/8/", "https://swapi.co/api/people/9/", "https://swapi.co/api/people/10/", "https://swapi.co/api/people/12/", "https://swapi.co/api/people/13/", "https://swapi.co/api/people/14/", "https://swapi.co/api/people/15/", "https://swapi.co/api/people/16/", "https://swapi.co/api/people/18/", "https://swapi.co/api/people/19/", "https://swapi.co/api/people/81/" ], "planets": [ "https://swapi.co/api/planets/2/", "https://swapi.co/api/planets/3/", "https://swapi.co/api/planets/1/" ], "starships": [ "https://swapi.co/api/starships/2/", "https://swapi.co/api/starships/3/", "https://swapi.co/api/starships/5/", "https://swapi.co/api/starships/9/", "https://swapi.co/api/starships/10/", "https://swapi.co/api/starships/11/", "https://swapi.co/api/starships/12/", "https://swapi.co/api/starships/13/" ], "vehicles": [ "https://swapi.co/api/vehicles/4/", "https://swapi.co/api/vehicles/6/", "https://swapi.co/api/vehicles/7/", "https://swapi.co/api/vehicles/8/" ], "species": [ "https://swapi.co/api/species/5/", "https://swapi.co/api/species/3/", "https://swapi.co/api/species/2/", "https://swapi.co/api/species/1/", "https://swapi.co/api/species/4/" ], "created": "2014-12-10T14:23:31.880000Z", "edited": "2015-04-11T09:46:52.774897Z", "url": "https://swapi.co/api/films/1/" } Call #5
  • 18.
    { "title": "The ForceAwakens", "episode_id": 7, "opening_crawl": "Luke Skywalker has vanished.rnIn his absence, the sinisterrnFIRST ORDER has risen fromrnthe ashes of the Empirernand will not rest untilrnSkywalker, the last Jedi,rnhas been destroyed. rn rnWith the support of thernREPUBLIC, General Leia Organarnleads a brave RESISTANCE.rnShe is desperate to find herrnbrother Luke and gain hisrnhelp in restoring peace andrnjustice to the galaxy.rn rnLeia has sent her most daringrnpilot on a secret missionrnto Jakku, where an old allyrnhas discovered a clue tornLuke's whereabouts....", "director": "J. J. Abrams", "producer": "Kathleen Kennedy, J. J. Abrams, Bryan Burk", "release_date": "2015-12-11", "characters": [ "https://swapi.co/api/people/1/", "https://swapi.co/api/people/3/", "https://swapi.co/api/people/5/", "https://swapi.co/api/people/13/", "https://swapi.co/api/people/14/", "https://swapi.co/api/people/27/", "https://swapi.co/api/people/84/", "https://swapi.co/api/people/85/", "https://swapi.co/api/people/86/", "https://swapi.co/api/people/87/", "https://swapi.co/api/people/88/" ], "planets": [ "https://swapi.co/api/planets/61/" ], "starships": [ "https://swapi.co/api/starships/77/", "https://swapi.co/api/starships/10/" ], "vehicles": [], "species": [ "https://swapi.co/api/species/3/", "https://swapi.co/api/species/2/", "https://swapi.co/api/species/1/" ], "created": "2015-04-17T06:51:30.504780Z", "edited": "2015-12-17T14:31:47.617768Z", "url": "https://swapi.co/api/films/7/" } Call #6
  • 19.
    { "name": "Luke Skywalker", "films":[ "The Empire Strikes Back”, "Revenge of the Sith”, "Return of the Jedi”, "A New Hope", "The Force Awakens” ] } 6 Calls provides the data to create:
  • 20.
  • 25.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API Hosted Services
  • 26.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API ROUTING PROXY Micro-Services Hosted Services
  • 27.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API ROUTING PROXY Micro-Services Hosted Services API Team
  • 28.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API ROUTING PROXY Micro-Services Hosted Services Web Team API Team
  • 29.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API ROUTING PROXY Micro-Services Hosted Services Android Team Web Team API Team
  • 30.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team API Team
  • 32.
  • 33.
  • 34.
    Server Side Rendering FirstPaint Time Search Engine Optimisation
  • 35.
    Server Side Rendering FirstPaint Time Search Engine Optimisation Network Payload Size Request Frequency
  • 36.
    Server Side Rendering FirstPaint Time Search Engine Optimisation Network Payload Size CPU Usage Request Frequency Battery Usage Memory Usage
  • 37.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices Backend API ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team API Team
  • 38.
    Swift @ IBM GATEWAY PUBLICNETWORK CLOUD NETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team
  • 39.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team API Team BFF API
  • 40.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API
  • 41.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted ServicesBFF API
  • 42.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API
  • 43.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API UI Engineering Systems Engineering
  • 45.
    1/17/17 Client Library B ClientLibrary A Client Library C Client Library D Client Library E Client Library F Route A Route B Route C Route D Route E Service A Service B Service C Service D Service E Service D Web Server
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
    “The BFF istightly coupled to a specific user experience, and will typically be maintained by the same team as the user interface, thereby making it easier to define and adapt the API as the UI requires, while also simplifying process of lining up release of both the client and server components.” — Sam Newman, ThoughtWorks
  • 61.
    { "name": "Luke Skywalker", "films":[ "The Empire Strikes Back”, "Revenge of the Sith”, "Return of the Jedi”, "A New Hope", "The Force Awakens” ] }
  • 64.
    GraphQL is aquery language for your API, 
 and a server-side runtime for executing queries by using a type system you define for your data.
  • 65.
    type Query { hero:Character }
  • 66.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] }
  • 67.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String }
  • 68.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] }
  • 69.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] }
  • 70.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } }
  • 71.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } }
  • 72.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } }
  • 73.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } } class Character { }
  • 74.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } } class Character { int id; String name; Planet homeWorld; Films[] films;
 }
  • 75.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } } class Character { int id; String name; Planet homeWorld; Films[] films;
 String getName() { return this.name; }
 }
  • 76.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } } class Character { int id; String name; Planet homeWorld; Films[] films;
 String getName() { return this.name; }
 Film[] getFilms() {
 return this.films; } }
  • 77.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } } class Character { int id; String name; Planet homeWorld; Films[] films;
 String getName() { return this.name; }
 Film[] getFilms() {
 return this.films; } }
  • 78.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } { hero (id: 1) { name films { title } } } class Character { int id; String name; Planet homeWorld; Films[] films;
 String getName() { return this.name; }
 Film[] getFilms() {
 return this.films; } }
  • 79.
    type Query { hero:Character } type Character { id: Int name: String homeWorld: Planet films: [Film] } type Planet { id: Int name: String climate: String } type Film { id: Int title: String openingCrawl: Int characters: [Character] } class Character { int id; String name; Planet homeWorld; Films[] films;
 String getName() { return this.name; }
 Film[] getFilms() {
 return this.films; } } { "hero": { "name": "Luke Skywalker", "films": [ "The Empire Strikes Back”, "Revenge of the Sith”, "Return of the Jedi”, "A New Hope", "The Force Awakens” ] } }
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
    BFF Specific Users Building Solutions VeryLow Data Usage Agility Fullstack
  • 87.
    BFF Specific Users GeneralUsers Building Solutions Very Low Data Usage Agility Fullstack
  • 88.
    BFF Specific Users GeneralUsers Building Solutions Projecting Capabilities Very Low Data Usage Agility Fullstack
  • 89.
    BFF Specific Users GeneralUsers Building Solutions Projecting Capabilities Very Low Data Usage Low Data Usage Agility Fullstack
  • 90.
    BFF Specific Users GeneralUsers Building Solutions Projecting Capabilities Very Low Data Usage Low Data Usage Agility Stability Fullstack
  • 91.
    BFF Specific Users GeneralUsers Building Solutions Projecting Capabilities Very Low Data Usage Low Data Usage Agility Stability Fullstack Flexible
  • 92.
  • 93.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API UI Engineering Systems Engineering
  • 94.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API UI Engineering Systems Engineering
  • 95.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API UI Engineering Systems Engineering
  • 96.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices ROUTING PROXY Micro-Services Hosted Services iOS Team Android Team Web Team BFF API UI Engineering Systems Engineering
  • 97.
    GATEWAY PUBLIC NETWORK CLOUDNETWORK Client Devices Micro-Services Hosted Services iOS Team Android Team Web Team BFF API UI Engineering Systems Engineering
  • 98.