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.

Requirements matched to services for Cascade Ridge.
RequirementService choiceDeciding constraint
Run the vendor-supported VetLedger applicationAmazon EC2 (Windows) in an Auto Scaling group behind an Application Load Balancer, two Availability ZonesVendor supports only virtual machines; must survive a zone failure
VetLedger databaseAmazon RDS for SQL Server, Multi-AZSame engine, managed patching and backups, automatic failover
Imaging archive, 38 TB growing 6 TB a yearAmazon S3 with versioning, replication and lifecycle rules to Standard-IA and Glacier Instant RetrievalWhole objects, rare reads, same-day retrieval, lowest cost
Shared office filesAmazon FSx for Windows File ServerSMB shares with existing permissions
Backups across servicesAWS Backup with cross-Region copiesReplace tape; central policy
BookVet phase 2Amplify Hosting, CloudFront, API Gateway, Lambda, DynamoDBBursty traffic, tiny team, nothing to patch
Nightly reports (40 minutes)Amazon ECS task on AWS Fargate, started by EventBridge SchedulerToo long for Lambda; no servers wanted
Reminder texts and alertsAmazon SQS with a dead-letter queue, Lambda, Amazon SNSDecoupling, retries, fan-out alerts
NetworkAmazon VPC with public and private subnets in two zones, NAT gateways, S3 gateway endpoint, Route 53Isolation and multi-AZ placement
Hospital and clinic connectivityHosted Direct Connect with VPN backup at the hospital; Site-to-Site VPN at clinics; Client VPN for remote staffConsistent bandwidth where needed, fast setup elsewhere
Monitoring and auditCloudWatch alarms and canaries, CloudTrail organization trail, AWS Config rulesThe July outage must never go unnoticed again
OperationsSystems Manager Patch Manager and Session ManagerNo nights of manual patching, no open remote ports
Monthly reportingS3 data lake, Glue, Lake Formation, Athena, Amazon Quick SightServerless, per-manager access
Dictation and intake formsAmazon Transcribe and Amazon Textract with human reviewReady-made AI services; a person checks results
ReleasesCodePipeline, CodeBuild and CodeDeploy, with CloudFormation templatesTested, repeatable, reversible changes
Vaccine fridge sensorsAWS IoT Core, Data Firehose, SNSDevice messaging and alerts

The architecture

Architecture diagram: users reach Route 53 and CloudFront; CloudFront serves static files from S3 and sends application traffic to a load balancer in front of ECS on Fargate across two Availability Zones; the application uses Aurora Multi-AZ and DynamoDB for sessions; work goes to an SQS queue processed by Lambda workers; CloudWatch and CloudTrail monitor everything; a bar at the bottom notes Direct Connect to the head office and S3, Glue and Athena for reporting.
A matched design for a web application of the kind built in this case study. The Cascade Ridge production design substitutes EC2 for VetLedger and RDS for SQL Server for its database.

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 drills in the style of the exam.
ScenarioCategoryAnswerDeciding words
Run a containerized app on Kubernetes without managing the control planeContainersAmazon EKSKubernetes
Run code when a file is uploaded, paying nothing when idleServerlessAWS Lambdawhen a file is uploaded; idle
Store backups that are rarely read and can wait 12 hours, at lowest costStorageS3 Glacier Deep Archiverarely; 12 hours; lowest cost
A shared file system for many Linux instancesStorageAmazon EFSshared; Linux
A serverless key-value database with single-digit millisecond latencyDatabaseAmazon DynamoDBkey-value; serverless
Reduce repeated read load on a relational databaseDatabaseAmazon ElastiCacherepeated reads
A private, dedicated link to AWS that avoids the internetHybridAWS Direct Connectdedicated; avoids the internet
Find which user deleted a resourceMonitoringAWS CloudTrailwhich user
Fan out one message to email, SMS and a queueIntegrationAmazon SNSfan out
Query data in S3 with SQL without serversAnalyticsAmazon AthenaSQL; S3; without servers
Extract fields from scanned formsAIAmazon Textractscanned forms
Trace slow requests through microservicesDeveloper toolsAWS X-Raytrace
Python Example
# 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))
Output
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
  1. Job: serve a web application and store its relational data.
  2. Constraints: unpredictable traffic, higher availability, less operational work.
  3. Categories: compute and database.
  4. 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.
  5. 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.

  1. 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.

  2. Why does VetLedger stay on EC2 in the design?

    Show answer

    The vendor supports only Windows servers.

  3. 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.

Take the quiz