შიგთავსზე გადასვლა

ალექსანდრე ბასარგინიBackend / Software Engineer

გადახდის სისტემები, ციფრული პროდუქტები და მათზე მდგარი ბოტები.

სისტემებს დომენური საზღვრების მიხედვით ვყოფ, სერვისებს Redis Streams-ით ვაკავშირებ და ვპასუხობ იმ პაიპლაინზე, რომელიც მათ უშვებს. Python და Go სერვისებისთვის, Rust — იქ, სადაც ცხელი გზა ან ხელსაწყოები ამას ამართლებს.

ღია ვარ კონტრაქტისთვის და სრული დატვირთვისთვის

orders — production

მაგალითი სესია

docker compose ps

SERVICE STATUS

orders-api Up

payments-consumer Up

delivery-worker Up

kubectl rollout status deploy/orders-api

deployment "orders-api" successfully rolled out

redis-cli --no-raw XINFO GROUPS orders.events

name consumers pending lag

payments 3 0 0

delivery 2 0 0

01ჩემ შესახებ

ვმუშაობ პროდუქტის იმ ნაწილზე, რომელსაც არავინ ხედავს.

ჩემი მუშაობის უმეტესი ნაწილი backend-ია: გადახდების დამუშავება, ციფრული პროდუქტების მიწოდება, ინტეგრაციები გარე პროვაიდერებთან და მარკეტპლეისებთან, და შიდა ხელსაწყოები, რომლებზეც ბიზნესი დგას. ყოველდღე Python და Go — REST API, მონაცემების დამუშავება და ავტომატიზაცია ხელით შესრულებული ნაბიჯების ნაცვლად. შიდა პროექტები, სადაც ეს გამართლებულია, Rust-ზეა დაწერილი.

სერვისებს ვაწყობ და არა მონოლითს კარგი განზრახვებით. დომენი რეალური საზღვრების მიხედვით იყოფა, თითოეული სერვისი დამოუკიდებლად დეპლოირდება ცხადი API კონტრაქტის მიღმა, ხოლო ის, ვისაც სინქრონში დარჩენა სჭირდება, Redis Streams-ით ურთიერთობს და არა სინქრონული გამოძახებების ჯაჭვით პირველ ტაიმაუტამდე.

ინფრასტრუქტურა ჩემთვის ისეთივე მნიშვნელოვანია, როგორც კოდი. Docker და Kubernetes, GitHub Actions პაიპლაინები, Prometheus და Grafana — რომ პრობლემა უფრო ადრე ჩანდეს, ვიდრე კლიენტი დაწერს, — და production support, როცა არ ჩანს. დეპლოის გარემოები ნულიდან ავაწყვე და მოვაწესრიგე ისინიც, რომლებმაც კბილები მოასწრეს.

ასევე ვუშვებ native პროგრამებს: VPN კლიენტი Apple-ის პლატფორმებისთვის, iOS-იდან tvOS-მდე, Packet Tunnel-სა და sing-box-ზე აწყობილი რანთაიმით. და Telegram ბოტებს, რომლებიც იგივე შეკვეთის სცენარებს ჩატში გადააქვთ. ორივე მხარეს მუშაობამ მასწავლა API-ების ისე დაწერა, რომ კლიენტმა ნამდვილად შეძლოს მათი გამოყენება.

ფოკუსიBackend · ინტეგრაციები · ინფრასტრუქტურა

ენებიPython · Go · Swift · Rust

ფორმატიდისტანციურად · კონტრაქტი და სრული დატვირთვა

საუბრობსინგლისური · რუსული

02ნამუშევრები

პროდუქტები, რომლებზეც backend ვაწყვე.

ციფრული პროდუქტები, გადახდის რელსები და ბოტები, რომლებიც ამ ყველაფერს ამოძრავებენ.

01

ციფრული პროდუქტებისა და ბალანსის შევსების პლატფორმა

მიკროსერვისები · შეკვეთები · გადახდები · მიწოდება

Backend ვიტრინებისთვის, რომლებიც ყიდიან თამაშების ბალანსის შევსებას, გამოწერებსა და სხვა ციფრულ პროდუქტებს. შეკვეთები, გადახდის დამუშავება და მიწოდება ცალკეული სერვისებია ცხადი კონტრაქტებით: შეკვეთა მიიღება, გადახდა გარე პროვაიდერის მეშვეობით დასტურდება, ხოლო შესრულება გადადის delivery-worker-ში, რომელიც ცდას თავად იმეორებს. სერვისები Redis Streams-ით სინქრონდება და არა სინქრონული გამოძახებების ჯაჭვებით, და ყოველი შესყიდვა დასტურდება შემოწმებადი მიწოდებით და არა მხარდაჭერის ტიკეტით.

  • Python
  • Go
  • Redis Streams
  • PostgreSQL
  • MongoDB
  • Kubernetes
  • Prometheus
  • Grafana
02

Telegram ბოტები და სერვისის მხარდაჭერა

ბოტები · ავტომატიზაცია · აპტაიმი

Telegram ბოტები, როგორც კლიენტის ფენა: შეკვეთის, ბალანსის შევსებისა და სტატუსის სცენარები მუშაობს იმავე backend-თან, რასთანაც ვიტრინები, ამიტომ ჩატში გაკეთებული შესყიდვა იმავე შეკვეთების პაიპლაინში ხვდება. ბოტების გარდა, საინჟინრო ნაწილი სერვისის ცოცხლად შენარჩუნებაა: დეპლოი, მონიტორინგი, რეაგირება ინციდენტებზე და ოპერაციული ლოგიკა, რომელიც წყვეტს, რა მოხდეს, როცა პროვაიდერი ანელებს ან გადახდა ჩარჩება.

  • Python
  • Go
  • Telegram Bot API
  • Docker
  • Kubernetes
  • Redis
03

Apple-ის native VPN კლიენტი

iOS · iPadOS · macOS Catalyst · tvOS

VPN კლიენტი Apple-ის ყველა პლატფორმისთვის. მარშრუტების იმპორტი HTTPS subscription URL-ებითა და configuration link-ებით, VPN რანთაიმი Packet Tunnel-ზე, sing-box/libbox-სა და Network Extension-ზე, მომხმარებლის სცენარები მარშრუტების, კავშირის მდგომარეობის, დიაგნოსტიკისა და გამოწერებისთვის. რელიზი App Store-ში StoreKit-ითა და პლატფორმის მოთხოვნებით, რომლებიც მას მოჰყვება.

  • Swift
  • Network Extension
  • StoreKit
  • sing-box / libbox
  • UIKit
04

შიდა ავტომატიზაცია და ხელსაწყოები

ბიზნეს ოპერაციები · მონაცემების დამუშავება

ავტომატიზაცია და შიდა ხელსაწყოები ყველა პროდუქტისთვის: სერვისები, რომლებიც გარე პროვაიდერებსა და მარკეტპლეისებს შიდა სისტემებთან აკავშირებენ, REST API ოპერაციულ მონაცემებზე და პატარა Rust უტილიტები იქ, სადაც Python სკრიპტი არასწორი ხელსაწყო იყო. დეპლოის, troubleshooting-ისა და production support-ის ჩათვლით.

  • Python
  • Go
  • Rust
  • PostgreSQL
  • REST API
  • Docker

03პრინციპები

რამდენიმე წესი, რომელსაც არ ვკეცავ.

მეთოდოლოგიის პრეზენტაცია არაა. უბრალოდ გადაწყვეტილებები, რის შემდეგაც სისტემა მოსაწყენი რჩება — კარგი მნიშვნელობით.

01

სერვისი ფლობს თავის მონაცემებს

საერთო ცხრილები სერვისების საზღვრებზე არ არსებობს. თუ ორ სერვისს ერთი და იგივე სტრიქონები სჭირდება, ერთი მათგანი ცდება იმაში, რასაც ფლობს.

  1. 02

    მოვლენები სინქრონული ჯაჭვების ნაცვლად

    Redis Streams სერვისებს შორის, რომლებსაც სინქრონში დარჩენა სჭირდებათ. მოთხოვნა, რომელიც ხუთ თანმიმდევრულ HTTP გამოძახებად იშლება, ლატენტურობის ბიუჯეტია, რომელიც ამოწურვას ელოდება.

  2. 03

    ცხადი, ვერსიონირებული კონტრაქტები

    სერვისი მოიხმარება დოკუმენტირებული API-ით და არა მისი ბაზის კითხვით. კონტრაქტის ცვლილება უფრო ადრე გამოდის, ვიდრე კოდი, რომელსაც ის სჭირდება.

  3. 04

    უკუსვლა დეპლოიმდე არსებობს

    კონტეინერები, დეკლარაციული დეპლოი, health check-ები და შემოწმებული გზა უკან. თუ უკუსვლას ვერ აღვწერ, რელიზისთვის მზად არ ვარ.

  4. 05

    გაზომილი არ არის — ნიშნავს ვარაუდია

    Prometheus მეტრიკები და Grafana დაფები ყველაფრისთვის, რაც შეიძლება ჩუმად გატყდეს. ინციდენტი გრაფიკზე უნდა გამოჩნდეს უფრო ადრე, ვიდრე შემოსულებში.

  5. 06

    მოსაწყენი ინფრასტრუქტურა იმარჯვებს

    სტეკი, რომელსაც გუნდი ღამის სამ საათზე მოემსახურება, ჯობია სტეკს, რომელიც შედარებით სტატიაში კარგად გამოიყურებოდა.

04გამოცდილება

სად ხდებოდა ეს ყველაფერი.

კონტრაქტული პროექტები და შტატური როლები, უახლესიდან ადრეულისკენ.

2025 — დღემდე

Contract iOS / Backend Developer

VPN სერვისიკონტრაქტი

VPN სერვისი: Telegram ბოტები, როგორც კლიენტის ფენა, და მისი მუშაობის საინჟინრო ლოგიკა — დეპლოი, მონიტორინგი და სერვისის ხელმისაწვდომად შენარჩუნება. ასევე native კლიენტი Apple-ისთვის: iOS, iPadOS, macOS Catalyst და tvOS, პლუს backend და API.

2025 — 2026

Software Developer

ინტეგრაციები პლატფორმებთანკონტრაქტი

ინტეგრაციები, რომლებიც ციფრული პროდუქტების ბიზნესს აკავშირებს იმ პლატფორმებთან, სადაც ის ყიდის: გარე სერვისები და მარკეტპლეისები შიდა სისტემებთან, პლუს backend სერვისები და ავტომატიზაცია მათ გარშემო არსებული პროცესებისთვის. დეპლოი, troubleshooting და production support.

2025 — 2026

Contract Software Developer

გადახდის კონტურიკონტრაქტი

იმავე ციფრული პროდუქტების ბიზნესის გადახდის ნაწილი: ინტეგრაციები გარე გადახდის, საბუღალტრო და ოპერაციულ სისტემებთან, REST API-ის დაპროექტება და მონაცემების დამუშავების ლოგიკა. PostgreSQL, MongoDB და Redis Kubernetes გარემოებში, CI/CD, მონიტორინგი და production support.

2024 — 2025

Head of Software Development

პლატფორმის შემუშავებაშტატი

ხელმძღვანელობდი ციფრული პროდუქტების პლატფორმის შემუშავებას: პროდუქტის დაგეგმვა, კოორდინაცია და სერვისის ლოგიკის, ინტეგრაციებისა და ოპერაციული ხელსაწყოების დანერგვა — პრაქტიკულ backend შემუშავებასთან ერთად.

05სტეკი

რასაც ნამდვილად ვიყენებ.

დაჯგუფებული სისტემაში მისი ადგილის მიხედვით.

ენები

Python · Go · Rust · Swift

არქიტექტურა

მიკროსერვისები · დომენური საზღვრები · API კონტრაქტები · Redis Streams მოვლენები

მონაცემები

PostgreSQL · MongoDB · Redis

მიწოდება

Docker · Kubernetes · GitHub Actions · CI/CD

დაკვირვებადობა

Prometheus · Grafana · Production support

ჰოსტინგი

Selectel · Yandex Cloud · OVH · Hetzner · DigitalOcean

Apple

UIKit · StoreKit · Network Extension · Packet Tunnel · sing-box / libbox

კონტაქტი

სისტემა საკუთარ ფორმას გადაუდგა?

გადახდის ინტეგრაცია, რომელიც მუდამ ტყდება, ბოტი, რომელმაც საკუთარი წარმატება უნდა გადაიტანოს, ან მონოლითი, რომელსაც ოთხი სერვისი ორი წლის წინ სჭირდებოდა — აღწერეთ და მოგიყვებით, როგორ დავშლიდი.