Skip to content
View semx's full-sized avatar

Block or report semx

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
semx/README.md
Sergey Sannikov — Senior DevOps / Platform / SREtagline




About

Senior infrastructure engineer with 10+ years building and operating production systems at scale — from architecture and IaC through observability, incident response, and mentoring across remote, globally distributed teams. I work the whole delivery path (application code → the pipelines that ship it → the infrastructure it runs on) with a security-first eye, and I like finding the sharp edge in a system and fixing it at the root.

  • 🛠️ Modernizing legacy workloads into Dockerized services on Kubernetes / AWS EKS; Kubernetes in production since 2022.
  • 📈 Track record of 99.95% uptime SLAs, deployment time cut 45 → 12 min, and −30% incident MTTR.
  • 🔎 Read source, not just docs — Kubernetes kubelet security research (subPath traversal, authorization bypass, ImageVolume, Pod resource consistency).

Core expertise

Cloud & PlatformsAWS (EC2, EKS, RDS, S3, IAM, Route53, CloudFront, CloudWatch, ELB, WAF), Azure, GCP
Containers & GitOpsKubernetes, Helm, RBAC, HPA, cert-manager, Docker, ArgoCD, Flux
Infrastructure as CodeTerraform, Terragrunt, Ansible, Pulumi
CI/CDTeamCity, GitLab CI, GitHub Actions, Jenkins
ObservabilityPrometheus, Grafana, Loki, OpenTelemetry, Datadog, New Relic, ELK
Security & IdentityIAM, OPA/Gatekeeper, FreeIPA, Active Directory, VPN, hardening, secrets management
DatabasesPostgreSQL, MySQL, SQL Server, Redis, MongoDB, Neon
LanguagesBash, Python, Go, HCL, PHP, JavaScript/Node.js

Open-source contributions

11 merged pull requests in upstream projects, plus reports fixed by maintainers upstream. I fix real, reproducible bugs in the tools I run in production — each with a failing test and a root-cause writeup. The same class of bug shows up across Go, Python, PHP and JS; reproducing and root-causing it is the transferable skill.

ProjectContributionPRState
pallets-eco/croniterDOM/DOW union aborted when only the day-of-month half was unsatisfiable#243
goreleaser/goreleasergoarm64 validation regex was unanchored and accepted junk values#6727
hashicorp/terraformlog()/pow() panicked on NaN results — fixed upstream in 1.17#38888
symfony/symfonyYaml parsed .nan as +INF and never round-tripped NAN#64915
symfony/symfonyISBN-10 validator accepted a misplaced X check character#64877
symfony/symfonyProxyCacheWarmer crashed on non-.php files in the proxy cache dir#64847
laravel/frameworkNumber::forHumans() returned "-0" for tiny negatives#60736
ansible/ansibleis_netmask accepted non-contiguous (invalid) netmasks#87235
ansible/ansibleUncaught OverflowError in check_type_int for inf#87253
argoproj/argo-cdSurface the Suspended condition message for suspended Jobs#28738
spinnaker/spinnakerlibdiffs mis-ordered versions with differing component counts#7805
spinnaker/spinnakerPacker -var values false / 0 were silently dropped#7806
nodejs/nodeassert.deepStrictEqualTypeError on a null Map key / Set member#64449
kubernetes/kubernetesQuantity.String() dropped the suffix for DecimalSI above 10¹⁸#140459
kubernetes/kubernetesLabel Gt/Lt selectors silently dropped values above int64#140462
python-humanize/humanizefractional() emitted degenerate output ("2 1/1") on whole-rounding#354
argoproj/argo-rolloutsint32 overflow produced negative canary replica counts#4923
go-task/taskTemplated dir: left dynamic sh: vars running in the wrong directory#2944

Selected — more across Kubernetes, Ansible, argo-workflows, act, actionlint, docker-py.


Projects

  • ansible-linter — dependency-light static analysis for Ansible playbooks.
  • mr-rca-toolkit — infrastructure merge review and incident RCA utilities.
  • claude-arena — cost-aware model routing and orchestration for dev tooling.



Open to Senior DevOps / Platform / DevSecOps / SRE roles — best reached via sannikov.dev

Pinned Loading

  1. ansible-linteransible-linterPublic

    Dependency-light static analysis for Ansible playbooks and roles

    Python

  2. ansible-secops-linteransible-secops-linterPublic

    Security-focused static analysis for Ansible: hardcoded secrets, disabled TLS/host-key checks, missing no_log, world-writable modes, and more.

    Python

  3. claude-arenaclaude-arenaPublic

    Cost-aware model routing and orchestration for developer workflows

    Python

  4. mr-rca-toolkitmr-rca-toolkitPublic

    Infrastructure merge review and incident RCA utilities

    Python