Один MaxCode вместо десятка ключей: как PushMeld добавляет уведомления туда, где их не было
Один MaxCode вместо десятка ключей: как PushMeld добавляет уведомления туда, где их не было
Уявімо домашній комп’ютер, який щонічно створює резервну копію важливих файлів. Результат зберігається в системному журналі: операція завершена успішно або сталася помилка.
Технічно все працює. Непрактичність виникає вранці: людині потрібно самостійно відкрити журнал і перевірити результат. У програми немає мобільного застосунку, відправка оповіщень розробниками не передбачена, а створювати окрему інфраструктуру лише для однієї функції ніхто не стане.
З допомогою PushMeld у такий процес можна додати простий запит. Після завершення резервного копіювання на телефон прийде повідомлення: копію створено або операція завершилася помилкою. За потреби те саме оповіщення можна отримати і на email.
Основою цієї ідеї є MaxCode — єдиний захищений код, через який PushMeld отримує всю інформацію, необхідну для подальшої доставки повідомлення.
Коли я познайомився з проектом, саме MaxCode здалося мені його найцікавішою частиною. Push-оповіщення та email давно не є чимось новим. Вагоміше те, що вихідна програма перестає керувати їх доставкою. Вона лише повідомляє PushMeld про подію, а все подальше відбувається вже поза її межами.
Зазначу контекст: PushMeld належить до системи MELD®, а DigiMeld UG — компанія, яка її розвиває.
Джерело знає лише про подію
Звичайна інтеграція оповіщень швидко ускладнюється технічними деталями. Потрібно визначити проєкт, налаштувати доступ, зберігати ключі, ураховувати токени пристроїв, підключати поштову доставку і враховувати вимоги різних мобільних платформ.
PushMeld переносить усе це з вихідної системи у окремий керований контур.
Програма резервного копіювання знає лише одне: операція завершена успішно або сталася помилка. Вона передає MaxCode, заголовок і текст повідомлення.
Їй не потрібно знати:
скільки пристроїв підключено до проєкту;
який телефон зараз активний;
через якого провайдера має пройти push;
чи включена доставка за email;
чи з’явився у користувача новий смартфон;
чи був відключений старий планшет;
хто має отримати конкретне повідомлення.
Все це визначається вже всередині PushMeld.
На мою думку, саме тут полягає головна архітектурна ідея проєкту: MaxCode переносить управління оповіщеннями з програми, де сталася подія, у систему, яка займається доставкою.
Один MaxCode замість набору ключів
Зазвичай при підключенні зовнішнього сервісу доводиться працювати одночасно з кількома сутностями. Окремо використовується ідентифікатор проєкту, і окремо — ключ доступу, додатково можуть знадобитися секрети, токени пристроїв і настройки конкретних провайдерів.
MaxCode об’єднує все необхідне для відправки в одному захищеному коді.
Для кожного проєкту створюється власний MaxCode. У ньому поєднані ідентифікація проєкту, право на відправку і дані, що дозволяють PushMeld застосувати актуальну конфігурацію доставки.
Відправляючій системі не потрібно окремо зберігати:
ідентифікатор проєкту;
API-ключ і додатковий секрет;
токени підключених пристроїв;
параметри кожного отримувача;
ключі різних push-провайдерів;
окремі налаштування для push та email.
У програму, сайт або скрипт додатково додається один MaxCode. Отримавши його разом із повідомленням, PushMeld самостійно визначає проєкт, перевіряє запит, знаходить підключені пристрої і обирає доступні канали.
Тому MaxCode не слід сприймати як ще один ключ, доданий до інших. Його призначення — замінити всю звичну зв’язку розрізнених ключів, токенів і ідентифікаторів одним кодом.
Оповіщення звідки, де його не передбачено
MaxCode можна використовувати у будь-якій системі, здатній виконати HTTP-запит самостійно або через невеликий допоміжний скрипт.
Наприклад, PushMeld може повідомити, коли:
домашній сервер перестав відповідати;
резервне копіювання завершилося або закінчилася помилкою;
власний скрипт виконав тривалу задачу;
3D-принтер завершив друк;
датчик зафіксував течу;
відкрилася двері або спрацювала сигналізація;
на сайті з’явилася потрібна інформація;
змінилася ціна товару;
звільнилося місце для запису;
стара програма завершила обробку великого файлу;
невеликий інтернет-магазин отримав нове замовлення.
У кожного з цих джерел може не бути власного застосунку. Деякі пристрої вміють лише звертатися до заданої адреси, інші дозволяють запускати користувацьку команду, треті можна доповнити коротким сценарієм автоматизації.
Цього достатньо для передачі події у PushMeld.
Джерело при цьому не перетворюється на самостійний сервіс оповіщень. Воно просто фіксує подію і надсилає повідомлення з MaxCode. Все решта — отримувачі, пристрої, канали і технічний маршрут — залишається на боці PushMeld.
Не тільки push, а й email
Назва PushMeld передусім асоціюється з оповіщеннями на телефоні, однак можливості проєкту цим не обмежуються.
Для доставки можна використовувати push, email або обидва канали — залежно від налаштувань проєкту і доступних можливостей.
Наприклад, повідомлення про успішне резервне копіювання достатньо показати на телефоні. Сервісну помилку можна додатково надіслати поштою.
Вихідна програма у обох випадках виконує один і той самий запит з MaxCode. Їй не потрібно окремо налаштовувати поштовий сервер, зберігати його налаштування і створювати другий незалежний сценарій.
Рішення про канали доставки приймається всередині PushMeld. Якщо згодом користувач додасть email до вже існуючого проєкту, резервна копія переписувати не потрібно.
При цьому email використовується не як звичайна масова розсилка, а як додатковий спосіб повідомити про подію, яка надійшла від підключеного проєкту.
Один проєкт — одне джерело подій
Проєкти дозволяють розподіляти оповіщення за їхнім призначенням.
Звичайний користувач може створити, наприклад:
HomeServer— стан домашнього сервера;Backups— результати резервного копіювання;SmartHome— датчики і домашня автоматизація;PriceMonitor— зміни ціни;Website— нові звернення з особистого сайту.
Кожен проєкт отримує власний MaxCode. Завдяки цьому автоматизація дому не використовує код сайту, а моніторинг цін не змішується з резервними копіями.
У додатку одразу зрозуміло, звідки прийшло повідомлення і до якої задачі воно стосується.
Таке розподілення особливо корисне, коли джерел стає більше. Замість одного загального потоку користувач отримує кілька незалежних каналів, для кожного з яких можна визначити власні налаштування доставки.
Новий телефон не потребує зміни програми
Звичайний push-токен пов’язаний з конкретною установкою застосунка на певному пристрої.
Якщо у людини два телефони і планшет, це вже кілька токенів. Після повторної установки програми або заміни пристрою окремий токен може змінитися або перестати працювати.
MaxCode знаходиться вище цього рівня. Він відноситься до проєкту, а не до одного телефону.
Користувач сам визначає, які пристрої пов’язані з проєктом і мають отримувати його повідомлення. Наприклад, оповіщення домашнього сервера можна надсилати на особистий телефон і планшет, а події робочого сайту — лише на службовий смартфон.
Якщо людина купує новий телефон або відключає старий пристрій, вихідний скрипт продовжує використовувати той самий MaxCode. Актуальний список отримувачів змінюється всередині PushMeld.
Так само змінюється і додавання email або інших параметрів доставки.
Саме тому MaxCode — не просто спосіб зменшити кількість ключів. Це утворює межу між подією та її подальшим маршрутом. Все, що знаходиться після цієї межі, можна змінювати без втручання у вихідну програму.
Безкоштовно для звичайних задач
Інфраструктурні продукти часто описуються через корпоративні системи, серверні команди і великі обсяги даних. Через це може здаватися, що PushMeld орієнтований виключно на професійних розробників і компанії.
Насправді почати можна з звичайної домашньої задачі.
Сам застосунок безкоштовний. Основні можливості MaxCode також працюють безкоштовно в межах доступних лімітів. Людина може створити проєкт, підключити пристрій і отримувати повідомлення зі свого сервера, сайту, скрипта або домашньої автоматизації.
Це не тимчасовий демонстраційний режим, який перестає працювати після ознайомлення з продуктом. Для повсякденних сценаріїв безкоштовних можливостей достатньо.
Платні тарифи потрібні, коли збільшується кількість запитів, потрібні додаткові функції або система починає використовуватись ширше.
Єдиний принцип для людини і компанії
Механіка MaxCode не змінюється залежно від масштабу задачі.
Людина отримує повідомлення про завершення резервного копіювання. Невелика майстерня дізнається, що 3D-принтер закінчив тривалу друк. Інтернет-магазин бачить нове замовлення. Технічна команда отримує оповіщення про помилку на сервері.
Обсяги та кількість проєктів можуть різнитися, але принцип залишається однаковим.
Уявімо організацію з трьома джерелами подій:
Orders— нові замовлення;Payments— платежі і повернення;ServerStatus— технічні помилки.
Для кожного створюється окремий MaxCode та налаштовуються свої пристрої. Замовлення можуть надходити власнику і менеджеру, фінансові події — відповідальному співробітнику, а технічні помилки — спеціалістам, які обслуговують сервер.
Система компанії в усіх випадках робить майже одне й те саме: передає зміст події і MaxCode відповідного проєкту.
Якщо змінюються співробітники, пристрої або способи доставки, вихідні системи не потрібно переналаштовувати. Управління залишається всередині PushMeld.
APNs, FCM та HMS залишаються поза програмою
Для доставки push-сповіщень на різних пристроях можуть використовуватися APNs, FCM або HMS. У кожного провайдера є свої правила, токени та технічні особливості.
Зазвичай ці відмінності враховують під час розробки системи відправлення. У випадку PushMeld вони залишаються за межами MaxCode.
Домашній сервер, сайт або скрипт не визначає, який телефон використовує отримувач і через яку інфраструктуру має пройти повідомлення. Він здійснює один запит, а PushMeld обирає необхідний маршрут.
MaxCode не замінює інфраструктуру Apple, Google або Huawei. Він створює єдиний вхід перед нею.
Завдяки цьому вихідна система не повинна змінюватися разом із пристроями користувача. Сьогодні повідомлення може надсилатися через FCM, завтра — через APNs, а згодом до проєкту додасться ще один телефон або email. Для програми, у якій сталася подія, нічого не зміниться.
MaxCode і звичайний API-ключ — не одне й те саме
Звичайний API-ключ здебільшого просто дозволяє звертатися до сервісу. Після перевірки ключа системі все одно потрібно окремо повідомити проєкт, отримувачів і спосіб доставки.
MaxCode об’єднує цей контекст в одному коді.
Він дозволяє PushMeld розпізнати проєкт, перевірити запит і застосувати його актуальні налаштування. Зовнішня програма передає MaxCode і зміст події, не керуючи подальшим маршрутом.
Практично це можна сформулювати коротко: API-ключ відкриває доступ до функції, а MaxCode одночасно визначає, у якому контексті ця функція має бути виконана.
Оповіщення як підключена можливість
Після ознайомлення з PushMeld я б не назвав його просто застосунком для push-оповіщень.
Точніше — це спосіб додати оповіщення там, де їх раніше не було, а потім керувати ними незалежно від вихідної програми.
Джерелом може бути домашній сервер, датчик, старий застосунок, інтернет-магазин, власний скрипт або внутрішня система компанії. Якщо він здатний виконати HTTP-запит самостійно або через невеликий адаптер, подію можна передати до PushMeld.
Далі MaxCode проводить межу між подією і її доставкою. З одного боку — програма, яка повідомляє, що трапилося. З іншого — PushMeld, який визначає проєкт, пристрої, канали і технологічний маршрут.
Тому найважливіша можливість MaxCode полягає не лише в заміні безлічі ключів одним кодом. Він переносить управління оповіщеннями за межі вихідної системи.
Телефон можна замінити, email — додати, старе пристрій — відключити, а маршрут доставки — змінити. Програма продовжить робити те єдине, що від неї потрібно: повідомляти про подію.
\n ,\n \"seo_title\": \"MaxCode замість множини ключів: як PushMeld керує оповіщеннями\",\n \"seo_description\": \"PushMeld використовує MaxCode для спрощення доставлення оповіщень на пристрої та email, відокремлюючи управління від вихідних систем і розширюючи можливості.\",\n \"og_title\": \"MaxCode замість множини ключів: як PushMeld керує оповіщеннями\",\n \"og_description\": \"PushMeld використовує MaxCode для спрощення доставлення оповіщень на пристрої та email, відокремлюючи управління від вихідних систем і розширюючи можливості.\"\n}"}