Nota: uso liberamente il termine "Monolito". Il webscraper è semplice e piccolo.
Ho appena creato un bot che raschia regolarmente un sito per i passaggi degli ospiti, quindi inoltra i risultati a me tramite PushBullet. Funziona bene e sto bene, ma sto pensando di estendere il comportamento per eseguire altre azioni quando vengono trovati nuovi pass per gli ospiti (ad esempio, li applicano automaticamente o inviano notifiche tramite altre piattaforme). Ci sono un paio di approcci che ho in mente per realizzare questo, e sarei interessato a sentire le tue prospettive su di loro:
- Implementa il comportamento direttamente nel codice base del bot corrente. Potrei approfittare di un modello simile a Observer in questo modo, e fare in modo che ogni volta che troviamo nuovi passaggi li consegniamo agli 'abbonati' in modo asincrono (cioè il notificatore PushBullet, l'autoapplicatore, eccetera). Il lato negativo che vedo questo approccio è che lo script di linea 90-ish altrimenti semplice si metterà in mongolfiera in un progetto un po 'più grande. Inoltre, non ci sarà alcun modo semplice per abilitare / disabilitare un singolo abbonato al volo (senza esporre qualche forma di API per darmi quell'abilità).
- Il post del bot ospite passa a un feed RSS. In questo modo posso creare molti piccoli robot singoli che monitorano regolarmente il feed RSS ed eseguono un'azione appropriata. Il lato negativo che vedo a questo approccio è che la latenza è aumentata. I nuovi robot devono interrogare regolarmente il bot del feed RSS per vedere cosa c'è di nuovo, e il bot del feed RSS deve raschiare regolarmente la sua fonte per trovare nuovi pass per i guest. La catena della dipendenza corre verso la fonte. Il vantaggio è che, a differenza del precedente approccio, i singoli robot possono essere arrestati senza influire sul sistema nel suo complesso. Penso che questo costituisca un approccio "microservizi"?
Che cosa pensi di questo?
Grazie.