|
| 1 | +# Day 21: The Platform Team Challenge — Enterprise Architect |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +Welcome to the final week of Advent of CALM! Over the past twenty days, you've built a comprehensive toolkit of architecture-as-code skills: |
| 6 | + |
| 7 | +| Week | What You Learned | |
| 8 | +|------|------------------| |
| 9 | +| **Week 1** | Core building blocks — nodes, relationships, interfaces, metadata | |
| 10 | +| **Week 2** | Advanced features — controls, flows, ADRs, documentation, AI assistance | |
| 11 | +| **Week 3** | Governance — patterns, standards, multi-pattern validation | |
| 12 | + |
| 13 | +Now it's time to put it all together. |
| 14 | + |
| 15 | +Days 21-23 form a **three-day mini-project** that simulates real enterprise workflows. Instead of step-by-step instructions, you'll receive high-level requirements and apply everything you've learned. This is your chance to prove — to yourself — that you can use CALM independently. |
| 16 | + |
| 17 | +## The Scenario: Acme Corp's Notification Service |
| 18 | + |
| 19 | +**Background:** Acme Corp is building an internal Notification Service to handle alerts across the organization. Over the next three days, you'll experience how different personas collaborate using CALM: |
| 20 | + |
| 21 | +| Day | Persona | Responsibility | |
| 22 | +|-----|---------|----------------| |
| 23 | +| **21** | Enterprise Architect | Define standards and patterns | |
| 24 | +| **22** | Product Developer | Build within guardrails | |
| 25 | +| **23** | Security SME | Review and approve | |
| 26 | + |
| 27 | +This scenario is intentionally different from the e-commerce system you built earlier — proving you can apply CALM to any domain. |
| 28 | + |
| 29 | +## Objective and Rationale |
| 30 | +- **Objective:** Create enterprise governance artifacts (standards and patterns) that the Notification Service team will use tomorrow |
| 31 | +- **Rationale:** In real enterprises, architects don't build individual systems — they define the guardrails that enable teams to build consistent, compliant systems. Your patterns and standards become the "paved road" that makes doing the right thing easy. |
| 32 | + |
| 33 | +## Your Brief |
| 34 | + |
| 35 | +**From the CTO:** |
| 36 | +> "We're launching a new Notification Service initiative. Before the product team starts, I need you to define how notification services should be built at Acme Corp. Create the governance framework they'll work within. Consider our enterprise needs: cost tracking, ownership clarity, and security classification on all data flows." |
| 37 | +
|
| 38 | +## Requirements |
| 39 | + |
| 40 | +This day is intentionally **less prescriptive** than earlier days. You have the skills — now apply them. |
| 41 | + |
| 42 | +### Your Secret Weapon: CALM Copilot |
| 43 | + |
| 44 | +You're not alone in this challenge. CALM Copilot is your expert Architecture SME — use it throughout this mini-project to: |
| 45 | + |
| 46 | +**Design your standards:** |
| 47 | +```text |
| 48 | +I'm creating node standards for Acme Corp. We need to track: |
| 49 | +- Cost allocation for FinOps |
| 50 | +- Ownership for incident response |
| 51 | +- Environment classification |
| 52 | +- Data sensitivity |
| 53 | +
|
| 54 | +Suggest what properties I should require and their appropriate types/enums. |
| 55 | +``` |
| 56 | + |
| 57 | +**Get your patterns critiqued:** |
| 58 | +```text |
| 59 | +Review standards/acme-node-standard.json. |
| 60 | +
|
| 61 | +As an experienced Enterprise Architect, critique this standard: |
| 62 | +- Are the required properties appropriate for enterprise governance? |
| 63 | +- What's missing that most organizations would need? |
| 64 | +- Is it too strict or too lenient? |
| 65 | +- How would this scale to 50+ teams? |
| 66 | +``` |
| 67 | + |
| 68 | +**Ask architecture questions:** |
| 69 | +```text |
| 70 | +I'm designing a notification service pattern. Help me think through: |
| 71 | +- What components are essential for any notification service? |
| 72 | +- Should I require specific delivery channels or leave that flexible? |
| 73 | +- How do I balance prescriptiveness with team autonomy? |
| 74 | +``` |
| 75 | + |
| 76 | +**Validate your thinking:** |
| 77 | +```text |
| 78 | +I've designed my standards with 5 required properties per node. |
| 79 | +Play devil's advocate — is this too many? Too few? |
| 80 | +What problems might teams encounter with these requirements? |
| 81 | +``` |
| 82 | + |
| 83 | +Think of CALM Copilot as a senior architect you can bounce ideas off at any time. It understands CALM deeply and can help you design better governance frameworks. **Use it liberally throughout Days 21-23.** |
| 84 | + |
| 85 | +### 1. Design Acme Corp Node Standards |
| 86 | + |
| 87 | +Create a standard that defines required properties for ALL nodes at Acme Corp. |
| 88 | + |
| 89 | +**Consider:** |
| 90 | +- How will Finance track costs? (cost center allocation) |
| 91 | +- Who's responsible when something breaks? (ownership) |
| 92 | +- What environment is this? (dev/staging/prod) |
| 93 | +- Is there sensitive data? (data classification) |
| 94 | +- How do we contact the team? (Slack channel, PagerDuty, etc.) |
| 95 | + |
| 96 | +**Deliverable:** `standards/acme-node-standard.json` |
| 97 | + |
| 98 | +**Hints:** |
| 99 | +- Review your work from Day 18 for the structure |
| 100 | +- Use `allOf` to extend the base CALM node |
| 101 | +- Make sure required properties are actually required |
| 102 | +- Give it a proper `$id` URL (e.g., `https://acme.com/standards/...`) |
| 103 | + |
| 104 | +### 2. Design Acme Corp Relationship Standards |
| 105 | + |
| 106 | +Create a standard that defines required properties for ALL relationships at Acme Corp. |
| 107 | + |
| 108 | +**Consider:** |
| 109 | +- Is data encrypted in transit? |
| 110 | +- What's the data classification of this connection? |
| 111 | +- What's the expected SLA? |
| 112 | +- Is this synchronous or asynchronous? |
| 113 | + |
| 114 | +**Deliverable:** `standards/acme-relationship-standard.json` |
| 115 | + |
| 116 | +### 3. Create the Notification Service Pattern |
| 117 | + |
| 118 | +Design a pattern that defines the **required structure** for any notification service at Acme Corp. |
| 119 | + |
| 120 | +**Think about what a notification service needs:** |
| 121 | +- How do external systems send notifications? (API layer) |
| 122 | +- How are messages processed? (processing layer) |
| 123 | +- Where are messages stored? (persistence) |
| 124 | +- How do notifications reach users? (delivery channels) |
| 125 | + |
| 126 | +**Minimum required components:** |
| 127 | +- API Gateway or notification API endpoint |
| 128 | +- Message processor/queue handler |
| 129 | +- At least 2 delivery channels (email, SMS, push, webhook — pick two) |
| 130 | +- Message store for history/retry |
| 131 | + |
| 132 | +**Deliverable:** `patterns/notification-service-pattern.json` |
| 133 | + |
| 134 | +**Hints:** |
| 135 | +- Review Day 17 for pattern structure |
| 136 | +- Use `prefixItems` to require specific nodes |
| 137 | +- Use `const` for fixed values like `unique-id` |
| 138 | +- Don't include standard properties here — that's what multi-pattern validation is for! |
| 139 | + |
| 140 | +### 4. Create the Base Standards Pattern |
| 141 | + |
| 142 | +Create a pattern that enforces your Acme standards on any architecture (like `company-base-pattern.json` from earlier days). |
| 143 | + |
| 144 | +**Deliverable:** `patterns/acme-base-pattern.json` |
| 145 | + |
| 146 | +### 5. Update URL Mappings |
| 147 | + |
| 148 | +Add all your new schemas to the URL mapping file so they can be resolved locally. |
| 149 | + |
| 150 | +**Deliverable:** Updated `url-mapping.json` |
| 151 | + |
| 152 | +### 6. Document the Governance Model |
| 153 | + |
| 154 | +Create documentation explaining how product teams should use these artifacts. |
| 155 | + |
| 156 | +**Include:** |
| 157 | +- What standards exist and what they require |
| 158 | +- What the notification service pattern enforces |
| 159 | +- How to validate compliance (both structural and standards) |
| 160 | +- The multi-pattern validation approach |
| 161 | + |
| 162 | +**Deliverable:** `docs/acme-governance.md` |
| 163 | + |
| 164 | +### 7. Test Your Governance Framework |
| 165 | + |
| 166 | +Verify your patterns work correctly: |
| 167 | + |
| 168 | +```bash |
| 169 | +# Generate a scaffold from your pattern |
| 170 | +calm generate -p patterns/notification-service-pattern.json -o /tmp/test-notification.json |
| 171 | + |
| 172 | +# Structural validation should PASS |
| 173 | +calm validate -p patterns/notification-service-pattern.json -a /tmp/test-notification.json |
| 174 | + |
| 175 | +# Standards validation should FAIL (scaffold has no standard properties yet) |
| 176 | +calm validate -p patterns/acme-base-pattern.json -a /tmp/test-notification.json -u url-mapping.json |
| 177 | +``` |
| 178 | + |
| 179 | +The last command **should fail** — this is correct! The generated scaffold won't have your standard properties until a team adds them. |
| 180 | + |
| 181 | +### 8. Commit Your Work |
| 182 | + |
| 183 | +```bash |
| 184 | +git add standards/ patterns/ url-mapping.json docs/acme-governance.md README.md |
| 185 | +git commit -m "Day 21: Enterprise Architect - Acme Corp governance framework" |
| 186 | +git tag day-21 |
| 187 | +``` |
| 188 | + |
| 189 | +## Deliverables / Validation Criteria |
| 190 | + |
| 191 | +Your Day 21 submission should include a commit tagged `day-21` containing: |
| 192 | + |
| 193 | +✅ **Required Files:** |
| 194 | +- `standards/acme-node-standard.json` — Node property requirements |
| 195 | +- `standards/acme-relationship-standard.json` — Relationship property requirements |
| 196 | +- `patterns/notification-service-pattern.json` — Structural pattern for notification services |
| 197 | +- `patterns/acme-base-pattern.json` — Standards enforcement pattern |
| 198 | +- Updated `url-mapping.json` — All new schemas mapped |
| 199 | +- `docs/acme-governance.md` — Governance documentation |
| 200 | + |
| 201 | +✅ **Validation:** |
| 202 | +```bash |
| 203 | +# Pattern generates successfully |
| 204 | +calm generate -p patterns/notification-service-pattern.json -o /tmp/test.json |
| 205 | + |
| 206 | +# Generated scaffold passes structural validation |
| 207 | +calm validate -p patterns/notification-service-pattern.json -a /tmp/test.json |
| 208 | + |
| 209 | +# Standards pattern exists and is valid JSON |
| 210 | +cat patterns/acme-base-pattern.json | jq . |
| 211 | + |
| 212 | +# Check tag |
| 213 | +git tag | grep -q "day-21" |
| 214 | +``` |
| 215 | + |
| 216 | +## Tips |
| 217 | + |
| 218 | +- **Think like an architect** — You're not building a system, you're enabling others to build consistent systems |
| 219 | +- **Balance flexibility and control** — Too many requirements slow teams down, too few lead to chaos |
| 220 | +- **Consider the audit question** — "Can we trace who owns this and what data it handles?" |
| 221 | +- **Reuse your learning** — Days 17-20 taught you everything you need |
| 222 | +- **Use CALM Chat** — Ask it to help design your standards and patterns |
| 223 | + |
| 224 | +## Thinking Like an Enterprise Architect |
| 225 | + |
| 226 | +``` |
| 227 | +┌─────────────────────────────────────────────────────────────────────────────┐ |
| 228 | +│ Enterprise Architect Mindset │ |
| 229 | +├─────────────────────────────────────────────────────────────────────────────┤ |
| 230 | +│ │ |
| 231 | +│ ❌ DON'T think: "How do I build the notification service?" │ |
| 232 | +│ │ |
| 233 | +│ ✅ DO think: "What must ALL notification services have?" │ |
| 234 | +│ "What properties enable cost tracking?" │ |
| 235 | +│ "What properties enable incident response?" │ |
| 236 | +│ "How do I make compliance easy, not painful?" │ |
| 237 | +│ │ |
| 238 | +│ Your artifacts become the "paved road" that teams follow. │ |
| 239 | +│ │ |
| 240 | +└─────────────────────────────────────────────────────────────────────────────┘ |
| 241 | +``` |
| 242 | + |
| 243 | +## Reflection |
| 244 | + |
| 245 | +- What's the right balance between governance and team autonomy? |
| 246 | +- How would you handle teams that need exceptions to your standards? |
| 247 | +- What happens when standards need to change? |
| 248 | + |
| 249 | +## Next Steps |
| 250 | + |
| 251 | +Tomorrow (Day 22) you'll switch personas to become a **Product Developer** on the Notification Service team. You'll use today's governance framework to build the actual service architecture! |
0 commit comments