The finale: two worked case studies that apply every concept from the course to real services,
then the mobile-app playbook — native vs. hybrid, PWAs, and when you even need an app at all.
🧭
How to read this
Two closing chapters on one page. Part A walks two case studies that stitch together the whole course —
read-heavy vs. transaction-heavy systems make opposite database and consistency choices. Part B is the mobile
playbook: the market shift to mobile, deciding whether to build an app, responsive design, the
native/hybrid/PWA spectrum, and letting a backend-as-a-service carry the infrastructure. Anything marked [+]
is context I added; everything else is rewritten from the ten teaching lessons.
Part A · Case studies
01
A Google-Maps-like mapping service
Not a full system-design exercise (no schemas or traffic math) — just how the course's concepts apply to a real
service. Google Maps offers satellite imagery, route planning, live traffic, and an API for map-based games like
Pokémon Go; it began as C++ desktop software and evolved over years into a service for a billion+ users. The
design choices fall out of a few properties:
Property
Design consequence
Read-heavy
Users mostly read, rarely write (a few location markers). So data can be heavily cached
to relieve the database.
Spatial data
Objects hold geometric info (points, lines, polygons) plus alphanumeric data (Geohash, lat/long, GIS).
Persisted in spatial-capable stores — MySQL, MongoDB, CouchDB, Neo4J, Redis, Google BigQuery GIS.
Database pick
Map data has few relationships, so a horizontally-scalable NoSQL graph database
fits best; a relational DB with caching also works given the read-heavy load, but struggles under heavy
real-time updates.
Traffic spikes
Peaks at office hours/festivals demand instance autoscaling
(horizontal) — the app must be elastic.
Architecture
Client-server
(we need control; P2P wouldn't help). Backend: any mature stack — Java (the author's pick), Scala,
Python, Go.
Monolith vs. micro
Many features (search, routing, live traffic, elevation, geocoding, gaming APIs) →
microservices. Monolith is "totally out of the picture"; if live-traffic or elevation goes down, core search stays
up.
Server-side rendering of map tiles
A search matches text to a location and pulls its coordinates — then those numbers become an image. Render on
the server, because the image is static and identical for all users, so it can be cached. Crucially, the map is broken
into tiles, not one big image, so the system renders only the part the user engages with — which is what makes zoom and
pan cheap (you've seen the map refresh in sections, not full-page).
Figure 1 —
Map-tile flow: the tile cache sits between UI and map server; a hit returns instantly, a miss makes the map
server query the spatial DB, generate the tile, and cache it. Original diagram after Illustrations 1.91–1.92.
UI:
JavaScript + HTML5 (or React/Angular/Vue); OpenLayers is a popular open-source map UI library. Real-time
features
(live traffic, alternative routes) need a persistent connection but are resource-intensive with a hard cap on
concurrent connections — so implement them only when truly required.
02
A baseball-game ticket-booking portal
This case study is the mirror image of the mapping service — it's transaction-heavy, so it makes the opposite choices.
Concern
Choice & why
Database
Selling tickets means payments — transactions and strong consistency are vital, so the DB must be
ACID-compliant. A relational DB like MySQL
is the obvious pick.
Concurrency
A surge of fans hits the portal when tickets drop — far more requests than tickets, so n
requests compete for one ticket. Must handle it gracefully.
Backend
Java, Scala, Python, or Go. Notifications via a message queue — RabbitMQ or Kafka.
UI
CRUD app, so no persistent connection needed — simple AJAX works. Make it responsive
(CSS3, or Bootstrap/Tailwind; React/Angular/Vue if preferred) for varied screen sizes.
Two ways to handle the concurrent rush
Message queue.
Queue all ticket-buy requests and process them FIFO (the concurrency technique from the message-queue
chapter).
Database locks + caching.
Use the correct transaction isolation level
so only one transaction accesses a resource at a time (only possible with an ACID DB like MySQL). And mirror
the e-commerce pattern: the ticket counts shown while browsing are inconsistent cached values; only at checkout does the system poll the DB for the accurate count and lock the resource for the
transaction. Caching (Redis, Memcached, Hazelcast) absorbs the browsing load.
⚖️
The two case studies, side by side
Maps
is read-heavy → NoSQL + heavy caching + microservices + server-rendered tiles. Ticketing
is transaction-heavy → relational/ACID + isolation locks + queue for concurrency. Same course concepts,
opposite dials — the workload decides.
Part B · Mobile apps
03
Mobile flipped the whole landscape
Roughly 60–70% of users now access online services on mobile
— thanks to accessibility (always in your pocket) and intuitive interfaces (no tech-savvy required). Businesses
shifted from web-first to mobile-first. The course traces it through gaming: Facebook social games like
Farmville (Zynga's freemium hit, ~15–20% of Facebook's earnings at its peak) gave way to mobile games as
smartphones improved — studios saw better retention and higher MAU/DAU on mobile, so games went mobile-first,
then mobile-only (Clash of Clans). Today the Facebook game store is deserted; mobile-only giants like Instagram,
TikTok, and Pokémon Go run on billions of users, and the Play Store alone has 2B+ monthly actives and 3.5M+
apps.
📱
Three terms, up front
Mobile-only:
the business operates purely via mobile (app and/or mobile site), e.g. TikTok, Pokémon Go.
Mobile-first:
the UI is designed for mobile first, desktop is secondary and may have fewer features.
Mobile-friendly (responsive):
built for desktop browsers but adapts to any screen via a grid — also called web-first/desktop-first.
04
Do you even need a mobile app?
There's no one-size-fits-all — research your niche before writing an app.
Mobile may dominate overall, but not for every business: the author's own tech site gets ~80% desktop traffic
and thrives with no app. An app carries real cost (possibly a dedicated mobile team) and a steep learning curve
— handheld devices are battery-powered with limited CPU, storage, RAM, data, and user patience, demanding a
different mindset than cloud web apps.
What to research before deciding
How do users of similar businesses access their service — app, website, or both? If they have an app, how
many downloads, and what are their traffic/discovery sources?
What's the revenue split by platform? (Often inferable from traffic even when not public.)
What kind of service is it? A meal-tracking health app is naturally mobile-first (you won't open a laptop to
log lunch); a read-heavy content site may be mobile-friendly.
💡
Revenue ≠ traffic — the deciding examples
Myntra
went so mobile-heavy (70%+ revenue, 90%+ traffic from the app) it killed its desktop site — then reopened it
on customer demand, while staying mobile-first. Pixel Federation's Seaport
game: only 50K of its 305K daily actives are desktop users, yet those 50K bring nearly a third of revenue.
The lesson: even a small-traffic platform can be worth building for if that's where the money is.
05
Responsive interfaces: content like water
A responsive website adapts to any screen size — "content should be like water, taking the shape of the
vessel it's poured into."
With so many screen sizes (phones, tablets, smart TVs, watches, Kindles, IoT devices), maintaining a dedicated
UI per device is impossible, so responsive is the default. Two design directions: mobile-first
(design for small screen, adapt up) and web-first
(design for large screen, adapt down).
How to build one without being a designer:
use a CSS framework. Bootstrap
(or Tailwind) is a production-grade open-source framework with pre-built CSS, JS features, typography, forms,
buttons — assemble a grid of rows and columns and plug elements in. Bootstrap was originally written at Twitter
for UI consistency across internal tools, then open-sourced; its learning curve is under a week if you know some
frontend. Other options: jQuery Mobile (now declining as modern browsers do the same with vanilla JS), Skeleton,
HTML5 Boilerplate, Less Framework.
06
Native vs. hybrid apps
"Mobile app" here means apps downloaded from an app store. There are two types.
Figure 2 —
Native talks directly to the OS/hardware (fast); hybrid runs web code in a native container, reaching the OS
through a wrapper (a bit slower). Original diagram after Illustrations 1.95–1.96.
Native
Hybrid
What
Built for one OS only (Android app won't run on iOS). Direct OS/hardware access.
Web tech (HTML5/CSS/JS) in a native container, talking to the OS via a wrapper. Installable from
stores, accesses hardware.
Performance
High; consistent native look/feel; no UI-animation lag.
React Native used by Bloomberg, Walmart, Uber Eats, Discord.
Why hybrid exists — and its catch
Native's biggest pain is cross-platform cost: every OS needs its own dedicated app, team, and tech, with no common ground and no guarantee a new OS won't
appear. Hybrid solves this with "write once, run everywhere" on web skills developers already have — one
codebase across platforms, saving time and money. The catch: hybrid isn't as smooth as native (the middle layer
adds lag), and several companies reverted to native after trying it:
Airbnb
spent ~two years on React Native, then abandoned it — performance issues (init, render, navigation, dropped
frames), many patches needed, and JavaScript's lack of type safety made scaling and refactoring hard.
Udacity
dropped React Native due to rising Android-specific feature requests, high long-term maintenance cost, and UX
inconsistency across platforms.
Facebook
(2012) called betting too heavily on HTML5 over native its "biggest mistake" — a dated example, but
instructive.
07
Choosing between native and hybrid
Go native when…Heavy graphics/hardware (games, video editors); heavy UI animations (real-time charts); complex hardware
reliance (GPS, sensors, camera); flawless native look/feel required; competitors ship native; need new OS
features immediately; you can afford dedicated Android + iOS teams.
Go hybrid when…Requirements are simple with no complex features coming (a news app); you can't afford separate
codebases but must ship; a hybrid app genuinely suffices; you're testing the waters with an MVP/pre-alpha;
your team knows web but not native tech (a cost-vs-performance trade-off).
A reliable heuristic either way: look at what businesses in your niche used to build their apps, and see if
it's viable for you to do the same.
08
Progressive web apps: native feel, no store
A PWA looks and feels like a native app but runs in mobile and desktop browsers — and can be installed
straight from the browser (via a "+" in the address bar), not the app store.
Once installed it runs in its own window with no address bar or tab, just like a native app. Built with open web
tech (HTML, CSS, JS, and frameworks like Angular, React, Ionic, Google Polymer), so there's no native learning
curve — write once, run everywhere.
Why businesses prefer PWAs over responsive sites:
normally a business funnels search traffic through its responsive mobile site, then tries to redirect users to
its native app — a PWA gives the native-app experience directly in the browser, with optional install. PWAs
access the OS and hardware, work offline, support push notifications, are indexable by search engines and
shareable by link, and always show the latest version (no manual updates).
🆚
PWAs don't replace native
A CPU-intensive mobile game still needs native — native wins on performance and UX. PWAs compete with
responsive mobile websites, not native apps: why ship a plain responsive site when you can offer an app-like experience?
PWA in production
Result
BookMyShow
Replaced its high-bounce mobile site with a PWA → up to 80% higher conversions; the PWA is 54× lighter than its Android app, 180× lighter than iOS.
Flipkart
Went app-only, then PWA → engagement 3×, conversions +70%, data usage cut 3×.
Twitter
Launched its PWA in 2017 as the default mobile web experience → pages/session +65%, bounce −20%,
tweets sent +75%.
09
Mobile Backend as a Service: skip the backend
MBaaS is a cloud model that runs your app's entire backend infrastructure, so you focus only on business
logic and UI.
Beyond logic and UI, a real service needs authentication, social integration, push notifications, a real-time
database, caching, storage, messaging/chat, third-party integrations, analytics, crash reporting — an MBaaS
provides all of these, each via an API your code calls directly. Popular: Google Firebase, AWS Amplify,
Parse
(Parse was the early leader, bought and shut down by Facebook).
This is the PaaS story that let solo/indie developers bootstrap: generous free tiers mean you can deploy, get
early users and feedback, and pitch investors without paying for hosting — and skipping infrastructure
management cuts development time sharply.
Figure 3 —
MBaaS: a fat mobile client calls per-feature APIs (auth, DB, push, storage, analytics); it can also talk to a
custom/legacy backend when needed. Original diagram after Illustrations 1.98–2.01.
When to use it:
great for mobile-only services with no existing custom backend — mobile games, messaging, to-do apps. Because
there's no server you control, all business logic lives on the client (a fat/thick client
). Caveats: if you later need server-side logic, you'll have to build a custom backend or a serverless function;
you can also mix MBaaS with a custom backend (e.g. a banking app verifying against a legacy enterprise system).
And the big risk — vendor lock-in: if the provider shuts down (like Parse), stops upgrading (security holes), stops adding features, or changes
billing, you're stuck.
10
Recap
Maps case studyRead-heavy + spatial → NoSQL graph DB, heavy caching, autoscaling, microservices, server-rendered cached
map tiles.
Ticketing case studyTransaction-heavy → ACID relational (MySQL), isolation locks + queue for concurrency, cached browse
counts, responsive CRUD UI.
Mobile shift60–70% of usage is mobile. Know mobile-only vs. mobile-first vs. mobile-friendly. But research before
building — traffic ≠ revenue.
Responsive design"Content like water." Bootstrap/Tailwind grids adapt one site to every screen; mobile-first or
web-first.
Native vs. hybrid vs. PWANative = fast, per-OS, costly. Hybrid = one web codebase, some lag (Airbnb/Udacity reverted). PWA =
native feel in the browser, competes with responsive sites.
MBaaSCloud runs your backend (Firebase, Amplify) so you ship logic + UI fast — at the price of a fat client
and vendor lock-in.
💡
The single idea underneath it all
Every decision on this page is the same move the whole course has taught: name the workload, then match the
tool to it. Read-heavy vs. transaction-heavy flips your database; where your revenue lives flips your
platform; how much performance you need flips native vs. hybrid vs. PWA; how fast you must ship flips
build-your-own vs. MBaaS. There's no best choice — only the one that fits the use case in front of you.
11
Further reading
These two chapters cite many external links. Below are the ones that resolve live, grouped by topic. A few
cited links returned server errors or blocked automated access and are omitted (noted in the footer).
Case-study concepts
[1]
Spatial database —
WikipediaWhy read it: the data type behind the mapping case study (Section 01) — points, lines,
polygons, and the databases that persist them.
Responsive & mobile foundations
[2]
BootstrapWhy read it: the responsive CSS framework recommended in Section 05 for building adaptive
UIs without a designer.
[3]
Bootstrap ExpoWhy read it: real sites built with Bootstrap — inspiration for what the framework can
produce.
BookMyShow PWA — Google Web showcaseWhy read it: the conversion and app-size wins behind Section 08's BookMyShow example.⚠ Archived Google Web showcase page, dated 2017
[8]
Flipkart
PWA — Google Web showcaseWhy read it: the engagement and conversion gains behind Section 08's Flipkart
example.⚠ Archived Google Web showcase page, dated 2016