Synkroniseringslösning för Taxonomi-konsumenter

Som vi diskuterade på den senaste open space mötet behöver vi titta på hur vi håller system som använder Taxonomivärden i synk.

Vi har ett antal lösningsförslag och möjligheter i och med det nya Taxonomi-api:et.

Målet för taxonomi-uppdateringarna är att de ska kunna ske automatiskt utan manuella ingrepp.

För att kunna nå dit så ställs det en hel del krav på användande system.

Kraven som ställs på Taxonomikonsumenterna för att automatiska uppdateringar ska bli möjliga är.

  1. System ska klara av att hantera värden som Taxonomin flaggat som deprecated/inaktuella.

    Vid tidigare Taxonomi-uppdateringar så tog man bort inaktuella värden ur Taxonomidatabasen vilket ledde till att all data som sparat dessa värden inte kunde slå upp dem igen.
    Detta tvingade alla system att uppdatera sin data med sparade taxonomi-värden vid ett och samma tillfälle.

    Nu kommer vi aldrig att ta bort några värden ur taxonomin utan vi flaggar bara dem som deprecated/inaktuella. Så värdena kommer alltid att gå att slå upp.
    Om användande system bygger hantering för inaktuella taxonomivärden så behöver de aldrig stoppa sitt system för att uppdatera sin sparade data, (om det ens är meningsfullt för dem att göra detta).

  2. System ska klara av att ta emot nya värden från Taxonomin som de inte redan känner till.

    Flera system har en lokal kopia/cache av taxonomin som de använder för att verifiera att datat de får skickad till sig är korrekt.

    Det finns idag system som inte klarar av att ta emot nya värden som de inte redan har. De hanterar detta genom att avbryter hela transaktionen.

    Detta skulle kunna leda till problem för Arbetssökande att skriva in sig om till exempel Inskrivningen hade en nyare version av Taxonomin än de system som de skickar data till. Därför behöver system som är nedströms från Inskrivningen kunna hantera nya värden de inte känner till. Genom att exempelvis slå upp nya värden de inte känner till vid tillfället då de får värdena.

  3. Det är allas systems ansvar att försöka gå över till den senaste taxonomi-versionen så snart det är möjligt, för att minimera hanteringen av inaktuella värden.

Lösningsförlsag:

  1. Om system som skapar data som innehåller Taxonomi-värden alltid hämtade den senaste versionen av Taxonomin så skulle detta automatiskt uppdatera system som befinner sig nedströms, givet krav 2, när de skickar ny data.
    Om man inte har möjlighet att hämta den senaste versionen vid varje tillfälle så skulle de kunna rensa sin lokala kopia/cache av Taxonmoin, exempelvis varje natt för att hålla sig i synk.

  2. Om lösningsförslag 1. inte skulle vara möjlig att genomföra för att det tar tid att anpassa systemen så skulle vi kunna börja med att göra manuella uppdateringar med synkroniserade datum, tills dess att alla system har implementerat de nya kraven.
    Man kan även också titta på om vissa enskilda värdeförråd är möjliga att uppdatera automatiskt, medan andra får en manuell uppdatering. Till exempel så borde kompetenser vara ofarliga att uppdatera automatiskt.

  3. Om det medför stora problem att ligga i osynk så kan vi titta på synkroniseringslösningar som skyndar på synkroniseringen. Dock finns kraven som nämns ovan fortfarande kvar för att automatiska uppdateringar. En synkroniseringslösning som kan användas är Webhooks som vi redan implementerat för externa användare i API:et.

Hej!

Jag skriver ner mina mötesanteckningar om vad vi kom fram till.

Att vi börjar med att pröva att inte använda en notifieringslösning för att hålla lokala cachear i synk med Taxonomin. Utan de system som har en cache rensar den med regelbundna intervall, förslagsvis var 6:e – 24:e timma.

En notifieringslösning ska inte behövas om systemen som skapar data med taxonomi-värden förnyar sin cache regelbundet. Men detta kräver också att system som får data innehållandes nya taxonomivärden slår upp dessa. Systemen måste också vara byggda så att de ska kunna hantera inaktuella/deprecatade värden.

Vi kom också fram till att det finns vissa värdeförråd som systemen har mycket logik kring och vilkas värden inte kan uppdateras automatiskt utan att ha förberett sig på detta. Vi kommer därför kommunicera ut att dessa värdeförråd kommer att uppdateras så att systemen kan anpassa sig till de nya värdena innan de börjar användas. Vi får återkomma om vilka värdeförråd vi tror att dessa är.

Mitt förslag är att inte använda ”latest” versionen när ni hämtar dessa värdeförråd utan använda en versionssiffra.

Jag inser dock att dessa värdeförråd kan ge upphov till ett gisslandrama, där ett system som inte anpassat sig till nya förändringar kommer att hindra andra system från att stega upp i version.

Så jag anser att alla system måste implementera en fallbacklösning för om de får nya värden till dessa värdeförråd.