RSSAmplifier

Blog

Dorokhovich — Blog

Articles on Ruby, Go, DevOps, Security, and more.

dorokhovich.comRSS feed ↗43 posts

Latest posts

Local Kubernetes Dev — Part 1: The inner dev loop and why run a cluster locally

What the inner dev loop is, why Kubernetes makes it painfully slow, and why it's cheaper to close the 'works locally / breaks in the cluster' gap before you deploy.

Local Kubernetes Dev — Part 2: Production-like environments — what and why

What 'production-like' really means, where to draw the line between fidelity and convenience, and why docker-compose is an anti-pattern as a stand-in for prod.

Local Kubernetes Dev — Part 3: Tooling overview — who does what

A map of the 2025–2026 ecosystem: Docker, kubectl, local clusters (k3d/kind/minikube), Helm, Kustomize, loop accelerators (Tilt/Skaffold), k9s — and why we pick k3d + Tilt.

Local Kubernetes Dev — Part 4: Setting up your workstation

Install Docker, kubectl, k3d, helm and tilt on macOS, Linux and Windows+WSL2, add k9s, and verify the whole toolchain works.

Local Kubernetes Dev — Part 5: Spinning up a local cluster with k3d

Why k3d is the fastest, lightest way to run Kubernetes locally, when to reach for kind or minikube instead, and how to create a cluster with a built-in registry.

Local Kubernetes Dev — Part 6: Containerizing your service — writing a Dockerfile

Write a production-ready Dockerfile: multi-stage builds, layer caching, slim base images, and the common mistakes that make images slow and bloated.

Local Kubernetes Dev — Part 7: Kubernetes manifests for your service

The minimal set of manifests — Deployment, Service, namespace — to get your service running, explained declaratively.

Local Kubernetes Dev — Part 8: Tilt — a fast development loop

Tilt collapses the edit → build → push → apply → wait loop into seconds with live updates, automatic rebuilds and a handy dashboard.

Local Kubernetes Dev — Part 9: Dependencies — databases, queues, caches

Run PostgreSQL, Redis and RabbitMQ alongside your service with Helm so your local setup stays close to prod instead of a zoo of start scripts.

Local Kubernetes Dev — Part 10: Configuration and secrets

Separate configuration from code with ConfigMaps and Secrets, and learn how your service discovers the database without hardcoded credentials.

Local Kubernetes Dev — Part 11: Networking — reaching your service and Ingress

How traffic reaches your Pod: Service types, port-forwarding, and an Ingress with Traefik for clean hostnames in your local cluster.

Local Kubernetes Dev — Part 12: Debugging and observability

The basic debugging toolkit — logs, describe, events, a terminal UI — and where to grow once the basic commands stop being enough.

Local Kubernetes Dev — Part 13: Making your local setup truly production-like

Close the last gaps to prod: resource limits, liveness/readiness probes, replicas, Helm/Kustomize and real config parity.

Local Kubernetes Dev — Part 14: Preparing for deployment and CI

Turn your local setup into a repeatable deploy: package with Helm/Kustomize and wire up a CI pipeline that builds, tests and ships.

Local Kubernetes Dev — Part 15: Common problems and how to fix them

ImagePullBackOff, CrashLoopBackOff and friends: the three commands that diagnose almost everything and the short list of common root causes.

Local Kubernetes Dev — Part 16: Conclusion and next steps

What you've built, a recap of the whole toolchain, and where to go next — GitOps, remote dev, and scaling the approach to a team.

When the Internet's Foundation Cracks

A comprehensive analysis of the November 2025 Cloudflare outage that affected 20% of global web traffic, including root causes, real-world impact, and practical DevOps strategies for building resilient infrastructure.

Remote Access to Raspberry Pi via Reverse SSH Tunnel

Complete guide to setting up secure remote access to your Raspberry Pi from anywhere in the world using Reverse SSH and AWS EC2. Works behind any NAT without router configuration.

Setting Up VNC Access to Raspberry Pi via AWS EC2 and a Custom Domain

A step-by-step guide to securely setting up VNC access to your Raspberry Pi using an AWS EC2 intermediate server and your own domain. Works behind any NAT without port forwarding.

Deployment Strategies

Step-by-step guide to modern deployment strategies: Blue-Green, Canary, Rolling Updates, Feature Flags, and A/B Testing. Explained in simple terms with pros, cons, risks, metrics, and practical examples.

Git Branching Fundamentals for Releases

A detailed breakdown of Git branches: why they're needed, what types exist (feature, develop, release, hotfix, main), the history of their evolution, and the future of branching. Complete lifecycle of a release branch with practical examples and cheatsheet.

Release Orchestration: A Practical Guide for 2025

A structured introduction to release orchestration: core concepts, roles, tools, and metrics that enable predictable, zero-downtime releases.

Overview of Release Orchestration Approaches

A comparison of manual releases, script automation, CI/CD platforms, and GitOps — and when each approach works best.

Evolution of Practices: From Manual Releases to GitOps

How engineering teams moved from night releases and manual checklists to declarative infra, pipelines, and policy-as-code.

Release Orchestration Learning Path

A step-by-step curriculum for engineers and tech leads: fundamentals, tools, patterns, practices, books, and hands-on projects.

Ruby Community Crisis: Ruby Central's Hostile Takeover of RubyGems

Comprehensive analysis of the unprecedented crisis in Ruby ecosystem when Ruby Central forcibly took control of critical RubyGems and Bundler infrastructure.

Incremental Constraints: How Small Rules Change Team Culture

From fragile legacy code to a healthy engineering culture — how one team used incremental constraints like test coverage, performance checks, and security scans to turn chaos into quality.

How RubyGems Protects Us From Supply Chain Attacks (And Why Every Ruby Developer Should Care)

What happens behind the scenes during gem install: automated scanning, risk scoring, retroactive scanning, incident response — and why companies should support RubyGems critical infrastructure.

Blocking Unsafe Code: Security Audits in GitHub Actions

Step-by-step guide to integrating bundler-audit, license_finder, and OSV Scanner into CI/CD pipelines — with YAML examples that block deployments until issues are fixed.

Retiring Rack::BodyProxy: Post-Response Hooks with rack.response_finished

Why Rack::BodyProxy is fading out, how rack.response_finished delivers accurate post-response hooks with fewer allocations, and a step-by-step migration path for your middleware.

Database Schema Evolution: Safe DB Evolution Principles in Rails

Forward-only migrations, expand–contract pattern, online DDL, dual-write models, monitoring, and disaster recovery — a practical guide to evolving Rails database schemas without downtime.

Feature Flags (Feature Toggles) in Simple Terms

Learn how feature flags work, why they're needed, and how to implement them in your applications. Discover how to enable safe releases, quick rollbacks, A/B testing, and flexible configuration without code changes.

Keycloak and Identity Federation: A Comprehensive Guide

A comprehensive guide to Keycloak and identity federation, covering modern IAM, authentication functions, user experience, and security benefits.

Extending Keycloak with Custom Providers

Enhancing Identity and Access Management with tailored solutions for authentication, authorization, and user management through custom Keycloak providers.

Integration of Keycloak with Next.js

A comprehensive guide to integrating Keycloak authentication with Next.js applications using the App Router and NextAuth.js for secure, streamlined user authentication.

Creating Applications with Different Access Levels Using Keycloak (RBAC)

Learn how to implement Role-Based Access Control (RBAC) in your applications using Keycloak to manage different user access levels securely and efficiently for Python and FastAPI applications.

Understanding Realms, Clients, and Roles in Keycloak

A comprehensive guide to understanding the core concepts of Keycloak: Realms, Clients, and Roles for effective identity and access management in your applications.

How to Generate a requirements.txt File for an Existing Python Project

Learn two effective methods to create a requirements.txt file for your Python project: using virtual environments with pip freeze and scanning imports with pipreqs.

Storytelling in Software Design: Methodologies and Importance

Explore how storytelling principles enhance software design through methodologies like DDD, BDD, and Event Storming, and why narrative structures are critical for modern development.

Deploying Keycloak on AWS ECS with Fargate using Terraform

A comprehensive guide to deploying Keycloak on AWS ECS with Fargate using Terraform, including architecture overview and key components.

Mega Guide: How to Deploy Keycloak in a Cluster with Nginx in 10 Minutes!

Learn how to deploy Keycloak in a clustered environment with Nginx as a load balancer, exploring different clustering modes including JGroups and Kubernetes.

Homebrew Services: How to Use, How It Works, and Alternatives

An exploration of Homebrew Services for macOS, explaining why it's needed, how it works, and what alternatives are available.

LangChain. What is it for? Alternatives?

A deep dive into LangChain, exploring its purpose, functionality, and potential alternatives for AI development.