Codelabs — толық циклді инженерлік компания
RU|EN|KK

16+ жыл · 297 код репозиторийі · дәл қазір жұмыс істеп тұрған жүйелер

Қателесуге болмайтын жүйелер

Біз — инженерлік команда. Төлемді жоғалтуға, қате баланс көрсетуге немесе шарықтау сағатында жүктемеден құлауға болмайтын өнімдерді жасаймыз әрі қолдаймыз: төлем шлюздері, криптоайырбас, ойын және букмекерлік платформалар, кассалық желілер, бейнетрансляциялар, киілетін электроника.

Бүкіл тізбекті өзіміз жасаймыз — баспа платасының сызбасы мен құрылғының ішіндегі микробағдарламадан бастап серверлерге, дерекқорға және клиентіңіз көретін сайтқа дейін. Сондықтан жобада ешкім жауап бермейтін «иесіз» бөлік пайда болмайды.

«Астана Хаб» халықаралық технопаркінің қатысушысы

~1.5 млн
тәулігіне ақша операциясы
біз жасап, қызмет көрсетіп жүрген платформаның көрсеткіші
2.18 млн
бір платформадағы ойыншы
және 30 күнде 1.24 млн шот толтыру
85 млн+
криптошлюздегі операция
10 блокчейн желісінде қабылдау және шығару
16+ жыл
команда бірге жұмыс істейді
репозиторийлеріміздегі ең алғашқы код — 2009 жылғы

Бізбен қалай жұмыс істейді

01

Өнімді нөлден бастап жасау

Сіз міндетпен келесіз — жұмыс істейтін жүйе аласыз: жобалау, әзірлеу, іске қосу, өз командаңызға тапсыру. Осылайша төлем шлюзі, криптоайырбас, лотерея платформасы, спортшыларды бақылайтын құрылғы және тағы ондаған өнім жасалды.

02

Жұмыс істеп тұрғанын жөндеу және жылдамдату

Жүйе баяулайды, ақша жоғалтады немесе жүктемеден құлайды — нағыз себебін тауып, түзетуді продакшенге дейін жеткіземіз. Осындай бір талдау мөлшерлеме есебін 15 есе жылдамдатты, екіншісі платформаны 267 қосарланған төлемнен құтқарды.

03

Пайдалануды өз мойнымызға алу

Серверлер, жаңартулар, мониторинг, сақтық көшірмелер, авария кезіндегі кезекшілік. Бұл біз үшін қосымша әрекет емес: 300-ден астам жобаға өз инфрақұрылымымызды және бес тәуелсіз бақылау жүйесін ұстаймыз, әрбір елеулі ақауды түпкі себебіне дейін талдаймыз.

Не істейміз

11 бағыттың 6-ы
01

Ақша саналатын жүйелер

Жоғары жүктемелі транзакциялық жүйелер

Әмияндар, төлемдер, есептеулер, мөлшерлемелер — кодтың бір жолындағы қате нақты шығынға айналатын бәрі. Біз оларды төлем екі рет өтпейтіндей, ал баланс минусқа кетпейтіндей етіп жасаймыз — мыңдаған адам дәл сол секундта төлеп жатқанда да. Ал операция сіздің жүйеңіз бен банктің арасында ілініп қалса, ол солай тұрып қалмайды: жүйе оны не аяғына дейін жеткізеді, не ақшаны қайтарады.

Біз жүргізіп отырған платформа тәулігіне шамамен 1.5 млн ақша операциясын өткізеді. Төлем есебін қайта жазғаннан кейін 267 қосарланған төлем және 437 мың ілініп қалған тапсырма кезегі жоғалды.

02

Ақшаны кез келген тәсілмен қабылдау және шығару

Төлем интеграциясы және финтех

Өніміңізге клиенттеріңіз шын мәнінде немен төлейтінін қосамыз: банк аударымдары, мобильді ақша, криптовалюта, кассадағы немесе терминалдағы қолма-қол ақша. Әрбір төлем провайдері өзінше сөйлейді, олардың жартысы — он жыл бұрынғы тілде. Біз үшін бұл — күнделікті жұмыс. Нарықта қолайлы шлюз болмаса, өзіміздікін жасаймыз: бізде 21 төлем жүйесі қосылған меншікті шлюз бар.

Кариб аймағында, Латын Америкасында және ТМД-да 20-дан астам интеграция. Оған қоса меншікті ақша аудару желісі: адам бір елде қолма-қол ақша салады, алушы оны басқа елде PIN-код арқылы алады.

03

Криптовалютаны қабылдап, кәдімгі ақшаға айырбастау

Криптопроцессинг

Клиент сізге USDT, биткоин немесе басқа монетамен төлейді — сіз соманы жергілікті валютада аласыз және блокчейн туралы ойламайсыз. Бағам биржалардағы нақты өтінімдер бойынша автоматты түрде таңдалады, кіріс төлемдер «лас» шығу тегіне тексеріледі, әмиян кілттері шифрланған күйде сақталып, тек аудару сәтінде ғана ашылады.

Шлюзіміз 10 желімен жұмыс істейді — Ethereum, TRON, Solana, TON, Bitcoin және басқалары. Жұмыс барысында 85 млн-нан астам операция өтті, дерекқор 283 ГБ-қа дейін өсті.

04

Лезде жаңарып отыратын деректер

Real-time жүйелер және ағынды деректер

Мөлшерлеме коэффициенттері, биржа котировкалары, датчик көрсеткіштері — секундына бірнеше рет өзгеретін және бір мезгілде мыңдаған экранға жетуге тиіс бәрі. Мұнда деректі жай ғана жіберу жеткіліксіз: адамның алдында сандар секірмеуі керек, байланыс үзілгенде ештеңе жоғалмауы керек және оқиғалар орындарын ауыстырмауы керек. Біз мұндай ядроны нөлден жаздық және оның қай жерде сынатынын білеміз.

Ядромыз 12 спорт түрі бойынша котировка ағынын қабылдап, оны бір мезгілде мыңдаған браузерге таратады. 2020 жылдан бері продакшенде жұмыс істейді.

05

Нақты уақыттағы бейне және техниканы браузер арқылы басқару

Live-бейне және жабдықты қашықтан басқару

Браузерде жүздеген және мыңдаған тікелей бейне ағынын көрсетеміз — плагинсіз және секундтың үлесіндей кідіріспен. Ең көрнекі жобамыз: адам браузерден залда тұрған нағыз ойын автоматында ойнайды. Экрандағы басу корпус ішіндегі платаға жетіп, контактіні тұйықтайды, автомат жұмыс істейді, камера нәтижені көрсетеді. Дәл осы тәсіл қашықтан басқарылып, нәтижесі көзбен көрінуі керек кез келген техникаға жарайды.

Шамамен 1000 қосылған автомат және шамамен 2000 бір мезгілдегі бейне ағыны: әр аппаратқа бір экран мен бір камера.

06

Электроника: плата сызбасынан дайын құрылғыға дейін

Ендірілген жүйелер және электроника

Жабдықты бөтен бөліктерден құрастырмай, толығымен өзіміз жасаймыз: схема мен баспа платасын саламыз, микробағдарлама жазамыз, құрылғы дерек жіберетін серверді көтереміз және сол деректі адам көретін интерфейсті жасаймыз. Бөлек өнеркәсіптік техникаға драйверлер жазамыз — купюра қабылдағыштарға, қолма-қол ақша бергіштерге, чек принтерлеріне, карта оқығыштарға.

ESP32, STM32 және AVR негізіндегі меншікті платалар мен микробағдарламалар — тіпті желілік платаға өз желілік стегімізді жазуға тура келді: дайыны микроконтроллер жадына сыймады.

Тағы: Үлкен деректер бойынша аналитика және есептер · Ойын платформалары және ойын математикасы · Мобильді қосымшалар · Баяу жүйелерді тестілеу және жылдамдату · Серверлер және пайдалану

Барлық 11 қызмет →

Не жасалып қойды

12 кейстің 5-еуі
CASE 01Кілт тапсырымды iGaming платформасы

2 миллион адам пайдаланатын ойын платформасы

Операторға жеке ойын емес, бүкіл бизнес керек болды: ойыншыларға арналған сайт, физикалық нүктелердегі касса, қызметкерлерге арналған басқару панелі, өз ойындары, сыртқы жеткізушілердің ойындары, төлем қабылдау, серіктестік бағдарлама. Біз мұны бір жүйе ретінде жасадық — және сол жүйеден әрқайсысы өз безендірілуімен 15 түрлі бренд іске қосылады, әрқайсысына кодты көшірмей.

ПлатформаТөлемдерЖоғары жүктеме
Кейсті талдау →
  • 2.18 млн ойыншы
  • тәулігіне ~1.5 млн ақша операциясы
  • бір кодтық базадан 15 бренд
  • дерекқор 13 серверге таратылған
CASE 03Нақты уақыттағы букмекерлік конвейер

Матчтан қалып қоймайтын коэффициенттер

Букмекерге 12 спорт түрі бойынша коэффициент өзгерістерінің ағыны келеді. Оларды лезде матчтар бойынша жіктеп, барлық ашық браузерге жіберу керек — ешкім ескірген бағаны көріп, оған үлгеріп мөлшерлеме қоймайтындай. Біз бұл үшін C++ тілінде өз ядромызды және өз жеткізу хаттамамызды жаздық: ойыншының байланысы үзілсе, ол қоқыс емес, дұрыс қалпына келтірілген көріністі алады.

Real-timeC++Мөлшерлемелер
Кейсті талдау →
  • бір ағында 12 спорт түрі
  • 2020 жылдан бері продакшенде
  • дәл осы ағын серіктестерге жеке өнім ретінде сатылады
CASE 05Криптотөлем шлюзі

10 блокчейн желісіндегі криптотөлемдер

Міндет қарапайым естіледі: клиент криптомен төлейді — бизнес ақшаны жергілікті валютада алады. Осы қарапайымдылықтың артында қалғанының бәрі жасырынған: әр клиентке өз мекенжайын беру, кіріс төлемді блокчейннен көру, растауларды күту, ақшаның шығу тегін тексеру, бағамды есептеу және онда ұтылмау. Біз мұның бәрін бір жүйеге жинадық.

КриптоТөлемдерAML тексеру
Кейсті талдау →
  • 85 млн-нан астам операция
  • 10 желі: Ethereum, TRON, Solana, TON, Bitcoin және басқалары
  • бағам биржа өтінімдері бойынша автоматты есептеледі
CASE 06Live-бейне және жабдықты қашықтан басқару

Нағыз автоматта ойнау — браузерден

Адам сайтты ашып, залда тұрған нағыз ойын автоматының тікелей бейнесін көреді. Ол экрандағы түймені басады — және ол автоматтың өзінде басылады: сигнал браузерден серверге, серверден корпус ішіндегі платаға барады, плата контактіні тұйықтайды. Барабандар айналады, камера нәтижені көрсетеді, ақша залдағы тірі келуші сияқты есептеледі. Мұнда бәрін өзіміз жасадық: плата микробағдарламасынан бейнені көрсететін клиентке дейін.

БейнеЭлектроникаWebRTC
Кейсті талдау →
  • шамамен 1000 автомат желіде
  • 1998 бір мезгілдегі бейне ағыны
  • автомат ішіндегі өз платамыз және өз микробағдарламамыз
CASE 07IoT-бақылау және жергілікті позициялау

Футболшыдағы датчик және алаңның жылу картасы

Жаттықтырушыға ойыншының қанша жүгіргенін, алаңның қай жерінде болғанын, қаншалықты жиі екпін алғанын және тамыр соғысымен не болып жатқанын көру керек. Біз киілетін белгі әзірледік — платасын өзіміз салдық, микробағдарламасын өзіміз жаздық, — стадионға қабылдағыштар орнаттық және радиосигнал бойынша әр ойыншының орнын есептейтін сервер жаздық. Жаттықтырушы матч кезінде алаңның тірі картасын, матчтан кейін жылу карталарын алады.

IoTСпортЭлектроника
Кейсті талдау →
  • өз платамыз: радиомодуль, қозғалыс датчиктері, ЭКГ, GPS
  • орын бірнеше қабылдағыштың радиосигналы бойынша есептеледі
  • белгілерге арналған зарядтау капсулалары да біздің әзірлемеміз
Қалған жетеуі — кейстер бетінде.Барлық 12 кейс →

Сізге не жасай аламыз

7 бағыт

Бұл — жасалып қойған жобалар емес, қазірдің өзінде салынғанға тікелей сүйенетін міндеттер. Әрқайсысында тәжірибенің неге негізделгені көрсетілген — сенім артпай, тексере алуыңыз үшін.

01

Жұмыс істеп тұрған дерекқорды баяулатпайтын аналитика

Есептер мен дашбордтар негізгі дерекқордан дерек ағып келетін бөлек қоймада есептеледі. Есеп құрылып жатқанда өндірістік жүйе баяуламайды, ал тарих соңғы тоқсан күн емес, барлық жылдар бойы сақталады.

Негізі — 1.63 млрд жолдық есеп қоймасы, өндірістік дерекқордан келетін өзгерістер ағыны, тәулік шекарасын жылжытпайтын бірнеше уақыт белдеуі бойынша есептілік.

Кімге — Есептерін түнде тікелей өндірістік дерекқорда жүргізіп үйренгендердің бәріне.

02

Сервистің ішіндегі төлем контуры және әмиян

Бірнеше провайдер арқылы ақша қабылдау, сервис ішіндегі пайдаланушы балансы, орындаушыларға төлемдер және күнделікті салыстыру. Түймені қайта басу екінші төлем жасамайды, ал сіз бен банк арасында ілінген операция солай тұрып қалмайды.

Негізі — Тәулігіне шамамен 1.5 млн операция өткізетін, айырмашылықтарды автоматты салыстыратын ақша ядросы.

Кімге — Маркетплейстерге, курьерлік және сервистік платформаларға, жазылым өнімдеріне.

03

Кілт тапсырымды IoT-өнім: платадан жеке кабинетке дейін

Схема мен баспа платасы, микробағдарлама, радиоарна, серверлік бөлік, құрылғыларды эфир арқылы жаңарту және мұның бәрі көрінетін веб-панель. Бүкіл тізбекке бір команда — жабдық пен бағдарламаның арасында иесіз аймақ қалмайды.

Негізі — Меншікті әзірлеменің киілетін құрылғысы: радиомодулі, қозғалыс датчиктері, ЭКГ және GPS бар өз платамыз, құрылғыға бармай-ақ микробағдарламаны жаңарту.

Кімге — Өндіріске, агроөнеркәсіпке, тұрғын үй-коммуналдық шаруашылыққа, суық тізбекті бақылауға.

04

Өнеркәсіптік жабдықтан көрсеткіштерді жинау

Есептегіштер, контроллерлер, таразылар мен датчиктердің әрқайсысы өз хаттамасында сөйлейді. Біз оларды тарихы, шектері және көрсеткіш нормадан шыққанда хабарлауы бар бір көрініске келтіреміз.

Негізі — Хаттама сипаттамасы бойынша жазылған өнеркәсіптік периферия драйверлері және микроконтроллерлердегі желілік контроллерлер — платадағы өз желілік стегімізге дейін.

Кімге — Энергия есебіне, тұрғын үй-коммуналдық шаруашылыққа, өндіріске.

05

Физикалық нысанға браузер арқылы қашықтан қол жеткізу

Кідірісі аз тікелей бейне және кадрдағы нақты жабдықты басқару: тауарды қарау, жұмысты қабылдау, стендті іске қосу, тірі лотқа сауда жасау — сол жерге бармай-ақ.

Негізі — Желідегі шамамен мың құрылғы және 1998 бір мезгілдегі бейне ағыны, мұнда браузердегі түйме басу корпус ішіндегі платаның контактісін тұйықтайды.

Кімге — Аукциондарға, қашықтан қабылдауға, шоурумдарға, жабдыққа қызмет көрсетуге.

06

Жылдам өзгеретін бағалар конвейері

Өзгерістер ағыны нысандар бойынша жіктеліп, мыңдаған ашық браузерге кетеді. Клиенттің байланысы үзілсе, ол үзінділерді емес, дұрыс қалпына келтірілген көріністі алады және енді жоқ бағаны көрмейді.

Негізі — 2020 жылдан бері продакшендегі C++ тіліндегі котировка ағынының ядросы: снапшот және инкременттер, өз жеткізу хаттамасы.

Кімге — Биржа витриналарына, аукциондарға, динамикалық баға белгілеуге, диспетчерлік қызметтерге.

07

Өніміңізді серіктестерге тираждау

Бір код — көп бренд: безендіру, домендер, шектеулер мен тарифтер әр клиентке жобаны көшірумен емес, баптаумен беріледі. Жаңарту жеті рет қатарынан емес, бәріне бірден шығады.

Негізі — Жұмыс істеп тұрған платформада бір кодтық базадан 15 бренд, тираждарды құрастыру мен жариялау автоматтандырылған.

Кімге — Өз платформасын басқа компанияларға сата бастағандардың бәріне.

Немен жұмыс істейміз

продакшендегі тәжірибе, вакансиядағы тізім емес
Серверлік бөлікті немен жазамыз
Ақша саналатын және жүктеме ұсталатын жүйелердің негізі.
PHP (Symfony, Laravel, RoadRunner)C++ (Qt, CUDA)Node.js / TypeScriptJava (Spring, Kafka)PythonC (микроконтроллерлер)
Пайдаланушы нені көреді
Сайттар, жеке кабинеттер, басқару панельдері, браузердегі ойындар.
ReactReact Router (SSR)Vue / NuxtEffectorTailwindMantine
Деректерді қайда сақтаймыз
Ақша операцияларынан миллиардтаған жолдық мұрағаттарға дейін.
MariaDB / MySQL (Galera)ClickHousePostgreSQLRedisMongoDBMinIO
Деректерді қалай лезде жеткіземіз
Браузердегі тікелей жаңартулар және сервистер арасындағы кезектер.
RabbitMQKafkaCentrifugouWebSockets.jsWebSocketөз TCP / UDP протоколдарымыз
Құрылғыларды неден жасаймыз
Сұлба, плата, микробағдарлама, радиобайланыс.
ESP32 (ESP-IDF, FreeRTOS)STM32 (HAL, CubeMX)AVRRaspberry PiKiCad, ProteusUWB (Decawave)
Мұның бәрі неде тұрады
Серверлер, жаңартуларды автоматты шығару, мониторинг, сақтық көшірмелер.
DockerAnsibleGitLab CInginxZabbixPrometheus / Grafana
Толық стек →

Міндетіңізді сипаттаңыз — оның қай бөлігі бізде жасалғанын айтамыз

Не істеу керегін айтыңыз. Оның қай бөлігі бізде әлдеқашан жасалып, жұмыс істеп тұрғанын айтамыз.