Yandex har publisert kildekoden til Userver-rammeverket, som lar deg lage høybelastningsapplikasjoner i C++ som fungerer i asynkron modus. Rammeverket har blitt testet under Yandex-nivå og brukes i tjenester som Yandex Go, Lavka, Delivery, Market og fintech-prosjekter. Brukerens kode er skrevet i C++ og er åpen kildekode under Apache 2.0-lisensen.
Userver er best egnet for å utvikle applikasjoner med mikrotjenestearkitektur. Opprinnelig ble rammeverket utviklet for Yandex Taxi, med dens hjelp byttet teamet fra en monolitisk applikasjon til en arkitektur som lar deg utvikle separate uavhengige komponenter (mikrotjenester) og bruke dem i forskjellige applikasjoner. Mikrotjenester er autonome, så en applikasjon basert på en lignende arkitektur er enkel å oppdatere og legge til nye funksjoner til den. Dermed kan mikrotjenesten for å finne en sjåfør for taxibestillinger brukes til en lignende oppgave - for eksempel å finne en kurer for å oppfylle Yandex Delivery-ordrer. Det samme kan gjøres med å beregne ankomsttiden til en sjåfør eller bud og mange andre oppgaver.
Rammeverket ble laget fra grunnen av med vekt på pålitelighet og brukervennlighet, og det inkluderer alt som er nødvendig for utvikling, diagnostikk, overvåking, feilsøking og eksperimentering. For eksempel foreslår brukerver hvordan man retter feil under kompilering, kan jobbe med ulike databaser, endre parametere underveis og så videre. Støtte for ulike systemer er også annonsert. Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, Arm-arkitekturer, GCC 8+ og Clang 9+ kompilatorer, C++17, C++20, C++23 standarder.
Pakken inneholder drivere for asynkront arbeid med DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynkront arbeidende klienter og servere For ulike protokoller (HTTP, HTTPS, GRPC, TCP, UDP, TLS), lavnivåprimitiver for å administrere synkronisering og få tilgang til operativsystemfunksjoner, samt komponenter på høyt nivå for å jobbe med hurtigbuffer, oppgaver, distribuerte låser, sporing, målinger, statistikk og data i JSON/YAML/BSON-formater. Tjenestekonfigurasjonen kan endres underveis, uten å stoppe tjenesten.
Yandex har tidligere brukt åpen kildekode til andre viktige teknologier, som for eksempel sitt distribuerte system. databasehåndtering YDB, som kan håndtere millioner av spørringer per sekund, og maskinlæringsbiblioteket CatBoost, som Yandex bruker i Søk og andre tjenester.
Kilde: opennet.ru
