CHAPTER 11
Intermediate
Deploying Frontend Apps in Serverless
Updated: May 15, 2026
20 min read
# CHAPTER 11
Deploying Frontend Apps in Serverless
1. Introduction
Our backend is entirely serverless—Lambda functions, DynamoDB, and API Gateway. But what about the frontend? Historically, if you built a React, Vue, or Angular application, you hosted it on a Node.js or Nginx web server. But managing a web server contradicts our entire serverless philosophy! In this chapter, we will embrace the JAMstack, learn how to host full Single Page Applications (SPAs) directly out of Cloud Storage buckets, and distribute them globally using Content Delivery Networks (CDNs) for lightning-fast performance.2. Learning Objectives
By the end of this chapter, you will be able to:- Define the JAMstack (JavaScript, APIs, and Markup) philosophy.
- Understand how to compile modern frontends into static assets.
- Configure an S3 Bucket for Static Website Hosting.
- Define a Content Delivery Network (CDN) and Edge Caching.
- Deploy a frontend architecture utilizing S3 and CloudFront.
3. Beginner-Friendly Explanation
Imagine a high-speed printing press.- Traditional Hosting (Server-Side Rendering): Every time a user asks for a newspaper, a writer literally types out the entire newspaper from scratch, prints it, and hands it to the user. It is slow and requires a ton of effort.
- JAMstack (Static Hosting): The writer writes the newspaper *once* (At Build Time). They print 1,000,000 copies and stack them by the door. When a user asks for a newspaper, you just hand them a pre-printed copy. It is instant and requires zero effort.
- The CDN: Instead of keeping all 1,000,000 copies in a single building in New York, you hire delivery drivers to place a stack of newspapers in every single city around the world. No matter where the user lives, they get their paper instantly.
4. The JAMstack Philosophy
Modern frontend frameworks (React, Vue, Angular) are essentially just massive JavaScript programs. When you runnpm run build, your framework compiles your entire application into a simple folder containing index.html, main.js, and style.css.
Because these are just static files, you do not need a compute server to host them. You just need a hard drive that can serve files over HTTP.
5. Static Hosting via S3
In Chapter 10, we learned S3 stores objects. S3 also has a brilliant feature called Static Website Hosting. If you upload your compiled Reactindex.html and .js files into an S3 bucket and check a box, S3 generates a public URL. When a user visits the URL, S3 simply hands them the HTML file. The browser downloads the JavaScript, executes it, and the application comes to life on the user's laptop, pulling live data from your API Gateway.
6. Content Delivery Networks (CloudFront)
S3 is great, but a bucket lives in a single Region (e.g., Virginia). If a user in Tokyo requests your website, the files must travel across the ocean, resulting in a slow loading time. Enter Amazon CloudFront (A CDN). CloudFront has hundreds of "Edge Locations" across the globe. You place CloudFront in front of your S3 bucket. When the user in Tokyo requests the site, CloudFront pulls the files from Virginia *once*, caches them in a Tokyo data center, and serves all future Tokyo users locally. The website loads in milliseconds globally!7. Mini Project: Conceptual Frontend Deployment
Let's outline the deployment of a React app.Step-by-Step Overview:
-
1.
The Code: On your laptop, you finish your React app. You run
npm run build. You now have a/buildfolder.
-
2.
The Bucket: You create an S3 bucket named
my-production-react-app. You enable "Static website hosting" and set the Index Document toindex.html.
-
3.
The Upload: You upload the contents of your
/buildfolder into the S3 bucket.
- 4. The CDN: You create an Amazon CloudFront Distribution. You set the "Origin" to point to your S3 bucket's website endpoint.
-
5.
The Domain: You use AWS Route 53 (DNS) to point
mycompany.comto the CloudFront Distribution.
- 6. The Magic: You now have a blazing fast, infinitely scalable frontend. Because S3 and CloudFront have no operating systems or connection limits, they simply cannot crash, even if 10 million people visit your site in one minute.
8. Alternative Hosting Platforms
While S3 + CloudFront is the raw AWS way, several platforms have emerged to make this process even easier:- Vercel / Netlify: These platforms revolutionized frontend hosting. You simply connect them to your GitHub repository. Every time you push code, they automatically run the build step and deploy the static files to their massive global CDNs. They offer the ultimate developer experience for JAMstack applications.
- AWS Amplify Hosting: AWS's direct competitor to Vercel, offering similar Git-based automated deployments.
9. Best Practices
-
SPA Routing (The 404 Problem): Single Page Applications (like React) handle routing via JavaScript (e.g., navigating to
/about). If a user refreshes the page onmycompany.com/about, S3 looks for a folder named "about" and returns a404 Not Founderror! To fix this, you must configure S3/CloudFront to always returnindex.htmlfor every 404 error, allowing React to take over and render the correct page.
10. Cost Optimization Tips
- Free Frontend Hosting: Because static files consume almost zero compute power, frontend hosting is incredibly cheap. Platforms like Vercel, Netlify, and Cloudflare Pages offer extremely generous free tiers that can host small to medium-sized production websites for absolutely $0.
11. Exercises
- 1. Explain the philosophical shift of the JAMstack compared to traditional Server-Side Rendered (SSR) monolithic applications (like WordPress).
- 2. What is the architectural purpose of placing a CDN (like Amazon CloudFront) in front of an S3 bucket?
12. FAQs
Q: If the frontend is static HTML, how do I show dynamic user data? A: The HTML is static, but the JavaScript inside it is dynamic! When the browser loads the staticindex.html, the React JavaScript executes, makes an HTTP call to your Serverless API Gateway, fetches the specific user's data from DynamoDB, and paints it onto the screen.
13. Interview Questions
- Q: Describe the "404 Problem" inherent in hosting a Single Page Application (SPA) on a static storage service like Amazon S3. Detail the specific routing configuration required to resolve it.
- Q: Contrast the deployment pipeline and architectural overhead of hosting a React application on an EC2 Virtual Machine versus utilizing an S3 bucket paired with Amazon CloudFront.