Gewenste situatie¶
Nieuwe omgevingen¶
We willen de volgende omgevingen gaan toevoegen aan de architectuur: - Zwerfkei Backend (Business Logic, achtergrondprocessen, API verbindingen met Zwerfkei Old, MS Navision 2015, etc.) - Zwerfkei Backend Database - Zwerfkei CMS (beheer van de website content) - Zwerfkei Website - Ergonode PIM
Zwerfkei Backend¶
Stack: - Laravel - True Object Storage
Maakt actief gebruik van de "Zwerfkei Backend Database". Dit is een MySQL database. Maakt actief verbinding met externe tools als: - Ergonode PIM
Zwerfkei CMS¶
Stack: - Laravel - Statamic CMS Pro - True Object Storage
Deze CMS is voornamelijk bedoeld om de website content beheersbaar te maken. Ook de vertalingen van diverse (korte) teksten in bijv labels.
Statamic gaan we draaien in Headless Mode en wordt benut door de "Zwerfkei Website".
Zwerfkei Website¶
Stack: - Laravel - Typescript - VueJS - TailwindCSS
Deze Zwerfkei Website handelt voornamelijk (super snel) het verkeer af, werkt veel op basis van static cache geheugen.
De front-end van de website werkt op basis van Blade templates, VueJS voor dynamische components, TailwindCSS voor de styling en Typescript voor alle business logic.
De Zwerfkei Website werkt voornamelijk op File Storage niveau samen met de "Zwerfkei CMS".
De "Zwerfkei Website" praat met de "Zwerfkei Backend" (nieuwe) doormiddel van HTTP requests.
Ergonode PIM¶
Ergonode is een SaaS PIM oplossing voor het eenvoudig en gebruiksvriendelijk beheren van (statische) product informatie.
Huidige architecture¶
Huidige omgevingen die intact blijven. Momenteel in de huidige situatie maken ze in de huidige architectuur gebruik van: - Zwerfkei Old (op Bitbucket: https://bitbucket.org/zwerfkei/zwerfkei/) - Zwerfkei Old Database - Microsoft Navision 2018 (out of support in 2026) - Zwerfkei Klant (portaal voor klanten) - True Object Storage (ondersteuning voor het S3 protocol)
Al uitgefaseerd¶
- Microsoft 365 (voor o.a. de agenda features)
Zwerfkei Klant¶
De Zwerfkei Klant omgeving is niet duidelijk hoe deze wordt gebruikt. Deze staat helemaal los van alles en praat alleen met: - Zwerfkei Old (API verbindingen) - Zwerfkei Old Database
Diagram huidige situatie (C4 Container)¶
C4Container
title Huidige Architectuur - Zwerfkei
Person(medewerker, "Medewerker", "Interne gebruiker van Zwerfkei")
Person(klant, "Klant", "Externe klant")
System_Boundary(zwerfkei, "Zwerfkei Systemen") {
Container(old, "Zwerfkei Old", "Legacy applicatie", "Huidige centrale applicatie voor alle bedrijfsprocessen")
Container(klantportaal, "Zwerfkei Klant", "Klantportaal", "Portaal voor klanten")
ContainerDb(olddb, "Zwerfkei Old Database", "MySQL", "Centrale database")
}
System_Ext(navision, "Microsoft Navision 2018", "ERP systeem (end-of-support 2026)")
System_Ext(ms365, "Microsoft 365", "E-mail en agenda")
System_Ext(storage, "True Object Storage", "S3-compatible opslag")
Rel(medewerker, old, "Gebruikt")
Rel(klant, klantportaal, "Gebruikt")
Rel(old, olddb, "Leest/schrijft")
Rel(old, navision, "Synchroniseert")
Rel(old, ms365, "Agenda integratie")
Rel(old, storage, "Bestanden opslag")
Rel(klantportaal, old, "API calls")
Rel(klantportaal, olddb, "Leest")
Toelichting huidige situatie
- Zwerfkei Old is het centrale systeem dat communiceert met alle andere componenten
- Zwerfkei Klant is een apart klantportaal dat verbinding maakt met Zwerfkei Old én direct met de database
- Microsoft Navision 2018 is het ERP-systeem (let op: end-of-support in 2026)
Gewenste situatie¶
In de gewenste situatie moet de "Zwerfkei Old Database" actief benut worden door de nieuwe "Zwerfkei Backend". Wellicht komen er ook API calls tussen de nieuwe "Zwerfkei Backend" en de oude "Zwerfkei Old" omgeving.
Diagram gewenste situatie (C4 Container)¶
C4Container
title Gewenste Architectuur - Zwerfkei
Person(bezoeker, "Website Bezoeker", "Publieke bezoeker")
Person(medewerker, "Medewerker", "Interne gebruiker")
Person(klant, "Klant", "Externe klant")
Person(contentbeheerder, "Content Beheerder", "Beheert website content")
System_Boundary(legacy, "Legacy Systemen") {
Container(old, "Zwerfkei Old", "Legacy", "Huidige applicatie (wordt uitgefaseerd)")
Container(klantportaal, "Zwerfkei Klant", "Klantportaal", "Portaal voor klanten")
ContainerDb(olddb, "Zwerfkei Old Database", "MySQL", "Bestaande database")
}
System_Boundary(nieuw, "Nieuwe Systemen") {
Container(website, "Zwerfkei Website", "Laravel, Vue.js, TypeScript", "Publieke website met caching")
Container(cms, "Zwerfkei CMS", "Laravel, Statamic", "Headless CMS voor content")
Container(backend, "Zwerfkei Backend", "Laravel", "Business logic en API's")
ContainerDb(backenddb, "Backend Database", "MySQL", "Nieuwe database")
}
System_Ext(navision, "Microsoft Navision 2018", "ERP systeem")
System_Ext(ms365, "Microsoft 365", "E-mail en agenda")
System_Ext(storage, "True Object Storage", "S3-compatible opslag")
System_Ext(pim, "Ergonode PIM", "Product informatie beheer (SaaS)")
%% Gebruikers relaties
Rel(bezoeker, website, "Bezoekt")
Rel(medewerker, old, "Gebruikt")
Rel(klant, klantportaal, "Gebruikt")
Rel(contentbeheerder, cms, "Beheert content")
%% Legacy relaties
Rel(old, olddb, "Leest/schrijft")
Rel(old, navision, "Synchroniseert")
Rel(old, ms365, "Agenda")
Rel(old, storage, "Bestanden")
Rel(klantportaal, old, "API")
Rel(klantportaal, olddb, "Leest")
%% Nieuwe systemen relaties
Rel(website, cms, "Haalt content", "File Storage")
Rel(website, backend, "API requests", "HTTP/JSON")
Rel(cms, storage, "Slaat content op")
Rel(backend, backenddb, "Leest/schrijft")
Rel(backend, olddb, "Leest legacy data")
Rel(backend, old, "API calls")
Rel(backend, pim, "Haalt productdata")
Rel(backend, storage, "Bestanden")
Toelichting gewenste situatie
Nieuwe componenten:
| Component | Technologie | Functie |
|---|---|---|
| Zwerfkei Website | Laravel, Vue.js, TypeScript | Snelle publieke website met caching |
| Zwerfkei CMS | Laravel, Statamic (headless) | Content beheer voor de website |
| Zwerfkei Backend | Laravel | Centrale business logic en API's |
| Backend Database | MySQL | Nieuwe database voor backend |
| Ergonode PIM | SaaS | Productinformatie beheer |
Belangrijke verbindingen:
- De nieuwe Backend leest uit de oude database én communiceert met Zwerfkei Old via API
- De Website haalt content uit het CMS (via file storage) en data uit de Backend (via HTTP)
- Ergonode PIM wordt aangestuurd vanuit de Backend