Технологічний аудит для ваших веб-сервісів

У нашому блозі я часто пишу про те, що може стати в нагоді при розробці нових веб-сайтів та веб-додатків. Однак є також багато цікавих і корисних тем, пов’язаних з існуючими веб-ресурсами. Сьогодні я торкнуся лише однієї з таких тем: технологічний аудит веб-сервісів.

У SECL Group ми маємо великий досвід роботи над проєктами, які вже перебувають у процесі розробки. У більшості випадків наша робота з подальшого розвитку починається з технологічного аудиту. Коли власник проєкту звертається до нас для проведення аудиту, він, як правило, хоче зрозуміти сильні та слабкі сторони проєкту. Ми з’ясовуємо, як найкраще вирішити будь-які виявлені проблеми. Крім того, ми шукаємо рекомендації щодо того, як ефективно продовжити роботу над проєктом.

У цій статті ви дізнаєтеся про те, навіщо проводять технологічний аудит веб-сервісів, та про основні етапи, на які слід звернути увагу при його проведенні. Я також розповім про типові особливості технологічного аудиту веб-сервісів, розгляну кейси та поділюся рекомендаціями щодо проведення технологічного аудиту веб-сервісів.

Технологічний аудит крок за кроком

Перш ніж заглиблюватися в деталі, важливо розуміти, що термін “аудит” у веб-розробці є досить широким поняттям. У цій статті ми зосереджуємось на загальній концепції технологічного аудиту (також відомого як технічний аудит), але варто пам’ятати, що існує багато різновидів аудиту, які проводяться по-різному залежно від поставлених цілей.

Однак зазвичай ми або проводимо комплексний аудит усього проєкту, або тематичний аудит конкретних параметрів і/або проблем веб-сайту чи веб-додатку.

Наприклад, нещодавно ми завершили аудит швидкості завантаження веб-проєкту, після чого змогли надати замовнику рекомендації щодо покращення. Згідно з прогнозами, ці зміни мають прискорити час завантаження проєкту в 4-5 разів.

Документи, надані командою аудиту, можуть варіюватися в залежності від мети технічного IT-аудиту. Однак звіт, що містить рекомендації щодо покращення, завжди має бути включений, хоча структура та акцент звіту можуть відрізнятися. Зазвичай, чим чіткіше визначена мета аудиту, тим сприятливішим буде результат. Тому, як золоте правило, ми рекомендуємо бути прозорими з вашою командою аудиту та ділитися всіма своїми занепокоєннями, щоб досягти найкращого можливого результату.

Крок 1. Підготовка технологічного аудиту веб-сервісів

Preparation of technology audit of web services

Якщо мета/цілі технологічного аудиту веб-сервісів визначені, можна приступати до підготовчого етапу.

  1. Перш за все, як замовник, так і аудитори повинні обговорити, чи потрібно надавати доступ до робочої версії проєкту. Іноді для аудиту надається тестова версія або навіть просто код у репозиторії Git. Це часто трапляється в проєктах фінансових послуг, де питання ІТ-безпеки дуже гострі, і керівники не хочуть допускати сторонніх спеціалістів на робочий сервер. Якщо аудиторів не просили перевіряти швидкість завантаження, то цю умову можна прийняти, але якщо швидкість завантаження потрібно перевірити, то краще перевірити її на робочому сервері, оскільки це забезпечить точні показники.
  2. Далі аудиторам знадобиться документація, але занадто часто вона або застаріла, або взагалі відсутня. Хоча це не є нездоланною перешкодою, недостатня кількість документації неминуче збільшує час, необхідний для проведення аудиту, тому найкраще попросити попередню команду розробників створити або оновити документацію. Ми детально описали різні типи документації в окремій статті, але як мінімум аудиторам потрібні пояснення архітектури та технологічного стека проєкту, інструкції з розгортання та документація API, якщо вона є. Додаткова доступна документація також може виявитися корисною.
  3. Опис будь-якого “технічного боргу” також був би корисним. Цей термін відноситься до будь-яких накопичених проблем або необхідних покращень, які були відкладені та ще не реалізовані. “Технічний борг” зазвичай описується розробниками, які писали проєкт, але вони часто роблять це неохоче, оскільки це стосується їхніх власних недоліків.
  4. Бажано надати команді аудиторів можливість спілкуватися з розробниками проєкту. Це не завжди можливо, особливо коли йдеться про потенційну передачу проєкту від старої команди до нової, про що ми також писали в іншій статті, але там, де таке спілкування можна організувати, це, безсумнівно, допоможе скоротити час, витрачений на аудит, оскільки аудитори отримають оперативні відповіді на свої запитання.

Крок 2. Проведення технологічного аудиту веб-проєкту

Conducting a technological audit of a web project

У технологічному аудиті веб-сервісів ключову роль відіграє експертиза аудиторів. Зазвичай до процесу залучають топових фахівців, що, як правило, означає або Senior-інженерів, або, найчастіше, тім лідів. Аудитори прагнуть не лише виявити вже наявні проблеми, а й передбачити потенційні нові.

Звісно, клієнт очікує отримати практичні рекомендації щодо покращень на основі результатів аудиту. Але важливо підходити до цього раціонально. Будь-який програміст завжди скаже: «Потрібно викинути все і переписати правильно», але в SECL Group, з огляду на наш досвід, ми розуміємо, що, працюючи в інтересах власників продукту, аудитори повинні активно шукати способи досягти максимального покращення за мінімальних зусиль. Такий підхід відрізняє професійну команду аудиторів від аматорів.


Інженери з досвідом технічного аудиту


Щодо визначення складу команди для технологічного аудиту складних проєктів, корисно розглядати бекенд і фронтенд окремо. Залежно від специфіки проєкту та цілей аудиту, окрім розробників, також можна залучати інших спеціалістів.

Давайте тепер проаналізуємо сам процес аудиту.

Перш за все, аудитори розгорнуть проєкт, ознайомляться з його основними налаштуваннями та проаналізують його архітектуру. Іноді помилки виявляються в самому архітектурному рішенні, і такі помилки суттєво впливають на весь проєкт. Безсумнівно, зміна архітектури працюючого веб-проєкту – це складне завдання, але воно можливе. Щоб допомогти зменшити ризики в цьому випадку, ми досить часто рекомендуємо розділення монолітних веб-додатків на мікросервіси, що значно прискорює роботу програми, зменшує кількість помилок і дозволяє новим програмістам набагато швидше освоїтися.

На другому етапі технологічного аудиту перевіряється код і досліджуються окремі частини проєкту. Весь код проекту зазвичай не вивчається, оскільки його може бути дуже багато, але загальна якість коду може і повинна бути оцінена. Це також цінно для виявлення повторюваних помилок та виділення найкращих практик. Під час проведення технологічного аудиту виявляється якість розробки.

Звісно, можна проводити аудит окремих конкретних проблем і завдань. Наприклад, можна виконати навантажувальне тестування, щоб знайти слабкі місця в продуктивності додатку, або ж виявити вразливості в системі безпеки. Але будьте вибіркові у тому, на чому ви вирішите зосередитися, оскільки надмірне охоплення буде довгим та дорогим. Визначте пріоритети технологічного аудиту та зосередьтеся на них, пам’ятаючи, що найбільш проблемні аспекти будь-якого проєкту будуть очевидні для фахівців із відповідною експертизою.

Окрім оцінки якості архітектури та коду, аудит охоплює такі основні групи ключових параметрів веб-сервісів:

  • Розробка та впровадження системи
  • Продуктивність системи
  • Безпека
  • Документація
  • Стандарти та процедури

Для кожного з цих розділів аудитори готують список питань, які слід уточнити під час аудиту інформаційних технологій, і таким чином складається своєрідний чекліст. Це допомагає аудиторам фіксувати факти та готувати висновки. Серед пунктів чекліста досвідчені аудитори завжди виділяють перевірені маркери, які вказують, які саме параметри веб-сервісу потребують детальнішого вивчення. Систематизація питань технологічного аудиту у вигляді чеклістів значно спрощує підготовку підсумкового аудиторського звіту. Але про це детальніше згодом. 

Іноді разом з аудитом можливе надання замовнику супутніх послуг, таких як, наприклад, тестування. Такі послуги можуть надаватися як за окремим запитом клієнта, так і з ініціативи виконавця. Щоб справити додаткове позитивне враження на клієнта, зазвичай при аудиті окремих частин веб-проєкту ми завжди дивимося, хоча б в загальних рисах, на інші його частини.

Якщо під час такого огляду ми виявляємо якісь серйозні недоліки або загрози, ми інформуємо про це клієнта. Наприклад, якщо ми бачимо поганий код і відсутність модульних тестів, ми доручаємо нашому QA-інженеру витратити кілька годин на пошук помилок у критичних частинах проєкту. Таким чином, працюючи в інтересах клієнта, ми з великою ймовірністю знайдемо ще важливі помилки.

Виходячи за межі технологічного аудиту вебпослуг, ми можемо більш повно і точно продемонструвати клієнтам стан справ у їхніх вебпроєктах, а також підтвердити виявлені під час аудиту слабкі місця та ризики, наводячи конкретні приклади. Такий комплексний підхід завжди виправдовує себе на практиці.

Крок 3. Звіт про аудит та рекомендації щодо покращення веб-сервісів

Audit Report and Recommendations for Improvement of Web Services

Після проведення аудиту ваша команда фахівців готує звіт, який містить висновки та пропозиції щодо покращення веб-ресурсу. Власник проєкту повинен бути поінформований не тільки про виявлені помилки, але й про найбільш ефективні методи їх усунення, а також про очікуваний ефект від кожного рішення. Експерти також повинні вказати пріоритетність вирішення проблем.

Старанні, професійні аудитори надають клієнтам інформацію не лише про проблеми, які вже виникли, але й про потенційні ризики та загрози. Це дає можливість власникам продуктів та менеджерам приймати обґрунтовані рішення щодо функціонування та подальшого розвитку їхнього веб-проєкту.

Структура звіту про аудит зазвичай відповідає плану та чек-листу, обговореним на другому етапі. Однак важливо зазначити, що всі ці питання будуть викладені разом лише в рамках комплексного аудиту. Структура звіту адаптована під конкретну мету аудиту, тому, якщо розглядається лише одна проблема або компонент проєкту, до звіту буде включено тільки частину цих елементів. Крім того, цей чек-лист може бути корисним для самостійної оцінки стану ваших веб-сервісів.

Наш досвід у проведенні технологічних аудитів

Ми часто працюємо з легасі-кодом, особливо коли клієнти передають його нам після співпраці з іншими постачальниками. Ці проєкти зазвичай потребують аудиту, коли ми починаємо над ними працювати. У деяких випадках ми проводимо технічний аудит, щоб проаналізувати систему і зрозуміти, з чого продовжити роботу, а іноді проводимо глибокий огляд системи та надаємо детальний звіт про стан системи, який включає список помилок і недоліків, а також рекомендації щодо їх усунення. Усе залежить від потреб проєкту. Ось лише кілька випадків, коли ми проводили технічні аудити для наших клієнтів.

Під час розробки системи управління дилерською мережею для KIA першим кроком для нас стало проведення аудиту якості коду та документації. Це рішення для KIA є великим корпоративним проєктом, який розроблявся протягом кількох років до нашого залучення. Ми працюємо над ним уже 4 роки, залучивши команду з 15 спеціалістів. Клієнт звернувся до нас із уже визначеним технологічним стеком і закладеною базою.

Ми виявили проблеми з документацією та переписали її, зробивши більш зрозумілою та детальною. Ще однією серйозною проблемою став неякісний фронтенд, розроблений на Vue.js. Інтерфейс системи містив багато помилок і був складним у підтримці. Ми склали перелік проблем, які потрібно було вирішити в перші місяці роботи, включаючи згадані вище, а також додаткове налаштування сервера для підвищення безпеки.

Наш досвід із Lighting Technologies був подібним до попереднього випадку. Клієнт звернувся до нас із програмним забезпеченням для управління оптовими продажами, яке було одним із ключових каналів збуту для їхньої компанії. Система мала багато помилок, що негативно впливало на користувацький досвід і знижувало її ефективність. Ми провели комплексний технологічний аудит, який включав:

  • виявлення помилок;
  • оцінку якості фронтенд- та бекенд-коду;
  • аналіз безпеки;
  • перевірку відповідності стандартам.

У результаті ми підготували 88-сторінковий документ із описом виявлених помилок. Протягом перших шести місяців роботи основним завданням було їх виправлення. Ми розподілили помилки на три групи: критичні, середнього та низького пріоритету. Спочатку ми усунули критичні помилки, які становили загрозу для всієї системи, а потім поступово переписували її поетапно. Ця система управління дистрибуцією використовувалася у десятках країн і забезпечувала оборот у мільярди доларів. Вона була критично важливим інструментом для клієнта, тому ми не могли просто призупинити її роботу під час внесення змін.

Нашим завданням для іншого клієнта — PepsiCo — було виправлення проблем у системі розіграшу призів для рекламних кампаній. У нас не було достатньо часу для проведення глибокого аналізу системи, оскільки проєкт було передано нам від попереднього підрядника незадовго до старту кампанії. Тому ми зосередилися на виявленні критичних проблем у системі перед запуском кампанії. Ми оперативно виправили помилки, пов’язані з обліковими записами користувачів та іншими функціями розіграшу. Після цього усунули всі виявлені недоліки в системі та запустили вебсайти для інших маркетингових кампаній.

Ми також працювали з Tennet – енергетичною компанією, що базується в Європі та має широку клієнтську базу. Вони надають послуги з прокладання електропроводки в багатьох країнах і працюють з багатьма логістичними підрядниками, які доставляють матеріали та інші вантажі в різні місця. Вони мали внутрішню логістичну систему, яка пропонувала комплексне управління підрядниками, включаючи звіти, бухгалтерський облік, планування маршрутів та багато інших аспектів.

У клієнта була система, розроблена іншою компанією, і нам потрібно було доопрацювати її на основі технологічного стеку та запустити. Спочатку ми залучили бізнес-аналітиків, які проаналізували завдання, потреби та цілі клієнта. В результаті ми створили нову документацію та технічні специфікації. Ми також додали ідеї щодо покращення системи від наших бізнес-аналітиків та дизайнерів. Потім ми проаналізували бекенд і використали його як основу для розробки. З іншого боку, нам довелося розробляти фронтенд з нуля, оскільки напрацювань було дуже мало. За 6 місяців ми побудували складну систему, яка зараз тестується кінцевими користувачами.

Ми отримали ще один проєкт — Preston Baker від наших партнерів. Спочатку ми працювали над ним як субпідрядники, а пізніше наші партнери повністю передали його нам, і ми почали працювати безпосередньо з клієнтом. Цей проєкт був побудований на .NET, в якому на той час ми не мали досвіду. Ми найняли кількох розробників для цього проєкту та проаналізували систему. Система була готова на 90%, наші завдання в основному полягали у виправленні помилок. Наша команда складалася з бізнес-аналітика, QA-інженера та 2 програмістів. За кілька місяців ми завершили цей проєкт і створили документацію. 

Як видно з наведених прикладів або вашого власного досвіду, ідеальних проєктів не існує. Навіть якщо система має високу якість і була розроблена інженерами рівня Senior, з часом вона може застаріти та потребувати оновлення фреймворків та інших технологій. Це критично важливо з погляду безпеки, адже проєкти без оновлень мають значно вищий ризик стати мішенню для хакерських атак.

Передача проєкту іншому підряднику для його завершення — поширена практика у сфері розробки програмного забезпечення. Ми часто маємо справу з такими проєктами і завжди проводимо технологічний аудит перед тим, як почати працювати з легасі-системами, чим ми займаємося досить часто.

Розробка та впровадження системи

Проєктування та розробка: Визначення та збір потреб розробки, процедури проєктування та розробки, вхідні дані та узгодженість етапів і елементів розробки.

Тестування: Складність, ретельність тестів, коректність тестування.

Впровадження: Дотримання процедур та стандартів затвердження змін, їх реалізації, забезпечення працездатності елементів безпеки системи під час та після впровадження, документування впровадження та оцінка після впровадження.

Власники вебпроєктів і розробники можуть отримати численні переваги від експертних оцінок продуктивності їхнього програмного забезпечення та відповідності галузевим стандартам. Ці оцінки включають перевірку правильного функціонування різних модулів вебресурсу, забезпечення високої якості макетів, оптимізацію графіки, налаштування серверів і розширень, а також інші фактори. Оскільки дедалі більше користувачів зараз отримують доступ до вебпродуктів через свої мобільні пристрої, також важливо оцінювати продуктивність і точність мобільних версій сайтів і додатків у звіті про аудит.

Як наша команда забезпечує відповідність і безпеку

Окремо також важлива перевірка дотримання стандартів розробки програмного забезпечення. У SECL Group при проведенні аудиту, в залежності від специфіки та обраних для проєкту технологій, ми спираємося, зокрема, на такі відомі міжнародні стандарти:

Продуктивність системи

Збої: частота збоїв, середній час усунення та час між відмовами, загальний час простою системи.

Зберігання та використання: Використання оперативної пам’яті (ОЗП), дискового простору та хмарного сховища. Використання хмарних рішень є настільки значним у сучасній веб-розробці, що цю тему завжди слід розглядати в процесі аудиту. Крім того, зазвичай є можливості для пропозицій щодо покращення. У хмарних сервісах обсяг використовуваних ресурсів залежить від робочого навантаження, тому, оптимізуючи навантаження, ви можете уникнути зайвих витрат на надмірні ресурси.

Продуктивність мережі: Затримка мережі (пінг), швидкість завантаження та вивантаження. (Ми рекомендуємо оцінювати ці параметри окремо для різних частин світу. З досвіду відомо, що щось може швидко завантажуватися в США чи Канаді, але занадто повільно в Європі, наприклад).

System performance

Безпека

Оцінка програмного коду в контексті безпеки: Аудитори перевіряють, наскільки розробка відповідає стандартам безпеки та чи дотримувалася команда проєкту практик безпечного кодування. Необхідно виявити будь-які вразливості безпеки, які можуть бути знайдені не лише в розробленому коді, але й у будь-яких рішеннях, взятих із зовнішніх бібліотек, а також технологій з відкритим вихідним кодом. У звіті аудитори висловлюють свою думку щодо наявності вразливостей безпеки та пов’язаних з ними ризиків.

Аудиторський звіт також оцінює рівні захисту, які захищають розроблену веб-систему від поширених загроз, таких як:

  • DDoS-атаки, тобто розподілені атаки типу “відмова в обслуговуванні”, коли величезна кількість некоректних зовнішніх запитів з багатьох IP-адрес робить систему недоступною для користувачів. Ці атаки є гучними та мають масовий руйнівний вплив.
  • Міжсайтові скриптові атаки (XSS). Вони впроваджують скрипти на стороні клієнта у веб-сторінки, видимі для інших користувачів. Наслідком XSS-атак може бути перенаправлення запитів користувачів на шкідливі веб-сторінки.
  • SQL-ін’єкції, які є особливо небезпечними для додатків, що працюють з даними, здійснюються шляхом введення шкідливих операторів мовою структурованих запитів (SQL) для отримання доступу до бази даних або виконання дій на сервері. Ці атаки можуть призвести до витоку конфіденційних даних тощо.

Звичайно, цей список не є вичерпним і постійно еволюціонує. Зловмисники свідомо шукають недоліки в програмному коді вебпослуг, які можуть дозволити зламати систему. Тому важливо, щоб аудитори виявляли наявність помилок у коді та перевіряли, чи були використані безпечні методи програмування під час його написання. Таким чином, команда аудиту оцінює здатність системи протистояти шкідливим атакам, а також визначає відповідні ризики.

Фаєрвол для серверів: Встановлення та регулярне оновлення фаєрволу на сервері, включаючи системи виявлення та запобігання вторгненням (IDS / IPS).

Антивірусне програмне забезпечення для серверів: Встановлення, підтримка в активному стані та регулярне оновлення антивірусного програмного забезпечення на всіх серверах. Встановлення та належна конфігурація патчів негайно після кожного інциденту.

Апаратне забезпечення (Hardware): Відповідність усіх пристроїв мінімальним апаратним вимогам для коректної роботи програм безпеки. Захист усіх пристроїв паролем.

Паролі: Відповідність паролів вимогам безпеки. Регулярна зміна паролів. Блокування облікових записів після неправильних входів у систему.

Облікові записи: Видалення деактивованих облікових записів. Шифрування інформації облікових записів.

Сповіщення: Цілодобове моніторинг усіх сповіщень про несанкціонований доступ, незаплановані модифікації системи та будь-які вторгнення в систему.


Отримайте детальний план аудиту програмного забезпечення


Документація

Повнота та актуальність документації веб-сервісу: Аудитори переконуються, що документація програмного забезпечення не має значних прогалин і охоплює всі елементи розробки та експлуатації веб-сервісу. Також обов’язковою є перевірка актуальності документації.

Склад документації залежить від особливостей та технологій проєкту. Ось шаблон технологічного аудиту, придатний для більшості випадків. Як правило, добре підготовлені команди проєкту складають і регулярно оновлюють документи за тематичними розділами, такими як:

  • Проєктування архітектури програмного забезпечення. Основні рішення для побудови системи, опис її елементів. Взаємозв’язки системи з навколишнім середовищем та потоки даних.
  • Дизайн інтерфейсу користувача (UI) та досвід користувача (UX).
  • Вихідний код і стек технологій. Інструкції з кодування, якщо вони прийняті та застосовуються командою розробників. Перераховуються будь-які застосовані фреймворки, системи управління контентом (CMS) і фреймворки управління контентом (CMF), шаблони, плагіни, інструменти та інші рішення із зовнішніх бібліотек тощо.
  • Правила безпеки, якщо вони встановлені для проєкту.
  • APIs (Application Programming Interfaces), якщо вони використовуються під час розробки.
  • Встановлення та розгортання, включаючи інтеграцію зі сторонніми рішеннями.
  • Забезпечення якості, включаючи тестування та перелік застосовних стандартів і вимог.
  • Обслуговування.

Протоколи безпеки: Належне документування, регулярне оновлення та розповсюдження протоколів безпеки. Оновлення протоколів безпеки після кожної модифікації системи та будь-якої події, що має значення для безпеки.

ІТ-журнали (логи): Захист ІТ-логів від несанкціонованого втручання, регулярність і своєчасність їх перегляду, дотримання термінів зберігання.

Звіти про інциденти: Точність описів інцидентів, їхніх причин та рішень. Внесення необхідних змін до процедур на основі аналізу інцидентів. Оцінка впливу кожного інциденту на систему.

Стандарти та процедури

Резервне копіювання: Здійснення щоденного резервного копіювання важливих даних. Регулярність перевірки та підтвердження резервних копій даних. Наявність 2+ окремих місць зберігання резервних копій файлів, включаючи принаймні одне зовнішнє, значно спростить процес відновлення бази даних.

Іноді, на вимогу замовника, аудит не обмежується перевіркою його технологій та технічних параметрів, і власники проєктів можуть шукати комплексний аналіз своїх проєктів. У таких випадках дослідження вебсайту стає бізнес-технологічним аудитом. Відповідно, до команди аудиторів залучаються також необхідні фахівці з відповідними профілями, а структура звіту також розширюється. Інші подібні розширення обсягу можуть включати додаткові тематичні аудити, такі як:

  • SEO-аудит
  • Аудит зручності використання (юзабіліті)
  • Аудит мобільної адаптивності
  • Аудит інструментів монетизації тощо.

Звісно, цей чек-лист технічного аудиту веб-сайту може бути розширений, наприклад, за рахунок різних аспектів маркетингового аналізу, економічної ефективності та досвіду користувачів веб-сервісу.

Як було продемонстровано, кваліфіковані аудитори можуть ефективно вибирати і використовувати методи для перевірки всіх аспектів веб-сервісів через постійний діалог зі своїм клієнтом. Крім того, варто зазначити, що аудитори зазвичай надають рекомендації щодо виправлення недоліків веб-сайту або веб-додатків і співпрацюють з клієнтом для розробки плану дій щодо їх впровадження.

Висновок

Ось і все – в цій статті ми розглянули всі тонкощі планування та проведення технологічного аудиту веб-сервісів. Як бачите, аудити веб-розробки можуть бути дуже різноманітними, а якість і характеристики аудиту значною мірою залежать від його цілей та досвіду команди, яка його проводить. Дуже важливо переконатися, що обсяг і складність аудиту відповідають розміру і складності вашого веб-проєкту. Коли справа доходить до вибору команди для проведення аудиту, обов’язково звертайтеся до тих, хто має досвід і знання в подібних технологіях і проєктах.

Наша сфера спеціалізації полягає в проведенні аудитів веб-проєктів на Python, JS та PHP. Клієнти зазвичай звертаються до нас для проведення IT-аудиту веб-сервісів, коли змінюють підрядників або стикаються з конкретними проблемами, які потребують уваги. Часто експерти можуть виявити різноманітні проблеми та запропонувати рішення навіть без проведення повного аудиту.

Якщо у вас виникли запитання чи занепокоєння щодо ваших веб-сервісів, не соромтеся звертатися до нас. У багатьох випадках ми можемо запропонувати рекомендації та поради навіть без проведення аудиту, що може заощадити ваш час і гроші. Ми допомогли багатьом клієнтам таким чином, і ми впевнені, що свіжий погляд і практичні поради досвідчених веб-розробників допоможуть вам вирішити проблеми вашого проєкту та запобігти їх виникненню в майбутньому.

    Залишити запит

    Зв'яжіться з нами, і ми відповімо вам найближчим часом



    Дякуємо!

    Ми скоро з вами зв'яжемося.

    Закрити