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
130
Mobile backend without REST
DAloG
April 26, 2017
Tweet
Share
More Decks by DAloG
See All by DAloG
State normalization (RU)
dalog
0
220
Redux + MQTT
dalog
1
790
От задач к проблемам
dalog
1
280
Unlimited power of Data-Driven UI
dalog
4
670
Data-Driven View Controllers. Tips and Tricks
dalog
5
2k
2 years of Redux in iOS. Lessons learned
dalog
0
400
Why unidirectional architecture matter for iOS.
dalog
1
320
Self managed teams 101
dalog
0
180
FMVP
dalog
1
180
Other Decks in Programming
See All in Programming
15年目のiOSアプリを1から作り直す技術
teakun
0
420
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
Event Storming
hschwentner
3
1.3k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
300
並行開発のためのコードレビュー
miyukiw
2
1.8k
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
350
文字コードの話
qnighy
0
130
Oxlint JS plugins
kazupon
1
1.1k
CSC307 Lecture 08
javiergs
PRO
0
680
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
0
430
高速開発のためのコード整理術
sutetotanuki
1
430
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
140
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
72
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
270
New Earth Scene 8
popppiees
1
1.6k
Designing for Timeless Needs
cassininazir
0
140
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
77
Statistics for Hackers
jakevdp
799
230k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.6k
How STYLIGHT went responsive
nonsquared
100
6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
94
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
The Invisible Side of Design
smashingmag
302
51k
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]