Всім доброго вечора друзі! Як ваш день?
Вечірня історія QAКоли клієнт не готовий, що сервер теж може не бути готовий)
Сьогодні історія про те, як одна система "вмерла", і як треба перевіряти круто щоб це не пішло в реліз, бо як що би ніхто не перевірив - то бобо, як кажуть а хто знав що Microsoft теж може не відповідати 🫠
Що я маю вам сказать)
Звичайне SSO, логін через Microsoft. Працює роками.
Аж поки не відвалиться зовнішній сервіс.
І що от тут фронт намагається отримати токен, отримує 403 Forbidden, а далі тиша. Ніякого graceful degradation, fallback-у чи хоча б діалогу сервіс недоступний. Просто краш. В логах, винятки, в інтерфейсі порожнеча. і ви просто уявіть якщоб таке було у людей які користуються тим чи іншим продуктом
І це класичний сценарій, коли клієнт не готовий до того, що зовнішній сервіс може бути: умовно недоступний (timeout)/ повернути 403/500/ не віддати відповідь взагалі
І таких ситуацій у реальному продакшені більше, ніж здається.
ТО що треба робити при тестувані яких то таких інтеграцій) щоб нічого не бракувало?
- Перевірки доступності зовнішнього сервісу
- Обробки помилки (а не падіння на 403)
- Емуляції ситуацій "а якщо не буде відповіді?" так саме так
Як це тестувати, нормально і локально?Щоб перевірити, як поводиться система, коли SSO недоступне, треба не чекати аварії, а змоделювати її руками. Один із найпростіших способів, перекрити DNS через hosts.
Блокування Microsoft SSO на macOS - бо я принцепі з мака працюю теж) але і для віндовс низче теж напишу)
Відкриваєте Terminal:Cmd + Space → Terminal → Enter
Редагуєте файл hosts:sudo nano /etc/hosts
Додаєте в кінець:127.0.0.1 auth.yourcompany.com
127.0.0.1 www.auth.yourcompany.com
::1 auth.yourcompany.com
::1 www.auth.yourcompany.com
Зберігаєте зміни:
Ctrl + X → Y → Enterну і звісно чищаєш DNS-кеш:sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
ну і обовьязково щоб впевнитися перевіряєте:ping auth.yourcompany.com
Якщо отримуєш
127.0.0.1 або timeout, блокування працює.
Для віндовс принцепі все теж саме але
Відкрий файл hosts:
У Блокноті: Файл → ВідкритиПерейди сюди:
C:\Windows\System32\drivers\etc
ну і в кінці теж пінгуєте і готово)
Мій поінт який Не завжди проблема в нас, іноді сервер на тому боці просто пішов спати. І нам треба бути до цього готовими
І не забувай: тестуєш інтеграцію, блокуй URL і дивись, що станеться. Бо тестуючи інтеграції, більшість перевіряє тільки "щасливий шлях". Але стабільність системи це не про щастя. Це про готовність до невдач.
Всім гарного вечора, не грузіться і не бежіть провіряти заблокованний хост) відпочівайте
Обняв 🤗🤗🤗