Position: Windows Driver Developer
Company: Polytech Software
Category: C++
Experience: 3y
English level: intermediate

**Хто ми та що ми робимо?**
Ми розробляємо продукт для резервного копіювання хмарної інфраструктури та on-premise. Продукт складається з великої кількості компонентів, які використовують AWS сервіси EC2, Lambda, DynamoDB, SQS та інші.
Частина нашого продукту це file filter driver-а, які використовуються для перехоплення I/O операцій на диску, запису адреси та розміру буфера запису. Ця інформація використовується для формування інкрементальних бекапів. Друге завдання цих драйверів — Live-Restore, це відновлення даних на диск і забезпечення миттєвого доступу до відновлювальних даних під час відновлення.
Команда складається з 40+ інженерів та розбита на 4 підкоманди. Ви працюватимете у підкоманді, яка займається розробкою сервісів під Windows та Linux, kernel modules під Linux, filter filter drivers під Windows, CLI, Stream Ingest та інші сервіси, що необхідні для бекапу. Ми шукаємо провідного розробника драйверів саме у цю підкоманду. Хоча ви і працюватимете над завданням самостійно, у команді є люди з досвідом розробки windows driver, які допоможуть вам швидко розібратися в коді/проекті.

**Ваші завдання.**
Вашим основним завданням буде реалізація функціоналу live-restore, зараз він в стані MVP, а також бракує функціоналу Delta Restore (або інкрементальне відновлення даних), який потрібно буде ще впровадити. При цьому пріоритетом для всіх членів команд є підтримка продакшен коду.

**Live-restore** — це можливість віртуально підкладати дані, що відновлюються на диск. Драйвер ловить запити читання запису і якщо запит йде на блок, який ще не відновлено, то дані беруться з репозиторію і пересилаються в систему; якщо запитані дані вже відновлені, то запит просто проксується далі в ntfs драйвер. Також реалізується механізм Copy-on-Write для можливості запису на диск під час відновлення. Орієнтований обсяг роботи близько 1 місяця. Але фінальна оцінка ще узгоджуватиметься з виконавцем.

**Delta-restore** — можливість відновлення лише змінених даних щодо останньої точки відновлення. Цей функціонал базуватиметься на Live-restore функціоналі. Орієнтовний обсяг роботи близько 1 місяця. Але фінальна оцінка також узгоджуватиметься з виконавцем.

**Вимоги:**
✓ Досвід роботи з Visual Studio, WDM, KMDF, WPP tracing, WinDbg.
✓ Досвід аналізу краш дампів.
✓ Англійська B1 або вище. 

**Що ми пропонуємо:**
✓ Віддалена робота.
✓ Оплата 2 рази на місяць.
✓ Випробувальний термін — 3 місяці.