One MaxCode вместо десятка ключей: PushMeld가 알림을 가는 곳에 추가하는 방법
MaxCode가 사이트, 서버, 스크립트 및 장치에서 푸시 및 이메일 알림 관리를 PushMeld로 이전하는 방법.
가정해 보겠습니다. 매일 밤 중요한 파일의 백업을 생성하는 가정용 컴퓨터가 있습니다. 결과는 시스템 로그에 기록됩니다: 작업이 성공적으로 완료되었거나 오류가 발생했습니다.
기술적으로는 모두 작동합니다. 하지만 아침에 불편함이 찾아옵니다: 사람은 로그를 열어 결과를 수동으로 확인해야 합니다. 모바일 앱이 없고, 개발자가 알림을 보내는 것도 고려되어 있지 않으며, 오직 하나의 기능만을 위해 별도의 인프라를 구축하는 것도 어렵습니다.
PushMeld를 통해 이 과정에 간단한 요청을 추가할 수 있습니다. 백업이 완료되면 휴대폰으로 "복사본 생성됨" 또는 "작업이 오류로 종료됨" 메시지가 전달됩니다. 필요에 따라 같은 알림을 이메일로 받을 수도 있습니다.
이 아이디어의 기반은 MaxCode로, PushMeld가 알림 전달에 필요한 모든 정보를 받는 하나의 보호된 코드입니다.
저와 처음 프로젝트를 접했을 때, MaxCode가 가장 흥미로운 부분임을 느꼈습니다. 푸시 알림과 이메일은 이미 오래된 기술입니다. 훨씬 더 중요한 것은 원래 프로그램이 알림 전달을 제어하지 않게 된다는 점입니다. 단지 이벤트를 PushMeld에 알리고, 이후의 작업은 모두 별개로 처리됩니다.
즉각적으로 환경을 설명하자면: PushMeld는 MELD® 시스템에 속하며, DigiMeld UG는 이를 개발하는 회사입니다.
소스는 사건(이벤트)만 알 뿐
일반적인 알림 통합은 빠르게 기술적 세부사항으로 복잡해집니다. 프로젝트를 정의하고, 접근 권한을 설정하며, 키를 저장하고, 디바이스 토큰을 고려하고, 이메일 전송을 구성하며, 다양한 모바일 플랫폼 요구 사항을 해결해야 합니다.
PushMeld는 이러한 모든 과정을 원래 시스템에서 별도 제어 가능한 회로로 이전합니다.
백업 프로그램은 단 하나만 압니다: 작업이 성공적으로 종료되었거나 오류로 끝났다는 것. MaxCode와 메시지의 제목, 내용을 전달합니다.
이 프로그램이 알 필요가 없는 것들:
프로젝트에 연결된 디바이스 수;
현재 활성화된 전화기;
푸시가 어떤 제공자를 통해 전달되어야 하는지;
이메일 전달이 활성화되어 있는지;
사용자가 새 스마트폰을 가지고 있는지;
오래된 태블릿이 꺼졌는지;
개별 알림을 받을 대상을 누구로 하는지.
이 모든 것들은 PushMeld 내부에서 이미 결정됩니다.
제 개인적인 관점으로는, 이 지점이 프로젝트의 가장 핵심적인 설계 아이디어입니다: MaxCode는 이벤트를 발생시킨 프로그램에서 알림 전달 시스템으로 제어를 이전시키는 역할을 합니다.
하나의 MaxCode로 여러 키를 대신
일반적으로 외부 서비스를 연동할 때는 여러 엔티티를 동시에 다루어야 합니다. 프로젝트 ID, 접근 키, 비밀키, 디바이스 토큰, 특정 프로바이더의 설정 등이 별도로 요구됩니다.
MaxCode는 전달에 필요한 모든 정보를 하나의 안전한 코드에 통합합니다.
각 프로젝트마다 고유의 MaxCode가 생성됩니다. 여기에는 프로젝트 식별, 전송 권한, 그리고 PushMeld가 유효한 전달 구성을 적용하는 데 필요한 데이터가 결합됩니다.
발신 시스템은 별도로 다음 정보를 저장할 필요가 없습니다:
프로젝트 ID;
API 키와 추가 비밀;
연결된 디바이스 토큰;
각 수신자의 매개변수;
다양한 푸시 제공자의 키;
푸시와 이메일 각각에 대한 별도 설정.
프로그램, 사이트, 또는 스크립트에는 하나의 MaxCode만 추가됩니다. 이를 메시지와 함께 받으면, PushMeld가 자동으로 프로젝트를 식별하고, 요청을 검증하며, 연결된 디바이스를 찾고, 사용 가능한 채널을 선택합니다.
이 때문에 MaxCode는 기존의 키처럼 추가하는 또 하나의 인증 수단이 아닙니다. 분산된 수많은 키, 토큰, 식별자를 하나로 대체하는 역할입니다.
알림이 필요 없는 곳에서도 알림 가능
MaxCode는 HTTP 요청을 자체적으로 수행할 수 있거나 작은 보조 스크립트를 통해 가능하다면 어떤 시스템에서도 사용할 수 있습니다.
예를 들어, PushMeld는 다음과 같은 이벤트를 알릴 수 있습니다:
홈 서버가 응답을 멈춤;
백업이 완료되었거나 실패했음을 알림;
지속적인 작업을 수행하는 사용자 스크립트;
3D 프린터가 인쇄를 마침;
센서가 누수 또는 기타 이상을 감지;
문이 열리거나 경보가 울림;
웹사이트에 필요한 정보가 게시됨;
상품 가격이 변경됨;
저장 공간이 확보됨;
구형 프로그램이 큰 파일 처리를 완료;
작은 온라인 상점에 새 주문이 들어옴.
이 소스들은 자신만의 애플리케이션이 없을 수도 있습니다. 일부는 정해진 주소에 요청만 보내거나, 사용자 명령을 실행하거나, 자동화 스크립트를 이어서 사용할 수도 있습니다.
이것으로 PushMeld에 이벤트를 전달하는 데 충분합니다.
이 소스는 알림 서비스 자체가 아니라, 발생 사실을 기록하고 MaxCode를 전송합니다. 나머지 채널, 대상, 기술적 경로 등은 모두 PushMeld 내부에 남아 있습니다.
푸시뿐 아니라 이메일도 가능
PushMeld라는 이름은 주로 휴대폰 알림과 연관되지만, 제공 기능은 이에 한정되지 않습니다.
전달 채널은 푸시, 이메일 또는 두 가지를 모두 사용할 수 있으며, 이는 프로젝트 설정과 이용 가능성에 따라 달라집니다.
예를 들어, 백업 성공 메시지는 휴대폰에 보여주기만 하면 충분하고, 중요한 오류는 이메일로 별도 전송하는 것도 가능합니다.
원래 프로그램은 두 경우 모두 MaxCode로 동일한 요청을 수행합니다. 이메일 서버를 별도 연결하거나, 이메일 설정을 저장하거나, 별도의 자동화 시나리오를 만들 필요가 없습니다.
전달 채널은 PushMeld 내부에서 결정됩니다. 나중에 사용자가 기존 프로젝트에 이메일을 추가하더라도, 백업 프로그램을 수정할 필요가 없습니다.
이메일은 여기서 일상적인 대량 전달로 쓰이는 것이 아니라, 연결된 프로젝트에서 받은 이벤트에 대한 추가 통지 수단입니다.
프로젝트별로 이벤트 원천 구분
프로젝트는 알림의 용도에 따라 구분할 수 있습니다.
일반 사용자는 예를 들어 다음과 같은 프로젝트를 만들 수 있습니다:
HomeServer— 가정 서버 상태;Backups— 백업 결과;SmartHome— 센서와 스마트홈 자동화;PriceMonitor— 가격 변동;Website— 개인 사이트의 새로운 문의.
각 프로젝트마다 고유의 MaxCode가 할당됩니다. 이를 통해 가정 자동화는 사이트 코드와 구분되고, 가격 모니터링은 백업과 섞이지 않습니다.
어플리케이션 수준에서는 메시지가 어디서 왔는지, 어떤 작업에 속하는지 바로 알 수 있습니다.
이러한 구분은 소스가 많아질수록 특히 유용합니다. 하나의 흐름 대신 여러 독립 채널을 갖게 되며, 각각의 채널에 맞는 별도 설정이 가능합니다.
새 휴대폰은 프로그램 변경 없이 사용 가능
일반적인 푸시 토큰은 특정 앱이 특정 장치에 설치되어 있다는 것을 의미합니다.
만약 사용자에게 두 개의 휴대폰과 태블릿이 있다면, 여러 토큰이 필요합니다. 앱 재설치 또는 장치 교체 시, 개별 토큰이 변경되거나 작동을 멈출 수 있습니다.
MaxCode는 이 계층보다 상위에 존재하며, 프로젝트에 속한 것일 뿐입니다.
사용자는 프로젝트에 어떤 디바이스가 연결되어 있고 메시지를 받아야 하는지 스스로 결정합니다. 예를 들어, 가정 서버의 알림은 개인 휴대폰과 태블릿으로 보내고, 회사 사이트의 이벤트는 업무용 스마트폰으로만 보내는 식입니다.
새 휴대폰을 구매하거나 오래된 장치를 끄더라도, 기본 스크립트는 같은 MaxCode를 계속 사용합니다. 현재 수신자 목록은 PushMeld 내부에서만 변경됩니다.
이것은 이메일 추가 또는 기타 전달 옵션 변경에도 동일하게 적용됩니다.
그래서 MaxCode는 단순히 키 수를 줄이는 도구가 아니라, 이벤트와 그 이후 경로 사이에 경계를 만듭니다. 이 경계 이후의 내용은 원본 프로그램을 변경하지 않고도 바꿀 수 있습니다.
무료로 주어진 일상적 작업
인프라 관련 제품은 대개 기업 시스템, 서버 명령, 대량 데이터와 연관되어 설명됩니다. 그래서 PushMeld는 오직 전문가와 기업용으로만 설계되었다고 생각하기 쉽습니다.
실제로는, 일반 가정용 작업부터 시작 할 수 있습니다.
앱 자체는 무료입니다. MaxCode의 기본 기능도 무료 제한 내에서 사용할 수 있습니다. 프로젝트를 만들고 디바이스를 연결하며, 서버, 사이트, 스크립트 또는 홈 자동화에서 알림을 받는 것도 비용이 들지 않습니다.
이것은 일시적 데모 모드가 아니며, 제품을 접한 후에도 계속 사용할 수 있습니다. 일상적인 시나리오에서는 무료 기능만으로 충분히 활용 가능하며, 요청량이 늘거나 부가 기능이 필요하거나, 더 넓은 규모로 시스템을 사용할 경우 유료 플랜이 필요합니다.
사람과 기업 모두에 적용되는 원칙
MaxCode의 작동 원리는 업무 규모와 관계없이 동일하게 유지됩니다.
사용자는 백업 완료 알림을 받거나, 3D 프린터의 긴 인쇄가 끝났음을 알거나, 온라인 상점에 새 주문이 들어왔음을 알게 됩니다. 또는 서버의 오류 보고를 받을 수 있습니다.
단지 프로젝트 수와 범위가 다를 뿐, 원리 자체는 같습니다.
가상 조직을 예로 들어 보겠습니다. 세 가지 사건 원천이 있습니다:
Orders— 새로운 주문;Payments— 결제 및 환불;ServerStatus— 기술적 오류.
각각에 대해 별도 MaxCode가 지정되고, 디바이스도 따로 설정됩니다. 주문은 소유자와 담당자에게, 금융 이벤트는 책임자에게, 서버 오류는 담당 기술자에게 전달됩니다.
시스템은 핵심적으로 동일하게 작동: 이벤트 내용과 해당 프로젝트의 MaxCode를 전달하는 것뿐입니다.
직원 변경이나 디바이스, 배포 방법이 바뀌어도, 원래 시스템을 다시 구성할 필요 없이 PushMeld 내부에서 관리됩니다.
APNs, FCM, HMS는 프로그램 외부에 남는다
각기 다른 장치에 푸시를 보내기 위해 APNs, FCM, 혹은 HMS가 이용될 수 있습니다. 각각의 제공자는 자체 규칙, 토큰, 기술적 특성을 가지고 있습니다.
일반적으로는 개발 시 이러한 차이점을 고려해야 하나, PushMeld에서는 이러한 복잡성이 MaxCode 밖에 존재합니다.
사용자 서비스는 어떤 휴대폰이 수신자인지, 어떤 인프라를 통해 전달돼야 하는지 결정하지 않습니다. 단 하나의 요청만 보내면, PushMeld가 최적의 경로를 선택합니다.
MaxCode는 Apple, Google, Huawei 인프라를 대체하는 게 아니라, 그 앞단의 일원적 접점을 만들어 줍니다.
이 덕분에 원래 시스템은 사용자 장치가 바뀌더라도 그대로 유지됩니다. 오늘은 FCM으로 보내고, 내일은 APNs로, 이후 또 다른 전화기나 이메일이 추가되어도 무관합니다. 이벤트가 발생하는 프로그램은 아무것도 변경하지 않습니다.
MaxCode와 일반 API 키는 다르다
기존 API 키는 대부분 서비스 접속 권한만 부여합니다. 검증 후에는 프로젝트, 수신자, 배달 방법 등을 별도 통지해야 하는 경우가 많습니다.
반면, MaxCode는 이 모든 내용을 하나의 코드로 묶어줍니다.
이것은 PushMeld가 프로젝트를 인식하고, 요청을 검증하며, 가장 최신의 전달 설정을 적용하는 데 도움을 줍니다. 원래 프로그램은 MaxCode와 이벤트 내용을 전달할 뿐, 이후 경로는 제어하지 않습니다.
실제 차이는 짧게 말하면, API 키는 기능에 대한 접근 권한을 부여하는 것인 반면, MaxCode는 그 기능이 어떤 맥락에서 수행되어야 하는지 동시에 지정한다는 점입니다.
연결 가능 알림으로서의 MaxCode
PushMeld를 경험한 후, 단순한 푸시 알림 앱이라고 부르지 않게 될 것입니다.
보다 정확히 말하자면, 사전에는 없던 알림 기능을 추가하고, 이후 원본 프로그램과는 독립적으로 제어하는 방법입니다.
소스는 가정용 서버, 센서, 기존 앱, 온라인 스토어, 자체 스크립트 혹은 회사 내부 시스템이 될 수 있으며, HTTP 요청을 자체적으로 수행할 수 있다면 PushMeld에 전달할 수 있습니다.
이후 MaxCode가 이벤트와 전달을 구분하는 경계를 만듭니다. 왼쪽에는 이벤트 사실을 알려주는 프로그램, 오른쪽에는 전달 경로를 결정하는 PushMeld가 위치합니다.
이로 인해 MaxCode의 가장 큰 강점은, 여러 키를 하나로 대체하는 것뿐 아니라, 알림 제어를 원본 시스템 밖으로 가져오는 것에 있습니다.
이전 장치 교체, 이메일 추가 또는 배송 경로 변경이 자유로워지고, 프로그램은 단지 이벤트를 알리는 역할만 계속 수행하면 됩니다.