{"id":425,"date":"2026-04-14T00:26:52","date_gmt":"2026-04-14T00:26:52","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/azure-visual-studio-code-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-developer-tools\/"},"modified":"2026-04-14T00:26:52","modified_gmt":"2026-04-14T00:26:52","slug":"azure-visual-studio-code-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-developer-tools","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/azure-visual-studio-code-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-developer-tools\/","title":{"rendered":"Azure Visual Studio Code Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Developer Tools"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Developer Tools<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>Visual Studio Code is Microsoft\u2019s lightweight, cross-platform code editor that has become a common \u201cdaily driver\u201d for cloud development\u2014especially for building, deploying, and troubleshooting workloads on Azure.<\/p>\n\n\n\n<p>In simple terms: Visual Studio Code is the app you install on your laptop (or use in a browser) to write code, run it locally, debug it, manage Git, and connect to cloud services like Azure through extensions.<\/p>\n\n\n\n<p>In technical terms: Visual Studio Code is an extensible editor built on Electron with a Language Server Protocol (LSP)-driven IntelliSense model, a debugger architecture that supports multiple runtimes, a built-in Git client, terminals\/tasks, and a rich extension ecosystem (Visual Studio Marketplace). In the Azure ecosystem, it typically acts as the client-side control plane for developer workflows\u2014authenticating to Azure Active Directory (Microsoft Entra ID) via the Azure Account extension, using Azure CLI\/SDKs and service-specific extensions (Azure Functions, App Service, Bicep, AKS\/Kubernetes, Azure Storage, etc.) to create, deploy, and operate cloud resources.<\/p>\n\n\n\n<p>What problem it solves: it reduces friction in the \u201cinner loop\u201d (edit \u2192 run \u2192 debug) while also supporting the \u201couter loop\u201d (commit \u2192 build \u2192 deploy \u2192 observe) by integrating with Azure services, CI\/CD systems, and infrastructure-as-code tools in a single, consistent interface.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Visual Studio Code?<\/h2>\n\n\n\n<p><strong>Official purpose:<\/strong> Visual Studio Code (often abbreviated as \u201cVS Code\u201d) is a source-code editor for Windows, macOS, and Linux, designed for code editing, debugging, version control, and extension-based integrations. Official site: https:\/\/code.visualstudio.com\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Code editing with syntax highlighting and refactoring features (language-dependent)<\/li>\n<li>IntelliSense (smart completions, type info, diagnostics) via built-in language features or extensions<\/li>\n<li>Debugging support for many languages\/runtimes through debug adapters<\/li>\n<li>Integrated Git source control (and optional integrations with GitHub\/Azure Repos via extensions)<\/li>\n<li>Integrated terminal, tasks, and launch configurations<\/li>\n<li>Extensions to add language support, cloud tooling, DevOps tooling, and security tooling<\/li>\n<li>Remote development (SSH, containers, and WSL) through official Remote Development extensions<\/li>\n<li>Settings Sync and Profiles to standardize dev environments across machines<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Component<\/th>\n<th>What it does<\/th>\n<th>Why it matters for Azure work<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Editor + UI<\/td>\n<td>Code navigation, search, multi-root workspaces<\/td>\n<td>Manage app + IaC repos side-by-side<\/td>\n<\/tr>\n<tr>\n<td>Extension host<\/td>\n<td>Runs extensions (language support, Azure tools, etc.)<\/td>\n<td>Enables Azure Functions\/App Service\/Bicep\/Storage workflows<\/td>\n<\/tr>\n<tr>\n<td>Debugger framework<\/td>\n<td>Attaches or launches debug targets<\/td>\n<td>Debug locally, in containers, and sometimes remotely<\/td>\n<\/tr>\n<tr>\n<td>Integrated terminal<\/td>\n<td>Runs shells and CLIs<\/td>\n<td>Central place to run <code>az<\/code>, <code>kubectl<\/code>, <code>terraform<\/code>, <code>func<\/code>, etc.<\/td>\n<\/tr>\n<tr>\n<td>Source control<\/td>\n<td>Built-in Git + UI<\/td>\n<td>Enables PR-centric workflows for Azure deployments<\/td>\n<\/tr>\n<tr>\n<td>Settings Sync \/ Profiles<\/td>\n<td>Sync settings, keybindings, extensions<\/td>\n<td>Standardize team setups; reduce onboarding time<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<p>Visual Studio Code is <strong>not an Azure-managed service<\/strong>. It is a <strong>client application<\/strong> (desktop) and also available as <strong>VS Code for the Web<\/strong> (https:\/\/vscode.dev\/) with functional limitations compared to desktop.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Regional\/global\/zonal\/project scope (as applicable)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VS Code itself is <strong>installed locally<\/strong> and is <strong>not region-scoped<\/strong>.<\/li>\n<li>When VS Code connects to Azure, <strong>your Azure resources are region-scoped<\/strong> (for example, Azure Functions in <code>eastus<\/code>), and your authentication\/identity is <strong>tenant and subscription-scoped<\/strong> in Microsoft Entra ID (Azure AD).<\/li>\n<li>Some VS Code features (for example Settings Sync) rely on Microsoft-operated services; details can change\u2014<strong>verify in official docs<\/strong> if you need strict data residency requirements.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How Visual Studio Code fits into the Azure ecosystem<\/h3>\n\n\n\n<p>VS Code becomes an Azure \u201cDeveloper Tools\u201d hub through:\n&#8211; <strong>Azure Account extension<\/strong> (authentication and subscription context)\n&#8211; Service-specific extensions:\n  &#8211; <strong>Azure Functions<\/strong> (create\/run\/deploy serverless functions)\n  &#8211; <strong>Azure App Service<\/strong> (deploy and manage web apps)\n  &#8211; <strong>Bicep<\/strong> (author IaC with validation and completions)\n  &#8211; <strong>Azure Resource Manager Tools<\/strong> (ARM template editing, if used)\n  &#8211; <strong>Azure Storage<\/strong> (browse blobs\/queues\/tables\/files)\n  &#8211; <strong>Kubernetes<\/strong> (manage AKS clusters via <code>kubectl<\/code> context)\n&#8211; Integration with Azure CLI, Azure Developer CLI (<code>azd<\/code>), GitHub Actions\/Azure Pipelines, and observability tools (Azure Monitor\/Application Insights) through workflows rather than being the monitoring system itself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Visual Studio Code?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster onboarding:<\/strong> consistent UI across platforms; easy extension-based setup<\/li>\n<li><strong>Lower tooling cost:<\/strong> VS Code is free to use; teams can standardize without per-seat IDE costs (some add-ons are paid\u2014see Pricing)<\/li>\n<li><strong>Reduced cycle time:<\/strong> local edit\/debug + quick deploy loops to Azure reduce time to validate changes<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Strong Azure extension ecosystem:<\/strong> many common Azure workflows are \u201cfirst-run\u201d friendly<\/li>\n<li><strong>Works well with IaC:<\/strong> Bicep, Terraform, and YAML CI\/CD pipelines are commonly authored in VS Code<\/li>\n<li><strong>Remote development options:<\/strong> develop against Linux hosts, containers, or WSL to match production environments more closely<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Repeatable developer environments:<\/strong> Profiles + Settings Sync (and\/or Dev Containers) help reduce \u201cworks on my machine\u201d<\/li>\n<li><strong>Better troubleshooting loop:<\/strong> integrated terminal + log viewing + remote debug support (where applicable) speeds triage<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Workspace Trust model:<\/strong> helps reduce risk from untrusted repos and arbitrary code execution from extensions\/tasks<\/li>\n<li><strong>Centralized auth to Azure via Entra ID:<\/strong> use RBAC and Conditional Access policies for developer sign-in<\/li>\n<li><strong>Secret hygiene:<\/strong> supports integrating secret scanning and using Key Vault-backed workflows (through your pipelines and runtime configuration)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scales across repo sizes and languages<\/strong> better than many heavyweight IDEs, but performance depends on extensions and machine resources<\/li>\n<li><strong>Remote development scales dev capacity<\/strong> by moving builds and dependencies into containers or remote hosts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose Visual Studio Code<\/h3>\n\n\n\n<p>Choose VS Code when you need:\n&#8211; A cross-platform editor for Azure application + IaC development\n&#8211; A flexible toolchain where teams pick languages and frameworks\n&#8211; A practical balance between IDE features and lightweight workflow\n&#8211; Remote\/container development to align with Azure runtime targets<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose Visual Studio Code<\/h3>\n\n\n\n<p>Avoid or reconsider VS Code when:\n&#8211; You require a full enterprise IDE with advanced integrated designers, deep language tooling, or specialized debugging that VS Code doesn\u2019t match (for example, some .NET enterprise scenarios may prefer full Visual Studio)\n&#8211; You must operate in highly locked-down environments where installing extensions is restricted and a centrally managed, approved IDE is required (you can still use VS Code, but governance becomes the main work)\n&#8211; Your workflow is fully browser-based and standardized on cloud IDEs (GitHub Codespaces, etc.)\u2014though VS Code can still be the client for those environments<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Visual Studio Code used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SaaS and software product companies<\/li>\n<li>Finance and insurance (with stricter governance around extensions and sign-in)<\/li>\n<li>Retail\/e-commerce (microservices + event-driven apps on Azure)<\/li>\n<li>Healthcare (compliance-heavy environments; requires controlled extension policies)<\/li>\n<li>Manufacturing\/IoT (edge + cloud pipelines, Azure IoT and Functions)<\/li>\n<li>Public sector (often via managed devices with policy enforcement)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Application development teams (frontend, backend, full-stack)<\/li>\n<li>Platform engineering teams (IaC, golden paths, developer portals)<\/li>\n<li>DevOps\/SRE teams (pipelines, runbooks, Kubernetes operations)<\/li>\n<li>Security engineering teams (policy-as-code, secret scanning, threat modeling)<\/li>\n<li>Data engineering and analytics teams (Python, notebooks, ETL orchestrations)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads and architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Serverless (Azure Functions, Logic Apps integration points)<\/li>\n<li>Web apps and APIs (App Service, Container Apps, AKS)<\/li>\n<li>Event-driven systems (Event Grid, Service Bus, Storage queues)<\/li>\n<li>Infrastructure-as-code (Bicep\/ARM, Terraform)<\/li>\n<li>Kubernetes and containers (AKS, ACR, Helm\/Kustomize)<\/li>\n<li>CI\/CD pipelines (GitHub Actions, Azure Pipelines YAML)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Local dev on laptops with authenticated Azure access<\/li>\n<li>Dev Containers to standardize toolchains per repo<\/li>\n<li>Remote SSH development into hardened jump boxes or build hosts<\/li>\n<li>Pair programming and review via Live Share + Git pull requests<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VS Code is primarily <strong>development-time tooling<\/strong>.<\/li>\n<li>It can support <strong>production operations<\/strong> (for example, inspecting logs, interacting with <code>kubectl<\/code>, or hotfixes), but production changes should still flow through controlled pipelines, approvals, and change management.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic Azure-centric scenarios where Visual Studio Code is commonly used.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Authoring and validating Bicep templates for Azure deployments<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> ARM JSON is verbose; teams need safer, faster IaC authoring.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Bicep extension provides completions, validation, navigation, and formatting in-editor.<\/li>\n<li><strong>Example:<\/strong> Write <code>main.bicep<\/code> for an App Service + Key Vault deployment; validate and build to ARM before running <code>az deployment<\/code>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Building and deploying an Azure Function from a local dev machine<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Serverless apps need quick local iteration and a simple deployment path.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Azure Functions extension scaffolds projects, runs locally, and deploys to Azure.<\/li>\n<li><strong>Example:<\/strong> Create an HTTP-trigger function, test with curl, deploy to a Consumption plan, then validate the public endpoint.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Developing in a containerized environment that matches Azure runtime<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Dependency drift between developer laptops and Azure-hosted runtime causes bugs.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Dev Containers run toolchains inside Docker with consistent dependencies.<\/li>\n<li><strong>Example:<\/strong> Python API built in a devcontainer matching production base image; deployed to Azure Container Apps.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Managing AKS workloads with Kubernetes manifests and <code>kubectl<\/code><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Kubernetes operations require context switching and safe manifest editing.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Kubernetes extension + YAML tooling improves manifest authoring; terminal runs <code>kubectl<\/code>.<\/li>\n<li><strong>Example:<\/strong> Edit a Deployment and Service; apply to AKS; inspect pod logs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Exploring Azure Storage for debugging (blobs\/queues\/tables\/files)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Developers need to verify that apps write correct data to Storage.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Azure Storage extension provides a browse-and-inspect UX.<\/li>\n<li><strong>Example:<\/strong> Inspect a blob container to confirm an upload pipeline stored files correctly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Building CI\/CD pipelines as code (GitHub Actions or Azure Pipelines)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Pipeline YAML is error-prone without validation and good editor support.<\/li>\n<li><strong>Why VS Code fits:<\/strong> YAML + pipeline extensions (where applicable) provide schema hints and linting.<\/li>\n<li><strong>Example:<\/strong> Create a pipeline that builds and deploys a Function; validate triggers and secrets usage.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Secure secret handling during local development<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Secrets leak into repos or terminal history.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Encourages <code>.env<\/code> patterns, integrates with secret scanning tools, and supports Key Vault-based runtime configuration through deployment workflows.<\/li>\n<li><strong>Example:<\/strong> Use local settings for Functions, but store production secrets in Key Vault and reference them in app configuration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Debugging a microservice locally with Azure-like dependencies<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Microservices often depend on queues, caches, and databases.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Multi-root workspaces + tasks + devcontainers help orchestrate local dependencies.<\/li>\n<li><strong>Example:<\/strong> Run API + worker locally; connect to Azure Service Bus in a dev subscription.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Collaborating during incident response or onboarding with Live Share<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Pair debugging and onboarding across time zones is slow with screen sharing alone.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Live Share enables shared sessions (subject to policy).<\/li>\n<li><strong>Example:<\/strong> A senior engineer joins a session to debug a failing deployment script.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Policy-as-code authoring (Azure Policy definitions, linting, and review)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Policy JSON and compliance rules require careful review.<\/li>\n<li><strong>Why VS Code fits:<\/strong> JSON schema support and Git workflows help with review\/approval processes.<\/li>\n<li><strong>Example:<\/strong> Author Azure Policy to enforce tags or restrict SKUs; validate JSON structure and push PR.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Cloud-native app development with Azure Developer CLI (<code>azd<\/code>)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Teams want repeatable end-to-end environment provisioning and app deployment.<\/li>\n<li><strong>Why VS Code fits:<\/strong> Integrated terminal + repo workflows pair naturally with <code>azd<\/code>.<\/li>\n<li><strong>Example:<\/strong> Run <code>azd up<\/code> from VS Code terminal to provision infra and deploy the app.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Working with GitHub Codespaces using VS Code as the client<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Developers need a consistent environment without local setup.<\/li>\n<li><strong>Why VS Code fits:<\/strong> VS Code connects to remote Codespaces; developers keep familiar UX.<\/li>\n<li><strong>Example:<\/strong> Spin up a Codespace for an Azure sample repo; run deployments from within the cloud dev environment.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>This section focuses on <strong>current, commonly used<\/strong> VS Code capabilities relevant to Azure developer tooling. Exact behavior can vary by extension version\u2014verify in official docs for your scenario.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Extension ecosystem (Visual Studio Marketplace)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Adds language support, linters, cloud integrations, debuggers, and UI features.<\/li>\n<li><strong>Why it matters:<\/strong> Azure workflows typically depend on extensions (Functions, Bicep, Storage, etc.).<\/li>\n<li><strong>Practical benefit:<\/strong> You can start minimal and add capabilities per project.<\/li>\n<li><strong>Caveats:<\/strong> Extensions are a supply-chain risk; restrict and vet them in enterprises. Some extensions collect telemetry\u2014review publisher docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Integrated terminal and tasks<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Runs shells (PowerShell, Bash, zsh) and automates commands via <code>tasks.json<\/code>.<\/li>\n<li><strong>Why it matters:<\/strong> Azure work often uses CLI tools (<code>az<\/code>, <code>func<\/code>, <code>kubectl<\/code>, <code>terraform<\/code>).<\/li>\n<li><strong>Practical benefit:<\/strong> Fewer context switches; can standardize team commands.<\/li>\n<li><strong>Caveats:<\/strong> Tasks can execute arbitrary commands; Workspace Trust affects what runs automatically.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Debugging (multi-language via debug adapters)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Launch\/attach debuggers for supported runtimes and frameworks.<\/li>\n<li><strong>Why it matters:<\/strong> Local debugging is faster and cheaper than debugging in cloud-hosted environments.<\/li>\n<li><strong>Practical benefit:<\/strong> Breakpoints, watch expressions, and step-through for Azure Functions or APIs.<\/li>\n<li><strong>Caveats:<\/strong> Remote debugging depends on runtime and hosting platform; not always recommended for production.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Git source control integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Stage\/commit, diffs, branches, merges, and basic history in-editor.<\/li>\n<li><strong>Why it matters:<\/strong> Most Azure deployments and IaC are Git-driven.<\/li>\n<li><strong>Practical benefit:<\/strong> Faster PR workflow; easier review before deployments.<\/li>\n<li><strong>Caveats:<\/strong> For advanced Git operations, you may still use CLI or specialized tools.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Remote Development: SSH, Dev Containers, WSL<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Moves the development context to a remote machine, container, or WSL distribution.<\/li>\n<li><strong>Why it matters:<\/strong> Matches Linux-based Azure runtimes and reduces \u201cworks on my machine.\u201d<\/li>\n<li><strong>Practical benefit:<\/strong> Standardize dependencies; isolate toolchains; improve reproducibility.<\/li>\n<li><strong>Caveats:<\/strong> Requires Docker for Dev Containers; networking and file performance can vary; enterprise proxy rules can complicate installs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Dev Containers (<code>devcontainer.json<\/code>)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Defines a containerized dev environment for a repo.<\/li>\n<li><strong>Why it matters:<\/strong> Platform teams can publish \u201cgolden\u201d dev environments aligned with Azure deployment targets.<\/li>\n<li><strong>Practical benefit:<\/strong> Consistent builds, consistent linters, consistent SDK versions.<\/li>\n<li><strong>Caveats:<\/strong> Container image builds can be slow; ensure images are patched and sourced from trusted registries.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Workspace Trust model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Treats untrusted folders as restricted; limits tasks\/debug configs\/extensions behavior.<\/li>\n<li><strong>Why it matters:<\/strong> Many Azure repos include scripts that can run commands.<\/li>\n<li><strong>Practical benefit:<\/strong> Reduces risk of malicious repos executing code on developer machines.<\/li>\n<li><strong>Caveats:<\/strong> Developers may override trust; enforce security policies and user education.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Settings Sync and Profiles<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Syncs settings\/extensions; Profiles let you keep separate toolsets per persona (e.g., \u201cAzure IaC\u201d vs \u201cFrontend\u201d).<\/li>\n<li><strong>Why it matters:<\/strong> Helps onboard developers and keep consistent formatting\/linting.<\/li>\n<li><strong>Practical benefit:<\/strong> Reduced environment drift; faster setup.<\/li>\n<li><strong>Caveats:<\/strong> Data residency requirements may restrict use\u2014verify enterprise policies and official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Language Server Protocol (LSP) + IntelliSense<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Smart completions, go-to definition, diagnostics, formatting (language-dependent).<\/li>\n<li><strong>Why it matters:<\/strong> IaC authoring (Bicep\/Terraform) and application code benefit from instant feedback.<\/li>\n<li><strong>Practical benefit:<\/strong> Fewer runtime failures; fewer typos in resource properties.<\/li>\n<li><strong>Caveats:<\/strong> Quality varies by language server\/extension.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Notebooks support (Jupyter integration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Run notebooks in VS Code using Python\/Jupyter extensions.<\/li>\n<li><strong>Why it matters:<\/strong> Useful for data exploration that may feed Azure ML or data pipelines.<\/li>\n<li><strong>Practical benefit:<\/strong> Keep code + results in one place.<\/li>\n<li><strong>Caveats:<\/strong> Notebook execution environments can drift; use devcontainers or pinned dependencies.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Live Share collaboration (optional)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Real-time collaboration and shared terminals\/debug sessions.<\/li>\n<li><strong>Why it matters:<\/strong> Helps pairing, onboarding, and incident triage.<\/li>\n<li><strong>Practical benefit:<\/strong> Faster knowledge transfer.<\/li>\n<li><strong>Caveats:<\/strong> Review enterprise security policy; shared sessions can expose code and terminals.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) VS Code for the Web (vscode.dev) (limited)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Runs VS Code UI in a browser.<\/li>\n<li><strong>Why it matters:<\/strong> Quick edits, review, or constrained environments.<\/li>\n<li><strong>Practical benefit:<\/strong> No install on locked-down machines.<\/li>\n<li><strong>Caveats:<\/strong> Limited local runtime\/debugging compared to desktop; cloud integration varies\u2014verify per use case.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<p>Visual Studio Code\u2019s architecture is mostly client-side, with optional cloud\/service integrations through extensions and external tools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">High-level architecture<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VS Code desktop app<\/strong> runs on developer machine.<\/li>\n<li><strong>Extensions<\/strong> run in an extension host and interact with:<\/li>\n<li>local files and workspace<\/li>\n<li>local tools (Azure CLI, Git, Docker, Functions Core Tools)<\/li>\n<li>remote endpoints (Azure Resource Manager APIs, Git hosting, container registries)<\/li>\n<li><strong>Authentication<\/strong> to Azure typically occurs through browser\/device login via the Azure Account extension, obtaining tokens for Azure APIs under the user identity (or service principal in CLI scenarios).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (typical Azure workflow)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Developer signs into Azure via VS Code (Azure Account extension) or <code>az login<\/code> in the integrated terminal.<\/li>\n<li>Developer creates code\/IaC in the workspace.<\/li>\n<li>Extensions validate locally (language servers, linters).<\/li>\n<li>Deployment commands run:\n   &#8211; Either through extension-driven deployments (which often call Azure APIs)\n   &#8211; Or through CLI (<code>az deployment<\/code>, <code>az functionapp<\/code>, <code>az webapp<\/code>, etc.)<\/li>\n<li>Azure provisions resources in the target subscription\/resource group\/region.<\/li>\n<li>Observability data flows to Azure Monitor\/Application Insights (if enabled).<\/li>\n<li>Developer verifies by calling endpoints and checking logs\/metrics.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services (common)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Microsoft Entra ID (Azure AD):<\/strong> identity, Conditional Access, MFA<\/li>\n<li><strong>Azure Resource Manager (ARM):<\/strong> control plane API for resource management<\/li>\n<li><strong>Azure CLI (<code>az<\/code>) \/ Azure PowerShell:<\/strong> scripting and automation<\/li>\n<li><strong>Azure Functions \/ App Service \/ Storage \/ Key Vault \/ AKS:<\/strong> service-specific targets<\/li>\n<li><strong>GitHub \/ Azure Repos \/ Azure DevOps:<\/strong> source control and CI\/CD (via extensions and web integrations)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<p>VS Code itself has no required Azure dependency, but Azure workflows often require:\n&#8211; An Azure subscription\n&#8211; Azure CLI and service CLIs (optional but common)\n&#8211; Language runtimes and SDKs (Node.js, Python, .NET, Java, Go, etc.)\n&#8211; Docker (for containers\/devcontainers)\n&#8211; Git<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Interactive user authentication<\/strong>: most common for developers; uses Entra ID accounts with RBAC.<\/li>\n<li><strong>Service principal authentication<\/strong>: common in CI\/CD; typically used outside VS Code, but developers may use it for automation.<\/li>\n<li>Tokens should be stored in secure OS stores (behavior varies by platform and tooling). For strict requirements, <strong>verify in official docs<\/strong> for token storage and enterprise controls.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VS Code connects outbound over HTTPS to:<\/li>\n<li>Visual Studio Marketplace (extensions)<\/li>\n<li>Git hosting<\/li>\n<li>Azure APIs (ARM endpoints)<\/li>\n<li>Corporate environments may require proxies and SSL inspection; some extensions\/tools may need explicit proxy configuration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VS Code telemetry:<\/strong> VS Code collects usage\/diagnostics telemetry by default in many configurations; enterprises often manage telemetry settings through policy\u2014verify current defaults and controls in official docs.<\/li>\n<li><strong>Azure auditability:<\/strong> Azure activity logs and resource logs capture actions triggered by VS Code\/CLI using your identity (this is a key governance advantage: you still get ARM audit trails).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  Dev[Developer using Visual Studio Code] --&gt;|Edit\/Debug| Local[Local runtime + tools\\nGit, Azure CLI, Functions Core Tools]\n  Dev --&gt;|Sign-in| Entra[Microsoft Entra ID]\n  Local --&gt;|Deploy\/Manage via ARM| ARM[Azure Resource Manager]\n  ARM --&gt; RG[Resource Group]\n  RG --&gt; Func[Azure Functions App]\n  Func --&gt; Obs[Application Insights \/ Azure Monitor]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph DevEnv[\"Developer Environment\"]\n    VSCode[Visual Studio Code\\nExtensions: Azure Account, Bicep, Functions] --&gt; Term[Integrated Terminal\\naz, git, func, docker]\n    VSCode --&gt; Repo[Git Repository]\n  end\n\n  subgraph CI_CD[\"CI\/CD (recommended for production)\"]\n    Repo --&gt; PR[Pull Request + Reviews]\n    PR --&gt; Pipeline[GitHub Actions or Azure Pipelines\\nBuild\/Test\/Scan]\n    Pipeline --&gt; Deploy[Deployment Job\\n(least privilege SPN\/OIDC)]\n  end\n\n  subgraph Azure[\"Azure Subscription\"]\n    Entra[Microsoft Entra ID\\nMFA\/Conditional Access] --&gt; ARM[Azure Resource Manager]\n    Deploy --&gt; ARM\n    ARM --&gt; RG[Resource Group]\n    RG --&gt; Func[Azure Functions]\n    RG --&gt; KV[Azure Key Vault]\n    Func --&gt;|reads secrets at runtime| KV\n    Func --&gt; AppInsights[Application Insights]\n    AppInsights --&gt; Monitor[Azure Monitor Alerts\/Dashboards]\n  end\n\n  VSCode --&gt;|Interactive sign-in| Entra\n  Term --&gt;|az commands| ARM\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>This tutorial includes a hands-on lab that builds and deploys an Azure Function using Visual Studio Code. Prepare the following.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Account\/subscription\/tenancy requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An <strong>Azure subscription<\/strong> where you can create resources.<\/li>\n<li>Access to a <strong>Microsoft Entra ID tenant<\/strong> associated with that subscription.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>At minimum (for the lab), you typically need:\n&#8211; <code>Contributor<\/code> on a resource group (or subscription) <strong>and<\/strong>\n&#8211; Permission to create role assignments is <strong>not<\/strong> required for this lab, but may be required in real environments.<\/p>\n\n\n\n<p>If you cannot create resources, ask for:\n&#8211; A pre-created resource group where you have <code>Contributor<\/code>, or\n&#8211; A sandbox subscription.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A valid billing method on the subscription (common for pay-as-you-go and enterprise subscriptions).<\/li>\n<li>The lab uses low-cost services, but it is not \u201czero cost\u201d in all regions and scenarios.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tools needed<\/h3>\n\n\n\n<p>Install the following on your workstation:\n&#8211; <strong>Visual Studio Code<\/strong>: https:\/\/code.visualstudio.com\/download\n&#8211; <strong>Azure CLI<\/strong>: https:\/\/learn.microsoft.com\/cli\/azure\/install-azure-cli\n&#8211; <strong>Git<\/strong> (recommended): https:\/\/git-scm.com\/downloads\n&#8211; A runtime depending on your function language:\n  &#8211; This lab uses <strong>Node.js (LTS)<\/strong> for simplicity. Download: https:\/\/nodejs.org\/\n&#8211; <strong>Azure Functions Core Tools<\/strong> (for local run): official installation guidance varies by OS\u2014follow: https:\/\/learn.microsoft.com\/azure\/azure-functions\/functions-run-local<\/p>\n\n\n\n<p>VS Code extensions (install from the Extensions view):\n&#8211; <strong>Azure Functions<\/strong> (Microsoft)\n&#8211; <strong>Azure Account<\/strong> (Microsoft)<\/p>\n\n\n\n<p>Optional but helpful:\n&#8211; <strong>Bicep<\/strong> (Microsoft) for IaC authoring\n&#8211; <strong>Azurite<\/strong> (Storage emulator) extension if you want local storage emulation (optional; not required in this lab)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure Functions is available in many regions, but availability can vary by plan and features.<\/li>\n<li>Pick a region close to you and allowed by your organization.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resource creation and hosting plan quotas vary by subscription type and region.<\/li>\n<li>If deployments fail due to quota, try another region or request quota increases (Azure support \/ admin).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (created during lab)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resource group<\/li>\n<li>Storage account (required by Azure Functions)<\/li>\n<li>Function App<\/li>\n<li>Application Insights may be created depending on selections (recommended for observability)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Visual Studio Code pricing model (accurate overview)<\/h3>\n\n\n\n<p>Visual Studio Code is <strong>free to download and use<\/strong>. Official site: https:\/\/code.visualstudio.com\/<\/p>\n\n\n\n<p>However, the <strong>Azure resources you create and operate<\/strong> from VS Code are billed normally (Functions, Storage, Application Insights ingestion, etc.). Also, some developer add-ons commonly used inside VS Code (for example, GitHub Copilot) are paid\u2014those are separate products with separate pricing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions (what you actually pay for in Azure workflows)<\/h3>\n\n\n\n<p>For the lab and common VS Code-driven Azure development, typical cost dimensions include:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Azure Functions<\/strong>\n   &#8211; Plan type (Consumption, Premium, Dedicated\/App Service plan)\n   &#8211; Executions, execution duration, and memory (Consumption\/Premium specifics depend on current Azure pricing\u2014verify)\n   &#8211; Always-on and pre-warmed instances (Premium)\n   &#8211; Networking (VNet integration, private endpoints) can add cost indirectly<\/p>\n<\/li>\n<li>\n<p><strong>Storage account (required for Functions runtime)<\/strong>\n   &#8211; Capacity stored (GB-month)\n   &#8211; Transactions (read\/write\/list)\n   &#8211; Data redundancy (LRS\/ZRS\/GRS) affects cost\n   &#8211; Data egress charges if accessed cross-region or to the internet<\/p>\n<\/li>\n<li>\n<p><strong>Application Insights \/ Azure Monitor<\/strong>\n   &#8211; Log ingestion volume (GB)\n   &#8211; Retention beyond included\/default retention windows\n   &#8211; Alerts (some alerting features can incur charges)<\/p>\n<\/li>\n<li>\n<p><strong>Networking<\/strong>\n   &#8211; Data egress (outbound) from Azure to internet or other regions\n   &#8211; Private endpoints, NAT gateways, and firewalls (if used in production)<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Free tier \/ free usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VS Code itself: free.<\/li>\n<li>Some Azure services offer free grants\/tiers in certain cases (region\/subscription dependent and subject to change). <strong>Verify current offers in official pricing pages<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers (what makes bills grow)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>High volume function invocations or long-running executions<\/li>\n<li>Large logs\/verbose debug logging sent to Application Insights<\/li>\n<li>Storage transaction-heavy workloads (queues\/blobs with high throughput)<\/li>\n<li>Cross-region data transfer and public egress<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs to watch<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Leaving non-production resources running (Premium plans, dedicated plans)<\/li>\n<li>Over-retaining logs (retention settings)<\/li>\n<li>Provisioning extra resources via default \u201cwizard\u201d choices in tools\/extensions<\/li>\n<li>Using paid developer add-ons inside VS Code (Copilot, premium security scanning)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>Consumption<\/strong> for low\/variable traffic serverless workloads (if it meets your performance needs)<\/li>\n<li>Keep logs lean; avoid debug-level logging in production<\/li>\n<li>Apply lifecycle management for storage and log retention policies<\/li>\n<li>Use tagging to track who created what (owner, environment, cost center)<\/li>\n<li>Use budgets and alerts in Azure Cost Management<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (conceptual)<\/h3>\n\n\n\n<p>A small dev\/test Function App on a consumption-style plan with minimal executions and small logs will typically be low cost, but exact numbers vary by region and current pricing. Use:\n&#8211; Azure Functions pricing: https:\/\/azure.microsoft.com\/pricing\/details\/functions\/<br\/>\n&#8211; Azure Storage pricing: https:\/\/azure.microsoft.com\/pricing\/details\/storage\/<br\/>\n&#8211; Azure Monitor pricing: https:\/\/azure.microsoft.com\/pricing\/details\/monitor\/<br\/>\n&#8211; Pricing calculator: https:\/\/azure.microsoft.com\/pricing\/calculator\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>In production, cost is driven more by:\n&#8211; Required performance (Premium plan\/pre-warmed instances)\n&#8211; Availability and networking (private endpoints, NAT, firewall)\n&#8211; Observability volume (logs, traces, metrics)\n&#8211; Compliance retention requirements\n&#8211; CI\/CD minutes and artifact storage (if using hosted pipelines)<\/p>\n\n\n\n<p>The right approach is to model:\n&#8211; Expected invocations and payload sizes\n&#8211; Logging volume and retention\n&#8211; Storage and egress\nThen validate using the Azure Pricing Calculator and a small-scale load test.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab uses <strong>Visual Studio Code<\/strong> to create, run, and deploy a <strong>Node.js Azure Function (HTTP trigger)<\/strong>. It is designed to be practical, beginner-friendly, and relatively low-cost.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Install and configure Visual Studio Code for Azure development.<\/li>\n<li>Create an HTTP-triggered Azure Function locally.<\/li>\n<li>Run and test it locally.<\/li>\n<li>Deploy it to Azure from Visual Studio Code.<\/li>\n<li>Validate the deployed endpoint.<\/li>\n<li>Clean up Azure resources to avoid ongoing charges.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Install VS Code extensions for Azure.\n2. Sign in to Azure from VS Code.\n3. Create a Function project (JavaScript).\n4. Run it locally using Azure Functions Core Tools.\n5. Deploy to Azure (Function App + required dependencies).\n6. Validate with a browser or <code>curl<\/code>.\n7. Delete the resource group.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Install Visual Studio Code and required extensions<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install <strong>Visual Studio Code<\/strong>: https:\/\/code.visualstudio.com\/download<\/li>\n<li>Open VS Code \u2192 open the <strong>Extensions<\/strong> view.<\/li>\n<li>Install:\n   &#8211; <strong>Azure Functions<\/strong> (publisher: Microsoft)\n   &#8211; <strong>Azure Account<\/strong> (publisher: Microsoft)<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\nYou can see an Azure icon in the Activity Bar (left side) for Azure-related views, and the Azure Functions extension is installed.<\/p>\n\n\n\n<p><strong>Verification:<\/strong><br\/>\nOpen the Command Palette (<code>Ctrl+Shift+P<\/code> \/ <code>Cmd+Shift+P<\/code>) and search for:\n&#8211; <code>Azure: Sign In<\/code>\n&#8211; <code>Azure Functions: Create New Project<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Install Azure CLI, Node.js, and Azure Functions Core Tools<\/h3>\n\n\n\n<p>Install prerequisites:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Azure CLI<\/strong><br\/>\nFollow: https:\/\/learn.microsoft.com\/cli\/azure\/install-azure-cli<\/p>\n<\/li>\n<li>\n<p><strong>Node.js (LTS)<\/strong><br\/>\nDownload: https:\/\/nodejs.org\/<\/p>\n<\/li>\n<li>\n<p><strong>Azure Functions Core Tools<\/strong><br\/>\nFollow: https:\/\/learn.microsoft.com\/azure\/azure-functions\/functions-run-local<\/p>\n<\/li>\n<\/ol>\n\n\n\n<p>After installation, verify versions in the VS Code terminal:<\/p>\n\n\n\n<pre><code class=\"language-bash\">az version\nnode --version\nfunc --version\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\nAll three commands run successfully and print version info.<\/p>\n\n\n\n<p><strong>Common issue:<\/strong> <code>func: command not found<\/code><br\/>\n&#8211; Fix: Core Tools not installed or not on PATH. Revisit the Core Tools installation page for your OS and reinstall.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Sign in to Azure (VS Code and CLI)<\/h3>\n\n\n\n<p>You can sign in via VS Code or the CLI. For the lab, do both so troubleshooting is easier.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3A) Sign in from VS Code<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Command Palette \u2192 <code>Azure: Sign In<\/code><\/li>\n<li>Complete browser login.<\/li>\n<\/ol>\n\n\n\n<p>In VS Code\u2019s Azure view, choose the correct tenant\/subscription if prompted.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3B) Sign in from Azure CLI<\/h4>\n\n\n\n<p>In the integrated terminal:<\/p>\n\n\n\n<pre><code class=\"language-bash\">az login\naz account show\n<\/code><\/pre>\n\n\n\n<p>If you have multiple subscriptions:<\/p>\n\n\n\n<pre><code class=\"language-bash\">az account list --output table\naz account set --subscription \"&lt;SUBSCRIPTION_ID_OR_NAME&gt;\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\n&#8211; VS Code shows your Azure account and subscriptions in the Azure view.\n&#8211; <code>az account show<\/code> returns the subscription you intend to use.<\/p>\n\n\n\n<p><strong>Verification:<\/strong><br\/>\nRun:<\/p>\n\n\n\n<pre><code class=\"language-bash\">az group list --output table\n<\/code><\/pre>\n\n\n\n<p>If this fails with authorization errors, your account likely lacks permissions.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create a new Azure Functions project in VS Code<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a local folder, e.g. <code>vscode-azure-functions-lab\/<\/code>, and open it in VS Code.<\/li>\n<li>Command Palette \u2192 <code>Azure Functions: Create New Project...<\/code><\/li>\n<li>Choose:\n   &#8211; Folder: your lab folder\n   &#8211; Language: <strong>JavaScript<\/strong> (Node.js)\n   &#8211; Template: <strong>HTTP trigger<\/strong>\n   &#8211; Function name: <code>HelloHttp<\/code>\n   &#8211; Authorization level: <code>Anonymous<\/code> (easiest for testing; don\u2019t use for sensitive production endpoints)<\/li>\n<\/ol>\n\n\n\n<p>VS Code will scaffold the function project.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\nYour workspace contains:\n&#8211; <code>host.json<\/code>\n&#8211; <code>package.json<\/code>\n&#8211; A function folder (often named after the function) with <code>index.js<\/code> and <code>function.json<\/code> (structure can vary by version)<\/p>\n\n\n\n<p><strong>Verification:<\/strong><br\/>\nOpen the generated <code>index.js<\/code> and confirm there is a handler that returns a response.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Run the function locally and test it<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p>In VS Code, start the function locally:\n   &#8211; Either press <code>F5<\/code> (Run\/Debug), or\n   &#8211; Use Command Palette \u2192 <code>Azure Functions: Start Debugging<\/code><\/p>\n<\/li>\n<li>\n<p>Watch the terminal output. It should show a local URL, typically like:\n&#8211; <code>http:\/\/localhost:7071\/api\/HelloHttp<\/code><\/p>\n<\/li>\n<\/ol>\n\n\n\n<p>Test with curl:<\/p>\n\n\n\n<pre><code class=\"language-bash\">curl -i \"http:\/\/localhost:7071\/api\/HelloHttp?name=Azure\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\n&#8211; You receive an HTTP 200 response with a greeting message including your input (exact output depends on the generated template).<\/p>\n\n\n\n<p><strong>Verification:<\/strong><br\/>\n&#8211; Confirm the terminal shows the function host running.\n&#8211; Confirm you can hit the endpoint in a browser as well.<\/p>\n\n\n\n<p><strong>Common issue:<\/strong> Port conflict on <code>7071<\/code><br\/>\n&#8211; Fix: Stop the process using the port, or configure a different port (advanced). Often easiest: close the running host and retry.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Deploy the Function App to Azure from VS Code<\/h3>\n\n\n\n<p>Now you\u2019ll publish to Azure.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open VS Code\u2019s Azure view.<\/li>\n<li>Under the <strong>Resources<\/strong> section, locate <strong>Workspace<\/strong> or <strong>Function App<\/strong> options (exact UI varies).<\/li>\n<li>Choose <strong>Deploy to Function App\u2026<\/strong> (or similar prompt from the Azure Functions extension).<\/li>\n<li>Select:\n   &#8211; <strong>Create new Function App in Azure<\/strong>\n   &#8211; A globally unique Function App name (for example <code>hellohttp-&lt;your-initials&gt;-&lt;random&gt;<\/code>)\n   &#8211; Runtime stack: Node.js (match your local project)\n   &#8211; Region: choose one close to you\n   &#8211; Resource group: create new (for easy cleanup), e.g. <code>rg-vscode-functions-lab<\/code>\n   &#8211; Storage account: create new (required)\n   &#8211; Application Insights: enable if prompted (recommended for learning)<\/li>\n<\/ol>\n\n\n\n<p>Wait for deployment to finish.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\n&#8211; VS Code reports deployment success.\n&#8211; A new Function App appears in the Azure view under your subscription.\n&#8211; Azure resources exist in the specified resource group.<\/p>\n\n\n\n<p><strong>Verification (Azure CLI):<\/strong><\/p>\n\n\n\n<pre><code class=\"language-bash\">az group show --name rg-vscode-functions-lab\naz functionapp list --resource-group rg-vscode-functions-lab --output table\n<\/code><\/pre>\n\n\n\n<p><strong>Common issue:<\/strong> Naming conflicts<br\/>\n&#8211; Function App names are globally unique for certain DNS endpoints. Pick a different name and retry.<\/p>\n\n\n\n<p><strong>Common issue:<\/strong> Permissions \/ authorization failures<br\/>\n&#8211; Fix: Ensure your role assignment includes at least Contributor on the subscription\/resource group.\n&#8211; If your org uses policy restrictions, the wizard may be blocked by Azure Policy. Check policy error messages and deploy to an allowed region\/SKU.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Get the deployed URL and test it<\/h3>\n\n\n\n<p>In VS Code:\n1. Expand your deployed Function App in the Azure view.\n2. Find the function <code>HelloHttp<\/code>.\n3. Use <strong>Copy Function URL<\/strong> (or similar option).<\/p>\n\n\n\n<p>Test the endpoint:<\/p>\n\n\n\n<pre><code class=\"language-bash\">curl -i \"&lt;PASTED_FUNCTION_URL&gt;&amp;name=VSCode\"\n<\/code><\/pre>\n\n\n\n<p>(If your function URL already contains a query string, append parameters carefully.)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\nYou receive an HTTP response from Azure (not localhost) with your greeting message.<\/p>\n\n\n\n<p><strong>Verification in Azure Portal (optional):<\/strong>\n&#8211; Navigate to the Function App in https:\/\/portal.azure.com\/\n&#8211; Check <strong>Functions<\/strong> \u2192 <code>HelloHttp<\/code>\n&#8211; Review <strong>Monitoring<\/strong> \/ <strong>Logs<\/strong> (if Application Insights is enabled)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>You have successfully completed the lab if:\n&#8211; You can run the function locally and get a valid HTTP response.\n&#8211; You can deploy the function to Azure from Visual Studio Code.\n&#8211; You can call the deployed function URL and get a valid HTTP response.\n&#8211; You can see the Function App and related resources in the resource group.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common problems and realistic fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>VS Code can\u2019t see my subscription<\/strong>\n   &#8211; Ensure you signed in with the correct account\/tenant in <code>Azure: Sign In<\/code>.\n   &#8211; In CLI, run <code>az account show<\/code> and <code>az account set<\/code>.\n   &#8211; Some enterprises restrict subscription listing\u2014verify with your admin.<\/p>\n<\/li>\n<li>\n<p><strong>Deployment fails with \u201cresource provider not registered\u201d<\/strong>\n   &#8211; Register providers (requires permissions). Example:\n     <code>bash\n     az provider register --namespace Microsoft.Web\n     az provider register --namespace Microsoft.Storage<\/code>\n   &#8211; If you don\u2019t have permissions, ask subscription admins.<\/p>\n<\/li>\n<li>\n<p><strong>Local run fails due to missing storage emulator or connection string<\/strong>\n   &#8211; Azure Functions runtime may require a storage connection configuration even for local work in some setups.\n   &#8211; Follow the Functions local development docs: https:\/\/learn.microsoft.com\/azure\/azure-functions\/functions-run-local<br\/>\n   &#8211; If you want local emulation, consider <strong>Azurite<\/strong> (verify current docs for configuration).<\/p>\n<\/li>\n<li>\n<p><strong>Function deploy succeeds but endpoint returns 500<\/strong>\n   &#8211; Check Application Insights logs.\n   &#8211; Check the deployed configuration (environment variables\/app settings).\n   &#8211; Confirm Node version compatibility (use supported runtime versions in Azure Functions\u2014verify current support matrix in official docs).<\/p>\n<\/li>\n<li>\n<p><strong>Proxy\/corporate SSL issues block extension sign-in<\/strong>\n   &#8211; Configure proxy settings in VS Code and\/or system.\n   &#8211; Some environments require trusted root certs installed on the machine.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing charges, delete the resource group used for the lab:<\/p>\n\n\n\n<pre><code class=\"language-bash\">az group delete --name rg-vscode-functions-lab --yes --no-wait\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong><br\/>\nAzure deletes the Function App, Storage account, and any related resources created in that resource group.<\/p>\n\n\n\n<p><strong>Verification:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-bash\">az group exists --name rg-vscode-functions-lab\n<\/code><\/pre>\n\n\n\n<p>When it returns <code>false<\/code>, cleanup is complete.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Separate app code and infrastructure code<\/strong> clearly (folders or repos). Keep deployment templates (Bicep\/Terraform) under version control.<\/li>\n<li>Prefer <strong>CI\/CD for production<\/strong> even if you deploy from VS Code for dev\/test.<\/li>\n<li>Use <strong>environment separation<\/strong> (dev\/test\/prod subscriptions or at least separate resource groups with policy boundaries).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>least privilege<\/strong> RBAC for developers (often Contributor on dev RG only).<\/li>\n<li>For production deployments, use <strong>service principals or workload identity federation<\/strong> in pipelines rather than developer interactive credentials.<\/li>\n<li>Enforce <strong>MFA and Conditional Access<\/strong> for interactive sign-ins.<\/li>\n<li>Use <strong>Workspace Trust<\/strong>; do not run tasks\/debug configs from untrusted repos.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tag resources created from developer workflows:<\/li>\n<li><code>owner<\/code>, <code>team<\/code>, <code>env<\/code>, <code>expiresOn<\/code>, <code>costCenter<\/code><\/li>\n<li>Automate cleanup for sandboxes (scheduled deletion or TTL tags + automation).<\/li>\n<li>Avoid excessive logging to Application Insights; tune sampling and verbosity.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep VS Code responsive:<\/li>\n<li>Disable unnecessary extensions per profile<\/li>\n<li>Exclude large folders from file watching\/search when appropriate<\/li>\n<li>Use devcontainers for consistent performance across machines if local dependencies are heavy.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Treat VS Code deploys as <strong>developer convenience<\/strong>, not the authoritative release mechanism.<\/li>\n<li>Use pipelines with:<\/li>\n<li>repeatable builds<\/li>\n<li>artifact versioning<\/li>\n<li>approvals<\/li>\n<li>rollback strategies<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Standardize operational commands using VS Code tasks (e.g., <code>az deployment<\/code>, <code>kubectl apply<\/code>, log tailing).<\/li>\n<li>Document common runbooks in-repo (Markdown) and link them from the workspace.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use a naming convention that encodes: app, env, region, instance.<\/li>\n<li>Use Azure Policy to enforce tags and allowed SKUs\/regions, and expect VS Code wizard deployments to fail if they violate policy (this is good governance\u2014handle it intentionally).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VS Code uses your interactive identity to access Azure when you sign in via Azure extensions and\/or CLI.<\/li>\n<li>Azure actions are authorized by <strong>Azure RBAC<\/strong> at management group\/subscription\/resource group\/resource scope.<\/li>\n<li>Enterprises should centralize identity controls in <strong>Microsoft Entra ID<\/strong>:<\/li>\n<li>MFA<\/li>\n<li>Conditional Access (device compliance, location restrictions)<\/li>\n<li>Privileged Identity Management (PIM) for just-in-time elevation<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In transit: Azure API calls use HTTPS\/TLS.<\/li>\n<li>At rest: VS Code stores local files on your machine; protect laptops with full-disk encryption and endpoint management.<\/li>\n<li>Secrets: avoid storing secrets in source files; use environment variables for local dev and Key Vault for production.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VS Code itself is outbound-oriented.<\/li>\n<li>Be cautious about:<\/li>\n<li>Deploying functions with <code>Anonymous<\/code> auth in production<\/li>\n<li>Opening public endpoints without WAF\/API gateway controls<\/li>\n<li>Using remote SSH without bastion\/jump box controls<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not commit secrets into Git.<\/li>\n<li>Use <code>.gitignore<\/code> for local settings files (for example, Functions local settings files are commonly excluded\u2014verify current templates).<\/li>\n<li>Prefer:<\/li>\n<li>Azure Key Vault for secrets<\/li>\n<li>Managed identities for Azure-to-Azure access<\/li>\n<li>CI\/CD secret stores (GitHub\/Azure DevOps secrets) for pipelines<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure Activity Log captures management-plane operations initiated by your identity (including via VS Code).<\/li>\n<li>Use Application Insights \/ resource logs for runtime telemetry.<\/li>\n<li>Consider centralizing logs in a Log Analytics workspace for enterprise search and retention.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Extension governance matters:<\/li>\n<li>restrict which extensions may be installed<\/li>\n<li>prefer Microsoft-published or vetted vendors<\/li>\n<li>Review telemetry settings and data flows; verify current controls in official docs.<\/li>\n<li>For regulated environments, require code review and pipeline-based deployment into production.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Using overly broad roles (Owner) for everyday development<\/li>\n<li>Running untrusted repo tasks or debug configs<\/li>\n<li>Storing production credentials in local <code>.env<\/code> files<\/li>\n<li>Deploying directly to production from a developer workstation<\/li>\n<li>Leaving public endpoints exposed without authentication or network controls<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use \u201csecure by default\u201d hosting patterns:<\/li>\n<li>private endpoints where appropriate<\/li>\n<li>managed identity + Key Vault<\/li>\n<li>centralized secrets<\/li>\n<li>CI\/CD with approvals<\/li>\n<li>Keep VS Code and extensions updated to patch vulnerabilities.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>VS Code is not an Azure-managed service:<\/strong> you must manage the local installation, patching cadence, and extension governance.<\/li>\n<li><strong>Extensions vary in quality and security posture:<\/strong> avoid blindly installing popular extensions; verify publisher reputation.<\/li>\n<li><strong>Wizard-driven deployments may create extra resources:<\/strong> for example Storage accounts or monitoring resources; review what gets created.<\/li>\n<li><strong>Corporate proxy\/SSL inspection issues:<\/strong> can break Marketplace access, sign-in flows, or extension downloads.<\/li>\n<li><strong>Multi-tenant confusion:<\/strong> developers often sign into the wrong Entra tenant\/subscription; always verify context before deploying.<\/li>\n<li><strong>Local toolchain drift:<\/strong> CLI\/SDK\/runtime versions can mismatch team expectations; mitigate with devcontainers or pinned versions.<\/li>\n<li><strong>Performance on huge monorepos:<\/strong> file watching and language servers can be heavy; configure excludes and split workspaces if needed.<\/li>\n<li><strong>VS Code for the Web limitations:<\/strong> browser-based VS Code cannot fully replace desktop for local debugging and many extension scenarios\u2014verify feasibility per workflow.<\/li>\n<li><strong>Azure service limits still apply:<\/strong> Functions plan limits, storage throughput limits, log retention limits, and subscription quotas can block deployments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Visual Studio Code sits between full IDEs and web-only editors. In Azure-centric workflows, it\u2019s often chosen for flexibility and breadth of integrations.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Visual Studio Code<\/strong><\/td>\n<td>Cross-platform cloud dev + IaC + DevOps workflows<\/td>\n<td>Free, extensible, strong Azure extensions, remote\/devcontainers<\/td>\n<td>Requires extension governance; not a full heavyweight IDE<\/td>\n<td>Most Azure app + IaC teams; mixed languages; platform engineering<\/td>\n<\/tr>\n<tr>\n<td><strong>Visual Studio (full IDE)<\/strong><\/td>\n<td>Deep .NET\/Windows development<\/td>\n<td>Rich .NET tooling, enterprise features, designers<\/td>\n<td>Heavier, Windows-centric (primarily), may be overkill for polyglot<\/td>\n<td>Large .NET enterprise apps, complex debugging, specialized tooling<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure Cloud Shell editor<\/strong><\/td>\n<td>Quick edits and CLI operations in Azure<\/td>\n<td>No local install; has <code>az<\/code> preinstalled<\/td>\n<td>Limited IDE features; not ideal for full dev lifecycle<\/td>\n<td>Emergency edits, quick scripting, lightweight ops<\/td>\n<\/tr>\n<tr>\n<td><strong>GitHub Codespaces (VS Code-based cloud dev env)<\/strong><\/td>\n<td>Standardized dev environments without local setup<\/td>\n<td>Reproducible env; scalable compute; integrates with repos<\/td>\n<td>Paid usage; network dependency; governance required<\/td>\n<td>Large onboarding needs; consistent toolchains; remote-first teams<\/td>\n<\/tr>\n<tr>\n<td><strong>JetBrains IDEs (IntelliJ\/PyCharm\/etc.)<\/strong><\/td>\n<td>Deep language-specific productivity<\/td>\n<td>Strong refactoring; advanced language tooling<\/td>\n<td>Paid licenses; different extension ecosystem<\/td>\n<td>Teams that benefit from deep IDE features per language<\/td>\n<\/tr>\n<tr>\n<td><strong>Eclipse \/ other open-source IDEs<\/strong><\/td>\n<td>Certain Java-centric or legacy setups<\/td>\n<td>Mature ecosystems in some domains<\/td>\n<td>Often heavier; less consistent Azure integration<\/td>\n<td>Existing org standard; niche plugins and legacy needs<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: regulated financial services platform team<\/h3>\n\n\n\n<p><strong>Problem:<\/strong><br\/>\nA bank has 200+ developers deploying microservices and serverless functions to Azure. They face inconsistent developer environments, policy violations during manual deployments, and occasional secret leakage in repos.<\/p>\n\n\n\n<p><strong>Proposed architecture:<\/strong>\n&#8211; VS Code as the standard editor with:\n  &#8211; enforced extension allowlist\n  &#8211; mandatory Workspace Trust\n  &#8211; devcontainer-based \u201cgolden\u201d environments per stack\n&#8211; IaC in Bicep\/Terraform with PR reviews\n&#8211; CI\/CD pipelines deploy to Azure using least-privileged identities\n&#8211; Secrets stored in Azure Key Vault; apps use managed identity\n&#8211; Central observability with Azure Monitor + Application Insights + Log Analytics<\/p>\n\n\n\n<p><strong>Why Visual Studio Code was chosen:<\/strong>\n&#8211; Cross-platform standardization (Windows\/macOS\/Linux)\n&#8211; Strong support for Azure IaC and Functions\n&#8211; Dev Containers to eliminate local drift\n&#8211; Manageable via enterprise device policies and extension governance<\/p>\n\n\n\n<p><strong>Expected outcomes:<\/strong>\n&#8211; Faster onboarding (hours instead of days)\n&#8211; Reduced policy violations through pipeline enforcement\n&#8211; Fewer production incidents caused by config drift\n&#8211; Better auditability via ARM logs and pipeline traces<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: SaaS MVP on Azure Functions<\/h3>\n\n\n\n<p><strong>Problem:<\/strong><br\/>\nA startup building an MVP needs fast iteration and low operational overhead. They need an API, a scheduled job, and storage, with minimal cost.<\/p>\n\n\n\n<p><strong>Proposed architecture:<\/strong>\n&#8211; VS Code for development\n&#8211; Azure Functions (Consumption) for API + scheduled tasks\n&#8211; Azure Storage for blobs\/queues\n&#8211; Application Insights for basic telemetry\n&#8211; GitHub Actions for simple CI\/CD<\/p>\n\n\n\n<p><strong>Why Visual Studio Code was chosen:<\/strong>\n&#8211; Free tooling\n&#8211; Easy scaffolding and deployment for Functions\n&#8211; Integrates well with GitHub and CLI tooling<\/p>\n\n\n\n<p><strong>Expected outcomes:<\/strong>\n&#8211; Rapid iteration cycles\n&#8211; Controlled costs in early stage\n&#8211; A clear path to mature practices (IaC, stronger identity controls, better networking) as they scale<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is Visual Studio Code an Azure service?<\/strong><br\/>\n   No. Visual Studio Code is a local editor (and a web version). It integrates with Azure through extensions and CLIs.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need an Azure subscription to use Visual Studio Code?<\/strong><br\/>\n   No. You only need Azure when you want to deploy\/manage Azure resources.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the difference between Visual Studio Code and Visual Studio?<\/strong><br\/>\n   VS Code is a lightweight, extensible editor. Visual Studio is a fuller IDE with deeper integrated tooling, especially for .NET and Windows workloads.<\/p>\n<\/li>\n<li>\n<p><strong>How does VS Code authenticate to Azure?<\/strong><br\/>\n   Typically through the Azure Account extension (interactive sign-in) and\/or Azure CLI (<code>az login<\/code>). Authorization is enforced by Azure RBAC.<\/p>\n<\/li>\n<li>\n<p><strong>Can I deploy to Azure directly from VS Code?<\/strong><br\/>\n   Yes, for many services (Functions, App Service, etc.) using extensions. For production, pipeline-based deployments are recommended.<\/p>\n<\/li>\n<li>\n<p><strong>Is it safe to use VS Code extensions in enterprise environments?<\/strong><br\/>\n   It can be, but you should govern extensions (allowlist), apply Workspace Trust, and keep software patched.<\/p>\n<\/li>\n<li>\n<p><strong>Does VS Code store my Azure credentials?<\/strong><br\/>\n   VS Code and related tools store tokens locally using OS mechanisms and tool-specific caches. For strict requirements, verify token storage behavior in official docs for the Azure Account extension and Azure CLI.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use VS Code offline?<\/strong><br\/>\n   You can edit code offline, but many features (extensions install\/update, cloud sign-in, deployments) require network access.<\/p>\n<\/li>\n<li>\n<p><strong>What is Workspace Trust and why should I care?<\/strong><br\/>\n   Workspace Trust reduces the risk of executing malicious code from untrusted repos by restricting tasks\/debug configs\/extensions behavior until you trust the folder.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the best way to standardize developer environments for Azure projects?<\/strong><br\/>\n   Use Dev Containers (or WSL\/remote) plus VS Code Profiles and documented prerequisites. Enforce consistent tool versions where feasible.<\/p>\n<\/li>\n<li>\n<p><strong>Can VS Code manage Azure Kubernetes Service (AKS)?<\/strong><br\/>\n   VS Code can help edit manifests and interact with clusters via the Kubernetes extension and <code>kubectl<\/code>. The actual control is done through Kubernetes APIs and CLI tools.<\/p>\n<\/li>\n<li>\n<p><strong>Can I write Bicep in VS Code?<\/strong><br\/>\n   Yes. Install the Microsoft Bicep extension for language support and validation.<\/p>\n<\/li>\n<li>\n<p><strong>Why does deploying from VS Code create extra resources?<\/strong><br\/>\n   Many Azure services require dependencies (for example, Functions requires Storage). The extension\u2019s deployment wizard may create them by default.<\/p>\n<\/li>\n<li>\n<p><strong>How do I avoid deploying into the wrong subscription?<\/strong><br\/>\n   Always verify <code>az account show<\/code>, confirm the subscription selected in VS Code, and consider using separate accounts\/tenants or clear naming for subscriptions.<\/p>\n<\/li>\n<li>\n<p><strong>What should I use for secrets when developing Azure apps?<\/strong><br\/>\n   For local dev: environment variables and local settings files excluded from Git. For Azure: Key Vault + managed identity. Never commit secrets to repos.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use VS Code for production incident response?<\/strong><br\/>\n   You can, but limit actions to read-only diagnostics unless you have an approved change process. Prefer controlled runbooks and pipeline-based hotfixes.<\/p>\n<\/li>\n<li>\n<p><strong>Does VS Code have a cost?<\/strong><br\/>\n   VS Code is free, but the Azure resources you create (Functions, Storage, Monitor) and optional paid developer add-ons may incur costs.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Visual Studio Code<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>VS Code Docs \u2014 https:\/\/code.visualstudio.com\/docs<\/td>\n<td>Primary source for VS Code features, settings, debugging, and extensions<\/td>\n<\/tr>\n<tr>\n<td>Official download<\/td>\n<td>VS Code Download \u2014 https:\/\/code.visualstudio.com\/download<\/td>\n<td>Always-current installers for Windows\/macOS\/Linux<\/td>\n<\/tr>\n<tr>\n<td>Official Azure CLI docs<\/td>\n<td>Install Azure CLI \u2014 https:\/\/learn.microsoft.com\/cli\/azure\/install-azure-cli<\/td>\n<td>Required for many Azure workflows from VS Code terminal<\/td>\n<\/tr>\n<tr>\n<td>Official Azure Functions local dev<\/td>\n<td>Run Azure Functions locally \u2014 https:\/\/learn.microsoft.com\/azure\/azure-functions\/functions-run-local<\/td>\n<td>Core Tools setup and local execution guidance<\/td>\n<\/tr>\n<tr>\n<td>Official Azure Functions overview<\/td>\n<td>Azure Functions documentation \u2014 https:\/\/learn.microsoft.com\/azure\/azure-functions\/<\/td>\n<td>Service concepts, triggers\/bindings, deployment models<\/td>\n<\/tr>\n<tr>\n<td>Official pricing page<\/td>\n<td>Azure Functions pricing \u2014 https:\/\/azure.microsoft.com\/pricing\/details\/functions\/<\/td>\n<td>Understand Functions plan and billing model<\/td>\n<\/tr>\n<tr>\n<td>Official pricing page<\/td>\n<td>Azure Storage pricing \u2014 https:\/\/azure.microsoft.com\/pricing\/details\/storage\/<\/td>\n<td>Storage costs (capacity, transactions, redundancy)<\/td>\n<\/tr>\n<tr>\n<td>Official pricing page<\/td>\n<td>Azure Monitor pricing \u2014 https:\/\/azure.microsoft.com\/pricing\/details\/monitor\/<\/td>\n<td>Log ingestion\/retention and monitoring costs<\/td>\n<\/tr>\n<tr>\n<td>Official calculator<\/td>\n<td>Azure Pricing Calculator \u2014 https:\/\/azure.microsoft.com\/pricing\/calculator\/<\/td>\n<td>Estimate region-specific costs without guessing<\/td>\n<\/tr>\n<tr>\n<td>Official IaC language<\/td>\n<td>Bicep documentation \u2014 https:\/\/learn.microsoft.com\/azure\/azure-resource-manager\/bicep\/<\/td>\n<td>Author and deploy Azure resources with Bicep<\/td>\n<\/tr>\n<tr>\n<td>Official learning modules<\/td>\n<td>Microsoft Learn \u2014 https:\/\/learn.microsoft.com\/training\/<\/td>\n<td>Structured learning paths for Azure + VS Code workflows<\/td>\n<\/tr>\n<tr>\n<td>Official videos<\/td>\n<td>Visual Studio Code YouTube \u2014 https:\/\/www.youtube.com\/@code<\/td>\n<td>Product walkthroughs, features, release highlights<\/td>\n<\/tr>\n<tr>\n<td>Samples (high-trust)<\/td>\n<td>Azure Samples on GitHub \u2014 https:\/\/github.com\/Azure-Samples<\/td>\n<td>Practical reference apps and templates for Azure services<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Devs, DevOps engineers, platform teams<\/td>\n<td>DevOps tooling, CI\/CD, cloud fundamentals; may include VS Code workflows<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>SCM, DevOps basics, automation practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud engineers, operations teams<\/td>\n<td>Cloud operations and DevOps practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, reliability engineers, platform teams<\/td>\n<td>SRE practices, operations, observability<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops teams, SREs, engineers exploring AIOps<\/td>\n<td>AIOps concepts, monitoring\/automation<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training content (verify current offerings on site)<\/td>\n<td>Engineers seeking practical guidance<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training and mentoring (verify current offerings on site)<\/td>\n<td>Beginners to intermediate DevOps engineers<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps help\/training (verify current offerings on site)<\/td>\n<td>Teams needing short-term enablement<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support\/training resources (verify current offerings on site)<\/td>\n<td>Ops\/DevOps teams<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company Name<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify service catalog on site)<\/td>\n<td>Cloud adoption, DevOps implementation, automation<\/td>\n<td>Standardizing VS Code dev environments; CI\/CD design for Azure; IaC rollout<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps consulting and training (verify service catalog on site)<\/td>\n<td>DevOps transformation, pipelines, tooling enablement<\/td>\n<td>VS Code + Azure developer tooling standardization; pipeline templates; governance<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting (verify service catalog on site)<\/td>\n<td>DevOps delivery, automation, best practices<\/td>\n<td>Building secure developer workflows; release process design; cost controls for dev\/test<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before Visual Studio Code (recommended foundations)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Basic Git (clone\/branch\/commit\/PR concepts)<\/li>\n<li>One programming language (JavaScript\/TypeScript, Python, C#, Java)<\/li>\n<li>Basic CLI comfort (PowerShell or Bash)<\/li>\n<li>Core Azure concepts:<\/li>\n<li>subscriptions, resource groups, regions<\/li>\n<li>identity and RBAC<\/li>\n<li>basic networking concepts (public vs private endpoints)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after Visual Studio Code (to become effective on Azure)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure CLI and scripting patterns<\/li>\n<li>Infrastructure as Code:<\/li>\n<li>Bicep (Azure-native) and\/or Terraform<\/li>\n<li>CI\/CD:<\/li>\n<li>GitHub Actions or Azure Pipelines<\/li>\n<li>Observability:<\/li>\n<li>Application Insights, Azure Monitor, Log Analytics<\/li>\n<li>Secure application patterns:<\/li>\n<li>managed identity<\/li>\n<li>Key Vault<\/li>\n<li>least privilege RBAC<\/li>\n<li>Containers and Kubernetes (optional but common):<\/li>\n<li>Docker basics<\/li>\n<li>AKS basics<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud engineer<\/li>\n<li>DevOps engineer \/ platform engineer<\/li>\n<li>SRE<\/li>\n<li>Application developer (frontend\/backend\/full-stack)<\/li>\n<li>Security engineer (policy-as-code, DevSecOps workflows)<\/li>\n<li>Solutions architect (design + review of developer tooling patterns)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (Azure-related)<\/h3>\n\n\n\n<p>VS Code itself is not typically certified as a standalone product, but it is used heavily while preparing for:\n&#8211; Azure Fundamentals (AZ-900)\n&#8211; Azure Developer (AZ-204)\n&#8211; Azure Administrator (AZ-104)\n&#8211; DevOps Engineer Expert (AZ-400)<\/p>\n\n\n\n<p>(Always verify current certification codes and requirements on Microsoft Learn.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Build and deploy an Azure Function with CI\/CD from GitHub Actions.<\/li>\n<li>Create a Bicep template to provision a complete environment (Function + Storage + App Insights).<\/li>\n<li>Containerize a small API with a devcontainer and deploy to Azure Container Apps.<\/li>\n<li>Write an Azure Policy definition repo with PR review and automated validation.<\/li>\n<li>Build a simple AKS deployment pipeline and operate it from VS Code using tasks and <code>kubectl<\/code>.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Azure Resource Manager (ARM):<\/strong> Azure\u2019s management layer and API used to create\/update\/delete resources.<\/li>\n<li><strong>Bicep:<\/strong> A domain-specific language (DSL) for deploying Azure resources via ARM with a cleaner syntax than JSON templates.<\/li>\n<li><strong>CI\/CD:<\/strong> Continuous Integration \/ Continuous Delivery (or Deployment); automating build, test, and release processes.<\/li>\n<li><strong>Consumption plan (Functions):<\/strong> A serverless hosting model where billing is typically based on executions and duration (verify current pricing).<\/li>\n<li><strong>Dev Container:<\/strong> A container-based development environment configuration for VS Code (commonly via <code>devcontainer.json<\/code>).<\/li>\n<li><strong>Extension:<\/strong> A plugin installed in VS Code that adds language features or integrations (Azure, Docker, Kubernetes, etc.).<\/li>\n<li><strong>Functions Core Tools:<\/strong> Local tooling (<code>func<\/code>) to run and manage Azure Functions projects locally.<\/li>\n<li><strong>Git:<\/strong> A distributed version control system used to track code changes.<\/li>\n<li><strong>Microsoft Entra ID (Azure AD):<\/strong> Identity platform for authentication and authorization in Azure.<\/li>\n<li><strong>RBAC:<\/strong> Role-Based Access Control; the Azure authorization system for resource access.<\/li>\n<li><strong>Workspace Trust:<\/strong> VS Code security feature restricting automatic execution of tasks\/extensions in untrusted workspaces.<\/li>\n<li><strong>Application Insights:<\/strong> Observability service for application logs, traces, and performance data (part of Azure Monitor).<\/li>\n<li><strong>Resource group:<\/strong> A logical container for Azure resources; often used as a lifecycle boundary for cleanup.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Visual Studio Code is a free, cross-platform developer tool that becomes a practical Azure \u201ccontrol hub\u201d through extensions and CLIs. It matters because it streamlines the developer inner loop (edit\/debug) and supports the outer loop (deploy\/operate) with Azure-friendly workflows for Azure Functions, App Service, Bicep, and more.<\/p>\n\n\n\n<p>In Azure architectures, VS Code is not a hosted service\u2014it\u2019s the client tool that drives deployments and changes through authenticated Azure APIs, which preserves auditability via Azure Activity Logs and RBAC. Cost is usually not about VS Code (free), but about what you deploy: Functions plans, Storage transactions, and Azure Monitor\/Application Insights ingestion and retention. Security success depends on least privilege, extension governance, Workspace Trust, and proper secret handling (Key Vault + managed identity for production).<\/p>\n\n\n\n<p>Use Visual Studio Code when you need a flexible, standardizable editor for Azure development and IaC. Prefer CI\/CD pipelines for production releases, using VS Code to author, validate, and troubleshoot. Next step: expand the lab by putting your Function and Bicep template in a Git repo and deploying through GitHub Actions or Azure Pipelines with least-privileged identities.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Developer Tools<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,18],"tags":[],"class_list":["post-425","post","type-post","status-publish","format-standard","hentry","category-azure","category-developer-tools"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=425"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/425\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}