{"id":160419,"url":"https://alion.io/job/aya-group-backend-razrabotchik-typescriptnode-js","title":"Backend-разработчик (TypeScript/Node.js)","company":{"id":6115,"name":"AYA Group","domain":"aya.ru","url":"https://alion.io/company/aya-group","size_band":"51-200","is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"HeadHunter","truth_index":{"grade":"A","score":85,"open_postings":5,"ghost_share":0,"stale_share":0,"repost_share":1,"time_to_fill_p50_days":22,"computed_at":"2026-10-16T05:45:00Z"}},"role":"Backend","role_family":"Backend","seniority":null,"employment_type":"full_time","work_mode":"remote","remote_scope":"stated_regions","remote_scope_basis":"board_field","remote_working_hours":null,"hiring_geo_confidence":"structured","locations":["Moscow, Russia"],"countries":["RU"],"hiring_countries":["RU","BY","KZ","KG","AM"],"hiring_countries_total":5,"salary":null,"salary_estimate":null,"experience_years_min":null,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Apache Kafka","optional":false},{"name":"Docker","optional":false},{"name":"GCP","optional":false},{"name":"GitLab","optional":false},{"name":"GitLab CI","optional":false},{"name":"Google Cloud Run","optional":false},{"name":"GraphQL","optional":false},{"name":"JavaScript","optional":false},{"name":"Node JS","optional":false},{"name":"PostgreSQL","optional":false},{"name":"RabbitMQ","optional":false},{"name":"Redis","optional":false},{"name":"SQL","optional":false},{"name":"TypeScript","optional":false},{"name":"WebSockets","optional":false},{"name":"Zod","optional":false},{"name":"ClickHouse","optional":true}],"status":"live","first_seen_at":"2026-10-10T08:51:35Z","employer_posted_date":"2026-10-10","last_verified_at":"2026-10-16T20:56:22Z","board_verified":true,"closed_at":null,"days_open":6,"trust":{"level":"ok","repost_count":2,"flags":["repost"],"days_open":5},"description":"Финтех продут - выпуск и обслуживание банковских карт, мультивалютные счета, платежи и крипто-операции. Работающий прод с десятками тысяч пользователей. Небольшая инженерная команда, прямой доступ к техлиду и продуктовым решениям.\n Стек: TypeScript (strict), Bun/Node.js, PostgreSQL (сырой SQL + pgtyped, PL/pgSQL, триггеры), GraphQL (Yoga + codegen), REST, WebSocket, Redis, Kafka и GCP Pub/Sub, Docker, GitLab CI, GCP (Cloud Run, Cloud Functions), Sentry, Zod, Biome.\n Обязанности:\n Разрабатывать и поддерживать сервисы платформы: карты, счета, транзакции, подписки, рефералка, комиссии - от схемы БД до API.\n\n Проектировать схему PostgreSQL и денежную логику на уровне базы: функции, триггеры, инварианты целостности балансов.\n\n Писать событийных воркеров поверх Kafka и Pub/Sub: идемпотентность, дедупликация, ретраи, порядок обработки.\n\n Развивать потоковую инфраструктуру: настройка Kafka и внутренний общий пакет-контроллер, через который к шине подключаются все сервисы.\n\n Делать API для клиентских приложений и бэк-офиса (GraphQL, REST), а также real-time события через WebSocket.\n\n Интегрироваться с внешними провайдерами - карточный процессинг, KYC, крипто-платежи, почтовые сервисы - и обрабатывать их вебхуки.\n\n Вести подсистемы целиком: от постановки и дизайна до выката, включая план миграции данных без простоя прода.\n\n Разбирать баги и оперативно чинить проблемы уровня приложения на проде - по сути первая линия по инцидентам в коде (инфраструктура и платёжный контур не на вас).\n\n Участвовать в код-ревью и технических решениях вместе с техлидом.\n\n Требования: От 4 лет коммерческой разработки на TypeScript/Node.js (опыт Bun - плюс, но не обязателен).\n\n Сильный PostgreSQL: пишете SQL руками, а не только через ORM; понимаете индексы, планы запросов, транзакции и уровни изоляции; проектировали схемы с нуля.\n\n Опыт логики на уровне БД (PL/pgSQL, триггеры, хранимые функции) или явная готовность быстро в это войти - здесь база не просто хранилище, а несущий слой платформы.\n\n Понимание денежной предметки: ledger/двойная запись, холды и статусы операций, идемпотентность, мультивалютность, конвертации и корректная точность округлений.\n\n Практический опыт с брокерами сообщений (Kafka, Pub/Sub, RabbitMQ) и событийной архитектурой: at-least-once, дедупликация, обработка повторов.\n\n Опыт GraphQL и/или REST, желательно schema-first с кодогенерацией типов.\n\n Аккуратность к обратной совместимости: умеете выкатывать миграции и изменения на живой прод с реальными деньгами, продумывая порядок деплоя.\n\n Самостоятельность: берёте задачу в бизнес-формулировке и доводите до дизайна и прода без микроменеджмента; задаёте вопросы до того, как сломали.\n\n Готовность отвечать за корректность сами: автотестов в сервисах немного, надёжность держится на строгой типизации, статическом анализе и продуманных сквозных ручных сценариях. Плюсом будет, если вы умеете и хотите постепенно наращивать покрытие там, где оно даёт максимум пользы.\n\n Плюсом: ClickHouse, GCP (Cloud Run, Pub/Sub, Cloud Functions), Docker, GitLab CI, Redis, WebSocket, опыт в финтехе или крипте.\n\n Что мы предлагаем:\n 1. Профессиональный рост и развитие:\n Работа над задачами в международном финтех-продукте\n\n Бюджет на обучение, конференции и профессиональную литературу\n\n 2. Условия работы:\n График работы 5/2 с гибким началом рабочего дня\n\n Удаленный формат работы по миру\n\n Компенсация ДМС после испытательного срока\n\n Два дополнительных выходных дня в год\n\n 3. Корпоративная жизнь:\n Яркие корпоративные мероприятия, от онлайн-квизов до выездов на природу\n\n Поддержка спортивных увлечений команды\n\n Отсутствие формализма и бюрократии, мы ценим результат и здравый смысл","description_format":"text","description_chars":3655,"description_truncated":false,"requirements":{"experience_years_min":null,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[{"language":"Russian","level":"Advanced (C1)","optional":false}]},"benefits":[],"hiring_locations":[{"name":"Russia","iso":"RU","kind":"country"},{"name":"Belarus","iso":"BY","kind":"region"},{"name":"Kazakhstan","iso":"KZ","kind":"region"},{"name":"Kyrgyzstan","iso":"KG","kind":"region"},{"name":"Armenia","iso":"AM","kind":"region"}],"hiring_excludes":[],"relocation_offered":false,"industries":["Commerce"],"lifecycle":[{"event":"open","at":"2026-08-11T08:51:24Z"},{"event":"6","at":"2026-09-10T08:51:30Z"},{"event":"open","at":"2026-09-10T12:00:05Z"},{"event":"close","at":"2026-09-14T12:46:27Z"},{"event":"restore","at":"2026-09-14T22:45:59Z"},{"event":"6","at":"2026-10-10T08:51:35Z"}],"visa":[],"liveness":{"score":67,"band":"ok","label":"Likely open","p_open":1,"p_active":0.674,"p_room":1,"age_days":5,"expected_fill_days":22,"reasons":["conf:10","repost:2","velocity","win:early"],"computed_at":"2026-10-16T05:45:00Z"},"pay":null,"html_url":"https://alion.io/job/aya-group-backend-razrabotchik-typescriptnode-js","json_url":"https://alion.io/job/aya-group-backend-razrabotchik-typescriptnode-js.json","meta":{"generated_at":"2026-10-17T03:31:49Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":4609,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-18T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":6115},"rest":"https://alion.io/mcp/rest/get_company?id=6115"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Faya-group-backend-razrabotchik-typescriptnode-js"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Faya-group-backend-razrabotchik-typescriptnode-js"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Faya-group-backend-razrabotchik-typescriptnode-js"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/aya-group-backend-razrabotchik-typescriptnode-js\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Faya-group-backend-razrabotchik-typescriptnode-js"}]}