S. AXADJONOV

Sardorbek Axadjonov

Go backend-разработчик с 2+ годами в продакшене: строю микросервисы и событийно-ориентированные serverless-системы для travel, e-commerce и fleet-management платформ. В UDEVS веду кросс-функциональную команду из 5 человек, которая выпускает два продукта Furasentr.

+998 20 007 04 24 axadjonovsardorbeck@gmail.com Ташкент, Узбекистан

2+
года Go
в продакшене
4+
платформы в продакшене
выпущено
700
RPS в нагрузочных тестах k6
на Knative
90%+
покрытие тестами
путей бронирования и оплаты
Сардорбек Ахаджонов — Go backend-разработчик из Ташкента, Узбекистан: 2+ года Go в продакшене, 700 RPS в нагрузочных тестах k6 на Knative, 90%+ покрытия путей бронирования
Go backend-разработчик — Ташкент, Узбекистан
01

Стек

Язык
Go
Данные
PostgreSQL, pgvector, Redis, MongoDB, SQL
Сервисы
REST, gRPC, Gin, chi, Knative Eventing / CloudEvents
Авторизация
JWT, OTP, Casbin (RBAC)
Хранилище
MinIO, S3, CDN
Интеграции
Click, Payme, Firebase FCM, Telegram, Google Gemini, Yandex Maps
Инфраструктура
Knative / FaaS, Docker, GitLab CI, goose, k6, Grafana
Архитектура
Микросервисы, event-driven, serverless, монолит
02

Опыт

UDEVS — Backend-разработчик · тимлид

Фев 2026 — настоящее время
  • Веду кросс-функциональную команду из 5 человек (frontend, backend, mobile, QA, PM), которая выпускает два продукта Furasentr — декомпозиция задач, код-ревью и координация релизов на serverless событийно-ориентированном стеке Knative.
  • Сделал бэкенды для CentralTour, Furasentr и Furasentr Autopark — подробности в разделе «Избранные работы» ниже.
  • Оптимизировал кэширование в Redis и распараллелил независимые CRUD-запросы, которые раньше шли последовательно; нагрузочные тесты k6 на 700 и 500 RPS на Knative, 90%+ покрытие путей бронирования и оплаты в GitLab CI.

Cody Soft — Golang-разработчик (удалённо)

Сен 2024 — фев 2026
  • Разрабатывал стартап-продукты на микросервисной и монолитной архитектуре — gRPC между сервисами, REST + Swagger на границе, JWT + Casbin RBAC, PostgreSQL с Redis на горячих путях, медиа в MinIO, миграции goose, Docker Compose.
  • Единственный бэкендер iMed — онлайн-платформы обучения, уже работающей в продакшене; подробности в разделе «Избранные работы» ниже.

Vector-PVT — Golang-разработчик

Май 2025 — июл 2025
  • Бэкенд платформы Vector-Taxi для пользовательской, административной и бизнес-панелей — RESTful API со Swagger, Casbin RBAC и большие наборы данных в PostgreSQL и MongoDB.
03

Избранные работы

CentralTour ▵

платформа бронирования авиабилетов и отелей

Отвечал за движок наценок и комиссий. Правила подбираются по семи измерениям — платформа, география, агрегатор, услуга, отель, агентство, профиль агента — и раскладываются по уровням, где на каждом уровне побеждает ровно одно правило, определяемое оценкой специфичности. Платформенные слои применяются параллельно к одной и той же нетто-базе, а партнёрские слои каскадируются, поэтому цена субагента строится поверх наценки агентства и наценка другого агента в неё не попадёт. Тарифы не в UZS сначала считаются в валюте поставщика и пересчитываются по курсу, зафиксированному в момент котировки; каждая котировка сохраняется как снимок цены заказа, поэтому оплата списывает ровно ту сумму, которая была показана. Интегрировал GoGlobal, TBO и Dida и в одиночку сделал бэкенд админ-панели.

Выбор правила — один победитель на уровень
markup_rules rule set rows context match platform + channel, exact one rule per level L1 — global only L2 — aggregator / service L5 — per-hotel or agency L7+ — agency, all services tie → specificity score hotel 50 · agency 40 aggregator / service 20 · geo 10
GochiPostgreSQLRedisKnative / FaaS

Furasentr Autopark

мультиарендный SaaS для управления автопарком

Сделал бэкенд для четырёх ролевых поверхностей приложения — разграничение по компаниям на каждом вызове автопарка, кастомный слой роль × модуль × действие за флагом раскатки, а также назначение рейсов и техники, мультидевайсные сессии, аналитика и геокодер Яндекса. Телеметрия хранит состояние поездки в кэше (trip:point:<id>, TTL 2 ч): последняя точка, пройденное расстояние и открытый кластер остановки; точка старше последней обработанной отклоняется, а расстояние по формуле гаверсинуса от последней точки решает, войдёт ли она в кластер или сбросит его. Проверки доступа кэшируют только разрешение и никогда — блокировку, а пробег diff_km всегда пересчитывается на сервере, а не берётся на веру от клиента. Нагрузочное тестирование — 700 RPS в k6.

Приём телеметрии — час на стоянке это одна строка, а не 180
GPS point driver app trip:point:<id> cache · TTL 2 h haversine vs last fix ≤ 50 m > 50 m stop cluster buffered, no write flush cluster 1 row + dwell time stale point rejected a truck parked one hour writes a single stop row, not ~180 near-identical fixes
GochiPostgreSQLRedisKnative / FaaSk6

Furasentr

e-commerce запчастей и грузовой техники

Один из одиннадцати Go-сервисов на стеке Knative — заказы, оплата, логистика, IAM, агрегатор, поиск по изображению, вебхуки, синхронизация с ERP, техника, уведомления. Сделал сервис заказов (генерация PDF-счетов на чистом Go, Click и Payme через JSON-RPC, каталожные изображения WebP / CDN, рассылка через Firebase) и интеграции вокруг него: BuckyDrop для трансграничных закупок, Measoft для доставки — пункты выдачи, калькулятор тарифов, отслеживание статуса — и синхронизацию с OX ERP по товарам, магазинам и складам. Поиск по фото — двухшаговый процесс поверх pgvector: Gemini находит на снимке каждую деталь и возвращает по кропу на каждую, и только тот кроп, по которому нажал покупатель, эмбеддится и ищется, потому что искать сразу все — это работа базы ради деталей, которые никто не откроет. Каталожный эндпоинт, несущий основную нагрузку, читает через 30-секундный in-process кэш под singleflight, поэтому всплеск одинаковых запросов на холодном ключе схлопывается в одну загрузку из базы, а IAM выдаёт ротированный refresh-токен при каждом обновлении. Нагрузочное тестирование k6 на 500 RPS с executor'ом constant arrival rate.

Двухшаговый поиск — платим за тот кроп, который покупатель реально выбрал
photo upload Gemini vision locate + label crop per part box_2d · uz/ru/en buyer taps one no DB work yet параллельно embed crop Gemini · goroutine resolve brand + lang DB · same moment pgvector similarity score floor + delta window ranked products one part, one query
GoPostgreSQLpgvectorRedisGeminiFirebasek6

iMed ▵

онлайн-платформа обучения · imedteam.uz

Единственный бэкендер веб-админки и мобильных REST API — авторизация по телефонному OTP + JWT с Casbin RBAC, пуши через Firebase, служебный Telegram-бот и конвейер видео YouTube→S3 (yt-dlp с PO-token сайдкаром, снимающим бот-проверку без кук), раздаваемый через CDN. Click Merchant API с идемпотентными обработчиками: подпись MD5 и блокировка строки (SELECT … FOR UPDATE) — поэтому повторные колбэки никогда не списывают дважды и не записывают на курс дважды. Движок промокодов — процент или фиксированная сумма, лимиты на пользователя и общие, окна действия, охват по курсу — обеспечен реестром погашений с частичными уникальными индексами и триггерами освобождения при отмене и истечении. Версионированный кэш Redis: счётчик entity:version , увеличиваемый при каждой записи, вкладывается в ключ кэша, поэтому устаревшие списки истекают по TTL без SCAN / KEYS.

Оплата через Click — идемпотентность при повторах
Click callback MD5 sign verify FOR UPDATE row lock PAID + enrolment retry → identical response, no double charge

В продакшене: 8 000+ пользователей (3 000+ активных) · 70+ курсов, 1 500+ уроков, 1 400+ видео · 2 000+ оплаченных заказов · 420 млн+ UZS обработано

GoGinPostgreSQLRedisMinIOS3CDNCasbin
04

Образование и языки

Образование

Najot Ta'lim

Go Foundation + Bootcamp

Направление: Golang

Языки

Узбекскийродной

РусскийB2

АнглийскийB1

Открыт к backend-ролям, где важны Go, пропускная способность и чистые границы сервисов.