Latest / M365.FM – подкаст про Microsoft 365, Copilot і ШІ українською / API Gateway простими словами: маршрутизація, безпека та обмеження запитів для мікросервісів — чи потрібен він вам? (ШІ-дубляж)
Transcript
- 0:00Готові до 10-х днів Microsoft 365, Co-Pilot, She, Azure та зустрічі з тими, хто формує майбутні роботи.
- 0:07Цього січня M365Con повертається, і ми стаємо ще масштабнішими.
- 0:12Приєднуйтесь до нас на живих сесіях, демонстраціях реальних кейсів та отримуйте практичні знання від MVP та експертів з усього світу.
- 0:18Жодних загальних слайдів чи нескінченних модних слів.
- 0:22Ми розглядаємо реальні виклики Co-Pilot Studio, She-агенти, Fabric, безпека, управління та автоматизація.
- 0:29Незалежно від того, чи ви і те фахівець, розробник або бізнес-лідер, для вас знайдуться відповідні сесії.
- 0:35Протягом 10 повних днів ви зможете дослідити різні технології та налагодити зв'язки з глобальною спільнотою.
- 0:40Дивіться наживо та впроваджуйте практичні ідеї у своїй організації.
- 0:44Січень 2027 року, 10 днів, єдина спільнота Microsoft. Реєстрація вже відкрита.
- 0:51Перейдіть на M365Con.net і забронюйте своє місце вже сьогодні.
- 0:56Це M365Con.net
- 0:59Долучайтеся зараз на M365Con.net і побачимося наживо в січні.
- 1:05Ви створили робочий додаток, потім додали ще один сервіс, потім ще один, і раптом керування трафіком між ними перетворилося на жах.
- 1:11Отже, що таке Арі Шлюз і чи дійсно він вам потрібен?
- 1:14До кінця цього епізоду ви зрозумієте, що робить Арі Шлюз, чому він вирішує хаос керування багатьма сервісами та як дізнатися, чи потрібен він вам.
- 1:22Почнімо з проблеми, потім розберемо складові та побачимо, як усе це працює разом.
- 1:27Проблема. Забагато дверей.
- 1:29Уявіть, що ви керуєте компанією, яка швидко зростає.
- 1:32У вас є відділ продажів на третьому поверсі, бухгалтерія в підвалі та і те відділ у задньому крилі.
- 1:37Тепер уявіть, що кожен із цих відділів має окремий вхід, свій номер телефону та власного охоронця, який не спілкується з іншими.
- 1:43Якщо ви відвідувач і хочете залишити посилку, успіхів вам.
- 1:46Ви повинні точно знати, якими дверима скористатися, з яким охоронцем говорити і що робити, коли цей охоронець на перерві.
- 1:51Саме це відбувається, коли ваш додаток має кілька серверних служб і кожен клієнт звертається до них напряму.
- 1:56Клієнт, чи то мобільний додаток, веб-сайт чи інший сервіс має знати, де знаходиться кожна служба, як проходити автентифікацію і що робити, коли щось ламається.
- 2:04Кожна окрема служба повинна самостійно забезпечувати свою безпеку, ліміти запитів та обробку помилок.
- 2:09Це дублювання роботи і легко допустити розбіжності.
- 2:12Візьмемо, наприклад, банк. У них є окремі сервіси для рахунків платежів, кредитів та виявлення шахрайства.
- 2:17За старим підходом кожен із них доступний напряму.
- 2:19Мобільний додаток має знати чотири різні URL-адреси, чотири різні методи автентифікації та чотири різні способи обробки помилок.
- 2:25Це вчетверо більша складність і вчетверо більша ймовірність збоїв, і саме цей хаос покликаний усунути Аріш-шлюз.
- 2:32Отже, яке рішення?
- 2:33Що таке Аріш-шлюз?
- 2:35Уявіть Аріш-шлюз як рецепцію готелю.
- 2:38Коли ви заходите, вам не потрібно знати, на якому поверсі покоївки, де кухня або як зв'язатися з технічною службою.
- 2:44Ви просто підходите до стійки реєстрації, кажете, що вам потрібно, і вони беруть усе на себе.
- 2:48Вони спрямовують ваш запит потрібній людині, перевіряють, чи є у вас доступ, і навіть самі вирішують прості питання.
- 2:54Аріш-шлюз робить те саме для вашого програмного забезпечення.
- 2:57Це єдина точка входу, яка стоїть між вашими клієнтами та бекенд-сервісами.
- 3:01Кожен запит спочатку проходить через шлюз. Він вирішує, куди його спрямувати, чи дозволити його, і що надіслати у відповідь.
- 3:08Це не нова ідея. Зворотні проксі-сервери існують десятиліттями, але Аріш-шлюз став незамінним з появою мікросервісів.
- 3:14Коли ви розбиваєте додаток на багато дрібних сервісів, у вас раптом з'являється багато дверей.
- 3:17Шлюз надає вам одні парадні двері.
- 3:19У світі Azure Azure Arie Management є повноцінною платформою, а шлюз – це основний компонент, що обробляє трафік.
- 3:24Але цей шаблон однаковий усюди. Одна точка входу – централізований контроль. Кожен запит надходить сюди.
- 3:30Шлюз перевіряє його, спрямовує і надсилає відповідь назад.
- 3:33Клієнт ніколи не спілкується з вашими бекенд-сервісами напряму. Він спілкується лише зі шлюзом.
- 3:37Давайте розберемо, що це означає насправді.
- 3:39Почнемо з найпростішого завдання – маршрутизації.
- 3:42Частина перша – маршрутизація трафіку.
- 3:44Найпростіша функція Арі Шлюзу – це маршрутизація спрямування кожного запиту до потрібного сервісу.
- 3:49Подумайте про те, як працює веб-сайт.
- 3:50Коли ви натискаєте на посилання, ваш браузер надсилає запит.
- 3:53Цей запит має шлях.
- 3:54Якщо шлях – юзаз, шлюз знає, що його треба спрямувати до сервісу користувачів.
- 3:57Якщо це – одаз, він йде до сервісу замовлень.
- 4:00Шлюз вчитує шлях, визначає, куди потрібно спрямувати запит і пересилає його.
- 4:03Без шлюзу ваші клієнти мають знати URL-адресу кожного окремого сервісу.
- 4:07Мобільному додатку потрібні адреси сервісу користувачів, сервісу замовлень, платіжного сервісу, сервісу каталогу.
- 4:12Це дуже багато адрес для керування.
- 4:13І якщо хоча б одна з цих адрес зміниться, вам доведеться оновлювати кожен клієнт.
- 4:17Зі шлюзом клієнти знають лише одну URL-адресу – адресу самого шлюзу.
- 4:20Їх не цікавить, де насправді розташовані сервіси.
- 4:23Вони просто надсилають запит на шлюз, а він обробляє все інше.
- 4:26Це один із найпоширеніших варіантів використання арі-шлюзу – маршрутизація на основі ресурсів.
- 4:30Дослідження Apache Apysics прямо вказує на це.
- 4:32Ви налаштовуєте маршрути за шляхом HTTP методом, заголовками чи навіть геолокацією клієнта.
- 4:37Якщо хтось у Європі надсилає запит, ви спрямуєте його до Європейського дата-центру.
- 4:41Якщо запит надходить зі США, він йде до Американського дата-центру.
- 4:44Клієнт навіть не знає, що все це відбувається.
- 4:46Він просто отримує швидку відповідь.
- 4:47Маршрутизація також допомагає з версіонуванням.
- 4:49Припустімо, у вас з'явилася нова версія сервісу користувачів.
- 4:52Старі клієнти все ще використовують V1 Users, а нові – V2 Users.
- 4:56Шлюз спрямовує їх на різні бекенди.
- 4:57Старі клієнти продовжують працювати, поки ви впроваджуєте нову версію.
- 5:01Ви можете змінювати бекенд, не створюючи проблем для клієнтів.
- 5:03Це критично важливо, коли ви керуєте активним додатком із реальними користувачами.
- 5:07Подумайте про платформу електронної комерції.
- 5:09У вас є окремі сервіси для каталогу, кошика, оформлення замовлення та облікових записів.
- 5:13Без шлюзу мобільний додаток повинен знати чотири різні URL-адреси.
- 5:17Зі шлюзом він знає лише одну.
- 5:19Шлюз зчитує шлях каталог, кошик, оплата, аккаунт і спрямовує запит до потрібного сервісу.
- 5:24Проста маршрутизація – це найлегша частина.
- 5:26Наступне завдання – це те, де стає справді корисно.
- 5:29Частина друга – безпека на вході.
- 5:31Кожен виклик АРІ має перевірятися, хто робить цей запит, чи має ця особа відповідні дозволи.
- 5:36Без шлюзу кожен сервіс має самостійно керувати автентифікацією.
- 5:39Це означає дублювання роботи, де легко припуститися помилки.
- 5:42Один сервіс може перевіряти токи неналежним чином, інший – пропустити крок, а третій – використати зовсім інший методичний.
- 5:48Ви отримуєте неузгоджену безпеку в усьому додатку.
- 5:51Шлюз змінює це.
- 5:52Він обробляє автентифікацію та авторизацію в одному центральному місці.
- 5:55Одне місце для перевірки, одне – для виконання правил, одне – для оновлення політик.
- 5:59Це одна з найкращих практик безпеки.
- 6:01Він підтверджує АРІ ключі JWT, OAT-токени або сертифікати для кожного запиту.
- 6:06Кожен запит проходить через одну і ту саму перевірку.
- 6:09Жодних винятків.
- 6:10Шлюз також може застосовувати правила.
- 6:12Ви можете задати, цей АРІ ключ може викликати лише ендпоінти читання.
- 6:15Або цей клієнт має доступ лише до сервісу каталогу, а не до сервісу оплати.
- 6:19Ви визначаєте детальні дозволи на рівні шлюзу, і вони застосовуються автоматично.
- 6:23Сервіси бекенду ніколи не переймаються авторизацією.
- 6:26Вони просто обробляють запит і повертають дані.
- 6:28Ось у чому річ.
- 6:29Шлюз – це єдине місце, де можна скасувати доступ, якщо щось пішло не так.
- 6:33Якщо ключ АРІ клієнта скомпрометовано, ви анулюєте його на шлюзі.
- 6:36Одна зміна – і все.
- 6:37Вам не потрібно оновлювати кожен сервіс чи щось перезапускати.
- 6:40Наступний запит із цим ключем буде негайно відхилено.
- 6:43Візьмемо реальний приклад.
- 6:44У банку є сервіс платежів і сервіс білінгу.
- 6:46Тільки сервіс платежів має право на запис у білінгову систему.
- 6:49Шлюз забезпечує це виконання.
- 6:51Якщо клієнт намагається записати дані в білінг через неправильну кінцеву точку, шлюз блокує це.
- 6:55Сервіс білінгу навіть не бачить такого запиту.
- 6:57Шлюз також може підтримувати взаємний TLS та інтеграцію з WAF для глибшого захисту.
- 7:02Але, по суті, це ваш перший рубіж оборони.
- 7:04Безпека – це одне, але що робити, коли надходить забагато запитів одночасно?
- 7:08Частина третя – керування трафіком.
- 7:10Що станеться, коли 10 тисяч користувачів одночасно звернуться до вашого додатку?
- 7:14Можливо, у вас флеш-розпродаж, вірусний запуск продукту або просто звичайний вівторок, коли всі вирішили увійти одночасно?
- 7:20Без шлюзу ваші бекенд-сервіси отримають прямий удар і можуть вийти з ладу.
- 7:24Не поступово, а відразу всі.
- 7:26Ось тут на допомогу приходить керування трафіком.
- 7:28Шлюз може обмежувати кількість запитів, які може зробити кожен клієнт.
- 7:32Обмеження частоти та регулювання швидкості – це стандартні функції.
- 7:34Ви встановлюєте правила на шлюзі, і він їх виконує.
- 7:37Ваші сервіси бекенду ніколи не відчують сплеску навантаження.
- 7:39Ви можете встановлювати квоти на користувача, на ARRI-ключ або на IP-адресу.
- 7:42Припустимо, у вас є безкоштовний рівень ARRI.
- 7:44Безкоштовні користувачі отримують 100 запитів на годину.
- 7:47Преміум користувачі – 10 тисяч.
- 7:49Шлюз відстежує кожен запит і застосовує ці обмеження на вході.
- 7:52Коли користувач безкоштовного рівня вичерпує ліміт,
- 7:54шлюз повертає ввічливе повідомлення «Спробуйте пізніше».
- 7:56Сервіси бекенду навіть не дізнаються, що був такий запит.
- 7:59Вони продовжують працювати, обслуговуючи платних клієнтів.
- 8:02Шлюз також забезпечує балансування навантаження.
- 8:04Якщо у вас працює кілька екземплярів одного сервісу,
- 8:07шлюз розподіляє запити між ними.
- 8:09Перший екземпляр отримує запит, другий – наступний, третій – ще наступний.
- 8:12Це відбувається автоматично.
- 8:14А якщо один екземпляр виходить з ладу, шлюз перенаправляє запити на інший.
- 8:16Клієнти навіть не знають про це.
- 8:18Вони просто отримують свою відповідь.
- 8:19Балансування навантаження з перевірками стану забезпечує безперебійну роботу.
- 8:22Шлюз пінгує кожен екземпляр, щоб переконатися, що він живий.
- 8:25Якщо ні, він припиняє надсилати туди трафік.
- 8:27Це особливо важливо для Арі з високим рівнем трафіку.
- 8:30Без шлюзу сплеск трафіку влучає прямо у ваші сервіси.
- 8:33Зі шлюзом сплеск спочатку влучає у шлюз, він поглинає його,
- 8:37розподіляє та захищає ваші сервіси від перевантаження.
- 8:40Гаразд, але що, якщо дані виглядають некоректно, коли вони надходять?
- 8:44Частина четверта – трансформація даних.
- 8:46Іноді дані, які надсилає клієнт, не відповідають тому, що очікує ваш бекенд.
- 8:50Можливо, клієнт надсилає JSON, а ваш бекенд розуміє лише XML.
- 8:53Можливо, назви полів не збігаються.
- 8:55Клієнт використовує FirstName, а ваш бекенд очікує FirstName з іншим форматом.
- 8:59Ціни відповідності призводять до помилок.
- 9:00За старого підходу вам довелося б виправляти кожного клієнта або переписувати бекенд.
- 9:04Не найкращий варіант.
- 9:05Шлюз може трансформувати дані до того, як вони досягнуть бекенду.
- 9:08Уявіть його як перекладача.
- 9:09Він стоїть посередині і може змінювати дані під час входу, виходу або в обох випадках.
- 9:20Вона працює добре.
- 9:22Але тепер ви створюєте новий мобільний додаток, а мобільні додатки говорять мовою JSON.
- 9:25Без шлюзу вам довелося б переписувати за старілу систему або змусити мобільний додаток надсилати XML.
- 9:29Зі шлюзом вам не потрібно робити ні того, ні іншого.
- 9:31Мобільний додаток надсилає JSON.
- 9:33Шлюз конвертує його в XML.
- 9:35Система отримує те, що очікує.
- 9:36Мобільний додаток отримує відповідь уже у форматі JSON.
- 9:38Нікому не довелося нічого переписувати.
- 9:40У цьому вся принадність.
- 9:41Шлюз також може додавати або видаляти заголовки, змінювати URL-адреси або маскувати конфіденційні дані.
- 9:46Уявіть, що відповідь містить номер кредитної картки.
- 9:48Ви не хочете, щоб це повернулося клієнту.
- 9:50Шлюз може видалити це перед відправленням відповіді або замінити на замасковану версію.
- 9:54Беккенду взагалі не потрібно змінюватися.
- 9:56Шлюз бере це на себе.
- 9:57Це особливо корисно при модернізації старих систем.
- 9:59Вам не потрібно переписувати беккен.
- 10:01Вам не потрібно змушувати клієнтів змінюватися.
- 10:03Ви просто змінюєте налаштування шлюзу.
- 10:05Це як перекладач на міжнародній конференції.
- 10:07Кожен говорить своєю мовою, але перекладач забезпечує взаєморозуміння.
- 10:10Шлюз – це такий самий перекладач для вашого програмного забезпечення.
- 10:12Отже, маршрути за ція безпека, обмеження швидкості, трансформація – це чимало.
- 10:15Але це не чотири окремі речі.
- 10:17Дозвольте показати, як вони пов'язані.
- 10:19Як це все працює разом.
- 10:20Ось у чому справа.
- 10:21Ці чотири завдання не є окремими.
- 10:23Вони працюють разом над кожним окремим запитом щоразу, коли він надходить.
- 10:26Шлюз перевіряє автентифікацію.
- 10:28Він перевіряє обмеження швидкості, рейт-ліміт.
- 10:29Він спрямовує запит до потрібного сервісу.
- 10:31Він перетворює дані, якщо це потрібно.
- 10:33Він отримує відповідь.
- 10:34Він також перетворює її, якщо необхідно.
- 10:36Потім він надсилає все назад клієнту.
- 10:38Один конвейер.
- 10:38Кожен крок відбувається автоматично, по черзі, без участі сервісів.
- 10:42Справжня сила не в якійсь одній функції, а в інтеграції.
- 10:46Ви можете додати нову політику безпеки, не змінюючи маршрутизацію.
- 10:49Бекенд-сервіс, не змінюючи клієнтську частину.
- 10:52Ви можете оновити ліміти запитів без повторного розгортання.
- 10:54Кожен елемент незалежний, але вони працюють в одному конвейері.
- 10:57І оскільки все проходить через одне місце, ви отримуєте повний огляд того, що відбувається.
- 11:02Логи, метрики, аналітика – все з однієї точки.
- 11:05Ви бачите кількість запитів, які з них не вдалися, які були повільними,
- 11:08які клієнти споживають найбільше ресурсів.
- 11:10Без шлюзу вам довелося б збирати ці дані з кожного сервісу окремо.
- 11:13Зі шлюзом все доступно відразу.
- 11:15У цьому головна ідея.
- 11:16Шлюз – це не просто маршрутизатор.
- 11:18Це центр керування всією вашою АРІ-платформою.
- 11:20Кожен запит, кожна відповідь, кожна помилка – все проходить крізь одне місце.
- 11:23Ви отримуєте єдину панель огляду для всього, що відбувається.
- 11:26Отже, як цим насправді користуватися?
- 11:28Давайте поговоримо про те, що ви можете зробити вже зараз.
- 11:30Практичні поради.
- 11:31Будьмо відвертими.
- 11:32Якщо у вас лише один або два сервіси,
- 11:34АРІ-шлюз вам, швидше за все, ще не потрібен.
- 11:35Ви можете налаштувати маршрутизацію самі,
- 11:37керуючи доступом у кожному сервісі.
- 11:39Це не елегантно, але працює.
- 11:40Але як тільки ви доходите до трьох сервісів
- 11:42або відкриваєте АРІ для зовнішніх клієнтів,
- 11:44складність швидко зростає.
- 11:45Шлюз швидко окупається.
- 11:47Тож, який ваш найкращий перший крок?
- 11:49Централізуйте автентифікацію на шлюзі.
- 11:50Зробіть це першочергово.
- 11:52Виберіть один сервіс, перенесіть перевірку доступу на шлюз.
- 11:54Ви відразу помітите, що код вашого сервісу став чистішим.
- 11:57Більше ніякої логіки перевірки токенів розкиданої всюди.
- 12:00Більше жодних сумнівів, чи однаково ви реалізували це в кожному сервісі.
- 12:03Шлюз обробляє це один раз, і кожен сервіс отримує вигоду.
- 12:06Наступний крок – обмеження запитів.
- 12:08Навіть просте обмеження захистить ваш бекенд від перевантаження.
- 12:11Почніть з чогось базового, наприклад, 100 запитів на хвилину для клієнта.
- 12:14Це зупинить неконтрольованого клієнта від виведення з ладу ваших сервісів.
- 12:16Ви можете говорити.