Go backend developer with 2+ years in production, building microservices
and event-driven serverless systems for travel, e-commerce, and fleet-management platforms.
At UDEVS I lead a 5-person cross-functional team delivering two Furasentr products.
Lead a 5-person cross-functional team (frontend, backend, mobile, QA, PM) delivering two Furasentr products — task breakdown, code review, and release coordination on a Knative serverless, event-driven stack.
Delivered the backends for CentralTour, Furasentr, and Furasentr Autopark — detail in Selected Work below.
Optimised Redis caching and parallelised independent CRUD queries that previously ran sequentially; k6 load tests at 700 and 500 RPS on Knative, 90%+ coverage on booking / payment paths run in GitLab CI.
Cody Soft — Golang Developer (remote)
Sep 2024 — Feb 2026
Built start-up products on microservice and monolithic architectures — gRPC between services, REST + Swagger at the edge, JWT + Casbin RBAC, PostgreSQL with Redis on hot paths, MinIO media, goose migrations, Docker Compose.
Sole backend for iMed, an online learning platform now in production — detail in Selected Work below.
Vector-PVT — Golang Developer
May 2025 — Jul 2025
Backend for the Vector-Taxi platform across user, admin, and business panels — RESTful APIs with Swagger, Casbin RBAC, and large PostgreSQL and MongoDB datasets.
Owned the markup / commission engine. Rules are matched across seven dimensions — platform, geography, aggregator, service, hotel, agency, agent profile — and layered by rule level, with exactly one winner per level decided by a specificity score. Platform layers apply in parallel on the same net base, while partner layers cascade, so a subagent's price builds on the agency's cut and no other agent's markup can leak in. Non-UZS fares are priced in the provider currency first and scaled by an FX rate frozen at quote time; every quote is written as an order pricing snapshot, so payment charges exactly what was shown. Integrated GoGlobal, TBO, and Dida, and built the admin-panel backend solo.
Scope filters are appended to every query; on nullable tenant FKs they become (col IS NULL OR col IN (…)).
GochiPostgreSQLRedisKnative / FaaS
Furasentr Autopark
multi-tenant fleet-management SaaS
Built the backend for four role-based app surfaces — per-company scoping enforced on every fleet call, with a custom role × module × action layer wired in behind a rollout flag, plus trip / vehicle assignment, multi-device sessions, analytics, and the Yandex geocoder. Telemetry keeps per-trip state in cache (trip:point:<id>, 2 h TTL) holding the last fix, distance covered, and an open stop cluster; a point older than the last one processed is rejected, and haversine against that last fix decides whether it folds into the cluster or flushes it. Access checks cache only the allow, never the block, and mileage diff_km is always recomputed server-side rather than trusted from the client. Load-tested to 700 RPS with k6.
Telemetry ingest — a parked hour is one row, not 180
Access guard — cache the yes, never the no
List cache — version bumps, not TTL guesses
GochiPostgreSQLRedisKnative / FaaSk6
Furasentr
truck parts & vehicles e-commerce
One of eleven Go services on the Knative stack — ordering, payment, logistics, IAM, aggregator, image search, webhook, ERP sync, vehicles, notifications. Built the ordering service (native Go PDF invoicing, Click and Payme over JSON-RPC, WebP / CDN catalog images, Firebase fan-out) plus the integrations around it: BuckyDrop for cross-border purchase orders, Measoft for delivery — pickup points, rate calculator, status tracking — and an OX ERP sync for products, shops, and warehouses. AI image search is a two-step flow over pgvector: Gemini locates every part in the photo and returns a crop each, and only the crop the buyer taps is embedded and searched, because searching all of them up front does database work for parts nobody opens. The catalog endpoint that carries the load reads through a 30-second in-process cache fronted by singleflight, so a burst of identical requests on a cold key collapses into one database load, and IAM hands back a rotated refresh token on every renewal. Load-tested with k6 at 500 RPS on a constant-arrival-rate executor.
Two-step search — pay for the crop the buyer actually taps
Two fallbacks — widen rather than return nothing
Holding load — collapse the reads, ingest each image once
Sole backend for the web-admin and mobile REST APIs — phone-OTP + JWT auth with Casbin RBAC, Firebase push, a Telegram ops bot, and a YouTube→S3 video pipeline (yt-dlp with a PO-token sidecar to clear bot checks without cookies) served through a CDN. Click Merchant API with MD5-signed, row-locked idempotent handlers (SELECT … FOR UPDATE) so retried callbacks never double-charge or double-enrol. Promo-code engine — percent / fixed, per-user and total caps, validity windows, per-course scope — enforced by a redemptions ledger with partial unique indexes and cancel / expire release triggers. Versioned Redis cache: an entity:version counter bumped on every write is folded into the cache key, so stale lists expire by TTL with no SCAN / KEYS.