Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mobile backend without REST
Search
DAloG
April 26, 2017
Programming
2
120
Mobile backend without REST
DAloG
April 26, 2017
Tweet
Share
More Decks by DAloG
See All by DAloG
State normalization (RU)
dalog
0
200
Redux + MQTT
dalog
1
780
От задач к проблемам
dalog
1
260
Unlimited power of Data-Driven UI
dalog
4
650
Data-Driven View Controllers. Tips and Tricks
dalog
5
1.9k
2 years of Redux in iOS. Lessons learned
dalog
0
380
Why unidirectional architecture matter for iOS.
dalog
1
300
Self managed teams 101
dalog
0
160
FMVP
dalog
1
170
Other Decks in Programming
See All in Programming
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
2
380
モテるデスク環境
mozumasu
3
1.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
660
CSC305 Lecture 08
javiergs
PRO
0
280
チームの境界をブチ抜いていけ
tokai235
0
230
社会人になっても趣味開発を続けたい! / traPavilion
mazrean
1
110
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
980
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
390
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
200
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
550
Featured
See All Featured
A better future with KSS
kneath
239
18k
Automating Front-end Workflow
addyosmani
1371
200k
Being A Developer After 40
akosma
91
590k
Scaling GitHub
holman
463
140k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
A designer walks into a library…
pauljervisheath
209
24k
The Pragmatic Product Professional
lauravandoore
36
7k
Visualization
eitanlees
150
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Building Applications with DynamoDB
mza
96
6.7k
Code Review Best Practice
trishagee
72
19k
Transcript
REST LESS APP MOBILE FIRST BACKEND
REST?
TEXT SHORT HISTORY OF REST ▸ 1996 - developing the
pattern ▸ 2000 - formalizing the pattern ▸ 2010 - spreading around the world. http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
TEXT REST REQUIREMENTS ▸ Client - Server ▸ No client
state ▸ No client session on a client ▸ Caching (CDN and HTTP powered) ▸ Resource by URL / URI http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
TEXT REST PROBLEMS ▸ Versioning ▸ Discoverability ▸ Dynamic API
▸ Assumption Driven Development
SERVER FIRST
MOBILE FIRST?
TEXT MOBILE NEEDS ▸ Multiple Environments ▸ Versioning (multiple versions
in store) ▸ Minimum logic on client side ▸ Sessions ▸ Feature toggles ▸ API Spec
TEXT MICROSERVICES ▸ Multiple Instances ▸ More like distributed objects
▸ Composition enabled ▸ Feature oriented
TEXT MICROSERVICES ▸ Multiple Instances ▸ More like distributed objects
▸ Composition enabled ▸ Feature oriented
TEXT CONFIG SERVICE REQUEST "context": { "version": "1.0", "locale": "en_US",
"bundle": "com.my.food-delivery", "device": "iPhone", "screen": { "width": 320, "height": 480 }, "uuid": "ABCD-1234-1242-1564", ... }
TEXT CONFIG SERVICE RESPONSE "config": { "menu": { "search": {
"url": "https://m.com/menu/v1/search", "context": { "session": "ABCD-1234-1242-1564", "currency": "USD" } }, "popular": [ ... ], ... }, ... }
TEXT CONFIG SERVICE RESPONSE "error": { "kind": "temporal", "message": "We
are updating our service, please wait up to 2 AM of tommorow." }
TEXT CONFIG SERVICE RESPONSE "error": { "kind": "permanent", "message": "Please
download new version from App Store", "action": "app store page" }
TEXT SEARCH SERVICE REQUEST "search": { "term": "sushi", "context": {
... } }
TEXT SEARCH SERVICE RESPONSE "items": [ { "title": "Roll", "price":
"18 USD", "markAsFavorite": { "url": "http://food.com/markAsFavorite", "context": { "id": 1990, "user": "ABCD-1234-1242-1564" } }, } ]
CODE IS DATA
TEXT NEXT STEPS ▸ Tell server about needed data ▸
GraphQL ▸ Remote code injection
TEXT CONFIG SERVICE REQUEST "context": { ... "menu": { "search":
{ "url": { "type": "$url" }, "json": { "type": "$object", "variables": ["$term"] } } } }
TEXT CONFIG SERVICE RESPONSE "config": { "menu": { "search": {
"url": "https://food-delivery.com/menu/v1/search", "json": { "term": "$term", "session": "ABCD-1234-1242-1564", "currency": "USD" } } } }
GRAPH QL http://graphql.org
REACT NATIVE https://facebook.github.io/react-native/
SERVER APP LOGIC UI
SERVER APP LOGIC UI
WHY IT IS IMPORTANT?
PROJECTS ARE DEAD
TEXT PRODUCT TRAITS ▸ Dynamic set of functionality ▸ Data
driven decisions ▸ Weekly updates
QUESTIONS?
[email protected]