SlideShare a Scribd company logo
1 of 42
Download to read offline
1 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Device	Independent	API	Design
PRESENTED	BY:	AMRITA	JAIN
DIRECTOR,	DIGITAL	TECHNOLOGIES,	BEACHBODY,	LLC.
MICROSERVICES+GRAPHQL+SERVERLESS
2 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Agenda
Mission Statement
Milestone1: Microservices
Milestone2: GraphQL
Milestone3: Serverless
Key Takeaways
Q & A
3 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Journey	so	far..
1990s and earlier 2000s 2014s 2017s
Monolithic
Tight coupling
Traditional SOA
Loosely coupled
Microservices
Decoupled
Serverless
Cheap decoupling
4 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Evolution	of	clients/consumption
5 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Evolution	of	APIs/	Role	of	APIs
https://www.blog.vba-market.com/2016/10/19/10-useful-real-world-api-examples/
6 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
0
2
4
6
8
10
12
14
16
18
20
Monolithic BE+FE Microservices Serverless
Platforms Subscribers Team size
Journey	I	took	at	Beachbody
Evolution of API
architecture with the
growth in
1. Platforms (1 to 6)
2. Subscribers
(200K to > 1.5M)
3. Team size (1 to 20)
* Units in 100K
2014 2015 2016 2018
7 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Design APIs that
scales with traffic, platforms, team size
and
minimizes cost in terms of dollars, personnel and latency.
Mission	Statement
8 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
“
”
Unix Philosophy
Write programs that
do one thing
and
do it well.
Write programs to
work together.
Peter H. Salus
Milestone:	
Microservices
9 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
•Independently managed, clearly defined
services.
•Each microservice owns its data-source.
•Better scaling, failover and recovery.
•Flexibility in choice of language and
deliverables.
Microservices:	Benefits
10 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
•Redundant code for common
functionality.
•Inconsistency in common behaviors.
•Harder for clients developers
•Service Discovery
•Data aggregation.
•Performance and bandwidth
constraints.
•Automation, CI/CD is non negotiable.
Microservices:	Challenges
11 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Best	practices:	Get	ahead	of	Heterogeneity
Convention over configuration
• Develop and adopt standards and
conventions
• Agree/Disagree but commit
• Reduce decision-making for common
trivial problems
12 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Best	practices:	Get	ahead	of	Heterogeneity
Custom MicroService Framework for PHP
• Enforces same code flow for all
MicroServices
• Consistent error handling and response
codes
• Circuit Breaker Failover Handling
• Provides utilities such as database, search
engine, cache wrappers
• Unifies security practices
13 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Best	practices:	Service	Discovery
API Gateway
• Route to proper microservice
• Rate Limiting
• Tracing + Debugging + Monitoring
• Caching + Invalidations
My address ?
14 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Best	Practice:	Monitoring
System-level monitoring
◦ CPU, Memory, I/O etc.
◦ StatsD, Graphite
Application-level monitoring
◦ Exceptions, error logs
APM
◦ Performance Issues & Bottlenecks
Dashboards
◦ Graphana
Which service caused failure?
15 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
“
”
Evolving
APIs
without
versions
one vertex
at a time
Lee Byron
Milestone:	
GraphQL
16 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Device specific data
• iTunes id, google account id etc.
• Device-specific features eg. showing
promo banner only on Android
• Device specific images
Response	Parity
17 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
{ "images": {
"badgeBoxArt": {},
"largeBoxArt": {},
"heroImageTablet": {},
"popularProgramMedium": {},
"devicesBannerImage": {},
"devicesStvBoxArt": {},
"devicesChromecast": {},
"devicesParallaxImage": {},
"devicesTabletHomepageLandscape1x": {},
"devicesTabletHomepageLandscape2x": {},
"devicesTabletProgramLandscape2x": {},
"devicesTabletProgramPortrait2x": {},
"devicesGlobalImage": {}
}}
Response	Parity	:	Example
18 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Performance tradeoffs
• Clients that can parallelize prefer many calls
smalls
• Other clients prefer minimal data in one call.
Bandwidth constraints
• Prefers minimal data in one go.
• Offline downloads, support batch
Performance	and	Bandwidth
19 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
• Always have to support all versions until
all users have upgraded their apps.
• Tedious & Expensive
• Developer Time (∝ O(versions))
• Error Prone (∝ O(versions))
• Testing time (∝ O(versions ×
platforms x
platformVersion))
API	versioning
20 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
GraphQL:	In	Action
21 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
GraphQL:	In	Action
22 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
ü Root node and think of data as graph.
ü Implement Graphql schema.
ü Define Query types: field on the query is processed
ü Map the underlying API/Data
ü Data manipulation can be done via resolvers
ü Need help?
ü Slack
ü User Groups
Implementation	Tips
23 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Implementation	Tips
Ref: https://github.com/webonyx/graphql-php/blob/master/examples/00-hello-world/graphql.php
curl http://localhost:8080 -d
'{"query": "query { echo(message: "Hello World") }" }'
24 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Implementation	Tips
Ref: https://github.com/webonyx/graphql-php/blob/master/examples/00-hello-world/graphql.php
curl http://localhost:8080 -d
'{"query": "query { echo(message: "Hello World") }" }'
{"data": {"echo": "You said Hello World" }}
25 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Best	practices:	Start	Small
Incremental Adoption
• Start with one client
• Start with APIs with more content-
based data
Image ref:https://www.youtube.com/watch?v=WQLzZf34FJ8
26 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Best	practices:	KISS	Principle
Thin Interface
• No extra business logic, framework
stuff.
• Depth and amount limiting
• Query cost analysis and checks.
1 Request
27 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Adding an extra layer and keeping it updated.
Workarounds:
• Apollo Graphql libs
• Dynamic schema based on Swagger:
https://github.com/amritajain/swagger-graphene
• Start here: https://github.com/chentsulin/awesome-graphql
Caveat:	Extra	Layer
28 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
“
”
Perfection
is achieved not when
there is nothing
more to add,
but
when there is
nothing left
to take away
Antoine de Saint-Exupery
Milestone:	
Serverless
29 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Serverless	Benefits
No Servers to
provision or
manage
Only pay what
you use for
Standardization
and ease of
deployments
Event driven
Scaling, built-in
availability and
fault tolerance
30 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
• Auto-scaling Websites and APIs
• Serving up static content
• Image and Video Manipulation
• Event streaming
• ETLs, Time-based batched jobs
• 30 serverless architectures in 30 minutes
Serverless:	In	Action
31 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Serverless:	Sample	yaml file
32 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Serverless:	Sample	yaml file
serverless deploy --accountID <AWS::AccountId>
--stage <dev|qa|prod>
--deploymentBucket <bucketName>
33 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Serverless:	Sample	yaml file
34 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Serverless:	Sample	yaml file
serverless deploy --accountID <AWS::AccountId>
--stage <dev|qa|prod>
--deploymentBucket <bucketName>
35 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
• Avoid fat/monolithic functions
• Optimize for language of choice
• Cloud agnostic frameworks
• Logging: Log-levels, capture device names, OS versions, and types in request
headers
• Store all environment variables separately and keep them encrypted.
Best	Practices
36 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
• Cold starts
• Invariable Demand
• Local setups: 3rd-party libs that can help
Common	Pitfalls
37 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
“
”
Nothing good
comes easy
because
nothing easy
does any good.
Unknown
Best	Practices	
&	Learnings
38 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
• Follow microservice principle: One microservice, One repo, One datasource.
• Clear lines of ownership
• Core framework: injected via composer
• Git Flow
• Dev prod parity
Learning:	Codebase
39 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Learning:	Development	Processes
Integrated into CI process
• Unittests
• Integrated with Travis
• Integration tests
• All microservice collections include
Postman tests
• Used by devs to for quick validation.
• Used by clients for parallel implementation
40 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
• Swagger
• Provide swagger documentation for every API
• Baked into the framework
• Lucidcharts
• Sequence/Architecture diagrams in Lucidcharts.
• Confluence Documentation
• Must for handoff and demo.
Learning:	Development	Processes
41 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
§ Setup patterns and standards on Day1.
§ Things change: what may seem right today might not be tomorrow, be ready
to evolve.
§ Think of APIs as a product and make it a complete package.
Key	Takeaways
42 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN
Thank	you!
@amritajain973
https://joind.in/talk/a578f
Currently @ Twitch!

More Related Content

What's hot

Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...
Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...
Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...Nordic APIs
 
Maintainable API Docs and Other Rainbow Colored Unicorns
Maintainable API Docs and Other Rainbow Colored UnicornsMaintainable API Docs and Other Rainbow Colored Unicorns
Maintainable API Docs and Other Rainbow Colored UnicornsNeil Mansilla
 
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop Apigee | Google Cloud
 
Coders Workshop: API First Mobile Development Featuring Angular and Node
Coders Workshop: API First Mobile Development Featuring Angular and NodeCoders Workshop: API First Mobile Development Featuring Angular and Node
Coders Workshop: API First Mobile Development Featuring Angular and NodeApigee | Google Cloud
 
Cloud-native Patterns (July 4th, 2019)
Cloud-native Patterns (July 4th, 2019)Cloud-native Patterns (July 4th, 2019)
Cloud-native Patterns (July 4th, 2019)Alexandre Roman
 
App & API Monitoring: Building a 5-Star Reputation for your Apps
App & API Monitoring: Building a 5-Star Reputation for your AppsApp & API Monitoring: Building a 5-Star Reputation for your Apps
App & API Monitoring: Building a 5-Star Reputation for your AppsApigee | Google Cloud
 
API Design Best Practices & Tech Talk : API Craft Meetup @ Apigee
API Design Best Practices & Tech Talk : API Craft Meetup @ ApigeeAPI Design Best Practices & Tech Talk : API Craft Meetup @ Apigee
API Design Best Practices & Tech Talk : API Craft Meetup @ ApigeeAnil Sagar
 
Design-first API Development using Swagger and Node
Design-first API Development using Swagger and NodeDesign-first API Development using Swagger and Node
Design-first API Development using Swagger and NodeApigee | Google Cloud
 
API Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIsAPI Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIsApigee | Google Cloud
 
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?Akana
 
Delivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETDelivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETSimon Haslam
 
Top 7 wrong common beliefs about Enterprise API implementation
Top 7 wrong common beliefs about Enterprise API implementationTop 7 wrong common beliefs about Enterprise API implementation
Top 7 wrong common beliefs about Enterprise API implementationOCTO Technology
 
Modernizing an Existing SOA-based Architecture with APIs
Modernizing an Existing SOA-based Architecture with APIsModernizing an Existing SOA-based Architecture with APIs
Modernizing an Existing SOA-based Architecture with APIsApigee | Google Cloud
 
Pivotal + Apigee Workshop (June 4th, 2019)
Pivotal + Apigee Workshop (June 4th, 2019)Pivotal + Apigee Workshop (June 4th, 2019)
Pivotal + Apigee Workshop (June 4th, 2019)Alexandre Roman
 
Entity Linking and REST Patterns in SOA
Entity Linking and REST Patterns in SOA Entity Linking and REST Patterns in SOA
Entity Linking and REST Patterns in SOA WSO2
 

What's hot (18)

Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...
Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...
Gotta Block ‘Em All – Observations on Controlling Access to Mobile APIs using...
 
Maintainable API Docs and Other Rainbow Colored Unicorns
Maintainable API Docs and Other Rainbow Colored UnicornsMaintainable API Docs and Other Rainbow Colored Unicorns
Maintainable API Docs and Other Rainbow Colored Unicorns
 
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
 
Coders Workshop: API First Mobile Development Featuring Angular and Node
Coders Workshop: API First Mobile Development Featuring Angular and NodeCoders Workshop: API First Mobile Development Featuring Angular and Node
Coders Workshop: API First Mobile Development Featuring Angular and Node
 
Cloud-native Patterns (July 4th, 2019)
Cloud-native Patterns (July 4th, 2019)Cloud-native Patterns (July 4th, 2019)
Cloud-native Patterns (July 4th, 2019)
 
App & API Monitoring: Building a 5-Star Reputation for your Apps
App & API Monitoring: Building a 5-Star Reputation for your AppsApp & API Monitoring: Building a 5-Star Reputation for your Apps
App & API Monitoring: Building a 5-Star Reputation for your Apps
 
API Design Best Practices & Tech Talk : API Craft Meetup @ Apigee
API Design Best Practices & Tech Talk : API Craft Meetup @ ApigeeAPI Design Best Practices & Tech Talk : API Craft Meetup @ Apigee
API Design Best Practices & Tech Talk : API Craft Meetup @ Apigee
 
Design-first API Development using Swagger and Node
Design-first API Development using Swagger and NodeDesign-first API Development using Swagger and Node
Design-first API Development using Swagger and Node
 
API Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIsAPI Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIs
 
API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?API Description Languages: Which is the Right One for Me?
API Description Languages: Which is the Right One for Me?
 
Delivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JETDelivering Mobile Apps to the Field with Oracle JET
Delivering Mobile Apps to the Field with Oracle JET
 
Top 7 wrong common beliefs about Enterprise API implementation
Top 7 wrong common beliefs about Enterprise API implementationTop 7 wrong common beliefs about Enterprise API implementation
Top 7 wrong common beliefs about Enterprise API implementation
 
Modernizing an Existing SOA-based Architecture with APIs
Modernizing an Existing SOA-based Architecture with APIsModernizing an Existing SOA-based Architecture with APIs
Modernizing an Existing SOA-based Architecture with APIs
 
Apigee Products Overview
Apigee Products OverviewApigee Products Overview
Apigee Products Overview
 
Octo API-days 2015
Octo API-days 2015Octo API-days 2015
Octo API-days 2015
 
Api Gateway
Api GatewayApi Gateway
Api Gateway
 
Pivotal + Apigee Workshop (June 4th, 2019)
Pivotal + Apigee Workshop (June 4th, 2019)Pivotal + Apigee Workshop (June 4th, 2019)
Pivotal + Apigee Workshop (June 4th, 2019)
 
Entity Linking and REST Patterns in SOA
Entity Linking and REST Patterns in SOA Entity Linking and REST Patterns in SOA
Entity Linking and REST Patterns in SOA
 

Similar to Device Independent API design

API Security - OWASP top 10 for APIs + tips for pentesters
API Security - OWASP top 10 for APIs + tips for pentestersAPI Security - OWASP top 10 for APIs + tips for pentesters
API Security - OWASP top 10 for APIs + tips for pentestersInon Shkedy
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...Kim Clark
 
Serverless Development Deep Dive
Serverless Development Deep DiveServerless Development Deep Dive
Serverless Development Deep DiveAmazon Web Services
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Melania Andrisan (Danciu)
 
Android Effective UI: Tips, Tricks and Patterns
Android Effective UI: Tips, Tricks and PatternsAndroid Effective UI: Tips, Tricks and Patterns
Android Effective UI: Tips, Tricks and PatternsAdham Enaya
 
WSO2 Workshop Sydney 2016 - APIs
WSO2 Workshop Sydney 2016 - APIsWSO2 Workshop Sydney 2016 - APIs
WSO2 Workshop Sydney 2016 - APIsDassana Wijesekara
 
apidays Singapore 2023 - Beyond REST, Claudio Tag, IBM
apidays Singapore 2023 - Beyond REST, Claudio Tag, IBMapidays Singapore 2023 - Beyond REST, Claudio Tag, IBM
apidays Singapore 2023 - Beyond REST, Claudio Tag, IBMapidays
 
IBM API Connect Deployment `Good Practices - IBM Think 2018
IBM API Connect Deployment `Good Practices - IBM Think 2018IBM API Connect Deployment `Good Practices - IBM Think 2018
IBM API Connect Deployment `Good Practices - IBM Think 2018Chris Phillips
 
API Best Practices
API Best PracticesAPI Best Practices
API Best PracticesSai Koppala
 
How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)
How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)
How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)DOCOMO Innovations, Inc.
 
A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...
A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...
A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...Databricks
 
Serverless Computing: build and run applications without thinking about servers
Serverless Computing: build and run applications without thinking about serversServerless Computing: build and run applications without thinking about servers
Serverless Computing: build and run applications without thinking about serversAmazon Web Services
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoWSO2
 
@avanttic_meetup Oracle Technology MAD_BCN: Oracle Cloud API Platform evoluc...
@avanttic_meetup Oracle Technology MAD_BCN:  Oracle Cloud API Platform evoluc...@avanttic_meetup Oracle Technology MAD_BCN:  Oracle Cloud API Platform evoluc...
@avanttic_meetup Oracle Technology MAD_BCN: Oracle Cloud API Platform evoluc...avanttic Consultoría Tecnológica
 
ANZ Dev Lounge Session - Feb 2017
ANZ Dev Lounge Session - Feb 2017ANZ Dev Lounge Session - Feb 2017
ANZ Dev Lounge Session - Feb 2017Amazon Web Services
 
Serverless - Developers.IO 2019
Serverless - Developers.IO 2019Serverless - Developers.IO 2019
Serverless - Developers.IO 2019Shuji Watanabe
 
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...apidays
 
Achieve Full API Lifecycle Management Using NGINX Controller
Achieve Full API Lifecycle Management Using NGINX ControllerAchieve Full API Lifecycle Management Using NGINX Controller
Achieve Full API Lifecycle Management Using NGINX ControllerNGINX, Inc.
 
Forza Computazionale e Applicazioni Serverless
Forza Computazionale e Applicazioni ServerlessForza Computazionale e Applicazioni Serverless
Forza Computazionale e Applicazioni ServerlessAmazon Web Services
 

Similar to Device Independent API design (20)

API Security - OWASP top 10 for APIs + tips for pentesters
API Security - OWASP top 10 for APIs + tips for pentestersAPI Security - OWASP top 10 for APIs + tips for pentesters
API Security - OWASP top 10 for APIs + tips for pentesters
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...
 
Serverless Development Deep Dive
Serverless Development Deep DiveServerless Development Deep Dive
Serverless Development Deep Dive
 
Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017Serverless Single Page Apps with React and Redux at ItCamp 2017
Serverless Single Page Apps with React and Redux at ItCamp 2017
 
Android Effective UI: Tips, Tricks and Patterns
Android Effective UI: Tips, Tricks and PatternsAndroid Effective UI: Tips, Tricks and Patterns
Android Effective UI: Tips, Tricks and Patterns
 
WSO2 Workshop Sydney 2016 - APIs
WSO2 Workshop Sydney 2016 - APIsWSO2 Workshop Sydney 2016 - APIs
WSO2 Workshop Sydney 2016 - APIs
 
apidays Singapore 2023 - Beyond REST, Claudio Tag, IBM
apidays Singapore 2023 - Beyond REST, Claudio Tag, IBMapidays Singapore 2023 - Beyond REST, Claudio Tag, IBM
apidays Singapore 2023 - Beyond REST, Claudio Tag, IBM
 
Effective DevSecOps
Effective DevSecOpsEffective DevSecOps
Effective DevSecOps
 
IBM API Connect Deployment `Good Practices - IBM Think 2018
IBM API Connect Deployment `Good Practices - IBM Think 2018IBM API Connect Deployment `Good Practices - IBM Think 2018
IBM API Connect Deployment `Good Practices - IBM Think 2018
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)
How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)
How to Manage Your Cloud by Drupal (DrupalCon CPH 2010)
 
A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...
A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...
A Journey to Building an Autonomous Streaming Data Platform—Scaling to Trilli...
 
Serverless Computing: build and run applications without thinking about servers
Serverless Computing: build and run applications without thinking about serversServerless Computing: build and run applications without thinking about servers
Serverless Computing: build and run applications without thinking about servers
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing Choreo
 
@avanttic_meetup Oracle Technology MAD_BCN: Oracle Cloud API Platform evoluc...
@avanttic_meetup Oracle Technology MAD_BCN:  Oracle Cloud API Platform evoluc...@avanttic_meetup Oracle Technology MAD_BCN:  Oracle Cloud API Platform evoluc...
@avanttic_meetup Oracle Technology MAD_BCN: Oracle Cloud API Platform evoluc...
 
ANZ Dev Lounge Session - Feb 2017
ANZ Dev Lounge Session - Feb 2017ANZ Dev Lounge Session - Feb 2017
ANZ Dev Lounge Session - Feb 2017
 
Serverless - Developers.IO 2019
Serverless - Developers.IO 2019Serverless - Developers.IO 2019
Serverless - Developers.IO 2019
 
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
INTERFACE by apidays 2023 - Digital Platforms, Taking API to production, Micr...
 
Achieve Full API Lifecycle Management Using NGINX Controller
Achieve Full API Lifecycle Management Using NGINX ControllerAchieve Full API Lifecycle Management Using NGINX Controller
Achieve Full API Lifecycle Management Using NGINX Controller
 
Forza Computazionale e Applicazioni Serverless
Forza Computazionale e Applicazioni ServerlessForza Computazionale e Applicazioni Serverless
Forza Computazionale e Applicazioni Serverless
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Device Independent API design

  • 1. 1 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Device Independent API Design PRESENTED BY: AMRITA JAIN DIRECTOR, DIGITAL TECHNOLOGIES, BEACHBODY, LLC. MICROSERVICES+GRAPHQL+SERVERLESS
  • 2. 2 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Agenda Mission Statement Milestone1: Microservices Milestone2: GraphQL Milestone3: Serverless Key Takeaways Q & A
  • 3. 3 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Journey so far.. 1990s and earlier 2000s 2014s 2017s Monolithic Tight coupling Traditional SOA Loosely coupled Microservices Decoupled Serverless Cheap decoupling
  • 4. 4 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Evolution of clients/consumption
  • 5. 5 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Evolution of APIs/ Role of APIs https://www.blog.vba-market.com/2016/10/19/10-useful-real-world-api-examples/
  • 6. 6 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN 0 2 4 6 8 10 12 14 16 18 20 Monolithic BE+FE Microservices Serverless Platforms Subscribers Team size Journey I took at Beachbody Evolution of API architecture with the growth in 1. Platforms (1 to 6) 2. Subscribers (200K to > 1.5M) 3. Team size (1 to 20) * Units in 100K 2014 2015 2016 2018
  • 7. 7 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Design APIs that scales with traffic, platforms, team size and minimizes cost in terms of dollars, personnel and latency. Mission Statement
  • 8. 8 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN “ ” Unix Philosophy Write programs that do one thing and do it well. Write programs to work together. Peter H. Salus Milestone: Microservices
  • 9. 9 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN •Independently managed, clearly defined services. •Each microservice owns its data-source. •Better scaling, failover and recovery. •Flexibility in choice of language and deliverables. Microservices: Benefits
  • 10. 10 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN •Redundant code for common functionality. •Inconsistency in common behaviors. •Harder for clients developers •Service Discovery •Data aggregation. •Performance and bandwidth constraints. •Automation, CI/CD is non negotiable. Microservices: Challenges
  • 11. 11 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Best practices: Get ahead of Heterogeneity Convention over configuration • Develop and adopt standards and conventions • Agree/Disagree but commit • Reduce decision-making for common trivial problems
  • 12. 12 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Best practices: Get ahead of Heterogeneity Custom MicroService Framework for PHP • Enforces same code flow for all MicroServices • Consistent error handling and response codes • Circuit Breaker Failover Handling • Provides utilities such as database, search engine, cache wrappers • Unifies security practices
  • 13. 13 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Best practices: Service Discovery API Gateway • Route to proper microservice • Rate Limiting • Tracing + Debugging + Monitoring • Caching + Invalidations My address ?
  • 14. 14 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Best Practice: Monitoring System-level monitoring ◦ CPU, Memory, I/O etc. ◦ StatsD, Graphite Application-level monitoring ◦ Exceptions, error logs APM ◦ Performance Issues & Bottlenecks Dashboards ◦ Graphana Which service caused failure?
  • 15. 15 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN “ ” Evolving APIs without versions one vertex at a time Lee Byron Milestone: GraphQL
  • 16. 16 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Device specific data • iTunes id, google account id etc. • Device-specific features eg. showing promo banner only on Android • Device specific images Response Parity
  • 17. 17 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN { "images": { "badgeBoxArt": {}, "largeBoxArt": {}, "heroImageTablet": {}, "popularProgramMedium": {}, "devicesBannerImage": {}, "devicesStvBoxArt": {}, "devicesChromecast": {}, "devicesParallaxImage": {}, "devicesTabletHomepageLandscape1x": {}, "devicesTabletHomepageLandscape2x": {}, "devicesTabletProgramLandscape2x": {}, "devicesTabletProgramPortrait2x": {}, "devicesGlobalImage": {} }} Response Parity : Example
  • 18. 18 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Performance tradeoffs • Clients that can parallelize prefer many calls smalls • Other clients prefer minimal data in one call. Bandwidth constraints • Prefers minimal data in one go. • Offline downloads, support batch Performance and Bandwidth
  • 19. 19 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN • Always have to support all versions until all users have upgraded their apps. • Tedious & Expensive • Developer Time (∝ O(versions)) • Error Prone (∝ O(versions)) • Testing time (∝ O(versions × platforms x platformVersion)) API versioning
  • 20. 20 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN GraphQL: In Action
  • 21. 21 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN GraphQL: In Action
  • 22. 22 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN ü Root node and think of data as graph. ü Implement Graphql schema. ü Define Query types: field on the query is processed ü Map the underlying API/Data ü Data manipulation can be done via resolvers ü Need help? ü Slack ü User Groups Implementation Tips
  • 23. 23 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Implementation Tips Ref: https://github.com/webonyx/graphql-php/blob/master/examples/00-hello-world/graphql.php curl http://localhost:8080 -d '{"query": "query { echo(message: "Hello World") }" }'
  • 24. 24 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Implementation Tips Ref: https://github.com/webonyx/graphql-php/blob/master/examples/00-hello-world/graphql.php curl http://localhost:8080 -d '{"query": "query { echo(message: "Hello World") }" }' {"data": {"echo": "You said Hello World" }}
  • 25. 25 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Best practices: Start Small Incremental Adoption • Start with one client • Start with APIs with more content- based data Image ref:https://www.youtube.com/watch?v=WQLzZf34FJ8
  • 26. 26 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Best practices: KISS Principle Thin Interface • No extra business logic, framework stuff. • Depth and amount limiting • Query cost analysis and checks. 1 Request
  • 27. 27 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Adding an extra layer and keeping it updated. Workarounds: • Apollo Graphql libs • Dynamic schema based on Swagger: https://github.com/amritajain/swagger-graphene • Start here: https://github.com/chentsulin/awesome-graphql Caveat: Extra Layer
  • 28. 28 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN “ ” Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away Antoine de Saint-Exupery Milestone: Serverless
  • 29. 29 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Serverless Benefits No Servers to provision or manage Only pay what you use for Standardization and ease of deployments Event driven Scaling, built-in availability and fault tolerance
  • 30. 30 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN • Auto-scaling Websites and APIs • Serving up static content • Image and Video Manipulation • Event streaming • ETLs, Time-based batched jobs • 30 serverless architectures in 30 minutes Serverless: In Action
  • 31. 31 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Serverless: Sample yaml file
  • 32. 32 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Serverless: Sample yaml file serverless deploy --accountID <AWS::AccountId> --stage <dev|qa|prod> --deploymentBucket <bucketName>
  • 33. 33 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Serverless: Sample yaml file
  • 34. 34 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Serverless: Sample yaml file serverless deploy --accountID <AWS::AccountId> --stage <dev|qa|prod> --deploymentBucket <bucketName>
  • 35. 35 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN • Avoid fat/monolithic functions • Optimize for language of choice • Cloud agnostic frameworks • Logging: Log-levels, capture device names, OS versions, and types in request headers • Store all environment variables separately and keep them encrypted. Best Practices
  • 36. 36 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN • Cold starts • Invariable Demand • Local setups: 3rd-party libs that can help Common Pitfalls
  • 37. 37 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN “ ” Nothing good comes easy because nothing easy does any good. Unknown Best Practices & Learnings
  • 38. 38 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN • Follow microservice principle: One microservice, One repo, One datasource. • Clear lines of ownership • Core framework: injected via composer • Git Flow • Dev prod parity Learning: Codebase
  • 39. 39 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Learning: Development Processes Integrated into CI process • Unittests • Integrated with Travis • Integration tests • All microservice collections include Postman tests • Used by devs to for quick validation. • Used by clients for parallel implementation
  • 40. 40 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN • Swagger • Provide swagger documentation for every API • Baked into the framework • Lucidcharts • Sequence/Architecture diagrams in Lucidcharts. • Confluence Documentation • Must for handoff and demo. Learning: Development Processes
  • 41. 41 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN § Setup patterns and standards on Day1. § Things change: what may seem right today might not be tomorrow, be ready to evolve. § Think of APIs as a product and make it a complete package. Key Takeaways
  • 42. 42 DEVICE INDEPENDENT API DESIGN BY AMRITA JAIN Thank you! @amritajain973 https://joind.in/talk/a578f Currently @ Twitch!