Archive of posts with category 'DevOps'

Terraform State Locking with S3 and DynamoDB in 2026

The moment two engineers run terraform apply at the same time without state locking, you have a race condition that can corrupt your entire infrastructure state. Both processes read the...

GitLab CI Environments and Review Apps in 2026

Review apps changed how my team does code review. Instead of reading diffs, reviewers click a link and see the actual change running. The designer can verify spacing on the...

Crossplane vs Terraform in 2026: Which IaC Approach Wins?

I’ve been running Crossplane alongside Terraform for six months. Here’s my honest take on where each one shines.

Scrum + Team Topologies: Why Your DevOps Team Structure Might Be Slowing You Down

I spent three years at a company that spent $4 million on “DevOps transformation.” New tools, new cloud infrastructure, training budgets, the works. The velocity of the platform stayed flat....

OPA + Terraform: Policy-as-Code Guardrails in 2026

The first time someone accidentally created a p4d.24xlarge instance in production, we started taking policy-as-code seriously. No one meant to. The Terraform code was correct, the pipeline ran fine, the...

Terraform Testing in 2026: Native Tests, Terratest, and OPA

I shipped Terraform code without tests for years. Then a terraform apply deleted a production database because a conditional flipped. The resource had a lifecycle { prevent_destroy = true }...

AWS VPC Design Patterns in 2026: From Single Account to Multi-Account Landing Zone

The VPC decisions you make on day one will follow you for years. I’ve lived through the consequences—redesigning a network that was built without proper CIDR planning, watching a simple...

Migrate Jenkins to GitLab CI: The Complete 2026 Guide

I’ve migrated three organizations from Jenkins to GitLab CI. Here’s everything I wish someone had told me before starting.

GitLab CI Parallel Jobs and Matrix Builds for Monorepos

Our monorepo pipeline used to take 15 minutes. Every commit ran tests for the API, the background worker, and the frontend — in sequence, regardless of what changed. A one-line...

SBOM + Container Signing on GitLab CI: Supply Chain Security in 2026

Two years ago, SBOMs were a checkbox on a compliance spreadsheet. In 2026, they’re a hard requirement. The US Executive Order 14028 mandated that any software sold to federal agencies...

Platform Engineering with Backstage on AWS: A Practical Guide for 2026

I watched a backend engineer spend two hours yesterday trying to figure out which CloudFormation template to use for their new service. They had three options in a Confluence page....

Terraform + MCP: AI Agents Managing Infrastructure in 2026

I’ve been using Terraform MCP for three months now, and it’s the most significant shift in how I interact with infrastructure since Terraform itself. That’s not hyperbole. I can ask...

GitLab CI Services: Run Databases in Your Pipeline Tests

The first time I tried running integration tests in GitLab CI, I hardcoded a database connection to localhost and wondered why nothing worked. The job would spin up, find no...

GitLab + ArgoCD: GitOps Deployments on EKS in 2026

I spent three years pushing changes to Kubernetes with kubectl apply inside CI/CD pipelines. Every deployment required cluster credentials in GitLab. Every pipeline failure left the cluster in an unknown...

Terraform for_each vs count: When to Use Each in 2026

I’ve made the mistake of using count where I should have used for_each. Most people have. You end up with a Terraform state that looks reasonable until you need to...

OpenTelemetry + CloudWatch: Practical Observability for AWS in 2026

I used to instrument AWS services the hard way. AWS X-Ray SDK here, CloudWatch Logs there, custom metrics scattered across a dozen boto3 calls. Each service had its own observability...

AWS FinOps in 2026: Cost Optimization with the Well-Architected Framework

I’ve watched too many teams misunderstand FinOps. They think it means shutting down instances at night or buying bigger discounts. That’s not FinOps. That’s panic cost-cutting. Real FinOps is about...

GitLab CI/CD + Terraform: A Production IaC Pipeline in 2026

Most tutorials show you how to run terraform apply on a git push and call it a day. I’ve inherited infrastructure built that way. It’s chaos. Drift accumulates silently. Rollbacks...

Terraform vs OpenTofu 2026: Which One Should Your Team Use?

When HashiCorp changed Terraform’s license in August 2023, it forced a reckoning across the infrastructure-as-code community. The shift to the Business Source License (BSL) sent shockwaves through organizations that had...

GitLab Runner Tags: The Complete Guide for 2026

At some point in every GitLab CI/CD setup, the single shared runner stops being enough. Backend tests queue behind someone’s slow frontend build. GPU jobs wait on the same runner...

Terraform Cloud vs OpenTofu in 2026: Is HCP Terraform Still Worth It?

The infrastructure-as-code tooling market looks different in 2026 than it did three years ago. HashiCorp’s 2023 license change from MPL to BSL fractured the Terraform community, triggered the OpenTofu fork...

GitLab vs GitHub in 2026: What Actually Matters for DevOps Teams

Every few months someone on my team asks whether we should migrate from GitLab to GitHub, or vice versa. In 2026 that question is harder to answer than it was...

Terraform Import in 2026: The Complete Guide Including the New import Block

Every infrastructure team hits this wall eventually. The AWS account already has hundreds of resources — VPCs, security groups, RDS clusters, S3 buckets — that predate any Terraform adoption. Someone...

GitLab Runner Handbook [2026 Edition]

GitLab Runner is one of those tools that sits at the heart of GitLab CI/CD. It picks up the jobs you define in your pipeline and runs them, reporting results...

GitLab CI Deploy to AWS: Elastic Beanstalk, ECS Fargate, and App Runner in 2026

I’ve been deploying to AWS from GitLab CI for years. The patterns have shifted. In 2021 the answer was almost always Elastic Beanstalk — it was the lowest-friction path from...

Testing in DevOps: Strategies That Actually Work in 2026

Most teams do not have a testing problem. They have a feedback-latency problem. Code gets written, pushed, and the first signal that something is wrong arrives from a production alert...

DevOps for Microservices: Enhancing Scalability in Startup Environments

Startups face a choice: build a monolith and tear it apart later, or start with microservices and add DevOps practices from day one. Most teams that pick the second path...

Microservices vs Monolithic Architectures

Picking an architecture style matters. A lot. You either go with a monolith, which is basically one big codebase where everything lives together, or you split things into microservices, where...

Supercharging System Scalability with Event-Driven Architectures

Can traditional systems handle the expectations we have now for instant responses and real-time engagement? Imagine a system that reacts immediately to what users do, and can handle thousands or...

Revolutionizing App Development: Serverless Operational Model

Think of it this way: what if the servers running your app could scale up automatically when traffic spikes, and scale down when it’s quiet, without you touching anything? That’s...

Key Considerations for Building Scalable Modern Apps

The Importance of Modern Application Development

Unleashing the Power of AI & ML in Enhancing Cloud Security

As cloud usage grows, data spreads across servers everywhere. This creates a real problem: traditional security tools cannot keep up with cybercriminals who move fast and adapt faster. AI and...

Unlock Savings with DevOps Engineers: Maximizing Efficiency

The Role of DevOps Engineers in Cost-Saving

Explaining DevOps for Kids

What is DevOps?

Introduction to DevSecOps with GitLab CI/CD

In software development, security and efficiency matter. DevOps has changed how teams build, test, and deploy software, enabling faster delivery and collaboration between development and operations. However, with evolving security...

The Future of Software Development: AI and DevSecOps

Welcome to DevSecOps and Artificial Intelligence (AI) in software development. This post explores how AI fits into the DevSecOps landscape and how teams handle modern software development challenges.

Harnessing Generative AI for Efficient in DevOps

Cloud services run fast, and when they don’t, customers leave. That’s the reality of running anything online today. Downtime costs money. Latency costs customers. If you’ve ever watched your error...

Breaking Down Barriers: GitLab and Jenkins in Modern DevOps

This article compares GitLab and Jenkins, two popular DevOps tools. We’ll explore their strengths and weaknesses to help you decide which fits your needs.

The Advantages of Implementing CI/CD

If you’ve been watching software teams for any length of time, you know the old way of doing things: developers finish their code, hand it off to testers, who then...

The Comprehensive Guide to OpenSearch for Observability

This guide covers OpenSearch, an open-source, distributed search, log analytics, and data visualization technology used by DevOps organizations.

The Potential of Kubernetes Service in DevOps for Machine Learning

DevOps combines software development and IT operations, which shortens system development cycles and enables continuous delivery. Machine learning needs significant computational resources to process large amounts of data quickly. This...

SDET: A Comprehensive Guide to Mastering SDET Skills

If you have spent any time in modern software teams, you have probably heard the term SDET. Short for Software Development Engineer in Test, this role sits at the intersection...

SaaS vs. PaaS vs. IaaS: Discover the Right Cloud Model

Cloud computing changes how businesses work. But if you’re thinking about moving away from managing your own IT, you need to know what options are actually available.

Shift Management in Cloud Migration: Smooth Adoption, Minimized Disruption

Cloud migration involves more than just moving data and services. How organizations handle the human side of this transition determines whether it goes smoothly or falls apart. Change management addresses...

Practical Examples of GitLab CI YML

In this tutorial, we’ll walk through a real project that needs a GitLab CI/CD pipeline. We’ll look at actual working examples and explain why gitlab ci yml examples matter in...

A Comprehensive Guide to Mastering Terraform Lambda Modules

A DevOps team at a growing company needed to handle automation and event-driven responses across multiple applications. Managing numerous Lambda functions individually became unwieldy. Terraform provided a way to solve...

How To Set Up Site-to-Site VPN Connections In The Azure Portal

When you want to use IP replication between the recovery site and the on-premises production site, you must configure a site-to-site VPN connection. Before establishing the connection, there are some...

AWS Enhanced Networking: The Ultimate Guide for Beginners

AWS Enhanced Networking improves how your EC2 instances talk to each other. It uses technologies like the Elastic Network Adapter (ENA) and Single Root I/O Virtualization (SR-IOV) to deliver faster,...

Hire DevOps Developers: Ultimate Solution for Your IT Department

Software development has evolved quickly over the years. Businesses now face pressure to deliver high-quality products faster due to increasing demand for software and apps. DevOps and Site Reliability Engineering...

Terraform Destroy: Why, When, Where, and How to Use It

Terraform lets you manage cloud infrastructure through code instead of clicking around in web consoles. Define what you want, apply it, and Terraform figures out how to make it happen....

Terraform Apply: The Definitive Guide

Terraform is an open-source infrastructure as a code tool that lets you create, change, and improve infrastructure safely and predictably.

Cloud Computing in Education: Definition, Benefits, and Examples

If you have spent any time in education over the past decade, you have probably noticed that the way people share files, collaborate on projects, and access course materials has...

Why Terraform is an essential tool for DevOps Engineers

As a devops engineer, managing infrastructure eats up a lot of my time. Keeping track of dozens of components, making sure everything talks to each other correctly - it adds...

Terraform Lookup Function – Complete Guide with Examples

If you work with Terraform, you probably use variables to store values that your configurations can reference later. One thing I find myself reaching for often is the lookup function...

DevOps Engineer or Software Engineer? Which one is the best?

So you’re trying to decide between DevOps and Software Engineering. I get it—these roles blur together more than most job postings let on, and the advice out there is usually...

AWS API Gateway with Nginx and WAF

I ran into an interesting architecture problem recently. We had multiple Web Applications running on EC2 instances behind AWS API Gateway, and we needed to add a WAF without breaking...

How to use Terraform Null Resource – Examples!

If you’ve worked with Terraform for a while, you’ve probably hit situations where you need to run something that doesn’t fit neatly into a cloud resource. Maybe you need to...

GitLab Roles – How to define Permissions

If you’re working with GitLab, you’ve probably noticed that managing who can do what gets complicated fast. This post walks through the built-in roles GitLab gives you, what each one...

Why and How you should use Terraform Modules

I’ve gotten quite a few requests to write about Terraform Modules. The topic comes up a lot because people get confused about where modules end and resources begin. Let me...

How Serverless Architecture Can Help with Building Software Applications

Serverless sounds like a new thing, but it’s actually been brewing for decades. Back in the 1950s, computing cost an arm and a leg — we’re talking hundreds of dollars...

What no one tells you about AWS Auto Scaling Group!

Most people know that Auto Scaling Groups monitor your servers and adjust capacity based on traffic. That’s the basic pitch, anyway.

How does AWS contribute to DevOps?

With the evolution of Cloud Computing, the way we access applications and databases has changed. We now access these things over the internet, which has pushed the Cloud Computing providers...

The easiest way to define AWS Tag in your Terraform Code.

AWS tags let you attach custom key-value pairs to just about any resource in your account. If you’ve ever tried managing tags manually across dozens of resources, you know it...

Terraform Plan [Tricks] – What you should know about

When you start learning Terraform, the first thing you’ll run is terraform plan. It sounds simple, but understanding what it does will save you from costly mistakes later.

Terraform and Ansible

If you’ve worked with cloud infrastructure, you’ve probably heard of Terraform and Ansible. They’re both Infrastructure as Code tools that let DevOps engineers automate repetitive tasks instead of clicking around...

Infrastructure as Code Tools

If you are moving to the cloud, infrastructure as code (IaC) should be part of your toolkit. It helps teams ship faster and keeps environments consistent. But you need the...

Protect Passwords in the Cloud [Full Project Review]

I want to walk you through a real project I worked on. The ask was straightforward: go through all our applications and yank out any passwords that were hardcoded in...

Terraform Random Password

Here’s a quick way to generate random passwords with Terraform. This comes in handy when you’re setting up RDS, AWS Secret Manager, MSK, or anything else that needs authentication. The...

How to target resources on Terraform

When you run terraform apply without any flags, Terraform applies all the changes in your plan at once. If you’ve ever worked on a large Terraform project, you know how...

Terraform Dynamic Block

Terraform lets you manage a lot of infrastructure declaratively, but sometimes you need to repeat the same nested block configuration multiple times – with slight variations. That’s where dynamic blocks...

How to use AWS Secret Manager

AWS created Secrets Manager after hearing from customers that managing secrets was critical but difficult. IAM Roles help because they provide temporary credentials automatically. Attach a role to an EC2...

Terraform Conditional

Terraform is a declarative language. That means you describe the desired state, and Terraform figures out how to get there. Unlike procedural languages, you don’t write step-by-step instructions.

Terraform Environment Variables

If you have been working with Terraform for a while, you probably already know that environment variables can make your life easier, especially when running Terraform in CI/CD pipelines. You...

Terraform Debug

When Terraform does not do what you expect, you need to figure out why. This post covers the debugging tools Terraform gives you and how I use them in practice....

Terraform Variable Types

I want to walk you through Terraform variable types. If you’ve worked with other programming languages, you’ll find Terraform’s approach familiar. Variables hold your data, and you need to know...

GitLab Webhooks [Python and Google Chat Example]

Webhooks let GitLab push HTTP requests to your app when something happens. You can use this to get notified or trigger automation without polling an API.

GitLab CI Cache

If you run the same pipeline over and over, waiting for npm install or bundle install every time, you start wondering if there’s a better way. There is. GitLab CI...

Terraform Workspaces

If you’ve used Terraform for any serious infrastructure work, you’ve probably felt the pain of managing separate state files for dev, staging, and production. That’s exactly what workspaces solve.

GitLab CI Artifacts

Artifacts let you persist files between CI/CD jobs. If your pipeline produces build outputs, test reports, or any other files you need later, GitLab stores them as artifacts. You can...

Terraform State [Complete Guide]

Terraform needs to track state about your infrastructure. This state tells Terraform how your configuration maps to real resources already running in the cloud, stores metadata about those resources, and...

Terraform Taint [Replace Resource]

Sometimes a resource goes sideways and Terraform loses track. Maybe an application inside a VM crashed while the VM itself keeps running. Or someone manually patched a database server outside...

What is AWS SNS?

Let’s look at another AWS service for decoupling your applications. This one’s called Simple Notification Service, or SNS.

GitLab CI Rules – Change Pipeline Workflow

GitLab’s rules keyword gives you control over whether a job runs or gets skipped. You build these rules from conditions that check variables and events.

SQS Dead Letter Queue [Complete Guide]

This article explains how SQS dead letter queues work and when to use them. If you haven’t read our SQS queue overview, start there first.

AWS SQS – All Topics that you need to know [Exam Tips]

Let’s talk about how to decouple applications using poll-based messaging. I’ll walk you through what SQS does, the key settings you’ll touch in practice, and how visibility timeout keeps your...

Decoupled Architecture [Exam Tips]

If you haven’t read it yet, check out our post on horizontal vs vertical scaling. Now let’s talk about what decoupling your applications actually means and how to design a...

Launch Template vs Launch Configuration [Exam Tips]

If you have launched EC2 instances through the wizard, you know it involves a fair amount of clicking. Image ID, instance type, network, security groups, storage – it adds up....

Horizontal vs Vertical Scaling in AWS

There are two ways to scale in AWS: vertical and horizontal. I want to start with vertical scaling because it’s the approach most of us learned first. Then we’ll get...

Spot Instances in AWS [Complete Guide]

I have been running workloads on AWS for years, and one of the easiest ways to cut your EC2 bill is Spot Instances. In this post I will walk through...

Optimize S3 Performance

S3 is fast out of the box, but there’s a difference between “works fine” and “handles serious traffic.” This post covers how to push S3 harder without resorting to Transfer...

Gitlab Remove Project – Faster and Secure Way

I had to clean up a bunch of old projects on GitLab recently, and figured I’d write this down while it’s fresh. If your GitLab instance has too many abandoned...

Terraform Count [Save your time by using it]

Terraform is a solid tool for describing your infrastructure as code. But if you need to create multiple resources that are nearly identical, copying and pasting the same block gets...

Terraform Output – What you should know

Terraform outputs are how you get data out of your infrastructure. If you have ever run terraform apply and seen those printed values at the end, those are outputs. They...

Terraform Data – What is and How to use it.

Terraform manages cloud infrastructure as code. You describe what you want, and it figures out how to make it happen. Like any programming language, Terraform has features that aren’t obvious...

Terraform Locals

If you have spent any time writing Terraform, you know that your configurations can get messy fast. You end up repeating the same expressions, hard-coding the same values, and before...

Adding SSH Key on Gitlab – Speed up SSH communication

If you work with GitLab, you probably type your username and password every time you push code. It gets old fast. SSH keys fix that: once set up, GitLab authenticates...

Terraform Template File

Terraform has a handy way to render configuration files dynamically by injecting variables into templates. If you have ever needed to generate a user-data script, a config file, or a...

AWS KMS vs CloudHSM

Let’s talk about CloudHSM and how it compares to KMS. In my previous post, I covered AWS KMS in detail, including command-line examples.

AWS KMS CLI

I work with AWS KMS regularly, and in this post I want to share what I’ve learned about the key management service and how to use it from the command...

Run Terraform from Gitlab CI

GitLab is more than a code repo. You can build, test, and deploy straight from it. If you are already working with Infrastructure as Code, you probably use Terraform locally....

Gitlab Rename Branch

Renaming a branch in GitLab is straightforward, but the exact steps depend on what kind of branch you’re dealing with. Here’s how to handle it.

Gitlab CI Variables [Complete Guide]

GitLab CI is a solid choice for building and deploying applications. You get automation, full change tracking, and a pipeline system that handles the heavy lifting.

How to execute Cloud Formation on Gitlab

I wanted to share how I set up CloudFormation templates to run through GitLab CI/CD. If you’ve been writing templates and running them manually from your terminal, moving the whole...

Autoscaling GitLab CI on AWS Fargate

I have been running GitLab CI at scale for a while now, and one thing I keep running into is the need for more hardware as applications get more complex....

Build Docker Image on Gitlab [without dind and with AWS ECR]

Building a Docker image on GitLab sounds simple, and it usually is – until you hit caching problems or try to push to a remote registry. I ran into these...

Gitlab Runner and Maven – Guide [With the efficient cache method]

If you are building Java applications, you need Gitlab Runner and Maven in your CI/CD pipeline. This post walks through everything required to get your Java project building on Gitlab,...

Sonarqube with Docker and Javascript [Everything That You Need to Know]

If you want to analyze a JavaScript project with SonarQube but don’t want to install Java, Node.js, and a bunch of other tools on your machine, Docker is the way...

How to use Sonarqube with Docker and Maven

I’ve been using SonarQube with Docker and Maven for years, and it’s still my go-to setup for local development. Let me walk you through how I run it without spending...

Terraform Tutorial: Drift Detection Strategies

Teams sometimes assume their infrastructure-as-code templates are the final word on what’s running. That’s rarely true for long. Configuration drift — the gap between what your code says and what’s...