Один MaxCode вместо десетина ключове: как PushMeld добавя уведомления там, където ги нямаше
Как MaxCode пренася управлението на push и email известията от уебсайтове, сървъри, скриптове и устройства към 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 или и двата канала — в зависимост от настройките на проекта и наличните възможности.
Например, съобщение за успешно резервно копиране е достатъчно да бъде показано на телефона. За по-сериозна грешка може да се изпрати и по email.
Оригиналната програма при двете ситуации изпълнява един и същи заявка с MaxCode. Не е необходимо отделно настройване на пощенски сървър, съхраняване на конфигурации или създаване на втори автономен сценарий.
Решението за каналите за доставка се взема вътре в PushMeld. Ако по-късно потребителят добави email към вече съществуващ проект, програмата за резервно копиране няма нужда да бъде препрограмирана.
При това email се използва не като масова разсылка, а като допълнителен начин да се съобщи за събитието, идващо от свързания проект.
Един проект — едно източник на събития
Проектите позволяват да се разделят известията според тяхната цел.
Обикновен потребител може например да създаде:
HomeServer— статус на домашния сървър;Backups— резултати от резервното копиране;SmartHome— сензори и домашна автоматизация;PriceMonitor— промени в цените;Website— нови запитвания от личния сайт.
Всеки проект получава собствен MaxCode. Благодарение на това автоматизацията в дома не използва сайта за код, а мониторингът на цените — не се смесва с резервните копия.
В приложението веднага се разбира откъде е съобщението и към каква задача то се отнася.
Това деление е особено полезно, когато броят на източниците се увеличава. Вместо един общ поток, потребителят получава няколко независими канала, върху всеки от които може да се определят собствени настройки за доставка.
Нов телефон — не е необходимо да се променя програмата
Обикновеният pushToken е свързан с конкретното приложение на определено устройство.
Ако човек има два телефона и една таблетка, това вече са няколко токена. След преинсталация или смяна на устройството, отделен токен може да се промени или да спре да работи.
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 не е просто замяна на множество ключове с един. Той пренася управлението на известията извън изходната система.
Може да се променя телефон, да добавите имейл или да деактивирате старото устройство, или маршрутът на доставка — всичко това може да се прави, без да се пипа оригиналната програма. Тя остава само да съобщава за събитието.