Skip to content

Commit 0f82622

Browse files
docs: improve TechBooks scenario with context and abbreviations
- Add introductory paragraphs to tables explaining their purpose - Define abbreviations on first use (NACL, AMI, AZ, IOPS, SLA, etc.) - Clarify technical terms (OSI, ENI, LCU, TTL, OAC/OAI) - Improve readability with context for comparison tables
1 parent 3810db7 commit 0f82622

6 files changed

Lines changed: 123 additions & 60 deletions

File tree

docs/scenarios/techbooks/phases/phase-1-mvp-launch.md

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ flowchart TB
5252

5353
### WHY Custom VPC Instead of Default VPC?
5454

55+
AWS provides a default VPC in every region, but understanding when to use a custom VPC is essential
56+
for production workloads and the exam:
57+
5558
| Aspect | Default VPC | Custom VPC | WHY It Matters |
5659
| ------------------------ | ---------------------- | ------------------------------ | --------------------------------------------------------------- |
5760
| **CIDR Block** | Fixed 172.31.0.0/16 | You choose (e.g., 10.0.0.0/16) | Avoid IP conflicts when connecting to on-premises or other VPCs |
@@ -71,7 +74,8 @@ flowchart TB
7174
**CIDR (Classless Inter-Domain Routing)** defines your IP address range using notation like
7275
`10.0.0.0/16`.
7376

74-
The number after `/` tells you how many IP addresses you get:
77+
The number after `/` tells you how many IP addresses you get. This table shows common CIDR sizes
78+
you'll encounter on the exam:
7579

7680
| CIDR | IP Addresses | Use Case |
7781
| ---- | ------------ | ---------------------------- |
@@ -110,13 +114,15 @@ So a `/24` subnet gives you **251 usable IPs**, not 256.
110114

111115
For Phase 1, we'll keep it simple but plan for growth:
112116

113-
| Component | CIDR | Purpose |
114-
| --------------------- | ------------ | -------------------------- |
115-
| VPC | 10.0.0.0/16 | Room to grow |
116-
| Public Subnet (AZ-a) | 10.0.1.0/24 | Web servers, bastion hosts |
117-
| Public Subnet (AZ-b) | 10.0.2.0/24 | Future HA |
118-
| Private Subnet (AZ-a) | 10.0.10.0/24 | Databases (future) |
119-
| Private Subnet (AZ-b) | 10.0.20.0/24 | Future HA |
117+
| Component | CIDR | Purpose |
118+
| --------------------- | ------------ | ----------------------------- |
119+
| VPC | 10.0.0.0/16 | Room to grow |
120+
| Public Subnet (AZ-a) | 10.0.1.0/24 | Web servers, bastion hosts |
121+
| Public Subnet (AZ-b) | 10.0.2.0/24 | Future HA (High Availability) |
122+
| Private Subnet (AZ-a) | 10.0.10.0/24 | Databases (future) |
123+
| Private Subnet (AZ-b) | 10.0.20.0/24 | Future HA |
124+
125+
> **Note:** AZ = Availability Zone (isolated data centers within a region).
120126
121127
**WHY this design?**
122128

@@ -242,8 +248,8 @@ sequenceDiagram
242248
SG->>User: Response delivered
243249
```
244250

245-
If security groups were **stateless** (like NACLs), you'd need to explicitly allow the response
246-
traffic on ephemeral ports (1024-65535).
251+
If security groups were **stateless** (like NACLs - Network Access Control Lists), you'd need to
252+
explicitly allow the response traffic on ephemeral ports (1024-65535).
247253

248254
### Our TechBooks Security Group
249255

@@ -274,11 +280,11 @@ For Phase 1, our EC2 needs:
274280

275281
For our MVP:
276282

277-
| Decision | Choice | WHY |
278-
| ----------------- | ----------------- | -------------------------------------------------------- |
279-
| **Instance Type** | t3.micro | Free tier eligible, burstable, enough for 100 users/day |
280-
| **AMI** | Amazon Linux 2023 | Free, optimized for AWS, long-term support |
281-
| **Storage** | 20GB gp3 | gp3 is cheaper than gp2 with better baseline performance |
283+
| Decision | Choice | WHY |
284+
| ----------------- | ----------------- | ------------------------------------------------------------------------------ |
285+
| **Instance Type** | t3.micro | Free tier eligible, burstable, enough for 100 users/day |
286+
| **AMI** | Amazon Linux 2023 | AMI (Amazon Machine Image) - Free, optimized for AWS, long-term support |
287+
| **Storage** | 20GB gp3 | gp3 (General Purpose SSD) is cheaper than gp2 with better baseline performance |
282288

283289
### Instance Types Decoded
284290

@@ -324,7 +330,8 @@ flowchart LR
324330
325331
### WHY Elastic IP Instead of Auto-Assigned Public IP?
326332

327-
When you launch an EC2 instance, you can get a public IP two ways:
333+
When you launch an EC2 instance, you can get a public IP two ways. Understanding the difference is
334+
crucial for designing stable architectures:
328335

329336
| Feature | Auto-Assigned Public IP | Elastic IP (EIP) |
330337
| ---------------- | ------------------------ | -------------------------- |
@@ -409,7 +416,7 @@ running 24/7. Usage beyond 750 hours is charged at $0.005/hr.
409416
410417
**When NOT to use Elastic IP:**
411418

412-
- Behind a Load Balancer (the LB has its own DNS name)
419+
- Behind a Load Balancer (the Load Balancer has its own DNS name)
413420
- Using Route 53 with health checks (can auto-failover)
414421
- Auto Scaling groups (instances are disposable)
415422

docs/scenarios/techbooks/phases/phase-2-database-separation.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ flowchart TB
134134

135135
### Self-Managed vs RDS Comparison
136136

137+
Understanding the operational differences helps you decide when RDS is worth the cost vs managing
138+
your own database:
139+
137140
| Task | Self-Managed (EC2) | RDS |
138141
| ---------------- | ----------------------- | ---------------------------------- |
139142
| **Installation** | You do it | AWS handles |
@@ -291,6 +294,9 @@ flowchart TB
291294

292295
### NAT Gateway vs NAT Instance
293296

297+
AWS offers two ways to provide outbound internet access from private subnets. This comparison helps
298+
you choose between the managed service and the self-managed approach:
299+
294300
| Feature | NAT Gateway | NAT Instance |
295301
| ------------------- | ---------------------- | ------------------------ |
296302
| **Managed by** | AWS | You |
@@ -435,7 +441,7 @@ Outbound:
435441
### WHY Port 3306?
436442

437443
Each database engine has its standard port. RDS uses the same ports because it runs the actual
438-
engine:
444+
engine. Knowing these ports is useful for Security Group configuration and troubleshooting:
439445

440446
| RDS Engine | Default Port | WHY This Port |
441447
| -------------- | ------------ | -------------------------------- |
@@ -514,7 +520,7 @@ db.t3.micro
514520
└───────── Family: T = burstable
515521
```
516522

517-
**Common RDS families:**
523+
**Common RDS families** (similar to EC2, but prefixed with "db."):
518524

519525
| Family | Use Case |
520526
| ----------------- | --------------------------------- |
@@ -527,6 +533,9 @@ db.t3.micro
527533

528534
### Storage
529535

536+
RDS supports multiple storage types with different IOPS (Input/Output Operations Per Second)
537+
characteristics. Choose based on your performance and cost requirements:
538+
530539
| Type | IOPS | Use Case | Cost |
531540
| ------------ | ----------------------- | ----------------------------- | ---- |
532541
| **gp2** | Burstable, 3 IOPS/GB | General purpose (legacy) | $ |
@@ -563,7 +572,7 @@ flowchart TB
563572
OnDemand["On-demand<br>User initiated"]
564573
end
565574
566-
subgraph Recovery["Point-in-Time Recovery"]
575+
subgraph Recovery["PITR (Point-in-Time Recovery)"]
567576
PITR["Restore to any second<br>within retention period"]
568577
end
569578
@@ -652,7 +661,7 @@ flowchart TB
652661
## See Also
653662

654663
> **Related Learning:** For database migration strategies from on-premises SQL Server to RDS,
655-
> including DMS and SCT tooling, see
664+
> including DMS (Database Migration Service) and SCT (Schema Conversion Tool), see
656665
> [ShipFast Phase 4: Database Migration](/scenarios/shipfast/phases/phase-4-database-migration.md).
657666
658667
---

docs/scenarios/techbooks/phases/phase-3-high-availability.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ flowchart TB
5151

5252
### Key Characteristics
5353

54+
Availability Zones provide the isolation needed to survive infrastructure failures while maintaining
55+
low-latency connectivity for replication:
56+
5457
| Property | Description | WHY It Matters |
5558
| ------------------------------ | ------------------------------------------- | ------------------------------------------- |
5659
| **Physical separation** | AZs are miles apart | Natural disaster in one won't affect others |
@@ -167,6 +170,9 @@ flowchart TB
167170

168171
### WHY Synchronous Replication?
169172

173+
The choice between synchronous and asynchronous replication determines your data loss risk during
174+
failover:
175+
170176
| Replication Type | How It Works | Data Loss Risk | Use Case |
171177
| ---------------- | ----------------------------------------------- | ------------------ | ------------- |
172178
| **Synchronous** | Write confirmed only after both copies saved | Zero (RPO = 0) | Multi-AZ (HA) |
@@ -308,6 +314,10 @@ traffic becomes a bottleneck.
308314

309315
### The "Nines" of Availability
310316

317+
Availability is commonly expressed in "nines" - each additional nine represents an order of
318+
magnitude less downtime. Understanding what each level means in real terms helps set realistic
319+
expectations:
320+
311321
| Availability | Downtime/Year | Downtime/Month | Downtime/Week |
312322
| ----------------- | ------------- | -------------- | ------------- |
313323
| 99% (two 9s) | 3.65 days | 7.2 hours | 1.68 hours |
@@ -318,7 +328,7 @@ traffic becomes a bottleneck.
318328

319329
### AWS RDS SLA
320330

321-
AWS offers **99.95% availability** for Multi-AZ RDS deployments.
331+
AWS offers a SLA (Service Level Agreement) of **99.95% availability** for Multi-AZ RDS deployments.
322332

323333
**What this means:**
324334

@@ -564,7 +574,7 @@ During a deployment, the site went down for 5 minutes and customers complained.
564574

565575
**Next decisions:**
566576

567-
- Add Application Load Balancer (ALB)
577+
- Add ALB (Application Load Balancer)
568578
- Deploy EC2 instances in multiple AZs
569579
- Implement Auto Scaling
570580
- Achieve true fault tolerance for the web tier

docs/scenarios/techbooks/phases/phase-4-auto-scaling.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ flowchart TB
5353

5454
### Comparison
5555

56+
Understanding these two scaling approaches is fundamental - the exam frequently tests when to use
57+
each:
58+
5659
| Aspect | Vertical (Scale Up) | Horizontal (Scale Out) |
5760
| ------------------- | -------------------------- | ---------------------------------- |
5861
| **How** | Bigger instance | More instances |
@@ -91,7 +94,7 @@ AWS offers four types of load balancers:
9194

9295
```mermaid
9396
flowchart TB
94-
subgraph OSI["OSI Model"]
97+
subgraph OSI["OSI Model (Open Systems Interconnection)"]
9598
L7["Layer 7: Application<br>HTTP headers, paths, hosts"]
9699
L4["Layer 4: Transport<br>TCP/UDP ports"]
97100
L3["Layer 3: Network<br>IP addresses"]
@@ -234,6 +237,9 @@ flowchart LR
234237

235238
### Health Check Types
236239

240+
Multiple health check mechanisms work together. Understanding which one does what is important for
241+
troubleshooting:
242+
237243
| Type | Performed By | Checks | Action on Failure |
238244
| ----------------------- | ------------- | ------------------------- | ---------------------- |
239245
| **ELB Health Check** | Load Balancer | HTTP request to `/health` | Stop sending traffic |
@@ -508,6 +514,8 @@ flowchart LR
508514

509515
### TechBooks Scaling Configuration
510516

517+
For TechBooks, we combine multiple policies for comprehensive coverage:
518+
511519
| Policy | Type | Configuration |
512520
| ------------ | --------------- | ------------------------------ |
513521
| **Primary** | Target Tracking | CPU at 50% |
@@ -547,12 +555,12 @@ flowchart TB
547555

548556
**Changes:**
549557

550-
| Aspect | Before (EIP) | After (ALB) |
551-
| ------------------------ | ----------------- | ---------------- |
552-
| **DNS points to** | Elastic IP | ALB DNS name |
553-
| **SSL termination** | EC2 instance | ALB |
554-
| **Instance replacement** | Must reassign EIP | Automatic |
555-
| **Cost** | Free if attached | ALB hourly + LCU |
558+
| Aspect | Before (EIP) | After (ALB) |
559+
| ------------------------ | ----------------- | ---------------------------------------------- |
560+
| **DNS points to** | Elastic IP | ALB DNS name |
561+
| **SSL termination** | EC2 instance | ALB |
562+
| **Instance replacement** | Must reassign EIP | Automatic |
563+
| **Cost** | Free if attached | ALB hourly + LCU (Load Balancer Capacity Unit) |
556564

557565
### Updating DNS
558566

docs/scenarios/techbooks/phases/phase-5-going-global.md

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ and Asia, and orders are coming in from around the world.
2222

2323
**The founder asks:** "Can we make the site fast for everyone, everywhere?"
2424

25-
**Your decision:** Implement CloudFront CDN and optimize DNS with Route 53.
25+
**Your decision:** Implement CloudFront CDN (Content Delivery Network) and optimize DNS with
26+
Route 53.
2627

2728
---
2829

@@ -183,6 +184,8 @@ flowchart TB
183184

184185
### Edge Locations vs Regional Edge Caches
185186

187+
CloudFront uses a two-tier caching architecture to balance speed and storage capacity:
188+
186189
| Component | Count | Purpose |
187190
| ------------------------ | ----- | -------------------------- |
188191
| **Edge Locations** | 450+ | Serve content to end users |
@@ -236,6 +239,8 @@ flowchart TB
236239

237240
### Origin Types
238241

242+
CloudFront can pull content from various origin types. Choose based on where your content lives:
243+
239244
| Origin Type | Use Case | Example |
240245
| ----------------- | --------------- | ------------------------- |
241246
| **S3 Bucket** | Static files | Images, CSS, JS |
@@ -303,6 +308,8 @@ techbooks-static/
303308

304309
### S3 vs EC2 for Static Content
305310

311+
This comparison shows why offloading static content to S3 is a best practice:
312+
306313
| Aspect | EC2 | S3 + CloudFront |
307314
| ------------------- | ------------------- | --------------------- |
308315
| **Cost (storage)** | EBS: $0.10/GB | S3: $0.023/GB |
@@ -384,16 +391,16 @@ flowchart LR
384391
```
385392

386393
> **SAA Exam Tip:** OAC (Origin Access Control) is the modern replacement for OAI (Origin Access
387-
> Identity). OAC supports more features including SSE-KMS encryption. Always use OAC for new
388-
> distributions.
394+
> Identity - legacy method). OAC supports more features including SSE-KMS encryption. Always use OAC
395+
> for new distributions.
389396
390397
---
391398

392399
## Step 7: Cache Behaviors and TTL
393400

394-
### Time To Live (TTL)
401+
### TTL (Time To Live)
395402

396-
**TTL** determines how long CloudFront caches content before checking the origin.
403+
**TTL (Time To Live)** determines how long CloudFront caches content before checking the origin.
397404

398405
```mermaid
399406
flowchart LR
@@ -416,6 +423,8 @@ flowchart LR
416423

417424
### TTL Settings
418425

426+
CloudFront uses three TTL values that work together to control caching behavior:
427+
419428
| Setting | Description | Default |
420429
| --------------- | ------------------------------ | ----------------- |
421430
| **Minimum TTL** | CloudFront won't cache shorter | 0 seconds |
@@ -548,6 +557,8 @@ flowchart TB
548557

549558
### Routing Policies
550559

560+
Route 53 offers multiple routing policies - knowing when to use each is important for the exam:
561+
551562
| Policy | Use Case | Example |
552563
| ---------------- | ---------------------------- | ----------------------- |
553564
| **Simple** | Single resource | One ALB |
@@ -632,13 +643,13 @@ flowchart LR
632643

633644
### Additional Security Options
634645

635-
| Feature | What It Does | Use Case |
636-
| -------------------------- | ------------------------- | ------------------------ |
637-
| **AWS WAF** | Web Application Firewall | Block SQL injection, XSS |
638-
| **Geo Restriction** | Block/allow by country | Compliance, licensing |
639-
| **Signed URLs** | Time-limited, secure URLs | Paid content, downloads |
640-
| **Signed Cookies** | Multiple file access | Premium subscriptions |
641-
| **Field-Level Encryption** | Encrypt specific fields | Credit cards, PII |
646+
| Feature | What It Does | Use Case |
647+
| -------------------------- | ------------------------- | ----------------------------------------------- |
648+
| **AWS WAF** | Web Application Firewall | Block SQL injection, XSS (Cross-Site Scripting) |
649+
| **Geo Restriction** | Block/allow by country | Compliance, licensing |
650+
| **Signed URLs** | Time-limited, secure URLs | Paid content, downloads |
651+
| **Signed Cookies** | Multiple file access | Premium subscriptions |
652+
| **Field-Level Encryption** | Encrypt specific fields | Credit cards, PII |
642653

643654
```mermaid
644655
flowchart TB

0 commit comments

Comments
 (0)