AWS Infrastructure Case Study
Forecast My Route: A Production SaaS Built End-to-End on Serverless AWS
A marine routing and weather-forecasting platform built from scratch by one engineer — built for recurring-revenue customers, running at scale on a fully serverless AWS stack, with zero servers to manage and infrastructure costs that scale with usage.
The Challenge
Sailors planning offshore passages need accurate, layered weather routing — but existing tools are either prohibitively expensive professional software or consumer apps that lack the precision required for open-water navigation. The challenge was to build a production-grade, data-rich routing platform that could serve real customers reliably, without the operational overhead or cost structure of a traditional server-based stack.
The constraints were deliberate: the system had to be fully automated, cost-proportional to usage, resilient to traffic spikes, and maintainable by a single engineer without 24/7 infrastructure monitoring.
The Architecture: All Four Tiers in Production
Forecast My Route is a live demonstration of the 4-Tier Cloud Architecture Framework applied to a real, paying-customer product. Every layer was chosen to maximize resilience and minimize operational burden.
The entire front-end — HTML, CSS, JavaScript, and map assets — is served globally from S3 via CloudFront. Route 53 handles DNS and health-check routing. Edge caching keeps page load times fast for users worldwide regardless of their location relative to the origin.
Route 53 · CloudFront · S3 Static Hosting
All backend processing runs on AWS Lambda triggered through API Gateway. Weather data ingestion, routing calculations, and subscription management are handled by isolated Lambda functions — each scoped to a single responsibility. EventBridge schedules automated data refresh jobs on a regular cadence with no manual intervention.
API Gateway · AWS Lambda · EventBridge Scheduled Jobs
User accounts, route history, and subscription records are stored in DynamoDB — a schema-flexible NoSQL engine that scales automatically and requires no cluster management. Forecast data files are stored in S3 and pre-processed before being made available to the routing engine. There are no databases to patch, tune, or back up manually.
DynamoDB · Amazon S3
Each Lambda function operates under a least-privilege IAM role — it can only access the specific resources it needs, nothing more. API keys, Stripe secrets, and third-party credentials are stored in AWS Secrets Manager and injected at runtime. No credentials live in code or environment variables. All traffic flows over HTTPS enforced at the CloudFront layer.
IAM Roles & Policies · Secrets Manager · CloudFront HTTPS Enforcement
Stripe Integration & Subscription Management
Forecast My Route is a paid SaaS product with active subscribers. Stripe handles all payment processing, and a dedicated Lambda function manages the full subscription lifecycle: new signups, plan changes, cancellations, and webhook events from Stripe are all processed automatically without manual intervention.
- Stripe Checkout handles secure payment collection — no card data ever touches the application.
- Stripe webhooks trigger Lambda to provision and deprovision user access in DynamoDB in real time.
- Subscription status is checked on every authenticated API call, keeping access control tight without a separate auth service.
Operational Reality
The entire platform runs without any standing servers. There is no EC2 instance to patch, no RDS cluster to monitor, and no container orchestration to manage. The operational footprint is close to zero for steady-state traffic, with costs scaling directly with usage.
- Weather data is refreshed automatically on a schedule — no manual data pipeline management.
- Infrastructure scales automatically during traffic spikes with no pre-warming or capacity planning required.
- All application secrets are rotatable without code deploys.
- CloudFront provides DDoS resilience and global performance without additional configuration.
Architecture Insight
Build for Zero Operational Overhead from Day One
The decision to go fully serverless from the start was not a cost-cutting move — it was an architectural principle. Every service choice was evaluated against a single question: does this component require a human to intervene when something breaks at 2am?
Lambda functions fail gracefully and retry automatically. DynamoDB is self-healing. CloudFront handles edge failures transparently. The result is a production system that can be operated by one engineer while they are asleep.
This is the standard I apply to every AWS architecture engagement: design for the operational reality of your actual team size, not the team you hope to have someday.
Building a SaaS and need an AWS architecture that scales without scaling your ops burden? I design and blueprint production-ready serverless stacks with clear tradeoffs and no over-engineering.