RTC
nl en
🌟Ontwikkeling van een full-stack eCommerce web-applicatie
[ Nog niet afgewerkt ]
eCommerce

Doel

Dit de eerste in een over een jaar lopende reeks van samenhorende computerprojecten.
In deze projecten ga ik proberen een volledige en realistische eCommerce-applicatie “demo-shop” te ontwikkelen.
Tegelijk wil ik ook een een software-fabriek uitbouwen in de vorm van geautomatiseerde CI/CD pipelines.
De resulterende applicatie zal gedeployed worden in een kubernetes-omgeving en ook publiek toegankelijk gemaakt worden.
De applicatie met gebruikte infrastructuur wil ik ook voorzien van monitoring en een notificatie-systeem voor probleem-melding.
Applicatie-development en -operaties worden zoveel mogelijk geautomatiseerd en herbruikbaar gemaakt voor andere toekomstige applicaties.

In deze eerste oplevering wil ik volgende zaken realiseren:

  • ontwerp een real-world eCommerce applicatie,
    en maak de overeenkomstige applicatie-documentatie met diagramma’s aan
  • maak schema-migratie en (test)data-migratie scripts voor de database aan
  • ontwikkel de core van de full-stack web-applicatie met externe configuratie en logging
  • ontwikkel web-services die REST en gRPC als API protocol gebruiken
  • maak het eerste, snelle build-gedeelte van een CI pipeline aan
    met compile, unit tests, code coverage checks, static code analysis checks en SBOM generation
  • dit snelle build-gedeelte van een CI pipeline moet automatisch uitgevoerd worden,
    voordat een feature branch gemerged wordt in de master branch van de source code repo;
    nog beter is deze static code analysis checks ook lokaal uit te voeren vooraf aan iedere commit
  • uitvoering van manuele tests door individuele developer
    (aparte applicatie runtime environment “local-devapp” per developer nodig)
  • installeer en maak kennis met kubernetes

Dit project zorgt dus voor de realisatie van volgende (blauwe) gedeeltes van de pipelines:

CI app

Resultaat

1 - Installeer en bestudeer Kubernetes

K3s

Om de portabiliteit, schaalbaarheid en beschikbaarheid van mijn programma’s te verhogen,
ga ik kubernetes als software-platform gebruiken.
Kubernetes is hiervoor zowat de standaard geworden in bedrijven en voor Cloud providers.

Als eerste heb de architectuur en basiswerking van Kubernetes geleerd via een online cursus.
Daarna heb ik verschillende kubernetes distros vergeleken, en “K3s/K3d” als lichtgewicht implementatie gekozen
(vs standard kubernetes K8s, Openshift, Talos Linux, Minikube, Kind, Microk8s).

K3s

Om kubernetes te installeren, diende ik hardware en virtuele machines te voorzien.
Daarna diende ik hierop de gewenste cluster architectuur en namespaces uit te bouwen.
Ik creeerde volgende 3 kubernetes-omgevingen:

  • kubernetes cluster “local-devapp” voor local development en exploratie:
    op mijn development pc/laptop installeerde ik “Rancher Desktop”;
    ik maakte gebruik van een one-node-cluster met K3s en een multi-node-cluster met K3d,
    die dynamisch gecreeerd en verwijderd worden wanneer nodig
  • kubernetes cluster “home-devdep” voor centrale app development en deployment tools:
    ik maakte hiervoor gebruik van een one-node-cluster met K3s,
    en kocht hiervoor een refurbished business-grade machine aan;
    later kan deze cluster uitgebreid worden met extra nodes
  • kubernetes cluster “home-prodapp” voor in productie gedeployde applicaties:
    ik maakte hiervoor gebruik van een one-node-cluster met K3s,
    en kocht hiervoor een refurbished business-grade machine aan;
    later kan deze cluster uitgebreid worden met extra nodes
HP EliteDesk

De aankoopprijs van deze 2 machines moest binnen mijn jaarlijks budget van 500 eur vallen.
Ik kocht volgende 2 gereviseerde business-grade mini pc’s met een laag energieverbruik,
en installeerde hierop K3s Kubernetes:
HP EliteDesk 800 G5 USFF - Intel Core i5-9e Gen (6 cores/6 threads) - 16 GB RAM - 256 GB ssd

2 - Deploy bestaande applicaties in Kubernetes

Under construction