diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..8c127de --- /dev/null +++ b/.devcontainer/Dockerfile @@ -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 \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 217bb3a..b926777 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,9 @@ { "name": "Ubuntu", "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + // "build": { + // "dockerfile": "Dockerfile" + // }, "features": { "ghcr.io/devcontainers/features/git:1": {}, "ghcr.io/devcontainers/features/go:1": {}, diff --git a/content/en/docs/project/_index.md b/content/en/docs/project/_index.md index 5d76fb2..f86dec8 100644 --- a/content/en/docs/project/_index.md +++ b/content/en/docs/project/_index.md @@ -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) +## C4 Model + +(sources see in ./ressources/architecture-c4) + +First system landscape C4 model: + +![c4-model](./planes.png) + ## In Confluence https://confluence.telekom-mms.com/display/IPCEICIS/Architecture diff --git a/content/en/docs/project/onboarding/assets/context.puml b/content/en/docs/project/onboarding/assets/context.puml deleted file mode 100644 index f8e24ef..0000000 --- a/content/en/docs/project/onboarding/assets/context.puml +++ /dev/null @@ -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 - diff --git a/content/en/docs/project/planes.png b/content/en/docs/project/planes.png new file mode 100755 index 0000000..cbd844b Binary files /dev/null and b/content/en/docs/project/planes.png differ diff --git a/content/en/docs/project/streams/_index.md b/content/en/docs/project/streams/_index.md index 2599dfc..d060a96 100644 --- a/content/en/docs/project/streams/_index.md +++ b/content/en/docs/project/streams/_index.md @@ -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: 1) Die Zielstellung der Komponenet muss erfasst sein - diff --git a/content/en/docs/project/streams/pocs/sia-asset/_index.md b/content/en/docs/project/streams/pocs/sia-asset/_index.md index 72b26a7..6332cc7 100644 --- a/content/en/docs/project/streams/pocs/sia-asset/_index.md +++ b/content/en/docs/project/streams/pocs/sia-asset/_index.md @@ -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) * 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 \ No newline at end of file diff --git a/resources/architecture-c4/platform.c4 b/resources/architecture-c4/platform.c4 new file mode 100755 index 0000000..85449a8 --- /dev/null +++ b/resources/architecture-c4/platform.c4 @@ -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 + } + +} \ No newline at end of file