<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: vaibhav bedi</title>
    <description>The latest articles on Forem by vaibhav bedi (@vaibhav_bedi_82eeb9670233).</description>
    <link>https://forem.com/vaibhav_bedi_82eeb9670233</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3613058%2Fc67b19f1-b5ad-49d6-961a-a5fea968e76d.png</url>
      <title>Forem: vaibhav bedi</title>
      <link>https://forem.com/vaibhav_bedi_82eeb9670233</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vaibhav_bedi_82eeb9670233"/>
    <language>en</language>
    <item>
      <title>Cloud Automation: Stop Clicking Buttons and Start Shipping Faster</title>
      <dc:creator>vaibhav bedi</dc:creator>
      <pubDate>Sat, 15 Nov 2025 22:19:23 +0000</pubDate>
      <link>https://forem.com/vaibhav_bedi_82eeb9670233/cloud-automation-stop-clicking-buttons-and-start-shipping-faster-2ble</link>
      <guid>https://forem.com/vaibhav_bedi_82eeb9670233/cloud-automation-stop-clicking-buttons-and-start-shipping-faster-2ble</guid>
      <description>&lt;p&gt;If you're still manually clicking through cloud portals to provision resources, you're working too hard. Cloud automation isn't just a nice-to-have anymore - it's the difference between shipping features quickly and spending your Friday nights babysitting deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Manual Cloud Management
&lt;/h2&gt;

&lt;p&gt;Let me paint a familiar picture. You need to spin up a new environment. You log into AWS or Azure, click through a dozen screens, copy settings from production (hopefully correctly), configure networking, set up security groups, provision databases, configure monitoring, and two hours later you're done. Then someone asks you to do it again for staging. And again for the QA environment.&lt;/p&gt;

&lt;p&gt;Manual processes don't scale. They're error-prone, inconsistent, and honestly boring. You became a developer to write code, not to be a professional button-clicker.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cloud Automation Actually Means
&lt;/h2&gt;

&lt;p&gt;Cloud automation means using code and tools to provision, configure, and manage your cloud infrastructure without human intervention. Instead of clicking through a portal, you write a script or configuration file that describes what you want, and the automation tool makes it happen.&lt;/p&gt;

&lt;p&gt;This applies to everything: virtual machines, databases, storage buckets, networking, security policies, monitoring alerts, and even user permissions. If you can create it manually, you can automate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure as Code: The Foundation
&lt;/h2&gt;

&lt;p&gt;Infrastructure as Code (IaC) is where cloud automation starts. You describe your infrastructure in files that can be versioned, reviewed, and reused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terraform&lt;/strong&gt; is the most popular cross-cloud option. You write HCL configuration files that describe your infrastructure, and Terraform figures out how to create it. It works across AWS, Azure, GCP, and hundreds of other providers. The same skillset works everywhere.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"web_server"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"ami-0c55b159cbfafe1f0"&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t3.micro"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"web-server"&lt;/span&gt;
    &lt;span class="nx"&gt;Environment&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"production"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CloudFormation&lt;/strong&gt; (AWS), &lt;strong&gt;ARM templates&lt;/strong&gt; (Azure), and &lt;strong&gt;Deployment Manager&lt;/strong&gt; (GCP) are cloud-specific options. They're deeply integrated with their respective clouds but lock you into that ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pulumi&lt;/strong&gt; lets you write infrastructure code in real programming languages like Python, TypeScript, or Go instead of learning a DSL. If you prefer actual code over configuration files, Pulumi might be your thing.&lt;/p&gt;

&lt;p&gt;Pick one tool and get good at it. Doesn't matter which one you choose - the principles are the same. Just commit to using IaC for everything new.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration Management: Beyond Provisioning
&lt;/h2&gt;

&lt;p&gt;Provisioning infrastructure is only half the battle. You still need to configure the OS, install software, apply security patches, and manage ongoing changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ansible&lt;/strong&gt; is straightforward and agentless. You write YAML playbooks that describe the desired state, and Ansible makes it happen over SSH. No agents to install or maintain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chef&lt;/strong&gt; and &lt;strong&gt;Puppet&lt;/strong&gt; are more traditional configuration management tools. They're powerful but have a steeper learning curve. Both use agents running on managed nodes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud-Init&lt;/strong&gt; is built into most cloud VM images. It handles initial configuration when an instance first boots. Great for basic setup tasks that only run once.&lt;/p&gt;

&lt;p&gt;For containerized workloads, configuration management looks different. You bake configuration into container images or use Kubernetes ConfigMaps and Secrets. The container orchestration platform handles the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  CI/CD Pipelines: Automation in Motion
&lt;/h2&gt;

&lt;p&gt;Your infrastructure code is worthless if you're running it manually. CI/CD pipelines automate the entire deployment process from code commit to production.&lt;/p&gt;

&lt;p&gt;A typical pipeline for infrastructure changes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developer commits infrastructure code changes&lt;/li&gt;
&lt;li&gt;CI system runs validation and linting&lt;/li&gt;
&lt;li&gt;Automated tests verify the changes work&lt;/li&gt;
&lt;li&gt;Pipeline creates a plan showing what will change&lt;/li&gt;
&lt;li&gt;After approval, pipeline applies changes to staging&lt;/li&gt;
&lt;li&gt;Automated tests verify staging works&lt;/li&gt;
&lt;li&gt;After validation, pipeline deploys to production&lt;/li&gt;
&lt;li&gt;Monitoring confirms everything is healthy&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;, &lt;strong&gt;GitLab CI&lt;/strong&gt;, &lt;strong&gt;Jenkins&lt;/strong&gt;, &lt;strong&gt;CircleCI&lt;/strong&gt;, &lt;strong&gt;Azure DevOps&lt;/strong&gt; - they all work. Pick what integrates with your existing tools.&lt;/p&gt;

&lt;p&gt;The key is that humans write code and approve changes, but machines do the actual deployment work. No manual steps, no forgotten configurations, no "works on my machine" problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Auto-Scaling: Let Demand Drive Resources
&lt;/h2&gt;

&lt;p&gt;Why pay for capacity you're not using? Auto-scaling automatically adjusts resources based on actual demand.&lt;/p&gt;

&lt;p&gt;Cloud providers offer built-in auto-scaling for compute resources. Define minimum and maximum instance counts, set scaling policies based on CPU, memory, or custom metrics, and let the platform handle it.&lt;/p&gt;

&lt;p&gt;Kubernetes takes this further with Horizontal Pod Autoscaling and Cluster Autoscaling. Pods scale based on resource usage or custom metrics. The cluster itself scales nodes up or down based on pod demands.&lt;/p&gt;

&lt;p&gt;Serverless takes auto-scaling to the extreme. Functions scale automatically from zero to thousands of concurrent executions. You literally don't think about capacity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automated Backup and Disaster Recovery
&lt;/h2&gt;

&lt;p&gt;Hope is not a backup strategy. Automate your backups so you don't have to remember to take them.&lt;/p&gt;

&lt;p&gt;Most cloud services offer automated backup options. Enable them. Set retention policies. Test restores regularly. Automate the restore testing too - if you can't restore, your backups are useless.&lt;/p&gt;

&lt;p&gt;Infrastructure as Code makes disaster recovery easier. Your infrastructure is defined in code, so recreating it in another region or account is just running your automation again. Add data replication and you have a solid DR strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Optimization Through Automation
&lt;/h2&gt;

&lt;p&gt;Cloud bills can spiral out of control. Automation helps keep costs under control.&lt;/p&gt;

&lt;p&gt;Schedule non-production environments to shut down outside business hours. A simple script can stop instances at 6 PM and start them at 8 AM on weekdays. That's 128 hours of savings every week.&lt;/p&gt;

&lt;p&gt;Right-sizing scripts analyze actual resource usage and recommend smaller instance types. Run these monthly and adjust accordingly.&lt;/p&gt;

&lt;p&gt;Automated cleanup removes unused resources. Tag everything with creation dates and owners. Scripts can identify resources that haven't been used in 90 days and either delete them or flag them for review.&lt;/p&gt;

&lt;p&gt;Reserved instances and savings plans require commitment, but automation can analyze usage patterns and recommend optimal purchases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Automation: Shift Left
&lt;/h2&gt;

&lt;p&gt;Security can't be an afterthought. Build it into your automation from the start.&lt;/p&gt;

&lt;p&gt;Scan infrastructure code for security issues before deployment. Tools like tfsec, Checkov, and Terrascan find problems in Terraform code. They integrate into CI/CD pipelines to block insecure configurations.&lt;/p&gt;

&lt;p&gt;Automate compliance checks. Cloud Custodian, AWS Config Rules, and Azure Policy continuously monitor resources and enforce compliance. Resources that violate policies get automatically remediated or flagged.&lt;/p&gt;

&lt;p&gt;Secret management should be automated. Never hardcode credentials. Use tools like HashiCorp Vault, AWS Secrets Manager, or Azure Key Vault. Rotate secrets automatically on a schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring and Alerting: Close the Loop
&lt;/h2&gt;

&lt;p&gt;Automation without monitoring is flying blind. You need to know when things break.&lt;/p&gt;

&lt;p&gt;Instrument everything. Logs, metrics, and traces should be automatically collected from all resources. Use agents or native integrations - just make sure everything reports somewhere central.&lt;/p&gt;

&lt;p&gt;Automated alerting based on anomalies catches problems you didn't anticipate. Traditional threshold alerts are good, but anomaly detection finds unusual patterns that might indicate issues.&lt;/p&gt;

&lt;p&gt;Auto-remediation takes monitoring further. When certain alerts fire, trigger automated responses. Disk full? Auto-scale storage. Service unresponsive? Restart it automatically. Document and test these remediations carefully - you don't want automation making things worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Example: Full Stack Automation
&lt;/h2&gt;

&lt;p&gt;Here's how this comes together. An e-commerce company I worked with automated their entire deployment pipeline.&lt;/p&gt;

&lt;p&gt;Infrastructure is defined in Terraform. Developers change code, the pipeline runs terraform plan, shows what will change, and after approval applies it. New application versions trigger Docker builds. The pipeline pushes images to a registry, updates Kubernetes manifests, and deploys to staging.&lt;/p&gt;

&lt;p&gt;Automated tests run against staging. If they pass, the pipeline waits for human approval, then deploys to production using a blue-green deployment. If error rates spike, automated rollback reverts to the previous version.&lt;/p&gt;

&lt;p&gt;Non-production environments shut down at night and on weekends. Cost optimization scripts run weekly and recommend right-sizing. Security scans happen on every commit. Compliance checks run continuously.&lt;/p&gt;

&lt;p&gt;The result? They deploy 20+ times per day with minimal manual intervention. Deployment time dropped from hours to minutes. Incidents decreased because configurations are consistent. New developers become productive faster because everything is documented in code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started: Don't Boil the Ocean
&lt;/h2&gt;

&lt;p&gt;You don't need to automate everything at once. Start small and build momentum.&lt;/p&gt;

&lt;p&gt;Pick one repetitive task that drives you crazy. Automate that first. Maybe it's creating development environments or deploying a specific application. Get that working, learn from it, then move to the next task.&lt;/p&gt;

&lt;p&gt;Use existing modules and templates. Don't reinvent the wheel. Terraform Registry, AWS Solutions Library, and Azure Quickstart Templates provide battle-tested starting points.&lt;/p&gt;

&lt;p&gt;Document your automation. Future you will thank present you when something breaks at 2 AM and you need to remember how it works.&lt;/p&gt;

&lt;p&gt;Version control everything. Your infrastructure code should live in Git alongside your application code. Use pull requests, code reviews, and all the same practices you use for application code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tools Don't Matter (Much)
&lt;/h2&gt;

&lt;p&gt;People get religious about tools. Terraform versus CloudFormation, Ansible versus Chef, AWS versus Azure. These debates miss the point.&lt;/p&gt;

&lt;p&gt;The specific tools matter less than the practice of automation itself. Pick tools that work for your team and your cloud provider. Learn them deeply. The principles transfer even if you switch tools later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Pitfalls
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Over-automation&lt;/strong&gt;: Don't automate things that rarely change or are critical without having proper safeguards. Start with safe, repeatable tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Poor error handling&lt;/strong&gt;: Automation fails. Build in proper error handling, logging, and alerting so you know when things go wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No testing&lt;/strong&gt;: Test your automation in non-production environments first. Use plan/preview features to see what will change before applying it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ignoring drift&lt;/strong&gt;: Resources changed outside automation create drift. Either prevent manual changes through policies or regularly reconcile drift back to the desired state.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Cloud automation transforms how you work. You spend less time on repetitive tasks and more time on things that matter. Deployments become faster and more reliable. Costs stay under control. Security improves.&lt;/p&gt;

&lt;p&gt;The initial investment in learning automation tools pays off quickly. Yes, writing Terraform takes longer than clicking through a portal the first time. But the tenth time? The hundredth time? Automation wins decisively.&lt;/p&gt;

&lt;p&gt;Start automating today. Pick one task, automate it, and build from there. Your future self will thank you.&lt;/p&gt;

&lt;p&gt;What are you automating in your cloud environment? Share your wins (and failures) in the comments.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>cloud</category>
      <category>automation</category>
      <category>devops</category>
    </item>
    <item>
      <title>Troubleshooting Real-World Network Outages in Microsoft Azure</title>
      <dc:creator>vaibhav bedi</dc:creator>
      <pubDate>Sat, 15 Nov 2025 22:16:52 +0000</pubDate>
      <link>https://forem.com/vaibhav_bedi_82eeb9670233/troubleshooting-real-world-network-outages-in-microsoft-azure-12j2</link>
      <guid>https://forem.com/vaibhav_bedi_82eeb9670233/troubleshooting-real-world-network-outages-in-microsoft-azure-12j2</guid>
      <description>&lt;p&gt;Network outages in Azure can be stressful. One minute everything's running smoothly, the next you're getting alerts that your application is unreachable. I've been through enough of these incidents to know that having a systematic approach makes all the difference between panic and resolution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 AM Wake-Up Call
&lt;/h2&gt;

&lt;p&gt;Picture this: your monitoring alerts are going off, your application isn't responding, and you need to figure out what's wrong. Fast. Azure's network stack is powerful but complex, with virtual networks, subnets, network security groups, route tables, and service endpoints all playing together. When something breaks, knowing where to look is half the battle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start With the Basics
&lt;/h2&gt;

&lt;p&gt;Before diving into Azure-specific tools, verify the obvious stuff. I know it sounds basic, but I've seen too many incidents where we skipped this and wasted time:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you reach the Azure portal?&lt;/strong&gt; If you can't, the issue might be on your end or a broader Azure service disruption. Check the Azure Status page first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is your service actually down?&lt;/strong&gt; Sometimes monitoring gets it wrong. Try accessing your application from different locations or networks. Your office network might have issues while everything else works fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check the Azure Service Health dashboard.&lt;/strong&gt; Microsoft might already know about the outage. Navigate to Service Health in the portal and check for any incidents in your region.&lt;/p&gt;

&lt;h2&gt;
  
  
  Network Security Groups: The Silent Killers
&lt;/h2&gt;

&lt;p&gt;NSGs are probably responsible for more outages than people want to admit. They're easy to misconfigure and the results are immediate.&lt;/p&gt;

&lt;p&gt;Open your NSG in the portal and check the inbound and outbound rules. Look for recently modified rules - someone might have made a change that broke connectivity. Azure keeps an activity log, so you can see who changed what and when.&lt;/p&gt;

&lt;p&gt;Use the &lt;strong&gt;IP Flow Verify&lt;/strong&gt; tool in Network Watcher. This tool tells you whether traffic is allowed or denied between two points, and which NSG rule is responsible. It's saved me hours of manual rule checking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Route Tables and Unexpected Paths
&lt;/h2&gt;

&lt;p&gt;Routes control where traffic goes, and a misconfigured route table can send your traffic into a black hole. This happens more often than you'd think, especially after someone adds a new subnet or makes changes to a firewall appliance.&lt;/p&gt;

&lt;p&gt;Check your route tables through the portal or use Azure CLI. Look for routes with a next hop type of "None" - these explicitly drop traffic. Also watch for routes that point to network virtual appliances that might be down.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Next Hop&lt;/strong&gt; tool in Network Watcher shows you exactly where traffic will go for a given source and destination. Use it to trace your traffic path and find where things go wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  DNS Issues Are Network Issues Too
&lt;/h2&gt;

&lt;p&gt;DNS problems look like network outages but they're actually resolution failures. Your application can't reach the database because it can't resolve the hostname to an IP address.&lt;/p&gt;

&lt;p&gt;If you're using Azure Private DNS zones, verify that your VNet is actually linked to the zone. A missing link means your VMs can't resolve private DNS names.&lt;/p&gt;

&lt;p&gt;Check your DNS servers in the VNet configuration. Custom DNS servers are a common source of problems. If you've configured custom DNS, make sure those servers are reachable and functioning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Endpoints and Private Endpoints
&lt;/h2&gt;

&lt;p&gt;These features are great for security but they add complexity. If your application suddenly can't reach Azure Storage or SQL Database, check whether service endpoints or private endpoints are involved.&lt;/p&gt;

&lt;p&gt;Service endpoints route traffic to Azure services through the Microsoft backbone network instead of the internet. They require specific configuration on both the VNet subnet and the Azure service. Missing either side breaks connectivity.&lt;/p&gt;

&lt;p&gt;Private endpoints create a private IP address for an Azure service inside your VNet. If someone deleted or misconfigured a private endpoint, your application loses access. Check the Private Link Center to see all your private endpoints and their status.&lt;/p&gt;

&lt;h2&gt;
  
  
  Network Watcher Connection Monitor
&lt;/h2&gt;

&lt;p&gt;This tool continuously monitors connectivity between resources. If you haven't set it up before an outage, you can still use the &lt;strong&gt;Connection Troubleshoot&lt;/strong&gt; feature to test connectivity right now.&lt;/p&gt;

&lt;p&gt;Connection Troubleshoot checks whether a VM can reach another VM, an external endpoint, or an Azure service. It shows you the exact path traffic takes and where it fails. It checks NSGs, routes, and even effective routes to give you a complete picture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application Gateway and Load Balancer Health
&lt;/h2&gt;

&lt;p&gt;Your networking might be fine but your load balancer's backend pool could be unhealthy. Check the backend health in Application Gateway or Load Balancer. If all backends are showing as unhealthy, the issue might be with your health probes, not the actual backends.&lt;/p&gt;

&lt;p&gt;Common health probe failures include incorrect probe paths, wrong ports, or overly aggressive timeout settings. Review your probe configuration and test manually using curl or a browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Effective Security Rules
&lt;/h2&gt;

&lt;p&gt;Azure applies NSG rules at both the subnet and NIC level. The combination of these rules determines what traffic is actually allowed. Use the &lt;strong&gt;Effective Security Rules&lt;/strong&gt; view in the portal to see the final set of rules that apply to a specific NIC. This resolves the confusion when you have NSGs at multiple levels.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Scenario: The Disappearing Database
&lt;/h2&gt;

&lt;p&gt;Here's a recent example. Application suddenly couldn't connect to Azure SQL Database. Portal showed the database was running, no Azure service issues, application logs showed connection timeouts.&lt;/p&gt;

&lt;p&gt;Started with IP Flow Verify - traffic was allowed by NSGs. Checked routes - everything looked normal. Then checked the SQL Database firewall rules. Someone had removed the subnet's service endpoint access during a cleanup task. Added the subnet back to the firewall rules and connectivity restored immediately.&lt;/p&gt;

&lt;p&gt;The lesson? Always check service-specific firewall rules, not just network-level security.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagnostic Logs Are Your Friend
&lt;/h2&gt;

&lt;p&gt;Enable diagnostic logging for your network resources. NSG flow logs show you exactly what traffic is being allowed or denied in real-time. This data goes to a storage account or Log Analytics workspace where you can query it.&lt;/p&gt;

&lt;p&gt;You can use Log Analytics queries to find patterns. Looking for a spike in denied connections? Query your NSG flow logs. Want to see if traffic is actually reaching your subnet? Flow logs have the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Recovery Checklist
&lt;/h2&gt;

&lt;p&gt;When you're in the middle of an outage, having a checklist helps you stay systematic:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Verify the outage is real and affects users&lt;/li&gt;
&lt;li&gt;Check Azure Service Health for known issues&lt;/li&gt;
&lt;li&gt;Review recent changes in the Activity Log&lt;/li&gt;
&lt;li&gt;Verify NSG rules using IP Flow Verify&lt;/li&gt;
&lt;li&gt;Check route tables using Next Hop&lt;/li&gt;
&lt;li&gt;Test DNS resolution&lt;/li&gt;
&lt;li&gt;Verify service endpoint and private endpoint configurations&lt;/li&gt;
&lt;li&gt;Check load balancer backend health&lt;/li&gt;
&lt;li&gt;Review service-specific firewall rules&lt;/li&gt;
&lt;li&gt;Check diagnostic logs for patterns&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prevention Is Better Than 3 AM Fixes
&lt;/h2&gt;

&lt;p&gt;Set up Connection Monitor to continuously test critical paths. Enable NSG flow logs. Use Azure Policy to prevent certain risky configurations. Tag your resources properly so you can track relationships.&lt;/p&gt;

&lt;p&gt;Document your network architecture. When things break, you need to quickly understand what connects to what. A simple diagram saves time when you're troubleshooting under pressure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Azure network troubleshooting gets easier with experience, but having the right tools and approach makes a huge difference. Network Watcher is your best friend. The Activity Log shows you what changed. And sometimes the issue is as simple as a checkbox someone unchecked.&lt;/p&gt;

&lt;p&gt;The next time you face a network outage, take a breath, work through the checklist, and use the tools Azure gives you. You'll find the problem faster than you think.&lt;/p&gt;

&lt;p&gt;What's your worst Azure network outage story? Drop it in the comments - we've all been there.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>azure</category>
      <category>monitoring</category>
      <category>devops</category>
    </item>
    <item>
      <title>Azure vs OCI Load Balancers &amp; Traffic Routing: What Actually Matters</title>
      <dc:creator>vaibhav bedi</dc:creator>
      <pubDate>Sat, 15 Nov 2025 22:13:16 +0000</pubDate>
      <link>https://forem.com/vaibhav_bedi_82eeb9670233/azure-vs-oci-load-balancers-traffic-routing-what-actually-matters-2eg</link>
      <guid>https://forem.com/vaibhav_bedi_82eeb9670233/azure-vs-oci-load-balancers-traffic-routing-what-actually-matters-2eg</guid>
      <description>&lt;h1&gt;
  
  
  Azure vs OCI Load Balancers &amp;amp; Traffic Routing: What Actually Matters
&lt;/h1&gt;

&lt;p&gt;Load balancers are one of those things everyone uses but nobody really thinks about until something breaks or the bill arrives. I've been working with both Azure and OCI load balancers for different projects, and the approaches are different enough that it's worth getting into the weeds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Product Lineup
&lt;/h2&gt;

&lt;p&gt;Let's start with what you're actually choosing from, because both clouds have multiple load balancing services and the naming isn't always helpful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure gives you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure Load Balancer (L4, regional)&lt;/li&gt;
&lt;li&gt;Azure Application Gateway (L7, regional, includes WAF)&lt;/li&gt;
&lt;li&gt;Azure Front Door (L7, global, CDN + routing)&lt;/li&gt;
&lt;li&gt;Traffic Manager (DNS-based global routing)&lt;/li&gt;
&lt;li&gt;Cross-region Load Balancer (preview/GA depending on when you read this)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;OCI gives you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load Balancer (L4 and L7 combined, regional)&lt;/li&gt;
&lt;li&gt;Network Load Balancer (L4, ultra-low latency)&lt;/li&gt;
&lt;li&gt;Traffic Management Steering Policies (DNS-based routing)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Right off the bat, OCI's lineup is simpler. One load balancer does both L4 and L7, which is conceptually cleaner. Azure split these because they evolved separately, and while that gives you more targeted options, it also means more decision paralysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: The Basic Building Block
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Azure Load Balancer
&lt;/h3&gt;

&lt;p&gt;Azure's L4 load balancer is solid and boring, which is what you want. You create a load balancer (Standard SKU is the only one that matters anymore), add a frontend IP configuration, create a backend pool, define health probes, and set up load balancing rules. It supports both inbound and outbound scenarios.&lt;/p&gt;

&lt;p&gt;The Standard SKU is zone-redundant by default, which is great. It also supports multiple frontend IPs on a single load balancer, useful for hosting multiple services. HA Ports is a feature that lets you load balance all ports with a single rule, which sounds niche until you need it for NVAs.&lt;/p&gt;

&lt;p&gt;Health probes are straightforward: HTTP, HTTPS, or TCP. You set an interval and threshold, and if a backend fails, it's taken out of rotation. The one thing that trips people up is the default 15-second timeout - sometimes you need to tune this for slow-starting applications.&lt;/p&gt;

&lt;p&gt;Pricing is per rule plus data processed. The data processing charge is $0.005/GB, which adds up but isn't terrible. Where it gets expensive is when you need multiple load balancers for isolation or different configurations.&lt;/p&gt;

&lt;h3&gt;
  
  
  OCI Load Balancer (L4 mode)
&lt;/h3&gt;

&lt;p&gt;OCI's Load Balancer can operate in L4 mode, but honestly, if you want pure L4, you probably want the Network Load Balancer instead. It's newer, faster, and purpose-built.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Network Load Balancer&lt;/strong&gt; is OCI's answer to AWS's Network Load Balancer, and it's genuinely impressive from a performance standpoint. We're talking microsecond-level latency, preservation of source IP by default, and the ability to handle millions of requests per second per instance.&lt;/p&gt;

&lt;p&gt;Unlike Azure's load balancer, the Network Load Balancer is truly transparent - clients see the actual backend IPs. This is huge for protocols that care about source IP, and you don't need to mess with X-Forwarded-For headers or connection draining strategies.&lt;/p&gt;

&lt;p&gt;Configuration is simpler than Azure: backend sets, listeners, and health checks. That's basically it. The health checks are TCP or HTTP/HTTPS, similar to Azure.&lt;/p&gt;

&lt;p&gt;Pricing is per hour plus data processed (called "bandwidth" in OCI pricing docs). It's generally cheaper than Azure, especially at scale. An OCI Network Load Balancer processes data at $0.008/GB versus Azure's $0.005/GB, but the hourly cost is lower, so it depends on your traffic patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Winner for L4?
&lt;/h3&gt;

&lt;p&gt;For most use cases, they're comparable. Azure's Load Balancer is more mature with more features and better documentation. OCI's Network Load Balancer is faster and cheaper at scale. If you're doing high-throughput, latency-sensitive work, OCI wins. For everything else, it's a wash.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 7: Where It Gets Interesting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Azure Application Gateway
&lt;/h3&gt;

&lt;p&gt;Application Gateway is Azure's L7 load balancer, and it's feature-packed. You get URL-based routing, host-based routing, SSL termination, end-to-end SSL, cookie-based session affinity, WebSocket support, custom health probes, and integration with Azure Web Application Firewall.&lt;/p&gt;

&lt;p&gt;The architecture is straightforward: you create an Application Gateway with a frontend IP, add backend pools, create HTTP settings (which define how Application Gateway talks to backends), and then set up routing rules that tie listeners to backend pools.&lt;/p&gt;

&lt;p&gt;URL-based routing lets you send &lt;code&gt;/api/*&lt;/code&gt; to one backend pool and &lt;code&gt;/images/*&lt;/code&gt; to another, which is genuinely useful for microservices. Host-based routing lets you serve multiple domains from the same gateway. The WAF integration is solid - you get OWASP Core Rule Set protection with minimal config.&lt;/p&gt;

&lt;p&gt;Here's what people don't tell you: Application Gateway is slow to provision. We're talking 20-30 minutes for initial deployment. Updates are also slow. If you're doing infrastructure-as-code with frequent rebuilds, this gets old fast.&lt;/p&gt;

&lt;p&gt;Autoscaling exists but works differently than you'd expect. Application Gateway v2 (the current version) scales based on compute units, which are a function of connection count, throughput, and compute. You set min and max instance counts, and Azure handles the scaling. It works, but it's not as responsive as I'd like - expect 3-5 minutes for scale-out operations.&lt;/p&gt;

&lt;p&gt;The pricing model is complicated: you pay per hour for the gateway itself, per compute unit hour, and for data processing. A small gateway with moderate traffic might cost $200-400/month. A large gateway with autoscaling and WAF can easily hit $2000+/month. Read the pricing page carefully.&lt;/p&gt;

&lt;h3&gt;
  
  
  OCI Load Balancer (L7 mode)
&lt;/h3&gt;

&lt;p&gt;OCI's Load Balancer handles both L4 and L7 traffic, and you choose when you configure your listeners. For L7, it supports path routing, hostname routing, SSL termination, session persistence, and health checks.&lt;/p&gt;

&lt;p&gt;What's nice: you get both capabilities in one service. What's less nice: the configuration model is less intuitive than Application Gateway if you're used to Azure.&lt;/p&gt;

&lt;p&gt;You define backend sets (groups of backends), listeners (frontends that accept traffic), and then routing policies within listeners that determine where traffic goes. Path-based routing uses "route rules" within the listener configuration. It works, but the mental model took me a minute to grasp.&lt;/p&gt;

&lt;p&gt;The Web Application Firewall is a separate service in OCI, not integrated into the load balancer like Azure. You create a WAF policy and attach it to the load balancer. This separation is cleaner architecturally but means more moving parts.&lt;/p&gt;

&lt;p&gt;Performance is good - I haven't run into latency issues. Provisioning is faster than Azure Application Gateway, usually 5-10 minutes. Updates are also faster.&lt;/p&gt;

&lt;p&gt;Pricing is simpler: you pay per hour based on the shape (bandwidth capacity) you choose, plus data processed. A 10 Mbps load balancer is around $20-30/month, a 400 Mbps is around $150/month, plus the $0.008/GB for processed data. For equivalent capacity, it's often cheaper than Application Gateway.&lt;/p&gt;

&lt;h3&gt;
  
  
  Winner for L7?
&lt;/h3&gt;

&lt;p&gt;Application Gateway has more features and better documentation, especially around complex routing scenarios. If you need tight WAF integration or you're already deep in Azure, it's the obvious choice.&lt;/p&gt;

&lt;p&gt;OCI's Load Balancer is simpler, faster to provision, and cheaper. If you don't need every feature and want something that just works, it's compelling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Global Load Balancing and Traffic Management
&lt;/h2&gt;

&lt;p&gt;This is where the platforms diverge significantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure Front Door
&lt;/h3&gt;

&lt;p&gt;Front Door is Azure's global L7 load balancer with CDN capabilities. You configure backends across multiple regions, and Front Door routes users to the best backend based on latency, health, and your routing preferences.&lt;/p&gt;

&lt;p&gt;The feature set is extensive: URL routing, session affinity, custom domains with SSL, caching, DDoS protection, and WAF. You can do A/B testing by splitting traffic percentages. The Edge locations are Azure's CDN POPs, so global coverage is excellent.&lt;/p&gt;

&lt;p&gt;The killer feature is the intelligent routing. Front Door constantly monitors backend health and latency from its edge locations. If a backend goes down or gets slow, traffic automatically fails over. This happens in seconds, not minutes. For global applications where downtime is expensive, this is huge.&lt;/p&gt;

&lt;p&gt;Caching works well if your content is cacheable. You define caching rules, and Front Door serves cached content from edge locations. This reduces load on your backends and improves latency for end users.&lt;/p&gt;

&lt;p&gt;The gotchas: Front Door is expensive. You pay per routing rule, per custom domain, per GB of data transfer out, and per request. A moderate-traffic site can easily hit $500-1000/month. High-traffic sites pay more. The cost scales roughly linearly with traffic, which can be painful.&lt;/p&gt;

&lt;p&gt;Also, Front Door's configuration model is complex. You've got front-end hosts, backend pools, routing rules, and rules engines. The learning curve is steep.&lt;/p&gt;

&lt;h3&gt;
  
  
  Azure Traffic Manager
&lt;/h3&gt;

&lt;p&gt;Traffic Manager is DNS-based routing, not a true load balancer. You create a Traffic Manager profile, add endpoints (which can be Azure resources or external IPs), and choose a routing method: priority, weighted, performance, geographic, or multivalue.&lt;/p&gt;

&lt;p&gt;Performance-based routing sends users to the closest endpoint based on DNS resolution latency. Geographic routing sends users to specific endpoints based on their location. Weighted routing lets you split traffic for A/B testing or gradual rollouts.&lt;/p&gt;

&lt;p&gt;Traffic Manager is cheap - $0.54/million DNS queries plus $0.36 per monitored endpoint. For most workloads, this is under $50/month.&lt;/p&gt;

&lt;p&gt;The limitation is that it's DNS-based, so you're subject to DNS TTL and caching. Failover isn't instant - it depends on clients respecting TTL, which not all do. For critical workloads, you probably want Front Door. For cost-sensitive scenarios where 30-60 second failover is acceptable, Traffic Manager works fine.&lt;/p&gt;

&lt;h3&gt;
  
  
  OCI Traffic Management Steering Policies
&lt;/h3&gt;

&lt;p&gt;OCI's global routing is entirely DNS-based, similar to Traffic Manager. You create a steering policy and attach it to a DNS zone. The policies support failover, load balancing, geolocation steering, and ASN steering (routing based on autonomous system number, which is niche but cool).&lt;/p&gt;

&lt;p&gt;Health checks are built in - you define endpoints and health check configurations, and OCI removes unhealthy endpoints from DNS responses.&lt;/p&gt;

&lt;p&gt;The interface is less polished than Azure's, and the documentation is thinner. But it works, and it's included in your OCI subscription without per-query charges beyond standard DNS pricing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Winner for Global Routing?
&lt;/h3&gt;

&lt;p&gt;Front Door is the most powerful option by far, but you pay for it. If you need intelligent routing with sub-second failover and don't mind the cost, it's unmatched.&lt;/p&gt;

&lt;p&gt;Traffic Manager and OCI's steering policies are comparable - both DNS-based, both cheap, both limited by DNS behavior. Choose based on which cloud you're already using.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stuff That Actually Matters in Production
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SSL/TLS Termination
&lt;/h3&gt;

&lt;p&gt;Both platforms handle this well. Azure Application Gateway and Front Door support SNI (Server Name Indication) so you can host multiple SSL sites on one load balancer. You can use Azure Key Vault for certificate storage, which is convenient.&lt;/p&gt;

&lt;p&gt;OCI Load Balancer also supports SNI and lets you store certificates directly in the load balancer or use OCI Vault. The certificate renewal story is less automated than Azure, though. Azure has better integration with Let's Encrypt and automatic cert renewal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Session Persistence
&lt;/h3&gt;

&lt;p&gt;Azure Application Gateway supports cookie-based session affinity. It inserts a cookie and ensures subsequent requests from the same client go to the same backend. This works fine but breaks if your backends scale down and that specific instance disappears.&lt;/p&gt;

&lt;p&gt;OCI Load Balancer supports application cookie persistence (you specify the cookie name) or load balancer-generated cookie persistence. The flexibility is nice if your app already uses session cookies.&lt;/p&gt;

&lt;p&gt;For serious session management, though, you should be using a distributed cache or database anyway. Sticky sessions at the load balancer are a band-aid.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connection Draining
&lt;/h3&gt;

&lt;p&gt;Azure Application Gateway calls this "connection drain timeout." When you remove a backend or it fails health checks, existing connections get a grace period to finish before being forcibly closed. Default is 30 seconds, max is 500 seconds.&lt;/p&gt;

&lt;p&gt;OCI Load Balancer has the same concept, called "connection drain timeout." Default is 300 seconds, max is 3600 seconds (one hour, which seems excessive but okay).&lt;/p&gt;

&lt;p&gt;Both work as expected. Set this based on how long your backend requests typically take, with a safety margin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Observability
&lt;/h3&gt;

&lt;p&gt;Azure wins here, not even close. Application Gateway and Front Door integrate beautifully with Azure Monitor. You get metrics out of the box - request count, response time, healthy/unhealthy host count, backend response time, and more. You can set up alerts, create dashboards, and query logs in Log Analytics.&lt;/p&gt;

&lt;p&gt;Diagnostic logs give you detailed request/response information, including headers, which is invaluable for debugging. Front Door also logs cache hit rates and origin latency.&lt;/p&gt;

&lt;p&gt;OCI Load Balancer integrates with OCI Monitoring and Logging services, but it's more barebones. You get basic metrics - bandwidth, connections, health status - but not as much detail. Access logs exist but require manual parsing. There's no equivalent to Azure's Application Insights integration.&lt;/p&gt;

&lt;p&gt;If you need deep visibility into traffic patterns and performance, Azure's tooling is significantly better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reliability and SLAs
&lt;/h3&gt;

&lt;p&gt;Azure Application Gateway Standard_v2 has a 99.95% SLA. Front Door has 99.99%. Traffic Manager has 99.99%.&lt;/p&gt;

&lt;p&gt;OCI Load Balancer (both types) has a 99.95% SLA.&lt;/p&gt;

&lt;p&gt;In practice, I've had more issues with Azure Application Gateway than OCI Load Balancer, but that's anecdotal and probably a function of traffic volume and configuration complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Decision Points
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose Azure Load Balancer if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're already in Azure and need basic L4 load balancing&lt;/li&gt;
&lt;li&gt;You need HA Ports for network virtual appliances&lt;/li&gt;
&lt;li&gt;You want zone redundancy without thinking about it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose OCI Network Load Balancer if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need ultra-low latency (microseconds matter)&lt;/li&gt;
&lt;li&gt;You're handling very high connection rates&lt;/li&gt;
&lt;li&gt;You want source IP preservation without X-Forwarded-For hacks&lt;/li&gt;
&lt;li&gt;You're cost-conscious and pushing serious traffic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose Azure Application Gateway if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need sophisticated L7 routing (URL paths, hostnames, headers)&lt;/li&gt;
&lt;li&gt;WAF integration is important&lt;/li&gt;
&lt;li&gt;You're comfortable with Azure pricing and the provisioning time&lt;/li&gt;
&lt;li&gt;You want excellent observability and monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose OCI Load Balancer if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want one service that does both L4 and L7&lt;/li&gt;
&lt;li&gt;You prefer simpler pricing and faster provisioning&lt;/li&gt;
&lt;li&gt;You don't need every possible feature, just the core ones done well&lt;/li&gt;
&lt;li&gt;Budget is tight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose Azure Front Door if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need global distribution with intelligent routing&lt;/li&gt;
&lt;li&gt;Sub-second failover matters for your business&lt;/li&gt;
&lt;li&gt;You want integrated CDN capabilities&lt;/li&gt;
&lt;li&gt;You can afford premium pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose DNS-based routing (Traffic Manager or OCI) if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need basic global routing&lt;/li&gt;
&lt;li&gt;30-60 second failover is acceptable&lt;/li&gt;
&lt;li&gt;You want to minimize cost&lt;/li&gt;
&lt;li&gt;Your traffic patterns are predictable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Actually Use
&lt;/h2&gt;

&lt;p&gt;For internal services in Azure, I use Azure Load Balancer. It's simple and cheap enough that I don't overthink it.&lt;/p&gt;

&lt;p&gt;For public-facing APIs in Azure, I use Application Gateway with WAF. The cost hurts, but the security and routing features justify it. I've learned to automate the slow provisioning times with parallel deployments.&lt;/p&gt;

&lt;p&gt;For global applications, I use Front Door despite the cost. The performance and failover capabilities are worth it when downtime directly impacts revenue.&lt;/p&gt;

&lt;p&gt;For OCI, I use Network Load Balancer for backend services and the regular Load Balancer for public-facing apps. The pricing is friendly enough that I don't worry about optimizing too hard.&lt;/p&gt;

&lt;p&gt;The honest truth? Both platforms have good load balancing options. Azure has more features and better observability. OCI is simpler and cheaper. Pick based on what matters more for your specific use case, not based on theoretical maximums you'll never hit.&lt;/p&gt;

&lt;p&gt;And for the love of all that's holy, test your failover scenarios before you need them. I've seen too many "highly available" architectures fall apart because nobody actually tested what happens when a backend dies.&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>networking</category>
      <category>azure</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Microsoft Azure vs OCI Networking: A Deep Dive</title>
      <dc:creator>vaibhav bedi</dc:creator>
      <pubDate>Sat, 15 Nov 2025 22:08:33 +0000</pubDate>
      <link>https://forem.com/vaibhav_bedi_82eeb9670233/microsoft-azure-vs-oci-networking-a-deep-dive-1h13</link>
      <guid>https://forem.com/vaibhav_bedi_82eeb9670233/microsoft-azure-vs-oci-networking-a-deep-dive-1h13</guid>
      <description>&lt;h1&gt;
  
  
  Microsoft Azure vs OCI Networking: A Deep Dive
&lt;/h1&gt;

&lt;p&gt;So you're evaluating cloud providers and you've gotten past the usual suspects. Azure's everywhere, obviously, but Oracle Cloud Infrastructure keeps popping up in conversations, especially when people talk about networking performance and cost. I spent the last few months working with both platforms pretty heavily, and honestly, the networking models are different enough that it's worth digging into the details.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mental Models Are Different
&lt;/h2&gt;

&lt;p&gt;This is the thing that hit me first. Azure and OCI approach networking from fundamentally different philosophies, and once you understand that, everything else makes more sense.&lt;/p&gt;

&lt;p&gt;Azure feels like it evolved. Because it did. You've got Virtual Networks (VNets), but then you've also got Classic VNets (deprecated but still haunting documentation), then Service Endpoints, then Private Link, then VNet peering, then Virtual WAN. Each feature was added to solve a problem, and while they all work, you're dealing with layers of abstraction that sometimes feel like archaeological strata.&lt;/p&gt;

&lt;p&gt;OCI feels like someone sat down and said "what if we designed this from scratch in 2016, knowing everything we know now?" The result is cleaner but less forgiving if you don't understand the fundamentals. There's a Virtual Cloud Network (VCN), and that's pretty much it. Everything else is routing rules, security lists, and network security groups. It's more Unix-philosophy: do one thing well.&lt;/p&gt;

&lt;h2&gt;
  
  
  VNets vs VCNs: The Foundation
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Azure VNets&lt;/strong&gt; give you a /16 by default, though you can go smaller or bigger. You carve them up into subnets, and subnets are where you actually attach resources. Subnets can span availability zones, which is both convenient and slightly terrifying from a failure domain perspective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCI VCNs&lt;/strong&gt; also start with a CIDR block (up to /16), but subnets work differently. Each subnet lives in a specific availability domain (OCI's term for AZ), and you explicitly choose whether it's public or private when you create it. This forces you to think about your architecture upfront, which I've learned to appreciate even when it's annoying.&lt;/p&gt;

&lt;p&gt;The addressing flexibility in Azure is better if you're doing complex hybrid scenarios. Azure lets you modify address spaces on existing VNets, add address ranges, even swap them around. OCI is stricter - you define your CIDR blocks upfront and you're mostly stuck with them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Peering Story
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Azure VNet Peering&lt;/strong&gt; is straightforward: you peer two VNets, traffic flows between them at Azure backbone speeds, and you pay for data transfer. You can peer globally, which is legitimately useful. The gotcha is that peering is non-transitive by default, so if VNet A peers with VNet B, and VNet B peers with VNet C, A and C can't talk. You need to set up a hub-and-spoke with NVAs or use Virtual WAN to get around this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCI uses Local Peering Gateways (LPG)&lt;/strong&gt; for VCNs in the same region and Dynamic Routing Gateways (DRG) for cross-region. The DRG is actually pretty slick - it acts as a regional router that can connect multiple VCNs, on-premises networks via FastConnect, and even VCNs in other regions. Transitivity is built-in if you route through a DRG, which saves a lot of headache.&lt;/p&gt;

&lt;p&gt;One thing that surprised me: OCI's inter-region traffic between VCNs is free if you use their backbone. Azure charges you for cross-region VNet peering. When you're moving serious data between regions, this adds up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Internet Connectivity and NAT
&lt;/h2&gt;

&lt;p&gt;Azure gives you a few options. You can assign public IPs directly to resources, use a NAT Gateway for outbound from private subnets, or run traffic through an NVA. The NAT Gateway is fully managed and priced per hour plus data processing. It's fine, works as expected.&lt;/p&gt;

&lt;p&gt;OCI has NAT Gateways too, but also Internet Gateways. The difference matters: an Internet Gateway is for resources with public IPs that need inbound and outbound access. A NAT Gateway is for private resources that only need outbound. You attach these to your VCN's route tables. Coming from AWS, this felt familiar. Coming from Azure, it felt like extra steps, but it gives you more granular control.&lt;/p&gt;

&lt;p&gt;One weird OCI quirk: you can attach a public IP to a resource in a private subnet, but it won't work unless you have the right route table rules. This has bitten me exactly once, and that was enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security: NSGs and All That
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Azure Network Security Groups&lt;/strong&gt; attach to subnets or individual NICs. Rules are priority-based (lower number = higher priority), and you get default rules you can't delete. The portal UI for managing complex NSG rules is... not great. I end up using ARM templates or Terraform for anything non-trivial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCI has both Security Lists and Network Security Groups&lt;/strong&gt;. Security Lists are the old way, applied at the subnet level. NSGs are newer, more flexible, and work more like AWS security groups - they're stateful, you attach them to VNIC level, and they're generally the preferred approach now. The documentation pushes you toward NSGs, and you should listen.&lt;/p&gt;

&lt;p&gt;OCI's default security posture is more locked down. Azure tends to be permissive by default (especially with PaaS services), and you lock things down. OCI makes you explicitly allow traffic. Neither approach is wrong, but you need to know which world you're in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Load Balancing
&lt;/h2&gt;

&lt;p&gt;Azure's got Application Gateway (L7, WAF-capable), Load Balancer (L4, regional or global with cross-region), and Front Door (global L7 with CDN). Front Door is genuinely great for global applications, but the pricing can shock you if you're not careful.&lt;/p&gt;

&lt;p&gt;OCI has Load Balancers (L4/L7 in the same service, which is cleaner conceptually) and Network Load Balancers for ultra-low-latency L4. The performance on OCI's Network Load Balancers is wild - single-digit microsecond latency in some scenarios. If you're doing high-frequency trading or real-time gaming, this matters. For most of us, it's overkill.&lt;/p&gt;

&lt;p&gt;Configuration-wise, Azure's load balancers have more knobs to turn. OCI's are simpler but less flexible. Pick your poison.&lt;/p&gt;

&lt;h2&gt;
  
  
  Private Connectivity to Other Services
&lt;/h2&gt;

&lt;p&gt;Azure's story here has evolved into Private Link, which is honestly elegant once you understand it. You create a Private Endpoint in your VNet, it gets a private IP, and you can connect to Azure PaaS services or your own services over the Azure backbone. No public internet, no service endpoints weirdness, just private IPs. The DNS side can be tricky, though. You need private DNS zones, and linking them correctly to your VNets is a common source of frustration.&lt;/p&gt;

&lt;p&gt;OCI uses Service Gateways for private access to Oracle Services (Object Storage, etc.) without traversing the internet. It's more limited in scope than Private Link but works well for what it covers. For your own services, you're generally using private IPs within your VCN and relying on the network fabric.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hybrid Connectivity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Azure ExpressRoute&lt;/strong&gt; is mature, widely available, and works with basically every major carrier. You get private peering for your VNets, Microsoft peering for M365/Dynamics, and options for Global Reach to connect your on-prem locations through Azure's backbone. The pricing is per port plus data transfer, and it gets expensive fast in higher tiers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OCI FastConnect&lt;/strong&gt; is similar conceptually but simpler in practice. You connect to OCI, you get access to your VCNs via DRG, done. The pricing is generally lower than ExpressRoute, especially for higher bandwidths. OCI also has some interesting partnerships with Azure for direct interconnection between the two clouds, which is useful if you're running Oracle databases in OCI but everything else in Azure.&lt;/p&gt;

&lt;p&gt;The Azure-OCI Interconnect deserves its own mention. Microsoft and Oracle partnered to create dedicated connections between their clouds in certain regions. If you're running Oracle databases in OCI and need to connect them to Azure-hosted apps, this is way better than going over the internet. Latency is single-digit milliseconds in supported regions.&lt;/p&gt;

&lt;h2&gt;
  
  
  DNS and Service Discovery
&lt;/h2&gt;

&lt;p&gt;Azure DNS is solid. You can host public zones, create private zones for internal resolution, and link private zones to VNets. The integration with Private Link means DNS just works for private endpoints, once you've set up the zones.&lt;/p&gt;

&lt;p&gt;OCI uses a resolver model. Each VCN has a DNS resolver, and you can configure custom resolvers for hybrid scenarios. It works, but it feels less polished than Azure's approach. For complex hybrid DNS scenarios, you'll probably end up running your own DNS infrastructure in both clouds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability
&lt;/h2&gt;

&lt;p&gt;Azure Network Watcher gives you topology views, packet capture, connection troubleshooting, NSG flow logs, and Traffic Analytics. Flow logs go to Log Analytics, and you can query them with KQL. It's comprehensive but can be overwhelming. The cost of storing flow logs in Log Analytics also sneaks up on you.&lt;/p&gt;

&lt;p&gt;OCI's VCN Flow Logs are simpler. You enable them per subnet, they dump to Object Storage or Logging service, and you parse them yourself. There's less built-in analysis, but the raw logs are cheaper to store. If you're comfortable with log analysis tools, this is fine. If you want dashboards out of the box, Azure's further along.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance and Cost
&lt;/h2&gt;

&lt;p&gt;This is where things get spicy. OCI's network backbone is genuinely fast. They built it recently with modern hardware, and it shows. For workloads where network latency and throughput matter - databases, especially - OCI often performs better than Azure in benchmarks.&lt;/p&gt;

&lt;p&gt;Azure's network is more geographically distributed, though. If you need presence in 60+ regions, Azure's got you covered. OCI is growing fast but still has fewer regions.&lt;/p&gt;

&lt;p&gt;On cost, OCI is usually cheaper for raw compute and egress. Azure's egress charges are brutal - $0.087/GB for the first 10TB in most regions. OCI charges $0.0085/GB for the first 10TB. That's not a typo. For data-intensive workloads, this difference is massive.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Verdict?
&lt;/h2&gt;

&lt;p&gt;There isn't one, not really. Azure makes sense if you're already in the Microsoft ecosystem, need global coverage, or want mature PaaS services. The networking is complex but powerful, and you can do basically anything if you're willing to learn the 47 different ways to connect things.&lt;/p&gt;

&lt;p&gt;OCI makes sense if you're cost-conscious, running Oracle databases, or need predictable high performance. The networking is simpler but more opinionated. You'll spend less time fighting abstractions and more time understanding IP routing, which might be a plus or minus depending on your perspective.&lt;/p&gt;

&lt;p&gt;For what it's worth, I've stopped thinking about this as an either/or question. A lot of companies are running both, using Azure for general workloads and OCI for Oracle databases or cost-sensitive batch processing. The Azure-OCI interconnect makes this surprisingly practical.&lt;/p&gt;

&lt;p&gt;The real advice? Spin up free tiers in both, build a simple multi-tier app, and see which model clicks for you. Networking is one of those things where hands-on experience beats any article, including this one.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>azure</category>
      <category>architecture</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Network Resilience &amp; Routing Reliability: Lessons from Real-World Cloud Systems</title>
      <dc:creator>vaibhav bedi</dc:creator>
      <pubDate>Sat, 15 Nov 2025 21:48:13 +0000</pubDate>
      <link>https://forem.com/vaibhav_bedi_82eeb9670233/network-resilience-routing-reliability-lessons-from-real-world-cloud-systems-2joe</link>
      <guid>https://forem.com/vaibhav_bedi_82eeb9670233/network-resilience-routing-reliability-lessons-from-real-world-cloud-systems-2joe</guid>
      <description>&lt;p&gt;When you work with large-scale cloud systems long enough, you realize one thing very quickly: the network is always the first thing blamed and the last thing actually understood.&lt;/p&gt;

&lt;p&gt;But here's the truth — networks fail. Links go down. Hardware glitches. Someone pushes a bad config. Routing takes an unexpected path. And when that happens, everything sitting on top — APIs, microservices, storage, ML systems — starts to feel the pain.&lt;/p&gt;

&lt;p&gt;Over the last few years working on cloud networking and traffic reliability, I've seen how much impact a well-designed (or poorly designed) network can have on availability. So I wanted to share some practical thoughts on what network resilience actually means and how routing reliability helps you survive failures without major outages.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what is network resilience really?
&lt;/h2&gt;

&lt;p&gt;Network resilience is simply the ability of your network to keep things running when something inevitably breaks.&lt;/p&gt;

&lt;p&gt;It's not about avoiding failure — no one can do that.&lt;/p&gt;

&lt;p&gt;It's about absorbing failure.&lt;/p&gt;

&lt;p&gt;A resilient network:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has redundant paths&lt;/li&gt;
&lt;li&gt;Detects failures quickly&lt;/li&gt;
&lt;li&gt;Moves traffic automatically&lt;/li&gt;
&lt;li&gt;Doesn't depend on someone debugging a router at 2 AM&lt;/li&gt;
&lt;li&gt;Recovers on its own before customers notice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your network depends on humans reacting to alarms, it's not resilient. It's reactive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Routing reliability: the underrated hero
&lt;/h2&gt;

&lt;p&gt;Even if you build all the redundancy you want, routing is what decides whether packets actually get where they're supposed to.&lt;/p&gt;

&lt;p&gt;Reliable routing means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traffic always takes a healthy path&lt;/li&gt;
&lt;li&gt;Failovers happen fast&lt;/li&gt;
&lt;li&gt;You avoid loops, blackholes, asymmetric paths&lt;/li&gt;
&lt;li&gt;Your routing tables don't flap every few minutes&lt;/li&gt;
&lt;li&gt;A single node failure doesn't blow up half the region&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud networks run millions of flows per second. A few seconds of routing instability can create a chain reaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What resilient networks look like (based on real systems)
&lt;/h2&gt;

&lt;p&gt;Here are the core patterns you'll see in production cloud networks:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Multiple equal-cost paths everywhere
&lt;/h3&gt;

&lt;p&gt;Most modern networks (AWS, OCI, GCP, Azure) use ECMP so traffic can be instantly redistributed if a link dies.&lt;/p&gt;

&lt;p&gt;This gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher throughput&lt;/li&gt;
&lt;li&gt;Built-in load balancing&lt;/li&gt;
&lt;li&gt;Immediate failover&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When one path fails, traffic shifts without waiting for a human.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fast, sub-second failure detection
&lt;/h3&gt;

&lt;p&gt;Protocols like BGP/OSPF aren't fast enough out of the box. So you add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BFD (Bidirectional Forwarding Detection)&lt;/li&gt;
&lt;li&gt;Aggressive timers&lt;/li&gt;
&lt;li&gt;Graceful restart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple: Detect failure in milliseconds, converge the route in under a second.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Automated traffic engineering
&lt;/h3&gt;

&lt;p&gt;In cloud environments, rerouting traffic is not a manual job.&lt;/p&gt;

&lt;p&gt;Automation watches for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High latency&lt;/li&gt;
&lt;li&gt;Congested links&lt;/li&gt;
&lt;li&gt;Flapping routes&lt;/li&gt;
&lt;li&gt;Degraded circuits&lt;/li&gt;
&lt;li&gt;Fiber cuts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once it sees something off, it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removes the bad link from rotation&lt;/li&gt;
&lt;li&gt;Recomputes paths&lt;/li&gt;
&lt;li&gt;Updates routing configs&lt;/li&gt;
&lt;li&gt;Validates that the change worked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All without anyone needing to jump on a Zoom bridge.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Safe, layered network architecture
&lt;/h3&gt;

&lt;p&gt;A resilient network is usually built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leaf-spine fabrics&lt;/li&gt;
&lt;li&gt;Region-to-region backbones&lt;/li&gt;
&lt;li&gt;Independent control planes&lt;/li&gt;
&lt;li&gt;Redundant data paths&lt;/li&gt;
&lt;li&gt;Lots of horizontal scaling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't rely on any single device to "never fail." Everything has a backup, and the backup also has a backup.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Configuration discipline (arguably the most important)
&lt;/h3&gt;

&lt;p&gt;Most outages are not caused by hardware. They're caused by someone pushing a config that shouldn't have been pushed.&lt;/p&gt;

&lt;p&gt;Strong networks use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automated config generation&lt;/li&gt;
&lt;li&gt;Static and dynamic validation&lt;/li&gt;
&lt;li&gt;Canary/gradual rollout&lt;/li&gt;
&lt;li&gt;Automatic rollback&lt;/li&gt;
&lt;li&gt;Change health checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your network team is still editing configs directly on routers… good luck.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Proper telemetry &amp;amp; observability
&lt;/h3&gt;

&lt;p&gt;You can't fix what you can't see.&lt;/p&gt;

&lt;p&gt;Good telemetry includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Packet drops&lt;/li&gt;
&lt;li&gt;ECN marks&lt;/li&gt;
&lt;li&gt;Route flaps&lt;/li&gt;
&lt;li&gt;Latency distribution (not averages!)&lt;/li&gt;
&lt;li&gt;Flow-level visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When your monitoring is good, your MTTR automatically improves.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a real failover usually plays out
&lt;/h2&gt;

&lt;p&gt;Here's what typically happens when a backbone link goes down:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;BFD detects the drop&lt;/li&gt;
&lt;li&gt;Routing protocol withdraws the route&lt;/li&gt;
&lt;li&gt;ECMP redistributes traffic to remaining good paths&lt;/li&gt;
&lt;li&gt;Traffic engineering notices new congestion hotspots&lt;/li&gt;
&lt;li&gt;Automation picks alternative backbone paths&lt;/li&gt;
&lt;li&gt;Routing configs get updated automatically&lt;/li&gt;
&lt;li&gt;System monitors confirm stability&lt;/li&gt;
&lt;li&gt;Traffic returns to normal&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of this usually happens in a few seconds. If humans have to intervene, your design is not resilient enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  How you can apply these ideas to smaller environments
&lt;/h2&gt;

&lt;p&gt;You don't need to be a cloud provider to use these principles. Even a small on-prem or hybrid setup benefits from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redundant paths&lt;/li&gt;
&lt;li&gt;Dynamic routing (avoid static routes unless absolutely needed)&lt;/li&gt;
&lt;li&gt;BFD for fast failure detection&lt;/li&gt;
&lt;li&gt;Automated failover scripts&lt;/li&gt;
&lt;li&gt;Continuous monitoring&lt;/li&gt;
&lt;li&gt;Safe, validated config changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your system can survive link failures without waking someone up at night, you're already ahead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Networks are messy. They fail in unexpected ways. They recover at the worst times. And they surprise you when you least expect it.&lt;/p&gt;

&lt;p&gt;But if you design for failure—not hope for the best—you end up with systems that stay online even when things go wrong.&lt;/p&gt;

&lt;p&gt;That's really what network resilience and routing reliability are all about.&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>networking</category>
      <category>systemdesign</category>
    </item>
  </channel>
</rss>
