Available for opportunities

Abdur Rahim

DevOps Engineer Dhaka, Bangladesh

DevOps Engineer with 5+ years turning fragile, manually-deployed systems into automated, observable, production-grade infrastructure — across enterprise SaaS, hospital-grade platforms, and 100+ servers.

Abdur Rahim — DevOps Engineer
uptime 99.9%
// About

From systems support to cloud-native

DevOps Engineer with 5+ years of progressive experience — from Linux system support and on-premises deployment to cloud-native infrastructure. I build CI/CD pipelines, manage AWS and Kubernetes workloads, and set up end-to-end observability, with a strong focus on automation, security, and production reliability.

5+
Years in DevOps
100+
Servers deployed
24/7
Observability
GitOps
CI/CD delivery
// Services

How I can help

Practical, production-grade DevOps engagements for startups, SaaS teams, and engineering orgs that need reliable infrastructure without a full-time hire.

AWS Infrastructure & Cloud Migration

Design and provision AWS environments (EC2, VPC, IAM, load balancing) and migrate existing workloads from on-prem or another cloud with minimal downtime.

Dockerization & Kubernetes

Containerize applications with production-ready Dockerfiles, then orchestrate them on Kubernetes with proper resource limits, health checks, and rollout strategies.

CI/CD Pipeline Engineering

Build automated build-test-deploy pipelines with GitHub Actions or Jenkins, including security scanning, approval gates, and rollback on failure.

Infrastructure Automation

Codify infrastructure with Terraform and Ansible so environments are reproducible, version-controlled, and no longer dependent on manual server setup.

Production Deployment & Release Management

Ship safely with GitOps workflows (Argo CD), blue-green or canary rollouts, and clear rollback paths so releases stop being a source of anxiety.

Monitoring & Observability

Full-stack observability with Prometheus, Grafana, and uptime/error alerting (Uptime Kuma, Sentry) so incidents are caught before customers notice.

Linux Systems Administration

Server hardening, networking, firewall configuration, and day-to-day administration across on-prem and cloud Linux fleets, at any scale.

Performance Optimization

Profile and tune application, database, and infrastructure bottlenecks — caching, load balancing, and right-sizing resources for real traffic patterns.

Security Best Practices

Image vulnerability scanning (Trivy), least-privilege IAM, secrets management, and network hardening built into the pipeline, not bolted on after.

// Skills

Tools & technologies

Cloud & Infrastructure

AWS EKS Proxmox VE Docker Kubernetes Terraform Ansible

CI/CD & Automation

GitHub Actions Jenkins Argo CD Git Bash Python

Observability

Prometheus Grafana Node Exporter Uptime Kuma Sentry

Databases & Storage

PostgreSQL RDS Supabase MongoDB MySQL Redis ElastiCache Amazon S3 MinIO

Platform & Middleware

Kong APISIX Keycloak Supabase Auth Kafka

Security & Networking

NGINX ALB Trivy Firewall Load Balancing
// Projects

Selected work

Systems I've built and operate for real organizations — what each one does, the stack behind it, and how it's evolved. Company names are shown for context; internal details below stay at a professional, non-confidential level.

Self-built · Node.js

HRIS Ops Console ("Pulse")

A self-built, real-time infrastructure dashboard for Shomvob — CI/CD deployments (Jenkins + GitHub Actions), container/disk/CPU health across an EC2 fleet, SSL expiry, and proactive Telegram/Discord alerting, all on one screen.

Node.js / Express Docker Jenkins API GitHub Actions API Nginx
View on GitHub
View full case study

Overview

A self-built, real-time observability dashboard that surfaces the pulse of an entire infrastructure fleet on one screen — CI/CD deployments, container health, EC2 resource usage, service uptime, and SSL expiry — built from scratch rather than assembled from existing tools.

Architecture

A Node.js/Express backend runs several independent collectors in parallel: Jenkins and/or GitHub Actions REST APIs for deployments, HTTP health pings per service, TLS handshakes for SSL expiry, and a host-side cron script (over SSH, not docker.sock) that gathers container/disk/memory/CPU stats across the EC2 fleet into read-only JSON files the app reads. Alerts push to Telegram and Discord only on state transitions.

Tech Stack

Node.js / Express Docker Jenkins REST API GitHub Actions API Nginx Cron + SSH fleet collection Telegram / Discord

Key Features

  • Single-screen view of deployments, container health, disk/memory/CPU, service uptime, and SSL expiry across an entire EC2 fleet
  • Dual CI/CD support — Jenkins and GitHub Actions side by side, auto-merged into one deployments list
  • Alerts fire only on state transitions, not on every poll, plus a daily heartbeat confirming alerting itself is alive
  • Never touches docker.sock or runs as root — works correctly under a rootless Docker daemon

Challenges & Solutions

  • Rootless Docker breaks the usual docker.sock-mount approach — solved by moving container/resource collection to a host-side cron script over SSH instead, so the container never needs socket access or root.
  • An early CPU% reading sometimes measured the collector's own CPU spike instead of the host's real load — fixed by diffing /proc/stat across the full poll interval, matching how Prometheus/Grafana's rate() works.
  • One slow Jenkins response was delaying every other panel — fixed by having each collector write its own cache slice the moment it resolves, instead of waiting for all collectors together.

Lessons Learned

The "obvious" implementation of a monitoring tool often breaks quietly under real-world constraints — rootless Docker, a busy CI server, one slow SSH host. The fix is usually to make each piece of the system independent and fail in isolation, rather than adding more error handling around a tightly coupled design.

SaaS · AWS

Shomvob HR Platform

Enterprise multi-tenant HRIS SaaS on AWS EC2 + Supabase. Full CI/CD pipeline, end-to-end observability, and an ongoing microservices migration with Kong + Keycloak.

EC2 Supabase Kong Keycloak
View full case study

Overview

A multi-tenant HRIS SaaS product used to manage employee lifecycle and HR operations for multiple client organizations from a single platform.

Architecture

Application tier runs on AWS EC2 behind NGINX, backed by Supabase (PostgreSQL) for primary storage. CI/CD runs Trivy security scanning and approval-gated deployments before promoting to production. Actively migrating toward microservices, introducing Kong as the API gateway and Keycloak for centralized authentication.

Tech Stack

AWS EC2 NGINX Supabase / PostgreSQL Kong Keycloak GitHub Actions / Jenkins Trivy Prometheus / Grafana Sentry

Key Features

  • Multi-tenant data isolation across client organizations
  • Automated CI/CD with security scanning and approval gates
  • Real-time observability dashboards and chat-based incident alerting
  • In-progress monolith-to-microservices migration

Challenges & Solutions

  • Zero-downtime releases on a live multi-tenant system — solved with approval-gated CI/CD, staged rollouts, and automated rollback triggers.
  • Limited production visibility — solved by building a full observability stack (Prometheus, Grafana, Sentry, Uptime Kuma) with alerts routed to team chat.
  • Monolith scaling limits — addressed by incrementally extracting services behind a Kong gateway with Keycloak-based auth.

Lessons Learned

Incremental (strangler-pattern) migration carries far less risk than a big-bang rewrite, and investing in observability before scaling out services pays for itself the first time something breaks off-hours.

EKS · AWS

HSMS — Health Services Mgmt

Microservices health platform on AWS — self-managed Kubernetes for testing, migrated to EKS with managed RDS, ElastiCache, S3, and ALB for staging and production.

EKS RDS ElastiCache S3 ALB
View full case study

Overview

A microservices-based health services management platform serving clinical/administrative workflows, run on a self-managed Kubernetes cluster on EC2 for testing, and migrated to AWS EKS with managed services for staging and production.

Architecture

Testing runs on a self-managed Kubernetes cluster on EC2 for fast, low-cost iteration. Staging and production have migrated to AWS EKS, replacing self-hosted infrastructure with managed equivalents: RDS for PostgreSQL, ElastiCache for Redis, S3 for object storage (replacing MinIO), and an Application Load Balancer (ALB) for ingress (replacing NGINX). Argo CD still drives GitOps-based deployment across environments.

Tech Stack

EKS Kubernetes (self-managed, testing) RDS ElastiCache S3 ALB Argo CD (GitOps)

Key Features

  • Environment-tiered architecture — self-managed Kubernetes for testing, fully managed EKS for staging and production
  • Managed data layer (RDS, ElastiCache) replacing self-hosted PostgreSQL and Redis
  • S3-backed object storage replacing self-hosted MinIO
  • ALB-based load balancing and TLS termination replacing self-managed NGINX

Challenges & Solutions

  • Migrating a live cluster to EKS without downtime — solved with a staged cutover, migrating one managed service at a time (database via RDS replication first, then cache, then storage, then compute) rather than a single big-bang switch.
  • Operational overhead of self-managing Redis/PostgreSQL/MinIO/NGINX across every environment — solved by moving staging and production onto managed AWS equivalents, while keeping testing self-managed for cheaper, faster iteration.

Lessons Learned

Not every environment needs the same infrastructure maturity — self-managed Kubernetes is fine for testing, where iteration speed matters more than uptime, but production benefits from offloading operational burden (patching, HA, backups) to managed services wherever the cost tradeoff makes sense.

On-prem

Share Health Record (SHR)

Cross-hospital patient data sharing via a unique health ID, deployed on on-premises servers for secure, reliable record exchange.

Linux PostgreSQL Health ID
View full case study

Overview

A cross-hospital patient record sharing system that lets authorized facilities exchange patient data using a unique health ID, deployed entirely on-premises for data residency and reliability requirements.

Architecture

On-prem Linux servers run the application tier and a PostgreSQL database, with the unique health ID acting as the cross-facility lookup key for secure record retrieval, alongside hardened network segmentation.

Tech Stack

Linux PostgreSQL Bash automation Firewall / networking

Key Features

  • Cross-hospital record lookup via a unique health ID
  • Fully on-premises deployment for data residency
  • Hardened server and network configuration

Challenges & Solutions

  • Keeping 100+ on-prem servers in sync — standardized deployment scripts and proactive monitoring caught sync/outage issues before they affected clinical staff.
  • Secure cross-facility access without a cloud intermediary — solved with unique health-ID lookups plus strict on-prem network segmentation and firewall rules.

Lessons Learned

On-prem healthcare systems demand a different reliability posture than cloud-native apps — proactive monitoring and fast manual remediation paths matter as much as automation when uptime is clinically critical.

// Case Studies

In-depth engineering case studies

The patterns behind the projects above, generalized: the problem, the architecture, the tradeoffs — written so they stand on their own, with no client data or internal names attached.

Production CI/CD Pipeline

CI/CD · AWS
Git Push Build & Test Security Scan Approval Gate Deploy AWS EC2 Alert

A fully automated build-test-scan-deploy pipeline for a production SaaS platform on AWS EC2, replacing manual, inconsistent deployments with a repeatable, auditable process.

Read full case study

Business Problem

Deployments were manual and inconsistent. Failures often surfaced only after code reached production, with no automated safety net — no security scanning, no approval gate — before a change shipped to customers.

Architecture

A GitHub Actions / Jenkins workflow triggers on merge to main: build and unit test, run a Trivy vulnerability scan on the built image, hold at a manual approval gate, deploy to AWS EC2 behind NGINX, run a post-deploy health check, then notify the team via Discord/Telegram.

Implementation

The pipeline is defined entirely as code (YAML workflow), secrets are managed via encrypted CI variables rather than hard-coded values, and deployment scripts are idempotent so a re-run never leaves the environment in a half-applied state.

Technologies Used

GitHub Actions Jenkins Trivy AWS EC2 NGINX Discord / Telegram

Challenges

Balancing deployment speed against safety — too many manual gates slows the team down, too few lets risky changes slip through unnoticed.

Results

Deploy frequency increased, most failures are now caught pre-production by the automated scan and gate, and mean-time-to-detect dropped thanks to post-deploy health checks and automated alerting.

Lessons Learned

A human approval gate before production isn't friction, it's the cheapest insurance policy in the pipeline. Automating the boring parts — build, test, scan — frees that human judgment for the one decision that actually needs it.

Production Monitoring & Observability

Observability
App Metrics Node Exporter Prometheus Grafana Alert Rules Sentry Uptime Kuma Alerting Discord / Telegram

An end-to-end observability stack for production infrastructure that previously had no visibility beyond manual, ad-hoc server checks.

Read full case study

Business Problem

Incidents were routinely discovered by users before the team noticed, and there was no historical metrics data to diagnose recurring performance issues.

Architecture

Node Exporter and application metrics feed Prometheus, which powers Grafana dashboards and alert rules. Sentry handles application error tracking and Uptime Kuma runs external synthetic uptime checks; all three route into a shared alerting channel.

Implementation

Alert thresholds were defined around SLOs — request latency and error rate, not just raw CPU/memory — with role-specific Grafana dashboards for infrastructure versus application health, and rules tuned iteratively to cut false positives.

Technologies Used

Prometheus Grafana Node Exporter Sentry Uptime Kuma

Challenges

Early alert rules fired too often on transient blips, which trained the team to start ignoring pages — the opposite of the intended outcome.

Results

Incidents are now detected automatically within minutes instead of relying on user reports, and historical dashboards are used to right-size infrastructure and catch slow regressions before they become outages.

Lessons Learned

Alert fatigue is a bigger risk than under-alerting. Tuning thresholds around real SLOs, rather than arbitrary resource limits, is what makes an on-call rotation sustainable.

Infrastructure Automation

IaC · Automation
Git Repo Terraform + Ansible CI Pipeline plan → review → apply AWS Resources (Terraform) Configured Servers (Ansible)

Replacing manual, undocumented server setup with version-controlled, repeatable infrastructure provisioning.

Read full case study

Business Problem

New environments took days to stand up correctly, configuration drifted between servers over time, and standing up an environment relied on tribal knowledge rather than documentation.

Architecture

Terraform provisions cloud resources — networking, compute, security groups — while Ansible handles configuration management on top: packages, users, service configs. Both are version-controlled in Git and applied through a CI pipeline with a plan/review/apply flow.

Implementation

Terraform modules were built for reusable environment templates so staging and production stay in parity, and Ansible playbooks were made idempotent and tested against staging before ever touching production.

Technologies Used

Terraform Ansible Git AWS Bash

Challenges

Retrofitting existing, hand-configured servers into Terraform/Ansible-managed state without triggering destructive changes on first apply.

Results

New environments now stand up in a fraction of the previous time with guaranteed staging/production parity, and configuration drift is eliminated since servers are reconciled from source-controlled definitions instead of hand edits.

Lessons Learned

The value of infrastructure-as-code isn't speed on day one — it's that six months later, nobody has to remember what they changed by hand.

Dockerization

Docker
Source Code Multi-stage Docker Build Trivy Scan Registry Deploy EC2 / Kubernetes

Migrating applications with inconsistent local-versus-server environments into containerized, reproducible Docker deployments.

Read full case study

Business Problem

"Works on my machine" issues were routine, new-developer environment setup took days, and scaling meant manually replicating server configuration by hand.

Architecture

Multi-stage Dockerfiles per service, a shared base image for common dependencies, Docker Compose for local development parity with production, and a container registry wired into the CI pipeline.

Implementation

Image size and attack surface were minimized via multi-stage builds, dependency versions pinned for reproducibility, and Trivy scanning added to the build step before any image is pushed to the registry.

Technologies Used

Docker Docker Compose Trivy GitHub Actions / Jenkins

Challenges

Legacy services with hard-coded file paths and undocumented runtime dependencies didn't containerize cleanly on the first pass.

Results

Environments are now identical from a developer's laptop through to production, new-developer onboarding dropped from days to minutes, and deployments became portable across EC2 and Kubernetes nodes alike.

Lessons Learned

Containerizing legacy services surfaces every undocumented assumption they were built on — budget time for that discovery, not just for writing the Dockerfile.

Cloud Infrastructure (AWS)

AWS · VPC
VPC Internet ALB / NGINX EC2 / EKS private subnet RDS / ElastiCache S3 (Backups)

Designing a production AWS environment with scalability, reliability, and security built in from the start, rather than added after an incident.

Read full case study

Business Problem

The existing environment had a single point of failure per component, no clear separation between environments, and no formal security baseline — broad security groups and shared credentials.

Architecture

A VPC with public/private subnet separation: an Application Load Balancer (or NGINX, depending on the environment) in the public subnet, compute in the private subnet — either EC2 or EKS depending on workload — per-service security groups, IAM roles instead of shared credentials, managed RDS/ElastiCache for stateful services, and S3 for backups and static assets.

Implementation

Networking was rebuilt around least-privilege security groups, staging and production were given clear environment isolation, backup verification was automated, and the application tier was placed behind a load balancer for horizontal scale — with stateful components migrated onto managed services to remove self-hosted database/cache maintenance from the team's plate.

Technologies Used

AWS EC2 EKS VPC IAM ALB NGINX RDS ElastiCache S3 Terraform

Challenges

Migrating live traffic onto the new network topology without downtime, and revoking legacy shared credentials without breaking existing automation that depended on them.

Results

The environment now scales horizontally under load, no single component is a hard single point of failure, and access is fully attributable per IAM role instead of shared logins.

Lessons Learned

Security and scalability are cheaper to design in from the start than to retrofit — most of the hard migration work was undoing shortcuts taken under early deadline pressure.

Self-Built Infrastructure Observability Tooling

Self-built · Node.js
Jenkins API GitHub Actions API HTTP Health Pings TLS / SSL Check Host Cron (SSH) EC2 fleet Pulse Backend Node.js / Express Dashboard (Browser) Alerting Engine Telegram / Discord

A self-built, real-time observability dashboard consolidating CI/CD deployments, EC2 fleet health, service uptime, and SSL expiry into one screen — built from scratch instead of adopted off the shelf.

Read full case study

Business Problem

No single view existed for the health of the fleet — CI/CD build status, container health, service uptime, SSL expiry, and resource usage each lived in a different tool or required manually SSHing into hosts, so incidents were often found manually instead of automatically.

Architecture

A Node.js/Express backend runs independent collectors in parallel: Jenkins and GitHub Actions REST APIs for deployments, HTTP health pings per service, TLS handshakes for SSL expiry, and a host-side cron script over SSH (never docker.sock) that gathers container/disk/memory/CPU stats across the EC2 fleet into read-only JSON files. Results feed a browser dashboard, and an alerting engine pushes to Telegram and Discord only on state transitions.

Implementation

Built from scratch rather than adopting an existing tool, specifically to fit the exact mix of infrastructure in use — Jenkins and GitHub Actions side by side, a rootless Docker daemon, and a fleet too small to justify running and maintaining a full Prometheus/Grafana/Alertmanager stack just for this.

Technologies Used

Node.js / Express Docker Jenkins REST API GitHub Actions API Cron + SSH Nginx Telegram / Discord

Challenges

Rootless Docker ruled out the common docker.sock-mount approach for container stats; an early CPU% calculation briefly measured the collector script's own load instead of the host's real usage; a single slow Jenkins response was delaying unrelated panels.

Results

A single dashboard now gives an accurate, real-time view of the whole EC2 fleet's health, catches SSL expiries and service outages automatically via push alerts, and removes the need to manually SSH into hosts just to check status.

Lessons Learned

A small, purpose-built internal tool can be faster and cheaper than adopting a general-purpose one — especially when the exact mix of infrastructure (two CI providers, mixed self-managed and managed services) doesn't map cleanly onto an off-the-shelf dashboard's assumptions.

// Experience

Career timeline

DevOps Engineer · Shomvob Technologies Ltd.

Jun 2026 – Present

Built CI/CD on AWS EC2 with Trivy scanning, approval gates, and Discord/Telegram alerts; set up full observability (Prometheus, Grafana, Uptime Kuma, Sentry); leading a monolith-to-microservices migration with Kong and Keycloak.

DevOps Engineer · Crystal Technology Bangladesh Ltd.

Jul 2024 – May 2026

Deployed Kubernetes microservices on AWS and Proxmox; built CI/CD with GitHub Actions and Argo CD (GitOps); managed databases, observability, and platform services (APISIX, Keycloak, Kafka, Redis).

Deployment Engineer · Crystal Technology Bangladesh Ltd.

Oct 2022 – Jun 2024

Deployed Bahmni across 100+ on-prem Linux servers; resolved critical sync and outage issues to keep clinical systems online.

System Engineer · Crystal Technology Bangladesh Ltd.

Nov 2020 – Oct 2022

Maintained Linux systems, networking, and firewall configurations across production environments.

// Blog

Latest from Medium

Writing about DevOps, cloud infrastructure, and lessons from production systems.

Loading latest articles…

View all articles on Medium
// Contact

Let's build something reliable

Open to DevOps and platform engineering roles, freelance infrastructure work, and collaboration. Reach out anytime.