RTC
en nl
🌟Development of a full-stack eCommerce web application
[ Not yet finished ]
eCommerce

Objective

This is the first in a series of interconnected computer projects spanning a year.
In these projects, I will attempt to develop a complete and realistic eCommerce application “demo-shop”.
At the same time, I also intend to build a software factory in the form of automated CI/CD pipelines.
The resulting application will be deployed in a Kubernetes environment and made publicly accessible.
The application and the infrastructure used will also be equipped with monitoring and a notification system for reporting issues.
Application development and operations will be automated as much as possible and made reusable for other future applications.

In this first delivery, I want to achieve the following:

  • Design a real-world eCommerce application,
    and create the corresponding application documentation with diagrams
  • Create schema migration and (test) data migration scripts for the database
  • Develop the core of the full-stack web application with external configuration and logging
  • Develop web services which use REST and gRPC as API protocol
  • Create the first, rapid build part of a CI pipeline,
    with compile, unit tests, code coverage checks, static code analysis checks and SBOM generation
  • This rapid build portion of a CI pipeline should be executed automatically
    before a feature branch is merged into the master branch of the source code repository;
    even better, these static code analysis checks can also be performed locally before each commit
  • Manual testing by individual developers
    (a separate application runtime environment “local-devapp” is required for each developer)
  • install and get to know kubernetes

This project therefore ensures the implementation of the following (blue) parts of the pipelines:

CI app

Result

1 - Install and study Kubernetes

K3s

To increase the portability, scalability and availability of my programs,
I am going to use Kubernetes as the software platform.
Kubernetes has become practically the standard for this in companies and for Cloud providers.

First, I learned the architecture and basic operation of Kubernetes via an online course.
After that, I compared various Kubernetes distributions and chose “K3s/K3d” as a lightweight implementation
(vs standard kubernetes K8s, Openshift, Talos Linux, Minikube, Kind, Microk8s).

K3s

To install Kubernetes, I needed to provide hardware and virtual machines.
After that, I had to develop the desired cluster architecture and namespaces on top of this.
I created the following 3 Kubernetes environments:

  • Kubernetes cluster local-devapp" for local development and exploration:
    on my development PC/laptop, I installed “Rancher Desktop”;
    I used a one-node cluster with K3s and a multi-node cluster with K3d,
    which are dynamically created and removed when necessary
  • Kubernetes cluster"home-devdep" for central app development and deployment tools:
    For this, I used a one-node cluster with K3s,
    and purchased a refurbished business-grade machine for this;
    this cluster can be expanded with extra nodes later
  • Kubernetes cluster “home-prodapp” for applications deployed in production:
    For this, I used a one-node cluster with K3s,
    and purchased a refurbished business-grade machine for this;
    this cluster can be expanded with extra nodes later
HP EliteDesk

The purchase price of these 2 machines had to fall within my annual budget of 500 EUR.
I bought the following 2 refurbished business-grade mini pc’s with low power consumption,
and installed K3s Kubernetes on it:
HP EliteDesk 800 G5 USFF - Intel Core i5-9th Gen (6 cores/6 threads) - 16 GB RAM - 256 GB ssd

2 - Deploy existing applications in Kubernetes

Under construction