7.3 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
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!60!black] (n1) at (0,0) {\color{gray!60!black}\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=green!60!black, right=of n3] (n4) {\color{green!60!black}\small\faBoxOpen};
\node[stepnode, draw=blue!60!black, right=of n4] (n5) {\color{blue!60!black}\small\faDatabase};
% Labels Above
\node[labelnode, below=0.2cm of n1, color=gray!60!black] {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=green!60!black] {.deb Paket};
\node[labelnode, below=0.2cm of n5, color=blue!60!black] {Registry};
\end{tikzpicture}
\vspace{1em}
Ablauf:
- laufende Entwicklung
- Commit zu einem Release zusammenfassen (Tag)
- CI/CD Pipeline beginnt zu laufen
- .deb Paket wird gebaut
- .deb Paket wird in der Registry abgelegt
Softwarearchitektur (.NET / Oqtane)
Design Patterns:
\vspace{1em}
\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
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{.column width=33%} "It works on my Machine" :::: :::: column{.column width=66%} Deploymentprobleme bei Hetzner Problem: schlechte Dokumentation. Lösung: Debugging mithilfe von Wireshark und lesen des Source Codes um das Framework zu verstehen und den Fehler zu finden. :::: :::
Teamleitung & PM
::: columns :::: column Scrum Workflow:
-
14-tägige Sprints
-
Weeklies & Retrospektiven
-
Definition of Done (DoD) :::: :::: column Gitea Issues / Board:
-
Integrierter Workflow
-
Single Source of Truth
:::: :::
Was bleibt
\vspace{0.5em}
\begin{tikzpicture}[x=\linewidth/10, y=1cm, every node/.style={font=\sffamily}]
% Rule: 90/90
\fill[black!5] (0, 2.8) rectangle (10, 3.4);
\fill[green!60!black] (0, 2.8) rectangle (9, 3.4);
\node[anchor=north west, inner sep=3pt] at (0, 2.8) {\scriptsize Erste \textbf{90,%} des Codes \rightarrow \textbf{90,%} der Zeit};
\fill[black!5] (0, 1.2) rectangle (10, 1.8);
\fill[accent] (0, 1.2) rectangle (1, 1.8);
\node[anchor=north west, inner sep=3pt, text=accent] at (0, 1.2) {\scriptsize \textbf{Letzte 10\,\% des Codes $\rightarrow$ weitere 90\,\% der Zeit}};
\end{tikzpicture}
\vspace{0.5em}
::: columns :::: { .column width=33% } \begin{block}{Lean beats Perfect} \scriptsize Weniger bauen, dafür fertig stellen. \end{block} ::::
:::: { .column width=33% } \begin{block}{Environment First} \scriptsize Zielumgebung testen, nicht nur lokal. \end{block} ::::
:::: { .column width=33% } \begin{block}{Fragen ist Architektur} \scriptsize Wer früh fragt, spart später Monate. \end{block} :::: :::

