feat(c4-model): added likec4 system model

This commit is contained in:
Stephan Lo 2024-09-10 11:27:20 +00:00
parent e78b3fb9b1
commit 97599dfa99
8 changed files with 155 additions and 17 deletions

13
.devcontainer/Dockerfile Normal file
View file

@ -0,0 +1,13 @@
FROM mcr.microsoft.com/devcontainers/base:ubuntu
# Install the xz-utils package
RUN apt-get update && apt-get upgrade && apt install -y ca-certificates curl gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
RUN sudo apt update && apt install nodejs -y
RUN npm install --global likec4

View file

@ -1,6 +1,9 @@
{ {
"name": "Ubuntu", "name": "Ubuntu",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu", "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
// "build": {
// "dockerfile": "Dockerfile"
// },
"features": { "features": {
"ghcr.io/devcontainers/features/git:1": {}, "ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/go:1": {}, "ghcr.io/devcontainers/features/go:1": {},

View file

@ -11,6 +11,14 @@ Our first architectural blue print for the IPCEI-CIS Developer Framework derives
![alt text](image-2024-8-14_10-50-27.png) ![alt text](image-2024-8-14_10-50-27.png)
## C4 Model
(sources see in ./ressources/architecture-c4)
First system landscape C4 model:
![c4-model](./planes.png)
## In Confluence ## In Confluence
https://confluence.telekom-mms.com/display/IPCEICIS/Architecture https://confluence.telekom-mms.com/display/IPCEICIS/Architecture

View file

@ -1,16 +0,0 @@
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml
LAYOUT_WITH_LEGEND()
ContainerDb(c4, "Database", "Relational Database Schema", "Stores user registration information, hashed authentication credentials, access logs, etc.")
Container(c1, "Single-Page Application", "JavaScript and Angular", "Provides all of the Internet banking functionality to customers via their web browser.")
Container_Boundary(b, "API Application") {
Component(c3, "Security Component", "Spring Bean", "Provides functionality Related to signing in, changing passwords, etc.")
Component(c2, "Sign In Controller", "Spring MVC Rest Controller", "Allows users to sign in to the Internet Banking System.")
}
Rel_R(c1, c2, "Submits credentials to", "JSON/HTTPS")
Rel(c2, c3, "Calls isAuthenticated() on")
Rel_R(c3, c4, "select * from users where username = ?", "JDBC")
@enduml

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

View file

@ -50,4 +50,3 @@ Bevor eine Aufgabe umgesetzt wird, muss ein Design vorhanden sein.
Bezüglich der 'Bebauung' von Plaztform-Komponenten gilt für das Design: Bezüglich der 'Bebauung' von Plaztform-Komponenten gilt für das Design:
1) Die Zielstellung der Komponenet muss erfasst sein 1) Die Zielstellung der Komponenet muss erfasst sein

View file

@ -20,3 +20,8 @@ Die Erwartung ist, dass so ein Projekt als 'Golden Path' abbildbar ist und die E
* SIA 'auf die Platform heben' (was immer das bedeutet) * SIA 'auf die Platform heben' (was immer das bedeutet)
* Den Build-Code von SIA (die Applikation und einen Shop) in einen CI/CD Workflow transformieren * Den Build-Code von SIA (die Applikation und einen Shop) in einen CI/CD Workflow transformieren
## References
* https://platformengineering.org/blog/decoding-golden-paths-the-highway-for-your-developers

View file

@ -0,0 +1,126 @@
specification {
tag plane
tag genericPlatformComponent
element plane {
notation "Plane"
style {
color gray
}
}
element system {
style {
opacity 20%
color secondary
}
}
element container {
style {
opacity 20%
color secondary
}
}
element component {
style {
opacity 20%
color secondary
}
}
}
model {
plane DeliveryAndControlPlane {
#plane
system IDE {
#genericPlatformComponent
-> CIPipeline
}
system Portal {
#genericPlatformComponent
->ApplicationSourceCode
}
system VersionControl {
#genericPlatformComponent
style {
icon https://upload.wikimedia.org/wikipedia/commons/0/0f/Forgejo-wordmark.svg
}
component PlatformSourceCode {
#genericPlatformComponent
title 'Platform Source Code'
component IAC {
-> Orchestrator
}
component Automations
}
component ApplicationSourceCode {
#genericPlatformComponent
title 'Application Source Code'
component Score
component Workload
-> CIPipeline
}
}
}
plane IntegrationAndDeliveryPlane {
#plane
system CIPipeline {
-> Registry
}
system Registry {
-> Orchestrator
}
system Orchestrator {
#genericPlatformComponent
style {
color red
}
-> CDPipeline
-> SecretsAndIdentityManagement
}
system CDPipeline {
-> RessourcePlane
}
}
plane MonitoringAndLoggingPlane {
#plane
system Observability
}
plane SecurityPlane {
#plane
style {
}
system SecretsAndIdentityManagement {
#genericPlatformComponent
}
}
plane RessourcePlane {
#plane
system Compute
system Data
system Networking
system Services
}
}
views {
/**
* @likec4-generated(v1)
* iKRoYXNo2Sg4YzM0OTBhYzE2MGZhNjIwNWI5YzNmNjY5ZGE3YzZiMTRiMWMzM2I4qmF1dG9MYXlvdXSiVEKhePiheQCld2lkdGjNCBCmaGVpZ2h0zQeRpW5vZGVz3gAUt0RlbGl2ZXJ5QW5kQ29udHJvbFBsYW5lgqFilP3NAfLNCAvNAkehY8O7SW50ZWdyYXRpb25B
* bmREZWxpdmVyeVBsYW5lgqFilPjNBEjNBnLNARqhY8O5TW9uaXRvcmluZ0FuZExvZ2dpbmdQbGFuZYKhYpT9zQVuzQGAzQEJoWPDrVNlY3VyaXR5UGxhbmWCoWKU+s0GiM0Bgs0BCaFjw65SZXNzb3VyY2VQbGFuZYKhYpTNBnTNBEfNAZLNA0ChY8O7RGVsaXZlcnlB
* bmRDb250cm9sUGxhbmUuSURFgqFilCXNAijNAUDMtKFjwr5EZWxpdmVyeUFuZENvbnRyb2xQbGFuZS5Qb3J0YWyCoWKUzQG9zQIpzQFAzLShY8LZJkRlbGl2ZXJ5QW5kQ29udHJvbFBsYW5lLlZlcnNpb25Db250cm9sgqFilM0Blc0C+c0GS80BGKFjw9koSW50ZWdy
* YXRpb25BbmREZWxpdmVyeVBsYW5lLk9yY2hlc3RyYXRvcoKhYpTNA2jNBIbNAUDMtKFjwtkmSW50ZWdyYXRpb25BbmREZWxpdmVyeVBsYW5lLkNJUGlwZWxpbmWCoWKUIM0EhM0BQMy0oWPC2SRJbnRlZ3JhdGlvbkFuZERlbGl2ZXJ5UGxhbmUuUmVnaXN0cnmCoWKU
* zQHEzQSDzQFAzLShY8LZJkludGVncmF0aW9uQW5kRGVsaXZlcnlQbGFuZS5DRFBpcGVsaW5lgqFilM0FAs0Efs0BQMy0oWPC2SdNb25pdG9yaW5nQW5kTG9nZ2luZ1BsYW5lLk9ic2VydmFiaWxpdHmCoWKUHc0Fo80BQMy0oWPC2SpTZWN1cml0eVBsYW5lLlNlY3Jl
* dHNBbmRJZGVudGl0eU1hbmFnZW1lbnSCoWKUGs0Gvc0BQsy0oWPCtlJlc3NvdXJjZVBsYW5lLkNvbXB1dGWCoWKUzQaczQR8zQFAzLShY8KzUmVzc291cmNlUGxhbmUuRGF0YYKhYpTNBp3NBTbNAUDMtKFjwrlSZXNzb3VyY2VQbGFuZS5OZXR3b3JraW5ngqFilM0G
* ns0Gq80BQMy0oWPCt1Jlc3NvdXJjZVBsYW5lLlNlcnZpY2VzgqFilM0Gnc0F8c0BQMy0oWPC2TlEZWxpdmVyeUFuZENvbnRyb2xQbGFuZS5WZXJzaW9uQ29udHJvbC5QbGF0Zm9ybVNvdXJjZUNvZGWCoWKUzQZ3zQMvzQFAzLShY8LZPERlbGl2ZXJ5QW5kQ29udHJv
* bFBsYW5lLlZlcnNpb25Db250cm9sLkFwcGxpY2F0aW9uU291cmNlQ29kZYKhYpTNAb7NAzXNAUDMtKFjwqVlZGdlc4A=
*/
view planes {
title "Platform"
description "Platform Reference Architecture High Level Planes (by Humanitec)"
include element.tag==#plane, element.tag==#genericPlatformComponent
include DeliveryAndControlPlane.*, VersionControl.*, IntegrationAndDeliveryPlane.*, MonitoringAndLoggingPlane.*, RessourcePlane.*
exclude -> ApplicationSourceCode, -> DeliveryAndControlPlane, -> IntegrationAndDeliveryPlane.*, -> SecurityPlane, -> RessourcePlane
}
}