Featured image of post Större modernisering av Java/Jakarta EE applikation hos AF

Större modernisering av Java/Jakarta EE applikation hos AF

Mer info kommer kontinuerligt

Från december och frammåt har jag genomfört ett större arbete med att refaktorisera och modernisera en av Arbetsförmedlingens Applikationer.

Som många Java/Jakarta Enterpise-applikationer ute i företags/myndighetsvärlden så har denna halkat efter utvecklingen och man har fastnat på Java 8 och andra tidiga versioner av ramverk. Java/Jakarta EE är ett komplicerat ramverk och dessa kodbaser brukar med tiden samla på sig annorlunda eller felaktiga användningar som kan vara svåra att ta sig ur.

Under dessa två månader har kodbasen reducerats kraftigt. Huvudsakligen har detta skett genom följande ingrepp.

  • En bakomliggande webtjänst som förlitade sig på en felaktigt implementerad variant av det otroligt gamla ramverket Axis (1) har ersatts med webscraping. Detta är självklart inte en ideal lösning, men den möjliggjorde för oss att gå vidare i livet. Idealt vill vi såklart ha en tydligt och enkelt definerad webtjänst att arbeta mot.
  • Maven-strukturen har reducerats kraftigt, vilket har resulterat i otroligt mycket mindre dependencies. Vi har även övergått från att använda hela Java/Jakarta EE specikationen till att endast använda web-profilen. Detta utan att göra avkall på nån funktionalitet.
  • Vi har brutit beroendet mot många gamla AF-interna bibliotek som inte har underhållits på väldigt länge.
  • Bollande mellan olika datumtyper har reducerats till användande av endast en datumtyp.
  • Applikationen använder sig av basic auth. Egenimplementerad rudimentär funktionlitet för att hantera multipla användare mot en databas har tagits borts. Multipla användare har aldrig använts. Ersatts med kontroll mot SealedSecret i Openshift.
  • Kodmässigt har många bad practices tagits bort ersatts med betyligt enklare upplägg vilket resulterat i betydligt mindre kod och använda dependencies.
  • Applikationen har delats upp i flera olika moduler. Detta underlättar design, kodning och testning. Tack vare detta kan vi enklare genomföra större förändringar i applikationen utan att de slår mot oväntade ställen.
  • Ineffektiv packetering av applikationen till Image som tog med betydligt fler filer än nödvändigt har förenklats, vilket har resulterat i en mindre binär

Delar av lösningen har publicerats som OpenSource här: https://bitbucket.org/magal000/af-csn-server

Resultatet av detta blev som nedan