Study Notes
Noteapplied

Case Studies & Mobile Apps

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.

35 min read·verified Content review 2026·reviewed 2026-08-30

After this you should be able to

  • Explain the core idea in Case Studies & Mobile Apps
  • Apply Case Studies & Mobile Apps in a representative design
System Design · Chapters 15–16

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:

PropertyDesign 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).

UI JS / HTML5 search Tile cache pre-gen tiles hit → tile miss Map server renders tile spatial DB generated tile cached
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.

ConcernChoice & 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.

Native app (Java/Kotlin/Swift) OS + hardware direct access · fast, no lag Hybrid web code (HTML/CSS/JS) wrapper / middle layer OS + hardware extra layer → a bit slower
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.
NativeHybrid
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.A bit slower due to the middle layer.
Tech Android: Java, Kotlin, C++. iOS: Swift, Objective-C + Cocoa Touch.React Native (Facebook), Apache Cordova (Adobe), Ionic (on Cordova + Angular), Flutter (Google).
Examples LinkedIn, Tinder, Hike (Android).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 productionResult
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.

Mobile app fat client · logic APIs MBaaS (Firebase / Amplify) auth realtime DB push / storage analytics Custom / legacy backend optional — e.g. banking verify
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 study Read-heavy + spatial → NoSQL graph DB, heavy caching, autoscaling, microservices, server-rendered cached map tiles.
Ticketing case study Transaction-heavy → ACID relational (MySQL), isolation locks + queue for concurrency, cached browse counts, responsive CRUD UI.
Mobile shift 60–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. PWA Native = fast, per-OS, costly. Hybrid = one web codebase, some lag (Airbnb/Udacity reverted). PWA = native feel in the browser, competes with responsive sites.
MBaaS Cloud 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 — Wikipedia Why 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]
Bootstrap Why read it: the responsive CSS framework recommended in Section 05 for building adaptive UIs without a designer.
[3]
Bootstrap Expo Why read it: real sites built with Bootstrap — inspiration for what the framework can produce.
[4]
Mobile app development — Wikipedia Why read it: a broader catalog of mobile-app tools, SDKs, and platforms referenced in Section 06.

Native vs. hybrid — the retrospectives

[5]
React Native at Airbnb — Airbnb Engineering Why read it: the full account of why Airbnb abandoned React Native for native (Section 06).
[6]
React Native: a retrospective — Udacity Engineering Why read it: Udacity's parallel story of dropping React Native over maintenance cost and UX consistency (Section 06).

PWAs in production

[7]
BookMyShow PWA — Google Web showcase Why 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 showcase Why read it: the engagement and conversion gains behind Section 08's Flipkart example. ⚠ Archived Google Web showcase page, dated 2016

Rewritten in full from two closing sections of Web Application & Software Architecture 101 — Case studies (A web-based mapping service like Google Maps; A baseball game ticket booking web portal) and Mobile apps (Introduction; Before you design your mobile app; Responsive interfaces; Types of mobile apps Parts 1 & 2; Choosing between a native and a hybrid app; Progressive web apps; Mobile BaaS). The course's closing "learning track" and "Epilogue" pages were skipped as non-teaching outro. All three diagrams are original SVGs built from the lessons' descriptions of their illustrations (1.91–2.01), not reproductions of the source images. [+] marks context added beyond the source. External links were verified on Aug 13, 2026; several cited links (a VentureBeat article on Facebook's HTML5 mistake, a Hotstar scaling write-up, and the Myntra/Pixel-Federation mobile-first sources) returned server errors or blocked automated access and were dropped. This completes the whole course.