Technologie nás baví
Špičkové open–source technologie, vývoj a inovace jsou v Seznamu jako doma. A abyste se jako doma u nás cítili i vy, technologie i techniku si můžete vybrat podle svého přání.
A
Aerospike
Databáze notifikací pro uživatele zobrazované v přihlašovací části hlavičkové lišty služeb.
Airflow
Používáme pro management datových pipeline. Produkty a služby, které Seznam nabízí, se skládají z velkého počtu navzájem propojených modulů a datových toků a vytvářejí tak velmi komplexní a sofistikovaný systém. Airflow nám pomáhá udržovat tento systém pod kontrolou a v optimální kondici.
Android
V Seznamu vyvíjíme pokročilé Android aplikace. Prozkoumejte naše projekty a přidejte se k inovacím na aplikace.seznam.cz.
Ansible
Ansible využíváme jako klíčový nástroj pro automatizaci konfigurace a správy infrastruktury. Umožňuje nám rychle a efektivně nasazovat a aktualizovat software, spravovat konfigurační soubory a monitorovat stav serverů. Díky Ansible je možné centralizovaně řídit a orchestrovat procesy v rámci IT infrastruktury, což zvyšuje efektivitu práce a zajišťuje spolehlivý provoz našich služeb.
B
Bash
Bash je skvělý interpret příkazů a jazyk pro triviální skripty.
BIRD
BIRD je routovací deamon instalovaný na servery v naší DC infrastruktuře.
C
C#
Využíváme C# k přizpůsobení a vývoji našeho systému Helios s důrazem na výkonnost a bezpečnost.
C++
V C++ píšeme převážně backendy, od kterých vyžadujeme vyšší výkon, než poskytuje Python. Najdete ho například ve výdeji fulltextového vyhledávání a výdeji reklamy.
Calico
Síťová vrstva používaná v OpenStacku/Kubernetu ve SCIFu.
Cassandra
Databáze, kterou používáme na ukládání metadat o webech pro účely kvalitnějšího vydávání reklamy.
CatBoost
CatBoost je našim oblíbencem z rodiny gradient boosting frameworku. Využíváme ho pro jeho schopnosti rychle dosáhnout dobrých výsledku v oblasti modelování. Je to typicky jeden z prvních modelů, který zkoušíme během fáze prototypování a nezřídka se dostane až do produkce.
Ceph
Ceph, jako open-source systém pro ukládání dat, je klíčový pro naše úložiště s vysokou mírou škálovatelnosti a odolnosti.
Cilium
V Seznamu využíváme Cilium pro propojení clusterů v rámci projektu Unified ACL, které zajišťuje efektivní správu přístupu.
CISCO
Cisco zařízení u nás najdeme zejména v datacentru, kde používáme fixní modelovou řadu Nexus. Ale také v kancelářích pro WIFI infrastrukturu, kde používáme např. Cisco Catalyst.
Clickhouse
Slouží jako offline část naší feature store. Ukládáme do něj data sloužící hlavně pro modelování a analýzy.
CoreDNS
CoreDNS je základem našich Kubernetes clusterů v SCIF, kde zajišťuje robustní správu DNS záznamů.
Couchbase
Couchbase se používají jako různé víceméně perzistencní cache. Na Zboží.cz například drží vyrenderované HTML kódy stránek.
CSS
CSS používá každá naše webová služba. Využíváme také pre-processory jako LESS, Sass, Stylus nebo post-processory jako PostCSS.
D
Dart
Dart je jazyk úzce spojený s Flutterem a využíváme ho primárně pro vývoj multiplatfomních mobilních aplikací. Je jednoduchý, a i proto nám umožňuje psát efektivně přehledný kód. Díky sound null safety a obecně velké vyzrálosti jazyka jsou naše codebase rovněž velmi stabilní.
Django
Framework, který nám usnadnuje práci s DB a tvorbou API.
Docker
Docker hojně využíváme pro vývoj a deployment aplikací, finální image nasazujeme převážně v Kubernetes.
E
Elasticsearch
Elasticsearch používáme na některé specifické případy vyhledávání, ale i jako backendovou databázi třeba pro Zboží.cz. Zároveň slouží jako jedno z možných úložišť pro aplikační logy.
Envoy
Proxy server Envoy tvoří poslední úroveň interního loadbalanceru, který zpracovává veškerý traffic Seznamu a posílá ho dál na jednotlivé Kubernetes pody, případně další endpointy.
ESLint
Nástroj pro kontrolu a opravu code style JavaScriptového a TypeScriptového kódu pro lépe udržovatelný kód.
etcd
Slouží jako úložiště metadat pro Kubernetes. Zároveň ho některé služby (jako třeba Mapy.cz) používají přímo pro sychnronizaci dávkových úloh.
F
Fastlane
Nástroj pro automatizaci tvorby release a testovacích verzí našich iOS aplikací.
Firebase
Firebase používáme hlavně jako místo pro ukládání testovacích verzí aplikací, analytický nástroj a remote config.
Flask
Flask, flexibilní Python framework, máme rádi pro jeho modulárnost a rychlé nasazení, což umožňuje efektivní vývoj škálovatelných backendových služeb.
Flink
Framework pro streamové zpracování dat z různých zdrojů (např. Kafka, Hadoop atd.). Díky němu v reálném čase servírujeme data klientům, učíme naše modely anebo zpřesňujeme relevanci vydávané reklamy.
Flutter
Flutter díky své jednoduchosti, extrémně vysoké výkonosti a běhu na jakémkoli zařízení, které umí kreslit pixely, nám pomáhá zvyšovat efektivitu vývojového týmu. A navíc udržuje aplikace stejné na všech platformách. Naprostá kontrola nad vykreslováním UI nám taky dává možnost aplikace vyvíjet v souladu s platformními specifiky za přidání našeho osobitého brandu.
G
Galera Cluster
Galera Cluster, nadstavba MySQL/MariaDB, je v Seznamu klíčová pro vysokou dostupnost SQL databází s všesměrovou replikací.
Git
V GITu verzujeme veškerý kód i většinu konfigurací. Filozofie použití se liší v závislosti na službě. Reklamní systémy mají monorepo, většina ostatních služeb pak desítky až nižší stovky menší repozitářů.
GitLab
Interně provozovaný GitLab drží veškeré naše zdrojové kódy. GitLab CI pipelines se starají o buildy a nasazování.
Golang
Většina našich backend systémů běží na Go, třeba například domovská stránka. Přešli jsme na něj z Pythonu kvůli vyššímu výkonu a paralelizmu, a protože ho máme rádi.
Grafana
Grafanu používáme na sledování, jak se naším aplikacím v provozu vede.
Grafana Loki
Grafana Loki nám umožňuje efektivně spravovat aplikační logy pro velké objemy dat, které by nezvládl Elasticsearch.
GraphQL
Jazyk pro dotazování API, který využíváme na Streamu, Diskuzích či domovské stránce Seznamu. Jedná se o moderní alternativu k REST API.
H
Hadoop
V Hadoopu žije většina dat našeho fulltextového vyhledávače. Používá se i na jiných službách, kde potřebujeme zpracovávat velké množství dat, jako je třeba webová analytika nebo reklamní systémy.
HBase
NoSQL databáze určená pro rychlé vyhledání i skenování uložených dat, do které můžete navíc psát custom kód na všech možných úrovních. V reklamních systémech v ní mají inzerenti uložené statistiky o úspěšnosti reklamy.
Hive
Databáze, kterou používáme ke zpracování velkých dat. Například pro analytické výpočty, ale i pro ad-hoc dotazy a ladění.
HTML
Většinu seznamáckých webů už generují různé front-end frameworky, ale je dobré vědět, že někde tam vespod je pořád HTML. Nebo spíš DOM.
I
IMA.js
Seznamácký open-source framework pro vývoj univerzálních aplikací, na kterém běží největší české obsahové portály jako Novinky.cz, Seznam Zprávy, Sport.cz atd.
Impala
Apache Impala je open source neboli nativní analytická databáze pro otevřená data a tabulky.
iOS
V Seznamu vyvíjíme rozmanité aplikace pro iOS, mrknout na ně můžete na webu aplikace.seznam.cz.
J
Java
V Javě píšeme převážně věci, které nějak souvisejí s big daty a Hadoopem. Např. fulltextový robot, který neúnavně stahuje pořád dokola celý internet.
JavaScript
JavaScript používáme pro vývoj dynamických frontendů i backendů, často v kombinaci s TypeScriptem pro lepší škálovatelnost a údržbu kódu.
Jenkins
Používáme ho jako automatizační nástroj. Například k sestavování aplikací.
Jest
Jeden z nečastěji používaných nástrojů pro psaní jednotkových a integračních testů pro komponenty psané v JavaScriptu a TypeScriptu, a to zejména frontendy.
JUNIPER
Juniper boxy převážně používáme v kancelářích pro access vrstvu a jako firewally.
Jupyter
V Jupyteru mazlí data jak výzkumníci strojového učení, tak analytici i vývojáři honící svoje bugy.
Jupyter lab
Většina analýz a modelování se u nás odehrává právě v prostředí Jupyter notebooku.
K
Kafka
Přes Kafku posíláme veškeré události v našem reklamním systému a infrastruktuře jako např. pro sběr logů. Taky ji využíváme při doručování notifikací (upozornění) uživatelům.
Kibana
Kibana je oblíbený klikací klient pro Elasticsearch. Používáme ji pro prohlížení aplikačních logů, případně pro vizualizaci rozličných nasbíraných dat.
Kotlin
Programovací jazyk pro vývoj aplikací na platformě Android a rozvoj interního YouTracku. Implementace backendového serveru pro výdej reklamy, jehož primárním cílem je plně nahradit Javu díky svojí intuitivnosti a kompatibilitě s JVM.
Kubeflow
Prostředí, ve kterém provozujeme část ML infrastruktury, je to naše hlavní odpověd v oblasti automatizace ML.
Kubernetes
V Seznamu nasazujeme do Kubernetes širokou paletu kontejnerizovaných aplikací, což zvyšuje efektivitu a flexibilitu našeho vývoje.
L
Linux
Linux je základem pro většinu našich serverů a s rozmachem kontejnarizace se stává stále oblíbenější mezi našimi vývojáři.
Logstash
Logstash zpracovává napříč Seznamem aplikační logy, které potom ukládáme do Elasticsearche.
Lua
Lua se v Seznamu vyskytuje jako embedded jazyk v nginx proxy. Využívají ji například Mapy.cz, Zboží.cz nebo anti-AdBlock.
M
MariaDB
Nové instalace SQL databází běží většinou na platformě MariaDB, které spravujeme naším infrastrukturním týmem přes 200 clusterů.
MongoDB
NoSQL databáze, kterou používá většina našich obsahových služeb.
MyRocks
Používá se jako databáze na projektu Uživatelský profil.
MySQL
MySQL je u nás nejpoužívanější SQL databází spravovanou naším infrastrukturním týmem.
N
.NET
Používáme pro programový rozvoj ERP Helios, kam píšeme všechna naše API.
Nginx
Drtivá většina síťových požadavků, které dorazí do Seznamu, někde po cestě potká nginx. Na většině služeb ho používáme jako standardní proxy server. Jednodušší požadavky vyřídí rovnou, složitější přepošle na nějaké backendové API. Odvážnější týmy, jako jsou Mapy.cz, Zboží.cz nebo tým anti-AdBlocku, píšou některé funkcionality přímo do něj v Lua nebo C modulech.
Node.js
Běhové prostředí JavaScriptu, který např. v kombinaci s IMA.js používáme pro server-side rendering našich stránek. Některé odvážnější služby jako např. Podcasty a další mikro služby běhají v Node.JS i backendy.
O
OpenStack
Ačkoliv v Seznamu běží více OpenStack služeb, nejčastěji narážíme na OpenStack Nova, což je pro nás standardní způsob virtualizace čehokoliv, co potřebuje perzistentní stav. Kromě vývojářských virtuálek nad OpenStackem provozujeme MySQL, PostgreSQL, Elasticsearch, Kafku a mnoho dalších.
OpenStack Swift
OpenStack Swift využíváme jako sekundární storage systém pro efektivní ukládání dat v konkurenci s Cephem.
P
PaloAlto
Nová generace FW v Seznamu, která se začíná používat nejen v našich DC, pro oddělení menších sítí, ale i jako FW pro kanceláře a pobočky.
Pandas
Patří mezi naši nejpoužívanější knihovnou pro práci s daty, jejich analýzy, čištění a obecně manipulaci.
PHP
V reklamě používáme pro tvorbu modulů do WordPressu.
Playwright
V Playwrightu píšeme E2E testy pro služby, jako jsou Novinky.cz, Seznam Zprávy nebo třeba Sport.cz, kde se nám hodně osvědčil debug režim.
PostgreSQL
PostgreSQL v Seznamu využíváme jako alternativní SQL databázi, oblíbená je zejména pro svá GIS rozšíření na Mapách a v dalších aplikacích.
Postman
Aplikaci používáme na vytváření kolekcí requestů na testování a debug našich back-end aplikací.
Prometheus
Náš primární nástroj pro sběr provozních metrik. Pokud je všechno v pořádku, kreslíme z něj grafy v Grafaně, pokud ne, vyskakují nám alerty.
Puppeteer
Puppeteer nám slouží pro generování obrázků regresních testů a E2E testů na službách, jako jsou Novinky.cz, Seznam Zprávy, Sport.cz atd. Postupně Puppeteer nahrazujeme za Storybook a Playwright.
Python
Python je převažující jazyk pro backendy v Seznamu. Najdete ho nejen na obsahovkách, Mapách, Firmách, Zboží či v reklamních systémech. Dokonce i celý výzkum funguje převážně na Pythonu. Zkrátka je všude, kde není důvod používat něco jiného.
PyTorch
Využíváme pro pokročilé modely neuronových sítí, a to hlavně v oblasti NLP.
Q
QApe
Seznamácky open-source pro autonomní testování a reportování chyb z webových stránek.
R
RabbitMQ
Distribuovaný message broker. V Seznamu ho najdete na CDN a na Zboží.cz.
React
V Reactu je napsaná většina obsahových i oborových služeb (např. Seznam Zprávy, Novinky.cz, Sport.cz, Sauto.cz, Sbazar.cz nebo Zboží.cz) a nejspíš ho v Seznamu najdete i jinde.
Redis
In-memory databáze, nejčastěji používaná jako read a write cache našich backendů.
Redux
Redux je open-source JavaScriptová knihovna pro správu a centralizaci stavu aplikace.
REST API
REST API je v Seznamu standardní způsob, jakým se webová stránka baví s backendovým API. Najdete ho prakticky všude, kde nenajdete GraphQL.
S
Scala
Jazyk, ve kterém jsme začali psát joby ve Sparku a Flinku. Až ho někteří fanoušci u nás začali používat skoro na všechno.
Scylla
Do Scylly ukládáme data, která si chtějí uživatelé přenášet mezi zařízeními, a také data potřebná pro výdej reklamy.
Spark
Využívají ho převážně kolegové z výzkumu a analytiky. Slouží ke zpracování a analýze logů ve vyhledávání a v reklamních systémech (Spark a pySpark) a k přípravě datových sad pro učení modelů strojového učení.
Storybook
Přes Storybook zobrazujeme jednotlivé komponenty, když generujeme obrázky pro regresní testy. Nahradili jsem s ním původní custom řešení přes Puppeteer.
StyleLint
Nástroj pro kontrolu a opravu code style CSS kódu včetně nadstaveb, jako je třeba LESS, Sass pro lépe udržovatelný kód.
Swift
Programovací jazyk pro vývoj aplikací pro platformu iOS. Na iOS ho používáme majoritně místo Objective-C.
T
Tableau
Tableau je nástroj pro vizualizaci dat, který umožňuje uživatelům snadno vytvářet interaktivní reporty, dashboardy a analýzy dat.
Tailwind
CSS framework (pro efektivnější frontendový vývoj), využíváme ho pro rychlý vývoj webových uživatelských rozhraní.
TensorFlow
Tensorflow runtime využíváme na CDN pro klasifikaci obrázků a videí. Využíváme ho jako vstup pro lepší ořez produktových obrázků nebo pomocí neuronové sítě připravené výzkumným týmem detekujeme potenciálně nevhodný obsah ve videu.
Terraform
Terraform je klíčovým prvkem pro správu infrastruktury jako kódu (Infrastructure as Code). Terraform umožňuje definovat prostředí naší infrastruktury prostřednictvím deklarativního jazyka a poté automatizuje nasazení a správu těchto zdrojů napříč cloudovými platformami. Díky Terraformu je možné jednoduše vytvářet, upravovat a odstraňovat komponenty infrastruktury, jako jsou virtuální stroje, databázové instance nebo síťová zařízení, a to s minimální manuální intervencí. Tímto způsobem Seznam.cz efektivně škáluje svou infrastrukturu, zvyšuje automatizaci a minimalizuje chybovost při provozu a správě SCIF prostředí.
TestFlight
Pomocí TestFlightu ukládáme testovací verze aplikací.
TypeScript
V TypeScriptu píšeme většinu nových webových front-endů pro zajištění typové kontroly.
V
Vitess
Middleware umožňující téměř transparentní sharding nad MySQL databázemi.
Vue.js
Framework, který využíváme v administraci domovské stránky Seznamu spolu s Nuxt.js a Vuetify.
W
Webpack
Modulární rozšiřitelný bundler pro frontend, který využíváme pro vytvoření balíků (bundlů) kódu pro prohlížeče ze zdrojového kódu.
Technologií máme spousty, stačí si jen vybrat, která vám nejlíp sedne. Mrkněte na volné židle, které teď máme k dispozici.