Poszukujemy doświadczonego Senior Go / Python Engineera, który dołączy do projektu z obszaru przetwarzania danych sieciowych, telemetrii oraz wysokowydajnych systemów backendowych. Szukamy osoby z bardzo dobrą znajomością programowania współbieżnego, protokołów sieciowych i optymalizacji wydajności, która potrafi projektować oraz rozwijać niezawodne rozwiązania przetwarzające duże wolumeny danych.Poziom: Senior / Solution Architect
Stawka dla kandydata:
155 zł/h (Senior) / 190 zł/h (Solution Architect)
Forma współpracy:
B2B, 100% zdalnie
Wymagania
Go i Python
- Bardzo dobra znajomość języka Go, w tym programowania współbieżnego, serwerów TCP/UDP oraz profilowania aplikacji.
- Doświadczenie w programowaniu asynchronicznym w Pythonie, w szczególności z wykorzystaniem asyncio.
- Znajomość wieloprocesowego przetwarzania danych oraz tworzenia wydajnych usług HTTP.
Sieci komputerowe
- Zaawansowana znajomość protokołów i mechanizmów sieciowych L2/L3/L4, TCP/IP, IPv4/IPv6, VLAN, MTU oraz fragmentacji pakietów.
- Doświadczenie z protokołami telemetrii sieciowej: IPFIX, NetFlow i sFlow.
- Umiejętność analizowania i przechwytywania pakietów sieciowych, w tym pracy z plikami PCAP.
- Doświadczenie w automatyzacji konfiguracji urządzeń sieciowych za pomocą SSH, CLI i API.
Przetwarzanie i przesyłanie danych
- Znajomość Protocol Buffers oraz projektowania i rozwijania schematów danych.
- Doświadczenie z Apache Kafka, w tym partycjonowaniem, kompresją, bezpieczeństwem i diagnozowaniem opóźnień.
- Znajomość baz kolumnowych lub baz szeregów czasowych, np. ClickHouse.
- Umiejętność projektowania wydajnych mechanizmów przesyłania i dekodowania danych.
Wydajność i jakość kodu
- Doświadczenie w profilowaniu i optymalizacji aplikacji, zarządzaniu pamięcią oraz ograniczaniu narzutu garbage collection.
- Znajomość struktur danych i algorytmów wykorzystywanych w systemach wysokowydajnych.
- Praktyczna znajomość testów jednostkowych, testów obciążeniowych, statycznej analizy kodu i kontroli jakości.
- Dbałość o bezpieczeństwo zależności oraz podatności w wykorzystywanych bibliotekach.
Systemy i infrastruktura
- Dobra znajomość systemu Linux, gniazd sieciowych, epoll oraz optymalizacji parametrów systemowych.
- Doświadczenie z kontenerami i Kubernetes.
- Umiejętność przygotowywania i dostarczania samodzielnych plików binarnych oraz pakietów instalacyjnych.
- Znajomość mechanizmów synchronizacji stanu, spójności ostatecznej i bezpiecznego odtwarzania operacji w systemach rozproszonych.
Dodatkowe atuty:
- Znajomość eBPF.
- Doświadczenie z ZeroMQ lub podobnymi rozwiązaniami IPC.
- Znajomość środowiska Windows/Active Directory, w tym WinRM, SMB i Kerberos.
- Doświadczenie w integracji z chmurą Azure lub AWS, szczególnie w zakresie pobierania danych o zasobach i logów.
- Umiejętność projektowania architektury systemów rozproszonych i podejmowania decyzji dotyczących wydajności oraz skalowalności rozwiązań.
Jeśli masz doświadczenie w tworzeniu wysokowydajnych systemów przetwarzania danych i chcesz rozwijać rozwiązania na styku programowania backendowego oraz sieci komputerowych, zapraszamy do kontaktu!