Senior Backend Developer (ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ, full-time)
ΠΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ
β’ ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ . NET-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²: Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΡΠ΅ ΠΈ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ»ΠΎΡ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ (Fragment/TON)
β’ ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ: ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ (retries), Π΄Π΅Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, outbox/Saga, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ±ΠΎΠ΅Π²
β’ Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²: TON-proof, Ed25519-ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, Π·Π°ΡΠΈΡΠ° ΠΎΡ replay ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ
β’ ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ
API: ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ/ΠΊΡΠΊΠ°ΠΌΠΈ, ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ (multipart/x-www-form-urlencoded, JSON), ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌ
β’ ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ (PostgreSQL): ΡΡ
Π΅ΠΌΡ, ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ
β’ Π Π°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ: ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ p95/p99, ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π»ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
β’ ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ: Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ²/KMS, ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ°, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠΉ
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
β’ ΠΠΏΡΡ ΡΠ°Π±ΠΎΡΡ 5+ Π»Π΅Ρ
β’ ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π²ΡΡ
ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈ Π²Π΅Π±-ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ: HTTP/2, CORS, cookies, multipart/x-www-form-urlencoded
β’ ΠΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ ΠΈ ΡΠΎΡΠΌΠ°ΡΡ: Ed25519, SHA-256, ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΠΈ Π±Π°ΠΉΡΠΎΠ²ΡΠΌΠΈ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°ΠΌΠΈ
β’ ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ
: PostgreSQL, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌ, ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ (EF Core)
β’ ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ: gRPC/Protobuf, ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ/Π±ΡΠΎΠΊΠ΅ΡΡ (RabbitMQ/Kafka), ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ Outbox ΠΈ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ
β’ ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ: ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ, ΡΠ°ΠΉΠΌΠ°ΡΡΡ, ΠΏΠΎΠ»Π»ΠΈΠ½Π³, Π»ΠΈΠΌΠΈΡΠ΅ΡΡ, circuit breaker
β’ ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΡΡΡ: Prometheus/Grafana, ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° (OpenTelemetry)
β’ ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ ΠΈ CI/CD: Docker, Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
β’ Π§ΠΈΡΡΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°: SOLID, ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΡΡ, ΠΊΠΎΠ΄-ΡΠ΅Π²ΡΡ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ API
ΠΡΠ΄Π΅Ρ ΠΏΠ»ΡΡΠΎΠΌ
β’ ΠΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ TON: TonSDK, Π°Π΄ΡΠ΅ΡΠ°/Cell/BOC, TON-proof, ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Telegram Stars/Fragment
β’ ΠΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π°Π½ΡΠΈΠ±ΠΎΡ-ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Cloudflare: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΡΠ΅ΡΡΠΈΠΈ)
β’ ΠΠ½Π°Π½ΠΈΠ΅ DDD ΠΈ event-driven ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠ², Saga/ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΎΡΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
β’ ΠΠΏΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΠΈ Π°Π½ΡΠΈΡΡΠΎΠ΄Π°, KMS/Secret-management
β’ ΠΠΏΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ property-based ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΡ
ΠΈ performance-ΡΠ΅ΡΡΠΎΠ², Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ²
π© Π§ΡΠΎΠ±Ρ ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΡΡΡΡ Π½Π° Π²Π°ΠΊΠ°Π½ΡΠΈΡ, Π½Π°ΠΏΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π·ΡΠΌΠ΅ ΠΈ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ Π² Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ°Π½Π°Π»Π°