About

12+ years in corporate IT infrastructure. Started at an MSP doing user support and sysadmin work. Grew into a full-stack architect: bare metal, networks, virtualization, AD and Exchange, then AI agents in production. I build infrastructure from scratch and automate whatever repeats. LLMs go into real workflows, not into slide decks.

The rules are simple. Understand why the business needs it. Have a rollback plan before the change, write the docs after, so the system outlives my involvement. My soft spot is legacy that “must not be touched”. I like getting it to a state where touching it isn’t scary.

Work

Infrastructure & operations

~2,400 sites and ~8,900 devices in one inventory · automation proposes, I merge by hand

A large retail chain ran its infrastructure out of spreadsheets nobody reconciled. I built the inventory on NetBox: ~2,400 sites, ~8,900 devices. Twelve systemd timers pull from the source systems, reconcile, write back, check quality. Network discovery lands in a separate branch. I merge that one by hand. Automation deletes nothing. That's a rule, not a setting. GitLab CI on the repo, 841 green tests.

NetBoxNetBox BranchingNAPALMnetbox-syncPostgreSQLsystemd timersGitLab CI
Read the full case

Custom Keycloak 2FA provider, SSO at the web-server layer for OWA and Outlook clients

Exchange can't do a second factor the way we needed. And nobody was going to let me near its internals. So ANGIE went in front of OWA and the Outlook clients, and 2FA moved into Keycloak behind a provider I wrote. Exchange itself I never touched. Not one line. It runs in production. All corporate mail goes through it.

KeycloakANGIEMS ExchangeOWAOutlookOIDCTOTP
Read the full case

4 sites in 2 countries · 100–200 users · 50+ servers · mail, AD, networking and certs, solo

Four sites, two countries. Empty field at the start. I stood up AD, Exchange with a DAG across sites, mail through PMG with HAProxy and SNI routing. Routing itself on WireGuard + GRE + OSPF over MikroTik RouterOS 7. Certificates issue and reach Exchange on their own. Message tracking good enough to take an incident apart. BookStack so the whole thing is written down. Built it solo, start to finish.

Exchange + DAGPMGHAProxy + SNIMikroTik RouterOS 7WireGuard + GREOSPF + FRRACME → Exchange
Read the full case

Native Windows and macOS clients with signed policy · update trust pinned to the issuing CA

Windows and macOS clients for corporate access, plus the policy panel behind them. The server signs policy with ECDSA P-256, the client checks it with an embedded key. Update trust is pinned to the issuing CA, not a thumbprint. Pin the thumbprint and one reissue kills updates fleet-wide. I keep machine data and the user profile apart. Panel login is a domain account, over Kerberos. Tests went from 31 to 175. All in production.

.NET 8Swift / AppKitWiX / MSImacOS pkgECDSA P-256Kerberos / SPNEGOAuthenticode
Read the full case

60-day certificates with auto-renewal · onboarding a service is one command · a panel for the rest

Certificates went out by hand, so sometimes they didn't go out at all. I stood up an internal CA. The intermediate is signed by the corporate Windows CA, so nobody had to roll out a new root. ACME issues 60-day certs and renews them itself. Onboarding a service is one command plus a reload hook. Skip the hook and the renewed cert never reaches the daemon. Where ACME can't reach, a panel. Linux only in production so far.

ACME (RFC 8555)acme-ca-serverDocker ComposeOpenSSL / X.509AD CSPowerShell 7 / Podeosslsigncode
Read the full case

A directory group decides access to a report. No more handing it out one by one.

Reports sat in GitLab Pages, access handed out by hand. I wrote a gateway: sign-in through the corporate OIDC, then a group check before every report. GitLab itself never faces outward. The cookie was the fiddly part. A full group list blows the 4 KB limit, and the user got an endless redirect. Now it holds only groups that intersect the access map. The unit of permission is now the report type. 73 tests, written alongside.

Python / FastAPIAuthlibOIDC + PKCEActive DirectoryGitLab PageshttpxDocker
Read the full case

24 apps update themselves, most already in production · stuck VDI input cleared without losing sessions

Fleet of about 4,600 machines. The legacy management server was off limits, so the new one went up beside it, production never stopped. The catalog updates itself: pulls vendor versions, checks signature and hash, supersedes the build, ships it on. 24 apps, most already in production. For VDI I wrote a portal. It clears stuck input by saving and resuming the machine. The user keeps their sessions, and I don't get the call.

MECM / SCCMPowerShellEvergreenPSAppDeployToolkitHttpListenerHyper-V Failover ClusterRDS Connection Broker
Read the full case

GPO and ACL audit and repair in a ~23,000-account forest, phased, with a rollback path at every step

Seven domains, roughly 23,000 active accounts, and policies different people had been editing for decades. I wrote 17 PowerShell scripts: find the broken ones, restore Security Filtering after a mass downgrade to Authenticated Users, clear out dead NetLogon ACEs. Every run starts with a pre-flight, then three phases, with a backup and a rollback path at each step. Hundreds of GPOs. Not one blind change.

PowerShellActive DirectoryGroup PolicyGPOZaurrNetLogon ACLSecurity Filtering
Read the full case

A forest of ~23,000 active accounts: Windows Server 2008 → 2022, seven domains into one structure

Seven domains, roughly 23,000 active accounts, Windows Server 2008 in production, replication whenever it felt like it. I moved the forest onto a current version, one structure. Roles went out across three sites. Objects from several domains came into one. Replication became predictable. That was the whole point.

Active DirectoryWindows ServerDNSDHCPSites & Replication
Read the full case

One monitoring stack with a site map; outages no longer hide under open-ended suppressions

Zabbix with proxies in remote networks, Grafana dashboards for diagnostics. Routine went into scripts and Docker. Geography came later. Addresses were already in the inventory, coordinates came over with the built-in sync. No code of my own. About 2,000 store maps. Then I cleared the open-ended suppressions: far more than needed, and outages were quietly waiting them out. Coverage is complete, some points only to city level.

ZabbixGrafanaZabbix GeomapNetBoxPythonBashDocker
Read the full case

Site-to-site IPSec, backup links, internet bill down by about two thirds

Several offices and two data centers, each living on its own. I pulled them into one managed perimeter over site-to-site IPSec. Links to the data centers I rebuilt on MikroTik and OpenVPN, and moved some hardware. The internet bill dropped by roughly two thirds.

MikroTikUbiquitiTP-LinkIPSecOpenVPNVLAN
Read the full case

Hyper-V → ESXi, ESXi 5 → 6.7, vCenter 7, a fault-tolerant cluster of about 15 nodes

Consolidated virtualization on VMware. Converted the Hyper-V machines over, stood up vCenter 7, and a fault-tolerant cluster on about 15 physical nodes with it. Ran a vCloud Director cloud alongside.

VMware ESXivCenterHyper-VProxmoxvCloud Director
Read the full case

Backup across three sites, network device configs copy themselves, DRP

Backup across three sites. Full Veeam coverage for the VMs, network device configs copy themselves. The recovery plan is written down and kept where people will find it. I checked it by restoring. Not by a tick in a report.

Veeam B&RSynologyTrueNASNextCloudrsync
Read the full case
Automation & AI agents

Hallucinations traced to the tool layer · tool catalog in context cut in half

An agent you ask about infrastructure in plain words. LLM with tool-calling over MCP servers for inventory and monitoring, answers in a bot. I ran 15 test questions, checking each answer against the database. Six held up. Not the model: narrow query schema, no honest counting, step limits choking it. All tool layer. That's where it got fixed. The catalog is resent every iteration, so I halved it. In production. No demand yet.

MCPLLM tool-callingPythonTelegram Bot APIDockerGitLab CI
Read the full case

Three agents over an MCP Memory Server plus adversarial diff review: 13 of 38 and 14 of 32 survived

I carry a complex system alone, so I built three agents around me: a strategist, a knowledge-base keeper, a developer in the IDE. They talk over an MCP Memory Server. On a second pass I added adversarial review of my own diff: several independent lenses, then two skeptics tearing each finding apart. Two runs, 13 of 38 and 14 of 32 survived. "Confirmed" here means nobody could refute it. There's no outside check.

ClaudeMCPMCP Memory ServerMulti-agentAdversarial reviewKnowledge graph
Read the full case

Python exports into BI and automatic GPT-4 call review, report lands in the CRM

Ran the corporate PBX and a hosted virtual PBX, and cut the phone bill along the way. Stats went into BI through a Python export. Calls went to GPT-4 for review. The report lands with the manager, right in the CRM.

AsteriskFreePBXMikoPBXMegafon PBXPythonChatGPT API
Read the full case

Experience

October 2023 — Present

Senior SysOps

Detsky Mir (large retail chain, ~30K employees)

Moscow

  • Modernization of corporate infrastructure at enterprise scale: Linux stack overhaul, AD forest across three countries, VMware estate.
  • Own infrastructure inventory, production monitoring and access to internal services across the whole network.
  • Operations automation: GitLab CI pipelines, test-driven development, incident analysis.
2024 — Present

Solutions Architect · engagement

Enterprise client (NDA)

Moscow

  • Designed and built corporate infrastructure from scratch: AD, Exchange + DAG.
  • Multi-site routing on WireGuard + GRE + OSPF + FRR, MikroTik RouterOS 7.
  • Mail pipeline via PMG + HAProxy with SNI routing.
  • ACME → Exchange cert automation pipeline. In parallel with primary role.
June 2021 — September 2023

Head of IT

Leto Realty (real-estate group, 2 countries / 4 offices)

Sochi

  • Owned the IT function end-to-end: budget, vendors, procurement, contracts.
  • HA RDS farm, FSLogix, virtual PBX, internal network on MikroTik / TP-Link / UniFi.
  • Site-to-site IPSec VPN between offices and data centers, DC uplinks on MikroTik and OpenVPN.
  • Infrastructure across two countries: two DCs and 4 remote offices.
  • Hyper-V → ESXi migration, ESXi 5 → 6.7 upgrade, vCenter 7 rollout, distributed Veeam across three sites.
  • AD upgrade from Windows Server 2008 to 2022 and domain consolidation.
  • Deployed and ran MS Exchange, WSUS, Zabbix, OpenVPN, Nextcloud, WTware thin clients.
  • Python automation and GPT-4-based call analysis with reports pushed into the CRM.
  • Cut internet connectivity costs by roughly two-thirds.
  • Mentored three system administrators in remote offices.
June 2020 — May 2021

Senior System Administrator

Digital Systems (regional cloud and managed-services provider)

Sochi

  • Designed and operated a fault-tolerant VMware cluster on ~15 bare-metal servers (vSphere 6.7–7).
  • vCloud Director-based cloud and a distributed backup system.
  • Windows and Linux: CentOS, Ubuntu Server, Debian; Hyper-V, ESXi, Proxmox.
  • Networking: MikroTik, Eltex, Ubiquiti, TP-Link Enterprise; VLAN, RADIUS, WLAN, ACL; VPN on pfSense / OPNsense / MikroTik.
  • Zabbix (server + proxies), Grafana, Veeam B&R, automated config backups.
  • 1C server edition, MS Exchange 2016–2019 (DAG), MailCow, MikoPBX, Asterisk, FreePBX.
  • Documentation: SOPs, runbooks, DRP, technical specs. Task assignment and mentoring for junior colleagues.
2015 — 2018

Founder · e-commerce

Gift66 (ekb.gifts) · sole proprietor

Yekaterinburg

  • Ran my own e-commerce store, Gift66: gifts and gift certificates in Yekaterinburg.
  • Full lifecycle: launch, marketing and promotion, eventual wind-down.
  • Ran in parallel with engineering work: P&L, marketing, ops. Helps read business needs, not just tickets.
2014 — 2017

System administrator · engineer

SKB Kontur (one of Russia's largest B2B SaaS companies)

Yekaterinburg

  • Moved from outsourcing into one of Russia's largest IT companies as an in-house engineer.
  • Enterprise-scale engineering tasks in a product environment.
2012 — 2014

Support

Fresh Support · IT outsourcing

Yekaterinburg

  • Clients included MTV TV channel (rebranded later as Pyatnitsa) and several radio stations.
  • Broad troubleshooting: infrastructure, networking, telephony, user support.

Education

Ongoing

DevOps Engineer Pro program

Skillbox · online

  • Containerization: Docker, Docker Compose.
  • Orchestration: Kubernetes.
  • Infrastructure as Code: Terraform, Ansible.
  • CI/CD: GitLab CI, GitHub Actions.
  • Cloud, monitoring, SRE practices.

Stack

Everything I have run in production. Not a résumé list, but what I actually built and maintained.

Systems, identity and mail

The core of corporate infrastructure: hypervisor up to single sign-on.

VMware ESXivCenterProxmoxVeeamMS Exchange (DAG)AD DSWindows ServerKeycloakZabbixPostfixDovecotmailcowPMGAD CSAD FSDFSWSUSWECSCCMRDS+FSLogixTelegrafInfluxDB

Networking, proxies and security

I tie sites into one fabric and hold the perimeter.

MikroTikWireGuardOSPFIPSecGREangienginxHAProxyWazuhUbiquitipfSenseOPNsenseOpenVPNTraefikCaddyCrowdSecModSecurityCloudflare WAFSuricataGraylog

Cloud and automation

Anything repetitive becomes code: IaC, configs, containers.

Yandex CloudVK CloudAWSGCPAzureTerraformAnsibleDockerPythonPowerShellSelectelcloud.ruTimewebPowerShell DSCcloud-initGitLab CIBashRuby

AI agents

I wire LLMs in so they pay off in production, not in slide decks.

OpenAIAnthropicMCPvector DBsLangChainagentic workflows

Contact

If you need an architect who takes complex infrastructure to production and then runs it, drop a line.

GitHubХабр Q&AХабр

Remote only. No office, no travel. Moscow · UTC+3