Skip to content

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