Senior Software Engineer (Go / Python)
Summary
Senior engineer building a high-scale network telemetry system that collects and decodes IPFIX/NetFlow/sFlow flow data, pipelines it via Protocol Buffers, Kafka and ClickHouse, and ships it as packaged binaries to customer infrastructure. Core stack: Go (UDP/TCP servers), async Python, Linux performance tuning.
O roli
Budujemy system do zbierania, dekodowania i analizy telemetrii sieciowej (IPFIX, NetFlow, sFlow) w skali, w której liczy się każda alokacja. Szukamy inżyniera, który czuje się dobrze zarówno na poziomie nagłówków pakietów, jak i w profilerze, i potrafi dowieźć gotowy produkt do infrastruktury klienta.
Czym się zajmiesz
- Projektowaniem i rozwojem usług w Go (serwery UDP/TCP, szybkie pętle dekodowania) oraz w async Python.
- Dekodowaniem protokołów flow: IPFIX (RFC 7011), NetFlow v5/v9, sFlow v5, w tym obsługą szablonów, samplingu i luk w sekwencjach.
- Budową potoków danych: Protocol Buffers → Kafka (lub NSQ/NATS) → ClickHouse.
- Optymalizacją wydajności: pprof, redukcją presji na GC, zero-copy, testami przepustowości.
- Automatyzacją urządzeń sieciowych (Cisco, Arista, Juniper, Palo Alto): idempotentny push konfiguracji, wykrywanie driftu.
- Pakowaniem i dostarczaniem samodzielnych binariów (deb/rpm) z obsługą upgrade’u i rollbacku.
- Projektowaniem synchronizacji stanu i cache (eventual consistency, resync po długim rozłączeniu, idempotentny replay).
Wymagamy
Programowanie
- Go: usługi współbieżne, serwery UDP/TCP, profilowanie z pprof.
- Python asyncio: event loop, taski, anulowanie, backpressure, async HTTP, pule procesów roboczych.
Sieci
- Praktyczna znajomość L2/L3/L4: VLAN-y, MAC/IP, flagi TCP, MTU/fragmentacja, IPv4 i IPv6.
- Doświadczenie z protokołami flow (IPFIX, NetFlow, sFlow).
- Praca z pcap jako podstawowym narzędziem diagnostycznym, przechwytywanie i tworzenie pakietów.
Dane
- Protocol Buffers: projektowanie schematów, ewolucja, codegen.
- Kafka: partycjonowanie, acks, batching, kompresja, SASL/Kerberos, diagnozowanie lagu.
- Doświadczenie z ClickHouse lub podobną bazą kolumnową/szeregów czasowych.
Wydajność
- Profilowanie jako rutyna, nie reakcja na incydent.
- Dobór struktur danych (trie LPM/Patricia, LRU, szybkie hashowanie) wraz ze świadomością kompromisów.
- Generowanie obciążenia i testy ciągłej przepustowości.
Systemy i dostarczanie
- Linux: sockety, epoll, tuning sysctl pod wysoki ruch pakietowy, cgroups.
- Docker i Kubernetes: multi-stage buildy, manifesty.
- Pakowanie deb/rpm, budowanie statycznych binariów.
- IPC (ZeroMQ lub równoważne).
Jakość
- Statyczne typowanie (mypy, golangci-lint), formattery, pre-commit.
- Testy async, snapshot testy dekoderów, testy obciążeniowe w CI.
- Higiena zależności i CVE, powtarzalne buildy z przypiętymi wersjami.
Mile widziane
- eBPF.
- NSQ / NATS.
- Windows/AD: WinRM, SMB, Kerberos.
- Azure lub AWS SDK do pobierania zasobów i logów.