ADR-010accepted
Client-side Application Insights over server-side Node.js SDK telemetry
Monitoring was needed for the portfolio — page views, performance metrics, and exceptions. Azure Application Insights supports both a browser JavaScript SDK and a Node.js server SDK. The choice was which to instrument.
Performance EfficiencyCost Optimization
2026-01-25View decision →
ADR-009accepted
Managed Identity over API keys for Azure AI service authentication
The portfolio calls Azure AI Foundry from the App Service backend for chatbot responses and AI Writer generation. Azure services support two authentication patterns: API keys (static secrets stored in environment variables) or Managed Identity (token-based, no secrets).
Security
2026-01-20View decision →
ADR-008accepted
GitHub Actions CI/CD over Azure DevOps Pipelines
The portfolio needed an automated build and deploy pipeline. As a Microsoft employee, Azure DevOps was the obvious enterprise choice. However, the portfolio is on a personal GitHub repository, not an Azure DevOps organization.
Operational Excellence
2026-01-18View decision →
ADR-007accepted
Azure Blob Storage for media over git-tracked binaries
The admin panel allows uploading cover images for blog posts, case studies, events, and certifications. These images need to be stored somewhere accessible to both the Next.js app and public visitors. Options were to store them in the git repo, or an external blob store.
Performance EfficiencyCost Optimization
2026-01-15View decision →
ADR-006accepted
RAG via AI Foundry `file_search` vector store over custom embedding pipeline
The chatbot needs to answer questions about Saurav's portfolio content (projects, case studies, blog posts, events, talks). A RAG pipeline was needed to ground the model on real content rather than hallucinating. Options ranged from building a custom embedding + vector database pipeline to using managed services.
Cost OptimizationOperational Excellence
2026-01-10View decision →
ADR-005accepted
Azure AI Foundry Agent over direct Azure OpenAI API calls
The portfolio needed an AI chatbot grounded on portfolio content, and an AI Writer that can draft blog posts, case studies, and other content types. The choice was between calling the Azure OpenAI chat completions API directly, or using the Azure AI Foundry Agent API which wraps a model with persistent tools.
ReliabilityOperational Excellence
2026-01-08View decision →
ADR-001accepted
Azure App Service over Container Apps, Static Web Apps, and Vercel
Needed a hosting target for a Next.js 16 standalone Node.js app that integrates with Azure AI Foundry via Managed Identity. The app requires server-side rendering, API routes, and a persistent process (not serverless cold-starts per-request). As a Cloud Solution Architect at Microsoft, choosing Azure was a given — but which Azure service?
Cost OptimizationOperational Excellence
2025-12-01View decision →