25 юни, 2022

Линк към Част I

Продължаваме разговора си с Ивайло Митрев, Back-end Tech Lead и Георги Илиев, Data Delivery Tech-Lead в Documaster. От тях разбираме повече за процеса на разработка в компанията – ключов фактор за успеха на Documaster и международното признание, което е изградено. Въпреки успеха, амбициите не стават по-малки и ето, че една от целите е, продуктът за частния сектор да настигне и задмине този за публичния.

Как се промени колаборацията между различните екипи в различните етапи от развитието на продуктите на Documaster? Какъв беше подходът на компанията за справяне с нарастващия обем работа и клиенти?

Ивайло Митрев: За да отговоря на този въпрос, трябва да се върна към поне едно от нещата, които Георги спомена за историята на продукта от частния сектор. Само за да стане ясно, всички промени, които трябваше да направим в нашите процеси са пряка последица от увеличения обем клиенти, който постигнахме през годините. В началото Георги беше единственият back-end разработчик и имахме още един човек като единствен front-end разработчик, UX дизайнер и продуктов мениджър. По това време всеки трябваше да приема различни роли и да работи по различни неща, което се получаваше, защото постоянно се търсеха нови функции и се експериментираше. Сега, след като имаме няколко подписани договора и хиляди потребители, които използват системата, преминахме към структуриран подход. В момента имаме четирима back-end разработчици, четирима front-end и двама data engineers, които отговарят за миграциите на данни. Имаме по-голяма подкрепа от инфраструктурните и QA екипи и това е без да включваме отговарящите за продажбите, продуктовия мениджър и delivery хората, участващи в управлението на нашите решения и обсъждането им с клиентите.
Екипът се е увеличил няколко пъти и в резултат на това получихме по-добра диференциация на ролите, които всеки от нас има. Когато сме повече хора, всеки човек може да се съсредоточи върху това, в което е добър и да разшири кодовата база в продуктa, с определена функция. Това е повече от което двама души биха могли да направят, както бе преди няколко години. Вече имаме систематичен подход, когато правим нови релийзи, когато общуваме помежду си и когато документираме възможностите на нашия продукт. Разликата е също така, че когато започнахме с подхода на стартъп, беше по-лесно да преминаваме напряко, така да се каже. Докато сега имаме повече документация върху всяка наша стъпка. По този начин е по-лесно да се върнем назад и да видим какво се е променило и защо е взето конкретно техническо решение. Не се опитваме да докажем, че този продукт има бъдеще. Това, което се опитваме да направим сега, е да докажем, че този продукт е самоустойчив.

Какви технологии използвате и променил ли се е технологичният стек с растежа на екипа и преминаването на продукта към частния сектор?

Ивайло Митрев: Както споменах, още в началото се опитвахме да използваме това, което разработчиците чувстват най-близо до тях. Основните ни технологии са същите – технологии с отворен код като Solr, Java, Postgre, Linux. Някои от промените обаче идват от самия екип, тъй като нашите front и back-end разработчици и data инженери се чувстват по-удобно като работят с JavaScript, тъй като имат много по-голям опит с него. Това е и другата причина, поради която премахнахме PHP. В резултат на най-новите версии на нашия продукт, ние всъщност сме заместили PHP компонента с Node.js, използвайки JavaScript от страна на сървъра, който действа като среден слой на нашия Java базиран Back-end и нашия Front-end, написан на  React. js. Голям резултат от факта, че предлагаме нашия продукт в частния сектор е, че в момента го развиваме доста. Продуктът от публичния сектор, както спомена Георги, е обвързан с норвежкия стандарт и спецификацията е много ясна. Когато работим в частния сектор, ние определяме изискванията или създаваме такива спрямо необходимостите на нашите клиенти. Продуктът от частния сектор е нещо като изследователски център, защото ние изследваме функции, които никога не биха били изследвани за публичния сектор, тъй като той никога не би изисквал такъв добър UX, например. Ето, че имаме вътрешно оптично съдържание в продукта, по-добро визуализиране на документи и т.н.

Един от най-важните аспекти за потребителите на дадена система е UI / UX дизайнът. Можете ли да ни кажете за методите, които Documaster използва за подобряване в това отношение?

Георги Илиев: Тази тема заслужава самостоятелно интервю. От моя лична гледна точка, когато започнахме да проучваме този продукт, имахме някакво дизайнерско мислене, което беше необходимо, но всъщност не осъзнавахме колко важно нещо от разработката беше това. Нашият продуктов мениджър нямаше да се съгласи с нещо, което е сглобено набързо. Той поставяше под съмнение всяко едно нещо, което правим, питайки как потребителят ще го възприеме. Понякога дори показваше дизайна на някой потребител и се връщаше с думите – „това не става, никой не го разбира“. В началото прекарахме много време само в обсъждане на концепции и описването им на нашите потенциални клиенти. Същото обаче, писахме кода на възможните решения по начина, по който си ги представяме – само за да има какво да покажем на клиента на следваща среща, а и да съберем някакво обратно мнение.
Но наш ръководен принцип още от ден първи, бе семплотата, тъй като потребителите, към които се насочваме, всъщност не се интересуват от резултата от действията. Те се грижат да не загубят някакъв документ. Трябваше да предоставим на тези потребители UX, с който вече са свикнали от социалните медии, например. В същото време не трябваше да жертваме нито една функционалност на нашия продукт. Това бе голямо предизвикателство. От самото начало нашият продуктов мениджър ни каза – „Не трябва да имаме повече от три концепции. Ако трябва да обясним повече от три неща на потребител, значи сме се провалили”. Днес вярвам, че сме постигнали правилната формула и когато видите нашия продукт на екрана, не е нужно да мислите много как функционира.

Какъв е вашият подход при тестване на продукта, който съдържа големи бази данни с много информация? Можете ли да разясните как се е работило в началото в сравнение с това как се работи сега?

Георги Илиев: Споменахме вече, че трябваше да действаме тактически. На езика на програмистите това означава – без тестване. Но не бихме могли да си позволим да предадем прототип на клиент, без да сме се уверили, че той се държи адекватно във всички ситуации. Поради необходимостта от постоянни промени в модула за данни, преди да предадем инсталацията на клиенти за user acceptance testing, трябваше да импортнем отново данните им. Това означаваше изпълнение на стотици хиляди реални редовни API заявки с разнообразни периметри. За мен това е нещо като интеграционно тестване, доведено до краен предел. Тук става въпрос за тестване по време на разработка. Преди да предадем инсталация на клиент, ние влизаме в базата данни и изпълняваме всякакви проверки, сравнявайки това, което виждаме в базата данни, с това, което очакваме да намерим там.

Ивайло Митрев: Наследихме много добри практики от продукта от публичния сектор, когато става въпрос за тестване и вярвам, че това е една от причините, поради които доставяме толкова страхотен и висококачествен продукт. Проверката преминава през строг процес с преглед на кода, преди да премине към разработка. Ние внимателно оценяваме работата на функциите, които очакваме да бъдат засегнати от нещо или даден проблем. Практиката е една и съща при продукта за публичния и частния сектор. Всичко преминава през QA и разработчикът обяснява промените в кода, които е направил и които могат да повлияят на продукта. Както разработчикът, така и QA специалистът имат достъп до по-голям test instance, който е зареден с милиони документи. От тази гледна точка, мога да кажа, че функциите са много добре тествани. По отношение на инфраструктурата имаме постоянно наблюдение на времето за реакция. Ако production instance по някакви причини е по-бавен от очакваното, ние просто преглеждаме данните и изследваме какъв може да е проблемът.
Ние правим много модулни и интеграционни тестове, особено за това обратно съвместимо API, което излагаме на интеграционните страни. Това е най-критичната част от системата, когато става въпрос за осигуряване на качество за нашите клиенти.
Ако нарушим едно малко нещо в API, ние ефективно нарушаваме интеграцията, която нашите клиенти са имали с нас. Може би най-голямото подобрение, което сме предприели, е промяната в архитектурата, приложена в частния сектор. Вместо да използваме продукта за публичния сектор и да приложим бизнес част върху него, то в момента сме много по-близо до базата данни и в резултат на това тя може много по-добре да оптимизира заявките към нея и към крайните точки.

Documaster работи с различни клиенти, а услугата се занимава с много чувствителни данни – документи, договори, фирмени процеси. Какви мерки за сигурност на данните се използват?

Ивайло Митрев: Трябва да разделим отговора на две. Първата част е свързана с приложението, а втората с инфраструктурната страна. Що се отнася до приложението, ние не правим прегледи на кода, само защото така ни е хрумнало. Преглеждаме производителността му, преработваме качеството му и се уверяваме, че той е четим, а също така проверяваме и сигурността на всяка от функциите, които разработваме. Когато преценим, че е потенциално може да има проблем, то тогава изискваме повече хора да дадат своето одобрение по време на процеса, така че да се уверим, че повече очи са видели кода и е по-малко вероятно да стане нещо по сигурността. QA специалистите също са инструктирани да проверят защитата. Всичко това се прави, за да се избегне излагането на риск на данните на клиента. Ние работим наистина с чувствителни данни и сигурността и качеството са от най-голямо значение за нас, защото именно в тях се състои нашият бизнес.
В допълнение към това, правим тестове за сигурност и проникване, което ни позволява да спазим стандартите за сигурност в индустрията. Правим редовни надстройки на зависимостите, пишем тестове за интеграция на модули, които също улесняват нашата сигурност, а също така разполагаме с пълнофункционална application level control logic, която позволява на нашата система да бъде система за много клиенти от една страна, а от друга страна ни позволява да предоставяме различни видове достъп до различни видове потребители в рамките на един и същ екземпляр на Documaster.
От страна на инфраструктурата нашите контейнери и хост операционни системи редовно се актуализират за сигурност. Извършваме постоянен back-up на всеки час. Данните съхраняваме на норвежка земя, което се изисква от нашите клиенти от публичния сектор, но е добре и за нашите клиенти от частния сектор в Норвегия, тъй като те знаят, че тяхната информация не напуска страната. Освен това прилагаме firewall защита на екземплярите и дори имаме защитен облак, който представлява виртуална частна мрежа, side to side, която на практика позволява на нашите клиенти да свързват своята частна мрежа към нашия instance.

Documaster е вече утвърдена компания, чиито продукти напълно променят начина, по който административните операции работят и функционират в публичния и частния сектор. Какво предстои за разработването на продукта, специално за частния сектор – какви са следващите ви стъпки?

Ивайло Митрев: Като цяло вече получихме доверието на няколко клиенти и те ни повериха своите данни, което е най-важният им актив. Определено ще продължим да поддържаме същото ниво на сигурност и качество. Трябва да докажем, че нашият продукт от частния сектор е самоустойчив, че може да се разраства. Нашите краткосрочни цели са да включим повече телекомуникационни и инфраструктурни компании. Това са компании, които съхраняват техническата си документация в Documaster. Вече имаме няколко такива пилотни и активни клиенти. Смятаме, че Documaster е много подходящ за такъв тип компании, тъй като те трябва да работят с външни сътрудници, когато става въпрос за създаване на тяхната инфраструктура и документиране. Също така продължаваме проучванията си за съхраняването на договори в Documaster. Това е възможно и сега, но искаме да стъпим една крачка напред и да извличаме полезна информация от тези договори, така че да можем да уведомим потребителите си, че например , след шест месеца техен много важен договор ще изтече и е редно да се активира процес за преподписване.
Продуктът от публичния сектор вече е установен и има 300 клиенти, така че ние от частния сектор сме силно насочени към това да го догоним и дори да го подминем в близко бъдеще.

Тагове: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,