Skip to content

Commit 277bb98

Browse files
committed
feat: add cloud-solution-architect skill
Add a new core skill for designing well-architected Azure cloud systems, based on the Azure Architecture Center. Includes: - SKILL.md with 10 design principles, 6 architecture styles, 44 cloud design patterns mapped to WAF pillars, technology choices, best practices, performance antipatterns, mission-critical design, and architecture review workflow - 8 reference files for progressive discovery (design-patterns, design- principles, architecture-styles, best-practices, technology-choices, mission-critical, performance-antipatterns, acceptance-criteria) - 8 test scenarios covering architecture review, pattern selection, technology choices, WAF assessment, mission-critical design, performance antipattern detection, scalability, and event-driven architecture - Updated README.md skill catalog (core: 7→8) - Regenerated skills.json for GitHub Pages Source: Azure Architecture Center https://learn.microsoft.com/en-us/azure/architecture/
1 parent 6737dcb commit 277bb98

File tree

12 files changed

+3821
-5
lines changed

12 files changed

+3821
-5
lines changed

.github/skills/cloud-solution-architect/SKILL.md

Lines changed: 317 additions & 0 deletions
Large diffs are not rendered by default.

.github/skills/cloud-solution-architect/references/acceptance-criteria.md

Lines changed: 436 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 365 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,365 @@
1+
# Azure Architecture Styles Reference
2+
3+
## Comparison Table
4+
5+
| Style | Dependency Management | Domain Type |
6+
|---|---|---|
7+
| N-tier | Horizontal tiers divided by subnet | Traditional business, low update frequency |
8+
| Web-Queue-Worker | Front/back-end decoupled by async messaging | Simple domain, resource-intensive tasks |
9+
| Microservices | Vertically decomposed services via APIs | Complex domain, frequent updates |
10+
| Event-driven | Producer/consumer, independent views | IoT, real-time systems |
11+
| Big data | Divide into small chunks, parallel processing | Batch/real-time data analysis, ML |
12+
| Big compute | Data allocation to thousands of cores | Compute-intensive (simulation) |
13+
14+
---
15+
16+
## 1. N-tier
17+
18+
Traditional architecture that divides an application into logical layers and physical tiers. Each layer has a specific responsibility and communicates only with the layer directly below it.
19+
20+
### Logical Diagram
21+
22+
```
23+
┌──────────────────────────────────┐
24+
│ Presentation Tier │ ← Web / UI
25+
│ (Subnet A) │
26+
├──────────────────────────────────┤
27+
│ Business Logic Tier │ ← Rules / Workflows
28+
│ (Subnet B) │
29+
├──────────────────────────────────┤
30+
│ Data Access Tier │ ← Database / Storage
31+
│ (Subnet C) │
32+
└──────────────────────────────────┘
33+
```
34+
35+
### Benefits
36+
37+
- Familiar pattern for most development teams
38+
- Natural mapping for migrating existing layered applications to Azure
39+
- Clear separation of concerns between tiers
40+
41+
### Challenges
42+
43+
- Horizontal layering makes cross-cutting changes difficult — a single feature may touch every tier
44+
- Limits agility and release velocity as tiers are tightly coupled vertically
45+
46+
### Best Practices
47+
48+
- Use VNet subnets to isolate tiers and control traffic flow with NSGs
49+
- Keep each tier stateless where possible to enable horizontal scaling
50+
- Use managed services (App Service, Azure SQL) to reduce operational overhead
51+
52+
### Dependency Management
53+
54+
Horizontal tiers divided by subnet. Each tier depends only on the tier directly below it, enforced through network segmentation.
55+
56+
### Recommended Azure Services
57+
58+
- Azure App Service
59+
- Azure SQL Database
60+
- Azure Virtual Machines
61+
- Azure Virtual Network (subnets)
62+
63+
---
64+
65+
## 2. Web-Queue-Worker
66+
67+
A web front end handles HTTP requests while a worker process performs resource-intensive or long-running tasks. The two components communicate through an asynchronous message queue.
68+
69+
### Logical Diagram
70+
71+
```
72+
┌───────────┐
73+
HTTP ─────────►│ Web │
74+
Requests │ Front End │
75+
└─────┬─────┘
76+
77+
78+
┌──────────────┐
79+
│ Message │
80+
│ Queue │
81+
└──────┬───────┘
82+
83+
84+
┌───────────┐
85+
│ Worker │
86+
│ Process │
87+
└─────┬─────┘
88+
89+
90+
┌───────────┐
91+
│ Database │
92+
└───────────┘
93+
```
94+
95+
### Benefits
96+
97+
- Easy to understand and deploy, especially with managed compute services
98+
- Clean separation between interactive and background workloads
99+
- Each component can scale independently
100+
101+
### Challenges
102+
103+
- Without careful design, the front end and worker can become monolithic components that are hard to maintain and update
104+
- Hidden dependencies may emerge if front end and worker share data schemas or storage
105+
106+
### Best Practices
107+
108+
- Keep the web front end thin — delegate heavy processing to the worker
109+
- Use durable message queues to ensure work is not lost on failure
110+
- Design idempotent worker operations to handle message retries safely
111+
112+
### Dependency Management
113+
114+
Front-end and back-end jobs are decoupled by asynchronous messaging. The web tier never calls the worker directly; all communication flows through the queue.
115+
116+
### Recommended Azure Services
117+
118+
- Azure App Service
119+
- Azure Functions
120+
- Azure Queue Storage
121+
- Azure Service Bus
122+
123+
---
124+
125+
## 3. Microservices
126+
127+
A collection of small, autonomous services where each service implements a single business capability. Each service owns its bounded context and data, and communicates with other services via well-defined APIs.
128+
129+
### Logical Diagram
130+
131+
```
132+
┌──────────┐ ┌──────────┐ ┌──────────┐
133+
│ Service │ │ Service │ │ Service │
134+
│ A │ │ B │ │ C │
135+
│ ┌──────┐ │ │ ┌──────┐ │ │ ┌──────┐ │
136+
│ │ Data │ │ │ │ Data │ │ │ │ Data │ │
137+
│ └──────┘ │ │ └──────┘ │ │ └──────┘ │
138+
└────┬─────┘ └────┬─────┘ └────┬─────┘
139+
│ │ │
140+
└──────┬───────┘──────────────┘
141+
142+
┌──────────────┐
143+
│ API Gateway │
144+
└──────┬───────┘
145+
146+
Clients
147+
```
148+
149+
### Benefits
150+
151+
- Autonomous teams can develop, deploy, and scale services independently
152+
- Enables frequent updates and higher release velocity
153+
- Technology diversity — each service can use the stack best suited to its task
154+
155+
### Challenges
156+
157+
- Service discovery and inter-service communication add complexity
158+
- Data consistency across services requires patterns like Saga or eventual consistency
159+
- Distributed system management (monitoring, debugging, tracing) is inherently harder
160+
161+
### Best Practices
162+
163+
- Define clear bounded contexts — avoid sharing databases between services
164+
- Use an API gateway for cross-cutting concerns (auth, rate limiting, routing)
165+
- Implement health checks, circuit breakers, and distributed tracing from day one
166+
167+
### Dependency Management
168+
169+
Vertically decomposed services calling each other via APIs. Each service is independently deployable with its own data store, minimizing coupling.
170+
171+
### Recommended Azure Services
172+
173+
- Azure Kubernetes Service (AKS)
174+
- Azure Container Apps
175+
- Azure API Management
176+
- Azure Service Bus
177+
- Azure Cosmos DB
178+
179+
---
180+
181+
## 4. Event-driven
182+
183+
A publish-subscribe architecture where event producers emit events and event consumers react to them. Producers and consumers are fully decoupled, communicating only through event channels or brokers.
184+
185+
### Logical Diagram
186+
187+
```
188+
┌──────────┐ ┌──────────────────┐ ┌──────────┐
189+
│ Producer │────►│ │────►│ Consumer │
190+
│ A │ │ Event Broker │ │ A │
191+
└──────────┘ │ / Channel │ └──────────┘
192+
│ │
193+
┌──────────┐ │ ┌────────────┐ │ ┌──────────┐
194+
│ Producer │────►│ │ Pub/Sub │ │────►│ Consumer │
195+
│ B │ │ │ or Stream │ │ │ B │
196+
└──────────┘ │ └────────────┘ │ └──────────┘
197+
└──────────────────┘
198+
```
199+
200+
**Two models:** Pub/Sub (events delivered to subscribers) and Event Streaming (events written to an ordered log for consumers to read).
201+
202+
**Consumer variations:** Simple event processing, basic correlation, complex event processing, event stream processing.
203+
204+
### Benefits
205+
206+
- Producers and consumers are fully decoupled — they can evolve independently
207+
- Highly scalable — add consumers without affecting producers
208+
- Responsive and well-suited to real-time processing pipelines
209+
210+
### Challenges
211+
212+
- Guaranteed delivery requires careful broker configuration and dead-letter handling
213+
- Event ordering can be difficult to maintain across partitions
214+
- Eventual consistency — consumers may see stale data temporarily
215+
- Error handling and poison message management add operational complexity
216+
217+
### Best Practices
218+
219+
- Design events as immutable facts with clear schemas
220+
- Use dead-letter queues for events that fail processing
221+
- Implement idempotent consumers to handle duplicate delivery safely
222+
223+
### Dependency Management
224+
225+
Producer/consumer model with independent views per subsystem. Producers have no knowledge of consumers; each subsystem maintains its own projection of the event stream.
226+
227+
### Recommended Azure Services
228+
229+
- Azure Event Grid
230+
- Azure Event Hubs
231+
- Azure Functions
232+
- Azure Service Bus
233+
- Azure Stream Analytics
234+
235+
---
236+
237+
## 5. Big Data
238+
239+
Architecture designed to handle ingestion, processing, and analysis of data that is too large or complex for traditional database systems.
240+
241+
### Logical Diagram
242+
243+
```
244+
┌─────────────┐ ┌──────────────────────────────────┐
245+
│ Data Sources│───►│ Data Storage │
246+
│ (logs, IoT, │ │ (Data Lake) │
247+
│ files) │ └──┬──────────────┬─────────────────┘
248+
└─────────────┘ │ │
249+
▼ ▼
250+
┌──────────────┐ ┌──────────────┐
251+
│ Batch │ │ Real-time │
252+
│ Processing │ │ Processing │
253+
└──────┬───────┘ └──────┬───────┘
254+
│ │
255+
▼ ▼
256+
┌───────────────────────────────┐
257+
│ Analytical Data Store │
258+
└──────────────┬────────────────┘
259+
260+
┌──────────────▼────────────────┐
261+
│ Analysis & Reporting │
262+
│ (Dashboards, ML Models) │
263+
└───────────────────────────────┘
264+
265+
Orchestration manages the full pipeline
266+
```
267+
268+
**Components:** Data sources → Data storage (data lake) → Batch processing → Real-time processing → Analytical data store → Analysis and reporting → Orchestration.
269+
270+
### Benefits
271+
272+
- Process massive datasets that exceed traditional database capacity
273+
- Support both batch and real-time analytics in a single architecture
274+
- Enable predictive analytics and machine learning at scale
275+
276+
### Challenges
277+
278+
- Complexity of coordinating batch and real-time processing paths
279+
- Data quality and governance across a data lake require disciplined schema management
280+
- Cost management — large-scale storage and compute can grow unpredictably
281+
282+
### Best Practices
283+
284+
- Use parallelism for both batch and real-time processing
285+
- Partition data to enable parallel reads and writes
286+
- Apply schema-on-read semantics to keep ingestion flexible
287+
- Process data in batches on arrival rather than waiting for scheduled windows
288+
- Balance usage costs against time-to-insight requirements
289+
290+
### Dependency Management
291+
292+
Divide huge datasets into small chunks for parallel processing. Each chunk can be processed independently, with an orchestration layer coordinating the overall pipeline.
293+
294+
### Recommended Azure Services
295+
296+
- Microsoft Fabric
297+
- Azure Data Lake Storage
298+
- Azure Event Hubs
299+
- Azure SQL Database
300+
- Azure Cosmos DB
301+
- Power BI
302+
303+
---
304+
305+
## 6. Big Compute
306+
307+
Architecture for large-scale workloads that require hundreds or thousands of cores running in parallel. Tasks can be independent (embarrassingly parallel) or tightly coupled requiring inter-node communication.
308+
309+
### Logical Diagram
310+
311+
```
312+
┌─────────────────────────────────────────────┐
313+
│ Job Scheduler │
314+
│ (submit, monitor, manage) │
315+
└─────────────────┬───────────────────────────┘
316+
317+
┌─────────────┼─────────────┐
318+
▼ ▼ ▼
319+
┌────────┐ ┌────────┐ ┌────────────────┐
320+
│ Core │ │ Core │ │ Core │
321+
│ Pool 1 │ │ Pool 2 │ │ Pool N │
322+
│(100s) │ │(100s) │ │(1000s of cores)│
323+
└───┬────┘ └───┬────┘ └───┬────────────┘
324+
│ │ │
325+
└─────────┬─┘────────────┘
326+
327+
┌──────────────┐
328+
│ Results │
329+
│ Storage │
330+
└──────────────┘
331+
```
332+
333+
**Use cases:** Simulations, financial risk modeling, oil exploration, drug design, image rendering.
334+
335+
### Benefits
336+
337+
- High performance through massive parallel processing
338+
- Access to specialized hardware (GPU, FPGA, InfiniBand) for compute-intensive workloads
339+
- Scales to thousands of cores for embarrassingly parallel problems
340+
341+
### Challenges
342+
343+
- Managing VM infrastructure at scale (provisioning, patching, decommissioning)
344+
- Provisioning thousands of cores in a timely manner to meet job deadlines
345+
- Cost control — idle compute resources are expensive
346+
347+
### Best Practices
348+
349+
- Use low-priority or spot VMs to reduce cost for fault-tolerant workloads
350+
- Auto-scale compute pools based on job queue depth
351+
- Partition work into independent tasks when possible to maximize parallelism
352+
353+
### Dependency Management
354+
355+
Data allocation to thousands of cores. The job scheduler distributes work units across the compute pool, with each core processing its assigned data partition independently.
356+
357+
### Recommended Azure Services
358+
359+
- Azure Batch
360+
- Microsoft HPC Pack
361+
- H-series Virtual Machines (HPC-optimized)
362+
363+
---
364+
365+
> Source: [Azure Architecture Center](https://learn.microsoft.com/en-us/azure/architecture/)

0 commit comments

Comments
 (0)