From 5d14d379db1ef962cb6cce4713070782f6d09591 Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Tue, 9 Jun 2020 19:44:06 +0200 Subject: [PATCH] Chapter ApplicationStack --- documentation/documentation.tex | 10 ++++++++++ documentation/img/ApplicationStack.drawio | 1 + documentation/img/ApplicationStack.pdf | Bin 0 -> 30301 bytes 3 files changed, 11 insertions(+) create mode 100644 documentation/img/ApplicationStack.drawio create mode 100644 documentation/img/ApplicationStack.pdf diff --git a/documentation/documentation.tex b/documentation/documentation.tex index 43107b5..e1c97db 100644 --- a/documentation/documentation.tex +++ b/documentation/documentation.tex @@ -146,6 +146,16 @@ \include{parts/android} \chapter{Vollständiger Application Stack} +\begin{figure}[H] + \centering + \includegraphics[width=\linewidth]{img/ApplicationStack} + \caption{Application Stack} +\end{figure} +Das Deployment von Geotime ist in drei große Schichten aufgeteilt. Zunächst wäre hier die Backend Schicht, die Schicht der Datenhaltung und der API. Dieser Teil der Anwendung braucht am meisten Schutz, da er der wichtigste ist und dort alle Daten gespeichert werden. Der Zugriff auf die Datenbank ist nur auf das Backend beschränkt. Um nun die Applikation zu nutzen gibt es zwei Möglichkeiten: Eine Android App oder ein Webbrowser. + +Die Android App implementiert die View Schicht selbst und fragt nur für Daten den Backend-Dienst an. Diese Anfragen gehen zunächst an den Server, der die App Hostet und werden dann von dem darauf laufenden Docker Deamon an den entsprechenden Container weitergeleitet. + +Beim Zugriff über den Webbrowser funktioniert die Kommunikation geringfügig anders. Zunächst wird vom Client der nginx Container nach dem statischen Teil der der Website gefragt, dieser lädt dann über ähnliche Anfragen wie in der Android App die Daten vom Backend. Das global gesprochene Protokoll ist hierbei immer HTTP. \chapter{Projektjournal} diff --git a/documentation/img/ApplicationStack.drawio b/documentation/img/ApplicationStack.drawio new file mode 100644 index 0000000..edcce19 --- /dev/null +++ b/documentation/img/ApplicationStack.drawio @@ -0,0 +1 @@ +7Vpbc6M2FP41fqwHkAH7MbazbWeS6e54urvpS0cGBbQLiBFyYu+vrwTiIoED6xg7TZvMeNBBCOk753znYk/AKt7/SmEa3hMfRRPL8PcTsJ5YluO6/FMIDoUAOKAQBBT7hcisBRv8A0mhIaU77KNMmcgIiRhOVaFHkgR5TJFBSsmzOu2RROpbUxiglmDjwagt/YJ9FhbSueXW8t8QDsLyzaazKO7EsJwsT5KF0CfPDRG4nYAVJYQVV/F+hSKBXYlL8dyHI3erjVGUsCEPfDLvAXn8/QtdeQ6z/1qyb5//+MUpVnmC0U4eWG6WHUoEKNklPhKLGBOwfA4xQ5sUeuLuM1c5l4UsjvjI5JePOIpWJCKUjxOS8ElL+QZEGdof3bpZAcINCZEYMXrgU+QDMwmhtKGFHD7XCpnNpSxsKAPYUgilEQTVyjVO/EJC9ROwlTCNiVvGKPmOSuHEAu5c/J8HUdNWITVBG9MKPgVTYyxMzfm/whYrACRylX83kDO7rNEaDznQAgr5nMXkkFAWkoAkMLqtpUsVynrOHSGpBPAbYuwgKRnuGFHh5XjRw1f5fD54EIOpa5fj9b55d32Qo2KzYocvq4AfiOyoh144uTw4gzRArNdf2zqlKIIMP6kbObt+QL9hwywtotcj3gulLFOCE4bo7RPHJJOIVxFEoOjDLKzU11CLShvS7iO4RdFHkmGGScLFHhKL8xvCFTCPdnfahC1hjMSNCTcRDsQNJqxjCeWoWqfpaxPhI+Z8vi62nIojxvtApAfTOPMgmuZPpRRnaAoTnxLs/52GYqevd09X9U7QxWsdzjlapHBbuud7ZjjmZ3VgLLBMtlmae4Vxk6YRxzpXgW4gHBE2QNEdnNfSla7SGPt+TgldfKrSxBkUVPHlQVVYkz6tTvocK5a7PWHmFG7cY5ZT49SWo4fGnZoXxaCkxWN82ken/VR/RsJdDCTcIphfi3AXLaf7zC8s4wMl3AcS/y3mFabGXObMHeYYzmhpxey6aUVt+Q+K4Y+eVZS1Z7+VH1HpZay83GbDzDc8qCYBly2h9/2NGjrQSg9e2Fzb0M0WkPeQYrgWQXnz6Y5/riGDW5ihNwmonvN0MEdXQTJeddzGs80kiX8j2jMiMYlglmFvWHXRGw3LyNuIu3UUPhJ5f5LVzkk186FUY3TbQEPHXeV6KRvMSPINH0X50QhOjmpiMz0bKw4qn2o2obSFqr7eQbPdcqECiNZC3FbgoTEtL4+y4xuu8v7yPXpzrGe+5biaGxQ7qJ2i0sEr/KRdGK4J523KZX/GAdruBJe/20LAtbhfKimP2VELGHbbqserBWYtjVSR1Njstgli71chQGuzVg0rRR0XLc0GtAR7A0lnQHB7IsKJ0UfVSX9cQdE233mp+PMGlxKtk6u1CwWXhRZc9Ebp4OCiGXCr/3+m4GLpwcW2X97Xy8FonOBSvvNI9ZZb3kX6wRdsB1tD2xPWVfvBVrs/0dLVf6UhDH/sKJp6JE534sHXRzEtU7Vst8wyethsZo+kbtARtN67J4Lyu/q37YlgQKX6vyeexxNNx7qyHw74Hu60bHJoMjm1lJam2eOP/flj6zcCRv43ZsdicFK5uGpOqffEzFNzSktvDIyUU+o/K5i/Kkfkw/qXRcX0+udZ4PYf \ No newline at end of file diff --git a/documentation/img/ApplicationStack.pdf b/documentation/img/ApplicationStack.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f26dd4045db4b63612dff0329cfb252849a19452 GIT binary patch literal 30301 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