Ho un sito AppHarbor in cui ho bisogno di fare aggiornamenti settimanali ad alcuni dati. Non voglio seguire il percorso di distribuzione di un exe e aggiungere un ulteriore "webworker" al mio sito perché costano. Il mio pensiero è di aggiungere un servizio web / servizio API REST al sito in modo che possa chiamarlo, eseguirà il "batch job stuff", quindi quando sarà completo, restituirà un codice di stato personalizzato, come successo o fallimento. Dietro le quinte, aggiornerebbe una tabella "BatchLog" o qualcosa del genere, quindi potrei creare una pagina / vista in cui potrei accedere ai dettagli del registro e vedere quali processi batch hanno o non sono stati eseguiti.
Quindi, è così che sto pensando di voler implementare, ma sono un po 'scettico riguardo la sicurezza su questo. Prima di tutto, ovviamente non voglio che NESSUNO sia in grado di dare il via a questi lavori batch solo andando al mio servizio web / rest api.
Per risolvere il problema, penso che ci siano 2 modi diversi per farlo, o una combinazione di entrambi.
1) Richiedere alcune credenziali e forse un codice segreto aggiuntivo per farli effettivamente iniziare. 2) Configurare in una tabella quando è possibile eseguire effettivamente ogni processo batch e la frequenza. In questo modo, se un hacker chiama il mio servizio / riposo api. Sarà in grado di eseguire 1 ora all'ora / giorno / settimana / mese / ecc. In tal modo potrebbero eseguire il martello del servizio, ma ogni chiamata successiva restituirebbe un errore o qualcosa del genere.
Una cosa da notare, ho letto da qualche parte un paio di mesi fa che ci sono servizi cloud là fuori che "programmano" lavori batch come questo per te. E quello libero di cui leggo farà 1 servizio. Più di 1 e devi iniziare a pagare per questo. Quindi, per il mio esempio, creerei un solo servizio, lo chiamerò più volte al giorno / settimana e lascerò che la mia tabella di configurazione di BatchJob determini se deve effettivamente elaborarlo o meno.
Quindi, quanto è orribile un'idea? Quali sono altri approcci per realizzare lavori batch in un ambiente cloud in cui non offrono servizi batch.