AWS-103 · Lesson 12 of 12 · 19 min
Case study: matching services to a workload
▶ Video coming soon A video version of this lesson is on the way.
Eleven sessions after they started, Gwen and Mateo spread the service map across the big table in the Calgary boardroom. It has grown to four pages. Lorraine, Dr. Kaur, Hannah, Kwame and Andre are all there, because this is the review before the design goes to the board in December. "Today we do two things," Gwen says. "We check that every requirement has a service and every service has a reason. Then Mateo practises the thing the exam really tests: reading a short scenario and picking the right service quickly."
This lesson pulls the course together. It sets out a method for matching services to a workload, applies it to the whole Cascade Ridge design, shows the finished architecture, and finishes with a set of scenario drills in the style of the exam's third domain.
A method for matching services
Gwen's method has five questions, asked in order. They work for a whole architecture and for a single exam question.
- What is the job? State it in plain words: store images for years, run a vendor's Windows application, send reminders, answer booking questions. Most exam questions hide the job in a sentence of business language.
- What are the constraints? Look for the words that decide between similar services: lowest cost, least operational overhead, millisecond access, retrieval within hours, must not cross the internet, existing Kubernetes, vendor supports only virtual machines, unpredictable traffic.
- Which category? Compute, containers and serverless, storage, database, networking, hybrid connectivity, monitoring, integration, analytics, AI and ML, developer tools, end-user computing or IoT. Naming the category removes most wrong answers.
- Which service in that category best fits the constraints? Prefer managed and serverless services unless a constraint demands control, and choose the highest layer that solves the problem.
- What else does it need? Every service needs identity, network placement, monitoring, backup and cost controls. Good answers and good architectures do not forget them.
The Cascade Ridge requirements
Mateo reads out the requirements gathered over the course, and the team agrees on a service for each.
| Requirement | Service choice | Deciding constraint |
|---|---|---|
| Run the vendor-supported VetLedger application | Amazon EC2 (Windows) in an Auto Scaling group behind an Application Load Balancer, two Availability Zones | Vendor supports only virtual machines; must survive a zone failure |
| VetLedger database | Amazon RDS for SQL Server, Multi-AZ | Same engine, managed patching and backups, automatic failover |
| Imaging archive, 38 TB growing 6 TB a year | Amazon S3 with versioning, replication and lifecycle rules to Standard-IA and Glacier Instant Retrieval | Whole objects, rare reads, same-day retrieval, lowest cost |
| Shared office files | Amazon FSx for Windows File Server | SMB shares with existing permissions |
| Backups across services | AWS Backup with cross-Region copies | Replace tape; central policy |
| BookVet phase 2 | Amplify Hosting, CloudFront, API Gateway, Lambda, DynamoDB | Bursty traffic, tiny team, nothing to patch |
| Nightly reports (40 minutes) | Amazon ECS task on AWS Fargate, started by EventBridge Scheduler | Too long for Lambda; no servers wanted |
| Reminder texts and alerts | Amazon SQS with a dead-letter queue, Lambda, Amazon SNS | Decoupling, retries, fan-out alerts |
| Network | Amazon VPC with public and private subnets in two zones, NAT gateways, S3 gateway endpoint, Route 53 | Isolation and multi-AZ placement |
| Hospital and clinic connectivity | Hosted Direct Connect with VPN backup at the hospital; Site-to-Site VPN at clinics; Client VPN for remote staff | Consistent bandwidth where needed, fast setup elsewhere |
| Monitoring and audit | CloudWatch alarms and canaries, CloudTrail organization trail, AWS Config rules | The July outage must never go unnoticed again |
| Operations | Systems Manager Patch Manager and Session Manager | No nights of manual patching, no open remote ports |
| Monthly reporting | S3 data lake, Glue, Lake Formation, Athena, Amazon Quick Sight | Serverless, per-manager access |
| Dictation and intake forms | Amazon Transcribe and Amazon Textract with human review | Ready-made AI services; a person checks results |
| Releases | CodePipeline, CodeBuild and CodeDeploy, with CloudFormation templates | Tested, repeatable, reversible changes |
| Vaccine fridge sensors | AWS IoT Core, Data Firehose, SNS | Device messaging and alerts |
The architecture
The figure shows a generic version of the pattern the team arrived at, the kind an exam question might describe: an edge layer (Route 53 and CloudFront), a compute layer spread across Availability Zones behind a load balancer, a managed database layer with a standby, a queue that decouples background work, and monitoring around everything. Cascade Ridge's own design follows the same shape, with EC2 instances for VetLedger and RDS for SQL Server instead of containers and Aurora, because of the vendor's requirements.
Dr. Kaur asks the question that matters most to her: what happens at three in the morning if an Availability Zone fails? Mateo answers it in order. The load balancer stops sending clinic traffic to the failed zone. The Auto Scaling group launches a replacement instance in the healthy zone. RDS fails over to its standby in the other zone, usually within a minute or two, keeping the same endpoint name. S3, DynamoDB, SQS and Lambda are Regional services that already span several zones. CloudWatch alarms notify the on-call phone and the charge nurse through SNS. The emergency hospital might see a short pause, not a three-hour outage.
Lorraine asks the other question: what does it cost? Gwen will not give a number in this course, because pricing, budgets and the tools for estimating cost are the subject of the billing course. She lists the decisions in this design that keep costs down: lifecycle rules on the archive, serverless services that cost nothing when idle, Spot for the image-preview job, a Savings Plan for the steady VetLedger servers after measurement, and a gateway endpoint so S3 traffic avoids NAT charges.
Trade-offs the team accepted
- VetLedger stays on EC2. It would be cheaper and simpler to run on containers or serverless, but the vendor supports only Windows servers. The team accepts patching (automated with Systems Manager) in return for vendor support.
- Glacier Instant Retrieval, not Deep Archive, for old images. Deep Archive would cost less, but referral hospitals sometimes need a study the same day.
- VPNs for the clinics, not Direct Connect. Direct Connect to every clinic would cost far more; the clinics' traffic is modest, and a mobile backup line covers outages.
- Athena first, not Redshift. Lorraine's reports are modest in volume and run once a day; a warehouse can come later if needed.
- People review AI output. Transcribe and Textract save time, but a vet or receptionist confirms every note and every allergy.
Scenario drills
Gwen closes with quick-fire scenarios. For each one, Mateo names the category first, then the service, then the word in the question that decided it.
| Scenario | Category | Answer | Deciding words |
|---|---|---|---|
| Run a containerized app on Kubernetes without managing the control plane | Containers | Amazon EKS | Kubernetes |
| Run code when a file is uploaded, paying nothing when idle | Serverless | AWS Lambda | when a file is uploaded; idle |
| Store backups that are rarely read and can wait 12 hours, at lowest cost | Storage | S3 Glacier Deep Archive | rarely; 12 hours; lowest cost |
| A shared file system for many Linux instances | Storage | Amazon EFS | shared; Linux |
| A serverless key-value database with single-digit millisecond latency | Database | Amazon DynamoDB | key-value; serverless |
| Reduce repeated read load on a relational database | Database | Amazon ElastiCache | repeated reads |
| A private, dedicated link to AWS that avoids the internet | Hybrid | AWS Direct Connect | dedicated; avoids the internet |
| Find which user deleted a resource | Monitoring | AWS CloudTrail | which user |
| Fan out one message to email, SMS and a queue | Integration | Amazon SNS | fan out |
| Query data in S3 with SQL without servers | Analytics | Amazon Athena | SQL; S3; without servers |
| Extract fields from scanned forms | AI | Amazon Textract | scanned forms |
| Trace slow requests through microservices | Developer tools | AWS X-Ray | trace |
# A tiny keyword helper for revision: which service does a scenario point to?
clues = {"kubernetes": "Amazon EKS", "trace": "AWS X-Ray", "fan out": "Amazon SNS",
"which user": "AWS CloudTrail", "scanned form": "Amazon Textract",
"sql on s3": "Amazon Athena", "dedicated link": "AWS Direct Connect",
"key-value": "Amazon DynamoDB", "shared linux file": "Amazon EFS"}
def suggest(scenario):
s = scenario.lower()
hits = [svc for clue, svc in clues.items() if clue in s]
return hits or ["read the constraints again"]
for q in ["We need a shared Linux file system for 40 servers",
"Find which user stopped the instance",
"Query S3 files using SQL with no servers"]:
print(q, "->", suggest(q))We need a shared Linux file system for 40 servers -> ['Amazon EFS'] Find which user stopped the instance -> ['AWS CloudTrail'] Query S3 files using SQL with no servers -> ['read the constraints again']
What this code does
It is a small revision helper that looks for clue phrases in an exam-style scenario and suggests the AWS service each clue usually points to, such as "shared linux file" for Amazon EFS. When no clue phrase appears it tells the reader to reread the constraints. The third question shows the limit of keyword matching: it really points to Amazon Athena, but its wording doesn't contain the exact clue, so careful reading still matters.
Gwen is quick to add that a keyword list is a revision aid, not a strategy. The third scenario above asks for Athena in different words, so the helper misses it; a person reading for meaning would not. Exam questions are written to reward understanding: the distractors are usually real services that solve a different problem. The habit to build is naming the job and the deciding constraint before looking at the options.
What the design leaves for later
A good design says what it does not yet do. Gwen lists four items so the board is not surprised. The cost estimate comes next, using the AWS Pricing Calculator, with budgets and alerts in the billing course. The support plan must be chosen before cutover; Dr. Kaur's requirement that someone at AWS respond quickly to a production outage points to at least Business Support. The full disaster recovery design, including how quickly the recovery Region could take over and how often that is rehearsed, needs its own workshop. And the phase 2 projects, BookVet's rewrite and the AI features, wait until the core migration has run smoothly for at least a month.
Writing these down protects the project. Each item has an owner and a date, so none can be quietly dropped, and the board can see that the team knows the difference between decided and planned.
Andre asks one last practical question: who will look after all of this after Gwen's contract ends? The answer is part of the design too. Mateo becomes the platform owner, Kwame owns BookVet and its pipeline, Hannah owns security and compliance settings, and Lorraine owns budgets and cost reports. Each owner has a dashboard and a short runbook. The service map stops being a project document and becomes the way the company runs its systems.
Worked problem
Working one exam-style scenario through the method
A company runs a web application on a single EC2 instance. Traffic is unpredictable, the database is a MySQL server installed on the same instance, and the company wants higher availability and less operational work. Which changes best meet the goal?
Show solution
- Job: serve a web application and store its relational data.
- Constraints: unpredictable traffic, higher availability, less operational work.
- Categories: compute and database.
- Services: move the database to Amazon RDS for MySQL with Multi-AZ (or Aurora MySQL) for managed failover; run the web tier in an Auto Scaling group across two Availability Zones behind an Application Load Balancer, or on containers with Fargate.
- Extras: CloudWatch alarms, backups through RDS and AWS Backup, and security groups that allow database access only from the web tier.
Answer: A managed Multi-AZ database plus a load-balanced, auto-scaled web tier across Availability Zones.
By the end of the session the service map is signed off for the board. Mateo has one more task: the cost estimate, which is the subject of the next course. He also has a revision plan for February, built from twelve sessions of notes. "Thirty-odd services," he says, looking at the four pages. "I actually know what every one of them is for."
Common mistakes
MistakeChoosing a service because its name appears in the question.
InsteadMatch the job and the deciding constraint; distractors are often real services for a different job.
MistakePicking the most powerful option rather than the simplest that fits.
InsteadPrefer managed and serverless services unless a constraint requires control.
MistakeDesigning compute and forgetting monitoring, backup and identity.
InsteadEvery service needs placement, access control, monitoring, backup and cost controls.
MistakeIgnoring vendor and compliance constraints in the design.
InsteadA vendor's supported platform or a data-residency rule can override the otherwise best choice.
MistakeTreating a keyword list as a substitute for reading the scenario.
InsteadRead for the job and the constraints; keyword lists only help revision.
Summary and key terms
- Matching services to a workload means naming the job, identifying the constraints, choosing the category, picking the best-fitting service (managed or serverless unless control is required) and adding identity, networking, monitoring, backup and cost controls.
- The Cascade Ridge design combines EC2 and RDS for the vendor system, S3 with lifecycle rules for imaging, serverless services for BookVet, queues and notifications for reminders, a multi-AZ VPC with VPN and Direct Connect, CloudWatch, CloudTrail and Config for monitoring, a serverless analytics pipeline and AI services with human review.
- Exam scenarios reward reading for the deciding constraint, because the wrong options are usually real services for other jobs.
- Deciding constraint
- The requirement in a scenario that separates the right service from similar ones.
- Managed service
- A service where AWS runs the infrastructure and much of the operational work.
- Serverless
- Services that run without customer-managed servers and usually cost nothing when idle.
- Decoupling
- Separating components with queues or events so they work independently.
- Multi-AZ design
- An architecture that places resources in several Availability Zones to survive a zone failure.
- Service map
- A list matching each requirement to a service and the reason for choosing it.
Practice problems
Work each problem on paper first, then reveal the answer to check.
What are the five questions of the matching method?
Show answer
What is the job, what are the constraints, which category, which service best fits, and what else does it need.
Why does VetLedger stay on EC2 in the design?
Show answer
The vendor supports only Windows servers.
Which service would fan out an alert to several phones and an email list?
Show answer
Amazon SNS.
Lesson quiz · 5 questions
Score 60% or more to complete this lesson.
Create a free account to save your progress, take quizzes and earn a certificate.