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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
DAloG
April 26, 2017
Programming
2
140
Mobile backend without REST
DAloG
April 26, 2017
Tweet
Share
More Decks by DAloG
See All by DAloG
State normalization (RU)
dalog
0
230
Redux + MQTT
dalog
1
800
От задач к проблемам
dalog
1
280
Unlimited power of Data-Driven UI
dalog
4
680
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
190
FMVP
dalog
1
190
Other Decks in Programming
See All in Programming
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
520
モダンOBSプラグイン開発
umireon
0
180
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
180
SourceGeneratorのマーカー属性問題について
htkym
0
210
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
160
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.1k
へんな働き方
yusukebe
6
2.8k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
990
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
160
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
150
Java 21/25 Virtual Threads 소개
debop
0
270
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
1.3k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
BBQ
matthewcrist
89
10k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
140
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
320
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
130
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
First, design no harm
axbom
PRO
2
1.1k
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]