Files
pm/Defensio/02_Praesentation_Konstantin_Hintermayer.md

5.7 KiB

Konstantin Hintermayer

Rolle im Projekt

::: columns

:::: column Aufgabenbereiche:

  • Product Owner
  • Kundenschnittstelle
  • Infrastruktur & CI/CD

Softwareentwicklung:

  • Event Registration
  • Black Board
  • Report System
  • Mass Mailer

::::

:::: column

\begin{tikzpicture} \clip (0,0) circle (3em); \node at (0,0) {\includegraphics[width=6em]{./Images/images/konstantin/profile.jpg}}; \draw[accent, line width=3pt] (0,0) circle (3em); \end{tikzpicture}

::::

:::

Infrastruktur

::: columns :::: column

Entwicklung:

  • Gitea: Versionskontrollsystem
  • Wireguard: VPN
  • Docker: Containerisierung
  • GitHub: Transfer
  • Gitea Actions: CI/CD

:::: :::: column

Produktion:

  • Debian: Betriebssystem
  • NginX: Reverse Proxy
  • PostgreSQL: Datenbank
  • Oqtane: CMS

:::: :::

\vfill

\begin{center} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/debian.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/docker.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/gitea.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/wireguard.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/github.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/nginx.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/postgres.pdf} \hspace{1em} \includegraphics[width=2.5em]{./Images/images/konstantin/logos/oqtane.pdf} \end{center}

\vfill


Produktions-Infrastruktur:

sequenceDiagram
    participant browser as Client
    participant nginx as NginX
    participant oqtane as Oqtane
    participant db as PostgreSQL

    browser->>+nginx: HTTPS => 0.0.0.0:443
    nginx->>nginx: SSL Terminierung
    nginx->>+oqtane: HTTP => 127.0.0.1:5000
    oqtane->>+db: SQL => 127.0.0.1:5432
    db-->>-oqtane: SQL
    oqtane-->>-nginx: HTTP
    nginx-->>-browser: HTTPS

Von Commit zu Paket

\begin{tikzpicture}[ node distance=1cm, stepnode/.style={circle, minimum size=1.2cm, draw, line width=1.5pt, fill=white, inner sep=0pt}, labelnode/.style={align=center, font=\small\bfseries}, textnode/.style={align=center, font=\scriptsize, color=gray}, track/.style={line width=2pt, gray!20} ] % Central Track \draw[track] (-1,0) -- (12,0);

\node[stepnode, draw=gray] (n1) at (0,0) {\color{gray}\small\faCodeBranch};
\node[stepnode, draw=green!60!black, right=of n1] (n2) {\color{green!60!black}\small\faCheckCircle};
\node[stepnode, draw=blue!60!black, right=of n2] (n3) {\color{blue!60!black}\small\faCogs};
\node[stepnode, draw=orange, right=of n3] (n4) {\color{orange}\small\faBoxOpen};
\node[stepnode, draw=orange!70!black, right=of n4] (n5) {\color{orange!70!black}\small\faDatabase};

% Labels Above
\node[labelnode, below=0.2cm of n1, color=gray] {Commit};
\node[labelnode, below=0.2cm of n2, color=green!60!black] {Tag};
\node[labelnode, below=0.2cm of n3, color=blue!60!black] {CI/CD};
\node[labelnode, below=0.2cm of n4, color=orange] {.deb Paket};
\node[labelnode, below=0.2cm of n5, color=orange!70!black] {Registry};

\end{tikzpicture}

\vspace{1em}

Ablauf:

  1. laufende Entwicklung
  2. Commit zu einem Release zusammenfassen (Tag)
  3. CI/CD Pipeline beginnt zu laufen
  4. .deb Paket wird gebaut
  5. .deb Paket wird in der Registry abgelegt

Softwarearchitektur (.NET / Oqtane)

Design Patterns:

\begin{tikzpicture}[ node distance=0.15cm, stepnode/.style={rectangle, draw, line width=1.5pt, minimum width=1.5cm, minimum height=1.5cm, fill=white, inner sep=0pt}, ] \node[stepnode, draw=gray!60!black] (n1) at (0,0) {\LARGE\color{gray!60!black}S}; \node[stepnode, draw=green!60!black, right=of n1] (n2) {\LARGE\color{green!60!black}O}; \node[stepnode, draw=blue!60!black, right=of n2] (n3) {\LARGE\color{blue!60!black}L}; \node[stepnode, draw=orange, right=of n3] (n4) {\LARGE\color{orange}I}; \node[stepnode, draw=orange!70!black, right=of n4] (n5) {\LARGE\color{orange!70!black}D}; \end{tikzpicture}

\vspace{1em}

  • Open-Closed Principle
  • Dependency Injection (IServiceProvider)
  • Repository-Pattern (EntityFramework)

Module

::: columns :::: column Admin Module:

  • Mass Mailer
  • Token Lifetime
  • Report System

Allgemeine Module:

  • Event Registration
  • Black Board

:::: :::: column :::: :::

Produktion \neq Staging

\begin{tikzpicture}[ node distance=2.2cm, stepnode/.style={circle, minimum size=1.2cm, draw, line width=1.5pt, fill=white, inner sep=0pt}, labelnode/.style={align=center, font=\small\bfseries}, textnode/.style={align=center, font=\scriptsize, color=gray}, track/.style={line width=2pt, gray!20} ] % Central Track \draw[track] (-1,0) -- (12,0);

% Steps
\node[stepnode, draw=green!60!black] (s1) at (0,0) {\color{green!60!black}\Large\faCheck};
\node[stepnode, draw=accent, right=of s1] (s2) {\color{accent}\Large\faCodeBranch};
\node[stepnode, draw=red, right=of s2] (s3) {\color{red}\Large\faExclamationTriangle};
\node[stepnode, draw=orange, right=of s3] (s4) {\color{orange}\Large\faLightbulb};

% Labels Above
\node[labelnode, above=0.2cm of s1, color=green!60!black] {Staging};
\node[labelnode, above=0.2cm of s2, color=accent] {Deploy};
\node[labelnode, above=0.2cm of s3, color=red] {Bruch};
\node[labelnode, above=0.2cm of s4, color=orange] {Erkenntnis};

\end{tikzpicture}

\vfill

::: columns :::: column "It works on my Machine" :::: :::: column left ::::

:::: column right ::::

:::

Fazit