amin norollah.
Loading portfolio
Bröt ut lagerhanteringen ur en större tjänst och byggde en egen tjänst för den, från plan och arkitektur till skyddsnät

BackendWebbFocalPay

FocalPay Inventory Service

Bröt ut lagerhanteringen ur en större tjänst och byggde en egen tjänst för den, från plan och arkitektur till skyddsnät

År
aug. 2026
Typ
Backend
Tekniker
12
Spår
Webb

Detaljer

Lagerhanteringen på FocalPay låg i en större tjänst som inte längre passade för uppgiften, och fel i lagersaldona hade börjat dyka upp. Jag fick ansvaret för att bryta ut den. Jag skrev migreringsplanen, designade den nya tjänsten och byggde den själv. Tanken var att den nya tjänsten skulle ta över lite i taget, inte att allt skulle bytas ut på en gång.

De viktiga besluten tog jag, och vart och ett finns dokumenterat i en ADR. Flytten görs stegvis enligt strangler-mönstret, och varje steg går att backa med en rollback som vi har övat på i förväg. Lagret räknas fram ur en huvudbok där inget skrivs över eller tas bort, så man kan alltid se varifrån en siffra kommer. Saldot ändras med atomiska uppdateringar, så att två samtidiga försäljningar aldrig kan skriva över varandra. Händelser skickas via en outbox till idempotenta mottagare, så ingenting försvinner och ingenting räknas två gånger. Tjänsten är dessutom hexagonal, och arkitekturreglerna kontrolleras i bygget så att affärslogiken inte blir beroende av ramverk eller infrastruktur.

Funktionellt hanterar tjänsten lagersaldon, inköpsorder till leverantörer med export till Excel, inleverans med batchnummer och bäst före-datum, varningar när varor närmar sig utgångsdatum, inventering, viktvaror, rapporter och avstämning av leveranser mot order.

För mig var det en del av leveransen att kunna visa att allt faktiskt fungerar. Tjänsten har över tusen automatiska tester, och många av dem körs mot riktiga databaser och meddelandeköer i containrar. Till det kommer end-to-end-tester mellan tjänster och lasttester, och jag bröt medvetet varje skydd för att se att bygget verkligen blev rött. Jag skrev också runbooks, felsökningsguider och en färdplan så att teamet kan förvalta tjänsten. Tjänsten är klar och testad och väntar nu på att den stegvisa flytten ska börja.

Tekniker

  • Java
  • Spring Boot
  • MongoDB
  • Kafka
  • Event-Driven Architecture
  • Transactional Outbox
  • Hexagonal Architecture
  • DDD
  • ArchUnit
  • Testcontainers
  • k6
  • ADR

Erfarenhet

Projekt

Ingen offentlig länk - kommersiellt eller internt projekt