13 березня «Дія» стала опенсорс-проєктом. Журналісти DOU поспілкувалися з Євгенієм Горбачовим, Chief Product Officer в «Дії», і розпитали, чому проєкт вийшов в опенсорс зараз, якою була перша реакція користувачів на GitHub, хто є мейнтейнерами підтримки опенсорс-коду та чи багато пул-реквестів від спільноти схвалила команда. А також про те, чи є актуальні вакансії в команді.
«Створювати окрему команду, яка буде сперечатися з кимось на GitHub? Ні, холіварити ми точно не будемо». Про модель підтримки проєкту в опенсорсі
Проєкт «Дія» створили 16 людей, а на початку нас взагалі було п’ятеро. Нині в команді 37 фахівців, включно з менеджерами, архітекторами, бізнес-аналітиками, дизайнерами, розробниками, тестувальниками, девопсами, спеціалістами з безпеки. З цього дивуються всі у світі. Для розвитку продукту нам потрібні контрибутори, які можуть розробляти функції, що не братиме на себе core-команда, тому що це не є пріоритетом для країни.
Мейнтейнерами підтримки опенсорс-коду «Дії» є наша команда. Жодних людей зовні ми не брали. Немає сенсу навіть залучати нових учасників, щоб вони відповідали за цей проєкт. «Дія» — це дуже великий і складний продукт. Якщо ми залучимо нову людину, яка відповідатиме суто за опенсорс та пул-реквести, які туди надходять, її треба буде онбордити довше, ніж ком’юніті, яке хоче працювати з цим.
Відповідальними є мої ліди. У команді є напрями iOS, Android, Back-end, DevOps тощо. Кожен з них рев’ювить пул-реквести у своїй зоні відповідальності. Це не їхня основна робота. Вони мають велике навантаження: створюють складну функціональність, менеджать свої команди, відповідають за запуск нових фіч, а тепер додався ще й опенсорс.
Окрім розробки нових послуг, у нас, як і у будь-якої команди, є технічний борг. Є беклог. Він передбачає оновлення бібліотек, покращення загальної логіки. Якщо ми бачимо, що людина зробила пул-реквест і це завдання є у нас в беклозі, ми можемо одразу підтвердити це й додати в мастер-гілку. Якщо це нова функціональність, яка нам не потрібна, ми відпишемо людині, що наразі такої потреби немає.
Не все ми можемо зробити так, як говорять постулати і гайди, тому що є юридичні обмеження. Зокрема, це впливає на вибір підходів для реалізації рішень. Інколи людина, не занурена в усі ці аспекти, може подивитись і сказати: «Я зробив би це інакше».
Наприклад, створивши форму з набором даних, ми не можемо зберегти її десь у себе в базі, тому що вона містить набір персональних даних, які ідентифікують особу. Ми не маємо права їх зберігати в себе, хоча з технічного боку це правильно. Тому така форма створюється й зберігається тільки на особистому пристрої власника даних і подальша робота з нею потребує постійних зовнішніх запитів, часто в декілька різних реєстрів. Будь-яка нестабільність в обміні робить для користувача послугу недоступною. Усі нові послуги стають більш складними через залученість даних з різних джерел, і послуга в комплексі залежить від найслабшого джерела.
Якщо код, запропонований контрибутерами, не суперечить нашій загальній архітектурі, ми його приймаємо. Хоча більшість пул-реквестів, які надходили, це був радше тюнінг, nice-to have. Наприклад, оновлення бібліотек. Не було чогось, що б забрало у нас багато часу на рев’ю.
«У березні ми отримали 86 пул-реквестів»
Щоправда, з 1 до 17 квітня пул-реквестів не було. Я наголошую саме на них, не на проблемах (issues). Створювати окрему команду, яка буде сперечатися з кимось на GitHub? Ні, холіварити ми точно не будемо. Але якщо issue вказує на безпекову проблему, ми будемо на це реагувати.
Безпековий трек — це невіддільна частина технічного розвитку «Дії», яка постійно проходить як державні, так і зовнішні незалежні безпекові аудити. Назви компаній під NDA, але можу сказати, що це авторитетні світові імена. Аудити тривали близько двох місяців. Безпека — це не про разову перевірку, а про постійний процес, тому аудити проводили й проводитимуть регулярно.
Звичайно, читаємо всі issues з критикою. Це філософська історія: якщо ви не виходите в опенсорс, вас критикують. Але якщо виходите, вас теж критикують.
Якщо ви заздалегідь плануєте вийти в опенсорс, то будуєте рішення під це з самого початку. Робити закритий продукт відкритим (як це було з «Дією») значно складніше, ніж відразу створювати відкритий продукт за всіма гайдлайнами та найкращими практиками. Найскладнішим був рефакторинг як підготовка продукту. Він полягав у тому, щоб відділити шифрування та все, що пов’язано з персональними даними. Чутливі речі, звичайно, не вийшли в опенсорс.
Будь-яке завдання можна реалізувати різними способами. Якщо ми візьмемо гугл-таблиці з формулами і поставимо задачу реалізувати збирання та обробку даних, всі робитимуть це по-різному, але в підсумку порахують правильно. А наскільки це естетично — це дискусійно. «Дія» — це насамперед про результат, про якісні державні сервіси та безпеку даних. Рішення може бути не елегантним, але таким, що працює залізобетонно та відповідає всім нормам закону та бізнес-вимогам.
«Переважно ми маємо дуже короткі терміни на реалізацію»
Ми не можемо зупинити всі розробки, які конче потрібні державі, заради покращення вигляду кодової бази, але це є у нас в беклозі як технічний борг.
Навіть якщо це покращення або перехід на інший компонент, код треба перевірити, провести тести. Якби ми мали монофункціональний сервіс, можна було б відточувати його до ідеалу. Інша річ, коли є різні функції, які видаються простими для користувача, але під капотом мають багато запитів у різні джерела та обробку в реальному часі. Наприклад, послуга з перереєстрації авто, де залучений демографічний реєстр, податкова, сервіси МВС й Інтерполу.
«Ми хочемо показати світу, що навіть під час війни українці здатні розробляти продукти такого рівня». Чому код опублікували зараз
Вихід в опенсорс я ініціював ще 2020 року, коли «Дія» тільки з’явилася, але у нас було дуже багато обмежень. Враховуючи, що це критична інфраструктура, проєкт був під грифом секретно. Навіть примітивна документація була таємницею. Звісно, є речі, які досі не можна робити загальнодоступними. Ми працювали над тим, щоб відокремити те, що можна. Це насамперед юридична, бюрократична робота.
На 2022 рік планували провести рефакторинг, дещо поліпшити, додати описи, підготувати пайплайни, що дало б змогу «Дії» вийти в опенсорс. Ми очікували, що це станеться наприкінці 2022 року, але повномасштабне вторгнення завадило. Та ми факультативно продовжували підготовку.
Цей проєкт став ще більш актуальним торік, коли ми стали отримувати багато запитів від країн-партнерів, яким було цікаво співпрацювати, ділитися досвідом і навіть перевикористовувати певні практики для своїх продуктів. Після успішного бета-тесту mRiik в Естонії та після анонсу про те, що USAID підтримає ще п’ять країн у вивченні нашого цифрового досвіду, ми маємо ще більше контактів з країнами майже з усіх континентів. Вивчаємо досвід одне одного, пропонуємо рішення, фактично розвиваємо цифрову дипломатію. «Дія» та вся екосистема проєктів нам у цьому допомагає, оскільки для багатьох країн вона вже є best practice.
Тож ми все більше розуміли, що бракує відкритого коду, який допоміг би більш плідно будувати комунікацію з партнерами, розробляти на його основі технічні рішення. Ми знову підняли пріоритет проєкту, провели багато консультацій та аудитів, зокрема з Естонією, іншими країнами Європи, а також зі США. Хочемо показати світу, що навіть під час війни українці здатні розробляти продукти такого рівня.
Ефективніше, коли архітектор голосом пояснює, як побудовано дизайн-архітектуру, і показує це на прикладі робочого рішення в опенсорс. Важливо розуміти, що у кожної країни свої обмеження, реєстри, нормативка. У кожної своє шифрування. Наприклад, у нас зв’язок між реєстрами та їхніми інформаційними системами створює система електронної взаємодії «Трембіта». Дуже вагомою є юридична складова. Партнери розповідають, що в них на вході, а ми ділимось, як цей сервіс можна перевикористати.
Наприклад, уже згадана Естонія отримала весь наш досвід і все, що потрібно для реалізації таких високонавантажених рішень. Вона робить сервіс своїми силами, тому що у кожного власне шифрування і нормативка, але від взаємодії при цьому ми не відмовились.
У нас досі багато спільних проєктів, наприклад CDTO Campus. Разом працюємо над міжнародними проєктами, як-от європейським Wallet. Це європейський сервіс, який допоможе відкривати банківські рахунки онлайн, мати документи в смартфоні тощо. Команда Мінцифри презентувала можливості «Дії» на зустрічі міжнародного консорціуму в Парижі. Показали європейським колегам, як з «Дією» відкрити банківський рахунок за хвилину, створити електронний підпис і користуватися цифровими документами. Найкраща оцінка — нас залучили до пілоту розробки European Digital Identity Wallet.
«Найбільше партнерів цікавить наша модель взаємодії з реєстрами в реальному часі без зберігання даних»
«Дія» — це як транспорт, де на точковий запит ми звертаємося за точковою відповіддю. Це не банківський застосунок, де є своя клієнтська база, навіть якщо в ній 20 мільйонів користувачів. У світі все рухається до розділених систем, де немає єдиного великого сервісу, який можна «покласти». Наша модель дає змогу гарантувати безпеку даних, хоча власним технічним спеціалістам буває складно, адже під капотом — складні речі. Аналога «Дії» такого ж масштабу й архітектури немає, а все має працювати безпечно та максимально просто для користувача.
Є три ключові причини, чому ми вийшли в опенсорс. Окрім міжнародних відносин і популяризації рішень на базі «Дії» за кордоном, це робота зі спільнотою експертів зі всього світу, розвиток додаткових продуктових гілок для «Дії». Ідеться про розбудову повноцінних майданчиків для роботи з профільними технологічними комітетами від спільноти навколо опенсорсу «Дії». Треба будувати комунікацію. Сьогодні вона на початковому рівні, а треба робити її глобальною та публічною. Це велика організаційна й ресурсомістка праця, на яку треба знаходити час. Але це важливий трек, і я впевнений, що ресурс знайдеться.
«„Дія“ — це не проста саморобка, щоб можна було швидко подивитись і аргументовано сказати: „все погано, чи все добре“». Про реакцію користувачів, ризики та технічні нюанси
Реакція користувачів на GitHub була бурхлива. Ми отримали багато позитивного фідбеку, але ставили й дискусійні питання, була конструктивна критика. Загалом все відбулося навіть краще, ніж очікувалось. Явного негативу не траплялося, адже «Дія» — це не проста саморобка, щоб можна було швидко подивитись і аргументовано сказати: «все погано, чи все добре». Продукт складний і потребує експертизи і часу на аналіз для того щоб щось стверджувати і дискутувати. Ті, хто розуміються, конструктивно поставили запитання , зробили уточнення та запропонували своє бачення з урахуванням усіх ввідних.
Важливо розуміти, що опенсорс-код «Дії» — це бойовий код, хоча він дещо відстає. Наразі доналашовуємо додаткові зворотні пайплайни, щоб отримувати пул-реквести. Працюємо над тим, щоб не відволікати девопсів і лідів-розробників на оновлення. Зараз вони робляться в ручному режимі та відстають, адже постійно вносяться зміни. Опенсорс-код «Дії» постійно оновлюватиметься. Додаватимуться сервіси, щоб покрити всі функціональні можливості платформи. Зараз їх лише два.
З часом стало з’являтися навіть більше якісної комунікації, зокрема змістовні пул-реквести. Декілька IT-команд вийшли на мене напряму та готові співпрацювати з нами за своїми напрямами: дві команди Android, одна Back-end. iOS ще не має. Мова про співпрацю на некомерційній основі, адже опенсорс не про гроші. Це і для них корисно, адже вони розвиватимуться як експерти. Ці спеціалісти ставлять дуже правильні запитання. Щоб спростити роботу таких контрибуторів, ми додали у файл Readme інформацію про те, які у нас технічні плани.
Якби «Дія» була сервісом, який акумулює та зберігає інформацію, її публікація несла б масштабні ризики. Але в нас абсолютно інша модель. «Дія» не зберігає дані та не розпоряджається ними. Проєкту вже чотири роки. Якби хтось захотів, за цей час він зробив би реверс-інжиніринг наших застосунків, розклав їх на компоненти та дізнався все те, що можна дізнатися з відкритого коду. Але зібрана на колінці програма не зможе комунікувати з бекендом «Дії», а тим більше не зробить від її імені запит в реєстр. Навіть ми задля тестування не маємо права і не можемо від імені людини зробити запит у реєстр.
«Дія» використовує чимало опенсорс-бібліотек. Це нормальна практика. Коли ви розбудовуєте такого гіганта, але хочете все написати самостійно, знадобиться значно більше часу та більша команда для розробки та підтримки. Важливо, що ми перевіряємо кожну бібліотеку. Насправді використання бібліотек, які підтримуються надійними вендорами — це навіть краще, адже ми не змогли б самі стежити за всім, що відбувається у світі.
«Ми не завжди використовуємо останні технологічні рішення, тому що „Дія“ — це для всіх громадян України»
У мене в аналітиці є Android 4.4, хоча їх там і мізерна кількість. Люди використовують старі айфони, наприклад, iPhone 5. Ми прагнемо не обмежувати громадян у тому, щоб вони використовували наш сервіс, але й робити подвійну розробку для старих і нових версій не хочемо, адже це питання часу та ресурсів.
Єдине розгалуження, яке у нас існує, це «Дія.Підпис». Усім відома мемна тема з «гімнастикою шиї», коли «Дія» просить повернути голову вправо та вліво. На останніх версіях iOS і Android зараз достатньо кліпнути очима. А от для пристроїв, які не мають фронтальних сенсорів глибини і є примітивними з погляду розпізнавання обличчя, досі є «гімнастика». Але на захист цієї технології можу сказати, що на лінкедині, фейсбуці, криптовалютному ринку таке теж є.
Періодично ми робимо кардинальні зміни. Кожне технічне рішення або обраний фреймворк — це не просто так. Ми не стали переходити на SwiftUI, тому що вважаємо, що на це не варто витрачати час і виділяти державні кошти під час війни. Це не важливіше, ніж міжнародний реєстр репарацій.
«Наша мета — 100% державних послуг мають перейти в онлайн». Про майбутнє проєкту і те, як приєднатися до команди
На початку кожного року в нас відбувається нарада з короткострокового та довгострокового планування, де на слайдах 60-70 проєктів, які нам потрібно зробити. А є ще офлайн-послуги, для оцифрування яких ще не готова нормативно-правова база. Наша мета — 100% державних послуг мають перейти в онлайн. У пріоритеті допомога громадянам під час війни та послуги, що будуть втіленням реформ, наприклад, розмитнення авто.
Раніше «Дія» була просто гаманцем з двома документами. Додаючи нові послуги, ми вперлись в те, що архітектура не дає змогу зробити все, що хочемо. Ми готували редизайни, щоб зняти блокери для розвитку продукту. Наразі працюємо над інноваційними речами, включаючи штучний інтелект. Будемо покращувати підтримку на основі ШІ, адже ми не можемо взяти для неї 5000 операторів.
Ми постійно в пошуку людей, які можуть підсилити команду. Тому що об’єми роботи тільки збільшуються, запускаємо багато нових послуг. Вакансії можна відстежувати на сторінці Diia Company, там регулярно з’являються нові пропозиції. У найближчі тижні їх стане ще більше. А ще завжди шукаємо тих, хто сильніший, ніж той, хто вже працює.
Читайте також: Зареєструватися на НМТ-2024 можна у мобільному застосунку Дія.
Зареєструватися на НМТ-2024 можна у мобільному застосунку Дія