Ahmad Naamna

Ahmad Naamna

DevOps engineer and programmer

I build the pipelines that take code from a commit to production, and I still write the code that goes through them. I've been a DevOps engineer at Microsoft since 2023, after nine years building websites and web applications.

Based in Israel and open to relocation.

Prefer a shell? Press ` or .

career / main

Queued

  1. IT support2014
  2. Web dev2014
  3. DevOps2023
  4. Your teamnext

What I do

I help teams ship software more often and with less risk. These are the areas where I can take ownership from day one.

  • CI/CD pipelines

    Pipelines that build, test and deploy every change the same way, from the first commit to production, with GitOps delivery through ArgoCD.

    Jenkins, GitHub Actions, GitLab CI, ArgoCD

  • AWS infrastructure as code

    Cloud environments described in Terraform or CloudFormation, so staging and production match and can be rebuilt on demand.

    Terraform, CloudFormation, AWS CLI, EC2, S3, IAM, VPC

  • Configuration management

    Servers configured by Ansible, Puppet or Chef instead of by hand, so they don't drift apart over time.

    Ansible, Puppet, Chef, Ruby, Python

  • Release management

    Planned releases with clear steps, sign-off from dev, QA and ops, and a rollback plan ready before anything ships.

    Jenkins, runbooks, rollback plans

  • Linux servers and hosting

    Ubuntu and Debian servers with Nginx or Apache, DNS, HTTPS, systemd services, backups, and monitoring with Prometheus and Grafana dashboards.

    Linux, Nginx, Docker, Prometheus, Grafana

  • Need something else?

    I also build web applications in PHP, Laravel and Node.js. If your problem sits between code and infrastructure, I'd like to hear about it.

    Talk to me

How I ship

This is a typical delivery pipeline I build and run. Select a stage to see what happens there, with an example of the code behind it.

1. Commit

Every change starts as a commit to Git and goes through review. Pushing to the main branch triggers the pipeline, so nobody deploys from their own laptop.

$ git push origin main
# webhook triggers Jenkins job app/main

2. Build

Jenkins, GitHub Actions or GitLab CI checks out the commit and builds one artifact, tagged with the commit hash. That same artifact moves through every environment.

stage('Build') {
  steps {
    sh 'docker build -t app:${GIT_COMMIT} .'
  }
}

3. Test

Automated tests run on every build. A failing test stops the pipeline before the change gets anywhere near users.

stage('Test') {
  steps {
    sh 'bundle exec rake test'
  }
  post {
    always { junit 'reports/*.xml' }
  }
}

4. Provision

The environment is created or updated from Terraform or CloudFormation. The same code with different variables produces staging and production.

resource "aws_instance" "app" {
  ami           = var.ami_id
  instance_type = "t3.small"

  tags = {
    Name = "app-${var.env}"
  }
}

$ terraform plan -var env=staging
$ terraform apply -var env=staging

5. Configure

Ansible playbooks, Puppet manifests or Chef cookbooks set up packages, services and files on each server, which keeps every machine identical.

- name: Web servers
  hosts: web
  become: true
  tasks:
    - name: Install nginx
      apt: { name: nginx, state: present }
    - name: Keep nginx running
      service: { name: nginx, state: started, enabled: true }

6. Release

ArgoCD syncs the approved version from Git to the cluster, so production always matches what's in the repository. Every release follows a plan and has a tested rollback path.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: app-production
spec:
  source:
    repoURL: https://git.example.com/app-deploy.git
    path: overlays/production
  syncPolicy:
    automated: { prune: true, selfHeal: true }

7. Observe

After release, Prometheus metrics, Grafana dashboards and CloudWatch alarms confirm the change is healthy. If they don't, the rollback plan runs.

# Error rate over the last 5 minutes (Prometheus)
sum(rate(http_requests_total{status=~"5.."}[5m]))
  /
sum(rate(http_requests_total[5m]))
  • Automate the second time

    If a task comes up twice, it becomes a script, and once it's stable it becomes part of the pipeline.

  • Every environment from code

    Infrastructure and configuration live in version control, so they can be reviewed, reproduced and rolled back.

  • Small releases with a way back

    Shipping small changes often is safer than shipping big ones rarely, and every release has a rollback plan.

  • Think like the developer

    Nine years of writing application code means I build pipelines around how developers actually work.

Career

About twelve years in tech, going from fixing workstations to shipping web apps to running delivery pipelines in the cloud.

  1. 2023now

    DevOps Engineer at Microsoft

    I automate the software delivery pipeline and run applications in the cloud.

    • Build and maintain Jenkins pipelines that build, test and deploy releases across dev, test and production.
    • Write parameterised AWS CloudFormation templates for consistent, reproducible environments.
    • Script operational work with the AWS CLI and Ruby, and wire it into deployment workflows.
    • Keep environments free of configuration drift with Puppet manifests and Chef cookbooks.
    • Coordinate releases with dev, QA and ops, including rollback plans and fixing delivery issues.
  2. 20142023

    Web Developer at Informatika

    I built and maintained websites and web applications from feature work through to production deploys.

    • Developed features and ongoing updates in PHP, Laravel, JavaScript and MySQL.
    • Investigated application issues, supported testing and fixes, and shipped updates to production.
    • Configured Nginx and Apache, DNS and SSL for the sites I worked on.
  3. 20142017

    IT Support at Informatika

    I supported users, workstations and networks. Most of my troubleshooting habits come from this job.

Education

Web Engineering Certificate, John Bryce College. High school diploma.

Languages

Arabic (native), Hebrew (fluent), English (professional).

Stack

The tools I use day to day, grouped by the part of the delivery chain they cover.

Cloud (AWS)
  • AWS CLI
  • CloudFormation
  • EC2
  • S3
  • IAM
  • VPC
  • CloudWatch
CI/CD and release
  • Jenkins pipelines
  • GitHub Actions
  • GitLab CI
  • ArgoCD
  • GitOps
  • Continuous integration
  • Continuous delivery
  • Release management
  • Rollback planning
  • Dev, test and production environments
Infrastructure as code and configuration
  • Terraform
  • Ansible
  • CloudFormation templates
  • Puppet manifests
  • Chef cookbooks
  • Configuration drift control
  • Repeatable environments
Languages and scripting
  • Python
  • Ruby
  • Bash
  • Zsh
  • PHP
  • JavaScript
  • Node.js
  • SQL
  • YAML
Containers and Linux
  • Docker
  • Docker Compose
  • Ubuntu
  • Debian
  • Arch Linux
  • systemd
  • cron
Web servers and networking
  • Nginx
  • Apache
  • Caddy
  • Reverse proxies
  • DNS
  • SSL/HTTPS
  • WireGuard
  • Tailscale
Monitoring, backup and operations
  • Prometheus
  • Grafana
  • CloudWatch
  • Uptime Kuma
  • Health checks
  • Restic backups
  • Troubleshooting
  • Technical documentation
Web development
  • Laravel
  • Express
  • REST APIs
  • API integrations
  • HTML and CSS
  • MySQL
  • Redis
  • SQLite
Tools and ways of working
  • Git
  • GitHub
  • Gitea
  • Neovim
  • tmux
  • Agile and Scrum
  • Automation first

Projects

Work I do outside the day job.

ZVV

Technical co-founder and CTO

ZVV is a real-estate platform that brings property listings, bookings, investments and an AI layer into one product. I own the technical side, which covers architecture, backend and API development, security and continuous integration.

ZVV AI chat server

A Node.js and Express chat service using the Groq SDK, with conversations stored in SQLite. It runs as a systemd service on a VPS behind Nginx with HTTPS, and has a health endpoint for monitoring.

  • Node.js
  • Express
  • SQLite
  • systemd
  • Nginx

Linux workstation and dotfiles

My desktop setup lives in version control: Sway and Waybar, Kitty, Zsh, tmux and Neovim, with cron jobs for package backups so I can rebuild a machine quickly.

  • Sway
  • Neovim
  • tmux
  • Zsh
  • Bash

Questions

Quick answers to what recruiters and teams usually ask me first.

What roles are you looking for?

DevOps engineering, release and platform roles, and positions that combine infrastructure work with web development.

Where are you based?

I'm based in Israel and open to relocation.

Which cloud platform do you work with?

AWS. I use the AWS CLI and CloudFormation daily, along with EC2, S3, IAM, VPC and CloudWatch.

Can you also write application code?

Yes. I worked as a web developer from 2014 to 2023 with PHP, Laravel, JavaScript and MySQL, and I build Node.js services in my own projects.

Which CI/CD and configuration tools do you use?

Jenkins for pipelines, AWS CloudFormation for infrastructure as code, Puppet and Chef for configuration management, and Ruby and Bash for automation scripts.

What languages do you speak?

Arabic (native), Hebrew (fluent) and English (professional).

How can I contact you?

Email me at [email protected] or message me on LinkedIn.

Let's ship something.

I'm open to DevOps and platform roles, and to conversations about delivery pipelines, cloud infrastructure or web projects.

ahmad@naamna: ~