Azure Developer Associate (AZ-204) Fact Sheet¶
Quick Reference¶
Exam Code: AZ-204 Duration: 120 minutes Questions: 40-60 questions Passing Score: 700/1000 Cost: $165 USD Validity: 1 year (requires annual renewal) Delivery: Pearson VUE (Testing center or online proctored)
Exam Domain Breakdown¶
| Domain | Weight | Focus |
|---|---|---|
| Develop Azure compute solutions | 25-30% | App Service, Functions, Container Apps, AKS |
| Develop for Azure storage | 15-20% | Blob, Cosmos DB, Azure SQL |
| Implement Azure security | 20-25% | Managed Identity, Key Vault, App Config |
| Monitor, troubleshoot, and optimize | 15-20% | Application Insights, Cache, CDN |
| Connect to and consume Azure services | 15-20% | API Management, Event Grid, Service Bus, Queue Storage |
Core Services to Master¶
Azure Compute (25-30%)¶
Azure App Service¶
- Web Apps - PaaS for web applications, auto-scaling
- π App Service Overview - Complete App Service documentation
- π App Service Plans - Pricing tiers and scaling options
- π App Service Deployment - Deployment best practices
- π App Service Slots - Deployment slots and swapping
- π App Service Slot Settings - Slot-specific vs swapped settings
- π App Service Configuration - App settings and connection strings
- π App Service Networking - VNet integration and hybrid connections
- π App Service Authentication - Built-in auth/authz (Easy Auth)
- π App Service Scaling - Manual and autoscale options
- π App Service Logs - Application and web server logging
Azure Functions¶
- Serverless compute - Event-driven functions, multiple triggers
- π Azure Functions Overview - Complete Functions documentation
- π Functions Triggers and Bindings - Input/output bindings
- π Functions Host.json - Function app configuration
- π Functions Local.settings.json - Local development settings
- π Durable Functions - Stateful functions and orchestrations
- π Durable Functions Patterns - Function chaining, fan-out/fan-in, async HTTP APIs
- π Functions Performance - Best practices and optimization
- π Functions Hosting Plans - Consumption, Premium, Dedicated
- π Functions Networking - VNet integration and private endpoints
- π Functions Monitoring - Application Insights integration
Azure Container Instances (ACI)¶
- Containerized apps - Fast container deployment without orchestration
- π ACI Overview - Container Instances basics
- π ACI Container Groups - Multi-container pods
- π ACI Environment Variables - Configuration management
- π ACI Volumes - Mount Azure Files shares
Azure Kubernetes Service (AKS)¶
- Container orchestration - Managed Kubernetes clusters
- π AKS Overview - Complete AKS documentation
- π AKS Deployment - Deploy applications to AKS
- π AKS Networking - Network concepts and CNI
Azure Container Registry (ACR)¶
- Container registry - Private Docker registry for container images
- π ACR Overview - Registry service overview
- π ACR Tasks - Automated image builds
- π ACR Authentication - Authentication methods
Azure Storage (15-20%)¶
Azure Blob Storage¶
- Object storage - Unstructured data, scalable, hot/cool/archive tiers
- π Blob Storage Overview - Complete Blob documentation
- π Blob Storage Client Library - SDK for .NET developers
- π Blob Types - Block, append, and page blobs
- π Blob Access Tiers - Hot, cool, cold, archive tiers
- π Blob Lifecycle Management - Automated tier transitions
- π Shared Access Signatures - Delegated access with SAS
- π Blob Metadata - Properties and custom metadata
- π Blob Versioning - Automatically maintain previous versions
- π Blob Change Feed - Track all changes to blobs
Azure Cosmos DB¶
- NoSQL database - Globally distributed, multi-model, multiple APIs
- π Cosmos DB Overview - Complete Cosmos DB documentation
- π Cosmos DB APIs - NoSQL, MongoDB, Cassandra, Gremlin, Table
- π Cosmos DB Partitioning - Partition keys and distribution
- π Cosmos DB Consistency Levels - Five consistency options
- π Cosmos DB Request Units - RU/s pricing and capacity
- π Cosmos DB Change Feed - Stream of changes for event processing
- π Cosmos DB Best Practices - .NET SDK best practices
- π Cosmos DB Indexing - Index policies and performance
- π Cosmos DB SQL Queries - Query syntax and optimization
- π Cosmos DB Server-Side Programming - Stored procedures, triggers, UDFs
Azure SQL Database¶
- Relational database - Managed SQL Server, serverless option
- π Azure SQL Database Overview - PaaS SQL service
- π Azure SQL Connectivity - Connection strings and SDKs
- π Azure SQL Elastic Pools - Shared resources for multiple databases
Azure Table Storage¶
- NoSQL key-value store - Simple structured data storage
- π Table Storage Overview - Key-value NoSQL storage
- π Table Storage Design - Design patterns and best practices
Azure Security (20-25%)¶
Azure Active Directory (Microsoft Entra ID)¶
- Identity platform - Authentication and authorization
- π Microsoft Entra ID Overview - Identity and access management
- π Microsoft Identity Platform - Complete developer documentation
- π MSAL Overview - Microsoft Authentication Library
- π MSAL for .NET - Implement authentication in .NET apps
- π OAuth 2.0 Flows - Authorization code flow
- π OAuth Client Credentials Flow - Service-to-service authentication
- π App Registration - Register applications in Entra ID
- π Access Tokens - Token structure and validation
- π ID Tokens - User identity claims
- π Microsoft Graph API - Access Microsoft 365 data
Managed Identity¶
- Automatic credentials - Azure-managed service identities
- π Managed Identity Overview - System and user-assigned identities
- π Managed Identity Services - Services that support managed identity
- π Managed Identity Token - Acquire tokens programmatically
Azure Key Vault¶
- Secrets management - Keys, secrets, certificates
- π Key Vault Overview - Complete Key Vault documentation
- π Key Vault Secrets - Store and retrieve secrets
- π Key Vault Keys - Cryptographic keys management
- π Key Vault Certificates - SSL/TLS certificate management
- π Key Vault Access Policies - Control access to vault resources
- π Key Vault SDK - Developer guide and SDK usage
App Configuration¶
- Configuration management - Centralized app settings, feature flags
- π App Configuration Overview - Centralized configuration service
- π App Configuration Key-Values - Store configuration data
- π Feature Management - Feature flags and toggles
- π App Configuration SDK - .NET integration
Monitoring and Optimization (15-20%)¶
Application Insights¶
- APM solution - Application performance monitoring and diagnostics
- π Application Insights Overview - Complete Application Insights docs
- π Application Insights SDK - Instrument .NET applications
- π Custom Telemetry - Track custom events and metrics
- π Application Map - Visualize application components
- π Availability Tests - Monitor endpoint availability
- π Log Queries - KQL query language
- π Smart Detection - AI-powered anomaly detection
- π Application Insights for Functions - Monitor Azure Functions
Azure Monitor¶
- Observability platform - Metrics, logs, alerts
- π Azure Monitor Overview - Complete monitoring platform
- π Azure Monitor Metrics - Platform and custom metrics
- π Azure Monitor Logs - Log Analytics workspace
Azure Cache for Redis¶
- In-memory cache - Distributed cache, session state
- π Azure Cache for Redis Overview - Managed Redis service
- π Redis Cache Patterns - Development best practices
- π Redis Client Libraries - .NET client integration
Azure CDN¶
- Content delivery network - Global content distribution, caching
- π Azure CDN Overview - CDN capabilities and features
- π CDN Caching Rules - Control cache behavior
- π CDN Optimization - Delivery optimization types
Azure Integration Services (15-20%)¶
Azure API Management¶
- API gateway - API lifecycle, policies, throttling
- π API Management Overview - Complete APIM documentation
- π APIM Policies - Transform and protect APIs
- π APIM Policy Reference - All available policies
- π APIM Authentication - Backend authentication policies
- π APIM Products - API products and subscriptions
Azure Event Grid¶
- Event routing - Publish-subscribe messaging, event-driven architecture
- π Event Grid Overview - Complete Event Grid documentation
- π Event Grid Concepts - Events, topics, subscriptions
- π Event Grid Schema - Event structure and format
- π Event Grid Filtering - Subject and advanced filtering
Azure Event Hubs¶
- Event streaming - Big data streaming, event ingestion
- π Event Hubs Overview - Complete Event Hubs documentation
- π Event Hubs Features - Partitions, consumer groups, capture
- π Event Hubs SDK - Send and receive events
Azure Service Bus¶
- Enterprise messaging - Queues, topics, advanced messaging patterns
- π Service Bus Overview - Complete Service Bus documentation
- π Service Bus Queues - Queues, topics, subscriptions
- π Service Bus Sessions - FIFO guarantee with sessions
- π Service Bus Dead Letter - Handle message failures
Azure Queue Storage¶
- Simple queues - Asynchronous message queue
- π Queue Storage Overview - Simple message queuing
- π Queue Storage Operations - Send and receive messages
Service Limits to Know¶
Azure Functions¶
- Consumption Plan timeout: 5 minutes (default), 10 minutes (max)
- Premium/Dedicated timeout: 30 minutes (default), unlimited (configurable)
- HTTP trigger timeout: 230 seconds (function apps)
- Max function instances: 200 (Consumption), 100 (Premium default)
- Max payload size: 100 MB (HTTP trigger)
- Max connections: 300 (Consumption per instance)
Azure App Service¶
- Always On: Required for continuous apps (not available in Free/Shared tiers)
- Deployment slots: 5 (Standard), 20 (Premium/Isolated)
- Custom domains: Unlimited (Basic and above)
- Request timeout: 240 seconds (default)
- Max instances: Varies by tier (30 for P3v3)
Cosmos DB¶
- Item size: 2 MB max
- Partition key: 2 KB max value length
- Container throughput: 1,000,000 RU/s max (provisioned)
- Consistency levels: 5 options (Strong, Bounded staleness, Session, Consistent prefix, Eventual)
- Transaction: 100 operations, 4 MB (transactional batch)
Azure Blob Storage¶
- Block blob size: 190.7 TiB max (4.77 TiB per block)
- Block size: 4,000 MiB max
- Blocks per blob: 50,000 max
- Page blob size: 8 TiB max
- SAS token lifetime: 1 hour recommended max for user delegation SAS
API Management¶
- Request size: 1 MB (gateway)
- Response size: 4 MB (gateway)
- Cache entry TTL: 3600 seconds (default)
- Rate limits: Configurable per product/API/operation
- Policy size: 256 KB max
Event Grid¶
- Event size: 1 MB max (64 KB increments billed separately)
- Batch size: 1 MB max (array of events)
- Retry attempts: Up to 30 attempts
- Max delivery latency: 24 hours
Service Bus¶
- Message size: 256 KB (Standard), 100 MB (Premium - in chunks)
- Queue/topic size: 1-80 GB
- Message TTL: 14 days (default max)
- Lock duration: 5 minutes (default)
- Max delivery count: 10 (default)
Azure Functions Triggers and Bindings¶
Common Triggers¶
| Trigger | Use Case | Key Points |
|---|---|---|
| HTTP | REST APIs, webhooks | Synchronous, return response directly |
| Timer | Scheduled tasks | CRON expressions, single instance |
| Blob | File processing | Triggered on new/updated blobs |
| Queue Storage | Async message processing | Automatic poison queue after 5 failures |
| Service Bus | Enterprise messaging | Sessions for FIFO, peek lock |
| Event Grid | Event-driven reactions | Push-based, low latency |
| Event Hubs | Stream processing | Checkpointing, consumer groups |
| Cosmos DB | Change data capture | Change feed processor |
Common Bindings¶
| Binding | Direction | Use Case |
|---|---|---|
| Blob Storage | In/Out | Read/write files |
| Cosmos DB | In/Out | Read/write documents |
| Table Storage | In/Out | Read/write entities |
| Queue Storage | Out | Send messages |
| Service Bus | Out | Send messages to queue/topic |
| Event Grid | Out | Publish events |
| SignalR | Out | Real-time web messaging |
| SendGrid | Out | Send emails |
Documentation: - π All Triggers and Bindings - Complete reference - π HTTP Trigger - HTTP trigger configuration - π Timer Trigger - CRON expressions and scheduling - π Blob Trigger - Blob storage trigger details - π Queue Trigger - Queue storage trigger configuration - π Service Bus Trigger - Service Bus queue and topic triggers - π Event Grid Trigger - Event Grid event handling - π Cosmos DB Trigger - Change feed processing
Azure Storage Access Methods¶
Authentication Options¶
- Shared Key (Storage Account Key)
- Full access to storage account
- Not recommended for client apps
-
π Shared Key Authorization - Storage account keys
-
Shared Access Signature (SAS)
- Account SAS: Access to multiple storage services
- Service SAS: Access to specific service (Blob, Queue, Table, File)
- User Delegation SAS: Secured with Entra ID credentials (most secure)
- π SAS Overview - Delegated access with SAS tokens
-
π Create User Delegation SAS - Entra ID-secured SAS
-
Azure Active Directory (Microsoft Entra ID)
- Role-based access control (RBAC)
- Managed identity support
- Most secure option
- π Authorize with Entra ID - RBAC for storage
Cosmos DB Consistency Levels¶
| Level | Guarantee | Use Case | Read Latency | Throughput |
|---|---|---|---|---|
| Strong | Linearizability | Mission-critical | Highest | Lowest (2x RU) |
| Bounded Staleness | Lag by K versions or T time | Consistent within bounds | High | Low |
| Session | Read your writes within session | Most applications (default) | Medium | Medium |
| Consistent Prefix | Reads never see out-of-order writes | Low consistency needs | Low | High |
| Eventual | No ordering guarantee | Highest availability | Lowest | Highest |
Documentation: - π Consistency Levels Explained - Detailed comparison and guarantees
Managed Identity vs Service Principal¶
| Feature | Managed Identity | Service Principal |
|---|---|---|
| Credential management | Automatic (Azure-managed) | Manual (secrets/certs) |
| Rotation | Automatic | Manual |
| Use case | Azure resources only | Any application |
| Types | System-assigned, User-assigned | N/A |
| Cost | Free | Free |
| Best for | Azure compute resources | Non-Azure apps, DevOps |
When to use Managed Identity: - App Service, Azure Functions, VM, AKS accessing Azure services - No credential management needed
When to use Service Principal: - GitHub Actions, Azure DevOps pipelines - On-premises applications - Multi-tenant scenarios
Documentation: - π When to Use Managed Identity - Best practices
API Management Policy Execution Order¶
Inbound Processing¶
- inbound policies (from product, API, operation)
- Backend service called
Outbound Processing¶
- backend policies
- outbound policies (from operation, API, product)
- Response returned to client
Error Handling¶
- on-error policies execute on any error
Common Policies¶
| Policy | Purpose | Section |
|---|---|---|
| set-header | Add/modify request header | inbound/outbound |
| set-backend-service | Change backend URL | inbound |
| rate-limit | Throttle calls by key | inbound |
| quota | Call volume quota | inbound |
| validate-jwt | Verify JWT token | inbound |
| cache-lookup | Check response cache | inbound |
| cache-store | Store response in cache | outbound |
| retry | Retry failed requests | inbound/outbound/backend |
| mock-response | Return mock response | inbound |
Documentation: - π Policy Expressions - C# expressions in policies
Event Grid vs Event Hubs vs Service Bus¶
| Feature | Event Grid | Event Hubs | Service Bus |
|---|---|---|---|
| Pattern | Pub/sub (reactive) | Streaming (data pipeline) | Enterprise messaging (transactional) |
| Message size | 1 MB | 1 MB | 256 KB (Std), 100 MB (Premium) |
| Ordering | Not guaranteed | Per partition | With sessions (FIFO) |
| Retention | No retention (push) | 1-7 days (90 days Premium) | None (message delivered once) |
| Throughput | High (millions/sec) | Very high (millions/sec) | Medium |
| Use case | React to state changes | Big data streaming, telemetry | Reliable message delivery, transactions |
| Filtering | Advanced filters | Consumer-side | Subscriptions (topics) |
| Protocol | HTTP, Azure Functions | AMQP, Kafka | AMQP, HTTP |
| Dead letter | Built-in | Manual implementation | Built-in |
Documentation: - π Choose Between Messaging Services - Service comparison
Azure SDK Best Practices¶
Client Lifecycle¶
// DO: Reuse clients (singleton or static)
private static readonly BlobServiceClient _blobClient = new BlobServiceClient(connectionString);
// DON'T: Create new client per request
// var client = new BlobServiceClient(connectionString); // β
Retry Policies¶
- Default: Exponential backoff with jitter
- Transient errors: Automatically retried (429, 500, 503, 504)
- π Retry Guidance - Service-specific retry patterns
Authentication¶
// Preferred: Managed Identity with DefaultAzureCredential
var credential = new DefaultAzureCredential();
var client = new BlobServiceClient(serviceUri, credential);
Documentation: - π Azure SDK for .NET - Complete .NET SDK guide - π Azure SDK for JavaScript - Node.js SDK overview - π Azure SDK for Python - Python SDK overview - π Azure SDK for Java - Java SDK overview - π DefaultAzureCredential - Simplified authentication - π Azure Identity Library - Authentication library for .NET
Deployment Strategies¶
App Service Deployment Slots¶
- Blue-Green deployment: Deploy to slot, test, then swap
- A/B testing: Route percentage of traffic to slot
- Staged rollout: Gradual traffic shifting
- Auto-swap: Automatic swap after deployment (CI/CD)
- Swap with preview: Test in production environment before completing swap
Key points: - Settings can be "slot-specific" or "swap with slot" - Connection strings should be slot-specific - Swap is near-instantaneous (warm-up instances)
Documentation: - π Deployment Best Practices - Slot strategies
Container Deployment Options¶
| Service | Use Case | Complexity | Orchestration |
|---|---|---|---|
| Web App for Containers | Single container web apps | Low | None |
| Azure Container Instances | Quick container deployment, burst workloads | Low | None (container groups) |
| Azure Container Apps | Microservices, event-driven apps | Medium | Managed (KEDA) |
| Azure Kubernetes Service | Full container orchestration | High | Kubernetes |
Documentation: - π Web App for Containers - Deploy custom containers to App Service - π Azure Container Apps Overview - Serverless containers with KEDA - π Container Apps Revisions - Versioning and traffic splitting
CI/CD with Azure DevOps and GitHub Actions¶
Azure Pipelines YAML¶
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
Documentation: - π Azure Pipelines Overview - CI/CD with Azure DevOps - π Azure Pipelines YAML Schema - Complete YAML reference - π Deploy to App Service - Azure Pipelines deployment - π Azure Pipeline Tasks - Built-in task reference - π Service Connections - Connect to Azure resources
GitHub Actions¶
name: Deploy to Azure
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: azure/webapps-deploy@v2
Documentation: - π GitHub Actions for Azure - Deploy from GitHub to Azure - π Azure Login Action - Authenticate with Azure - π Deploy to App Service with GitHub Actions - CI/CD workflow - π Deploy to Functions with GitHub Actions - Function app deployment - π GitHub Actions Marketplace - Azure-specific actions
Infrastructure as Code¶
Azure CLI¶
- Command-line tool - Manage Azure resources from terminal
- π Azure CLI Overview - Install and get started
- π Azure CLI Reference - Complete command reference
- π Azure CLI for App Service - Manage web apps
- π Azure CLI for Functions - Manage function apps
- π Azure CLI Scripts - Automate deployments
ARM Templates and Bicep¶
- Declarative IaC - Define infrastructure in JSON or Bicep
- π ARM Templates Overview - Azure Resource Manager templates
- π ARM Template Structure - Template file structure
- π Bicep Overview - Domain-specific language for ARM
- π Bicep vs ARM Templates - Syntax comparison
- π Deploy Bicep Files - Azure CLI deployment
Common Development Patterns¶
Circuit Breaker¶
- Protect against cascading failures
- Use with Azure Cache, databases
- π Circuit Breaker Pattern - Implementation guidance
Retry Pattern¶
- Handle transient failures
- Exponential backoff with jitter
- π Retry Pattern - Retry strategies
Cache-Aside¶
- Check cache first, then database
- Update cache on cache miss
- π Cache-Aside Pattern - Caching pattern
Strangler Fig¶
- Gradually migrate legacy apps
- Route traffic incrementally to new system
- π Strangler Fig Pattern - Migration pattern
Queue-Based Load Leveling¶
- Decouple services with queues
- Handle traffic spikes
- π Queue-Based Load Leveling - Queue pattern
Additional Patterns¶
- π Competing Consumers - Multiple consumers processing messages
- π Priority Queue - Process high-priority requests first
- π Publisher-Subscriber - Async event-driven messaging
- π Throttling - Control resource consumption
- π Valet Key - Delegated access with tokens (SAS)
Exam Tips - Key Concepts¶
Azure Functions Best Practices¶
- β Use environment variables for configuration (App Settings)
- β Use dependency injection for services
- β Store secrets in Key Vault, reference via App Config or Key Vault references
- β Use Durable Functions for stateful workflows
- β Use Premium plan for VNet integration and no cold starts
- β Don't store state in function code
- β Don't make functions dependent on each other
Cosmos DB Best Practices¶
- β Choose partition key based on access patterns (high cardinality)
- β Use Session consistency for most applications
- β Query within partition when possible
- β Use change feed for event-driven processing
- β Monitor RU consumption
- β Don't use small partition keys (creates hot partitions)
- β Don't query across partitions frequently
Security Best Practices¶
- β Use Managed Identity for Azure resource authentication
- β Store secrets in Key Vault
- β Use User Delegation SAS for temporary blob access
- β Enable HTTPS-only for App Service and API Management
- β Use Azure AD for user authentication
- β Never store connection strings in code
- β Don't use Storage Account Keys in client apps
API Management Best Practices¶
- β Use policies to transform requests/responses
- β Implement rate limiting and quotas
- β Use caching for GET operations
- β Use Products to bundle APIs
- β Validate JWT tokens in policies
- β Don't expose backend URLs directly
- β Don't skip authentication/authorization
Monitoring Best Practices¶
- β Enable Application Insights for all applications
- β Use custom events and metrics for business KPIs
- β Set up availability tests for critical endpoints
- β Use Log Analytics for querying across resources
- β Create alerts for key metrics and failures
- β Don't ignore telemetry correlation (operation IDs)
- β Don't over-sample telemetry in production
Common Exam Scenarios¶
- "Authenticate users in web app" β Azure AD (Microsoft Entra ID) with MSAL
- "Securely access Azure SQL from App Service" β Managed Identity
- "Store application secrets" β Key Vault with Key Vault references
- "Process files uploaded to Blob" β Blob trigger in Azure Functions
- "Implement FIFO message processing" β Service Bus queue with sessions
- "React to resource changes in Azure" β Event Grid subscription
- "Implement centralized API gateway" β API Management
- "Zero-downtime deployment" β App Service deployment slots (swap)
- "Stream telemetry from IoT devices" β Event Hubs with capture
- "Cache frequently accessed data" β Azure Cache for Redis with cache-aside pattern
- "Monitor application performance" β Application Insights with custom telemetry
- "Globally distributed database" β Cosmos DB with multi-region writes
- "Temporary access to blob without exposing keys" β User Delegation SAS
- "Run periodic background jobs" β Azure Functions with Timer trigger
- "Implement feature flags" β App Configuration with feature management
Study Priorities¶
High Priority (Must Know)¶
- Azure Functions development (triggers, bindings, Durable Functions)
- App Service deployment and configuration (slots, scaling)
- Managed Identity for authentication
- Key Vault secrets management
- Blob Storage operations and SAS tokens
- Cosmos DB partition keys and consistency levels
- API Management policies (especially authentication and caching)
- Application Insights telemetry and monitoring
- Event Grid, Event Hubs, Service Bus differences
- Azure AD authentication with MSAL
Medium Priority (Important)¶
- Container deployment (ACI, AKS, Container Apps)
- Azure Cache for Redis patterns
- App Configuration and feature flags
- Service Bus sessions and dead letter queues
- Cosmos DB change feed
- Azure SDK best practices
- CI/CD with Azure Pipelines and GitHub Actions
- Queue Storage vs Service Bus Queue
- CDN and caching strategies
Lower Priority (Good to Know)¶
- Table Storage design patterns
- Azure SQL connectivity options
- ARM templates and Bicep
- Azure Monitor Log Analytics (KQL)
- Durable Functions patterns (fan-out/fan-in, chaining)
- API Management developer portal
- Azure SignalR Service
- Logic Apps integration
- Event Grid domain topics
Last-Minute Review¶
Remember these: - Azure Functions Consumption timeout: 5 min default, 10 min max - Cosmos DB item max size: 2 MB - API Management gateway timeout: No hard limit (backend dependent) - Managed Identity: No credential management needed - User Delegation SAS: Most secure (uses Azure AD) - Cosmos DB: Session consistency is default - App Service slots: Test in prod environment before swap - Event Grid: Push-based, no retention - Service Bus: Pull-based, FIFO with sessions - Key Vault: Soft-delete enabled by default
Common gotchas: - App Service Free/Shared tier doesn't support Always On - Azure Functions HTTP trigger timeout is 230 seconds for function apps (not configurable) - Cosmos DB: Cross-partition queries consume more RUs - Managed Identity doesn't work outside Azure (use Service Principal) - SAS tokens should have minimum permissions and short lifetime - App Service slot settings: connection strings are slot-specific by default - Blob triggers have latency (use Event Grid trigger for faster response) - Consumption plan functions can have cold starts (use Premium to avoid) - DefaultAzureCredential tries multiple credential types in order - Event Grid requires endpoint validation for webhook subscriptions
SDK patterns: - Reuse client instances (singleton pattern) - Use DefaultAzureCredential for authentication - Implement exponential backoff for retries - Handle transient failures gracefully - Use async/await for all Azure SDK operations
Security checklist: - Use Managed Identity wherever possible - Store secrets in Key Vault, never in code - Use User Delegation SAS for temporary access - Enable HTTPS-only for all web services - Validate JWT tokens in API Management - Use RBAC for fine-grained access control - Enable Application Insights for security monitoring
Good luck on your exam! Focus on hands-on practice - deploy applications to Azure using the portal, CLI, and SDKs. Understand the "why" behind each service choice, not just the "what". The exam tests practical development scenarios, so build real applications with these services.