45. Wie haben wir Systeme gebaut?
My Online Shop Monolith
Checkout &
Payment
Artikel-
Verwaltung
Bestell-
Verwaltung
Kunden-
verwaltung
Logistik
Management
…
46. Heute bauen wir domänen-orientiert und damit
auch verteilt …
ArtikelSystem
Checkout&
Payment
Bestellungen
System
LogistikSystem
KundenSystem
My Online Shop
SCS SCS SCS SCS SCS
53. Slide 08
Fehlertoleranz – Loose Coupling
ArtikelSystem
Checkout&
Payment
Bestellungen
System
LogistikSystem
KundenSystem
My Online Shop
(RESTful) API as a Business Function
ACL ACL
SCS SCS SCS SCS SCS
85. About me...
• Name: Manuel Heinzig
• Alter: 30
• Werdegang:
• Kindergarten Mittelschule Abitur
• Master Informatik @TU Chemnitz
• Wiss. Mitarbeiter/Dozent @HS Mittweida
Bereich Medieninformatik und Interaktives Entertainment
(aka Videospiele und alles drum herum)
86. Der Erklärbär
• „Manuel machts Protokoll, da wird das
wenigstens nicht so schwurbelig“
• „HiWi, komm mal mit zum Firmengespräch.
Nicht, dass ich mit denen dort wieder
aneinander vorbei rede.“
90. Mein Job
• Vorlesungsreihe „Wissenschaft und Wirtschaft“:
• 4-8 Studis
(Studiengang Medieninformatik und Interaktives
Entertainment,
80% Kreative, 20% Programmierer)
• Informatisches Projekt eines (externen)
Stakeholders
• Erste praktische Erfahrungen
92. Studi (+), Stakeholder (+)
• Stakeholder: Entwicklerfirma für
Versicherungssoftware
• Ansprechpartner: Standortleiter Chemnitz +
Technischer Leiter
• Zielstellung: „Macht unsere
Versicherungssoftware hübsch. 3D, VR,
alles was euch einfällt.“
93. Studi (+), Stakeholder (+)
Projektverlauf
• Studi-Team organisiert sich selbst
• Studis interviewen Stakeholder für
Anforderungen
• Zwischenpräsentationen mit
lauffähigem MVP + Feedback
94. Studi (+), Stakeholder (+)
Fazit
• Nach Jahr 1: lauffähiger, dokumentierterPrototyp
• Nach Jahr 2 (heute): nutzeroptimierte, polished
Software mit Basic-Featureset
Software wird demnächst in Testeinsatz gehen
• 2 ehem. Studis bei Firma in Festanstellung
• 7 Praxis-/Abschlussarbeiten
95. Studi (-), Stakeholder (+)
• Stakeholder: „Die Verwaltung“ einer öffentlichen
Einrichtung
• Ansprechpartner: Informatisch versierter Mitarbeiter
der Einrichtung mit Ahnung von Verwaltungsprozessen
• Zielstellung: Ein Tool zur nachvollziehbaren
Budgetberechnung (Personal- und Projektplanung)
96. Studi (-), Stakeholder (+)
Projektverlauf
• 2/7 Studis erscheinen zum ersten Termin
• Thema ist “langweilig”
• Technische Hilfe des Stakeholders
“unverständlich”
97. Studi (-), Stakeholder (+)
Fazit
• Konzeptdokumente Copy-Pasted aus den
ersten 5 Googletreffern
• Programmfortschritt ausschließlich durch
Ansprechperson
• Projekt wird mit 2/7 Studis beendet, Rest
”macht das im nächsten Jahr nochmal”
98. Studi (-), Stakeholder (-)
• Stakeholder: Forschungsmitarbeiter der Hochschule mit
wenig Lehrerfahrung/Studikontakt
• Ansprechpartner: ebendieser Mitarbarbeiter
• Zielstellung: Performante und anschauliche Visualisierung
„biologischer Graphen“ für Dissertation des Mitarbeiters
99. Studi (-), Stakeholder (-)
Projektverlauf I
• Stakeholder definiert unverständliche technische
Anforderungen
• Programmierer des Studiteams fragen mit ihrem
Halbwissen nach
• Designer sind thematisch vollkommen raus
• Stakeholder nach Vorstellungsrunde skeptisch,
“ob ihm die Studis was bringen”
betrachtet Projekt in der Folge als “sinnlosen
Aufwand”
100. Studi (-), Stakeholder (-)
Projektverlauf II
• Studis nehmen Projekt als “nur technisch und programmierlastig” wahr
• Programmierer finden Aufgabe “zu schwer”
• Artists: “wir haben nichts zu tun, sind fertig mit allem”
101. Studi (+-), Stakeholder ??
• Stakeholder: Teilbereich eines großen
Medienproduzenten
• Ansprechpartner:
Geschäftsführer, Entwicklungsingeneur, IT-
Chef
• Zielstellung: Tool zur grafisch anschaulichen
Planung der Gerätedispo
102. Studi (+-), Stakeholder ??
• Stakeholder hat “eine Entwicklungsabteilung,
die große Hoffnungen in die Studis legt”
• Die drei Ansprechpartner diskutieren im Meeting
vor Studis noch über Kernziele
Projektabbruch mitten im Semester
103. Fazit I
• Schlüssel zum Erfolg (bei der Arbeit mit Studis):
• Vorher überlegen, was Studis in etwa leisten sollen
• Kleine Fehlschläge einplanen und nutzen
104. Fazit II
• Kooperationsprojekte mit Ausbildungsstätten...
• ...sind KEIN billiger Ersatz für eine in-House FuE-Abteilung
• ...bieten billiges Scouting für möglichen Nachwuchs
• ...sind die richtige Spielwiese fürs Ausprobieren
experimenteller Ideen
• Erfahrung: Kommunikationserfolg == Projekterfolg
108. https://www.reactivemanifesto.org/de
Wir glauben, dass die Anforderungen, die heute an Computersysteme gestellt
werden, nur zu erfüllen sind durch die gleichzeitige Ausrichtung an vier
Qualitäten, deren Wert bislang nur einzeln betrachtet wurde: Systeme müssen
stets antwortbereit, widerstandsfähig, elastisch und nachrichtenorientiert sein.
Dann nennen wir sie reaktive Systeme.
109. SOA-Manifest
Service-Orientierung ist ein Paradigma, das den Rahmen für unser Handeln vorgibt.
Service-orientierte Architektur (SOA) ist ein Architekturtyp, der aus der Anwendung von
Service-Orientierung entsteht.
Wir haben Service-Orientierung angewendet, um Organisationen zu helfen, kontinuierlich
nachhaltigen Geschäftswert zu liefern
mit höherer Agilität und Kosteneffizienz und im Einklang mit den sich ändernden fachlichen
Bedürfnissen.
Im Rahmen unserer Arbeit sind wir zu folgender Priorisierung gekommen:
Geschäftswert über technische Strategie
Strategische Ziele über projektspezifischen Nutzen
Immanente Interoperabilität über maßgeschneiderte Integration
Gemeinsam verwendete Services über zweckgebundene Implementierungen
Flexibilität über Optimierung
Evolutionäre Vervollkommnung über Streben nach anfänglicher Perfektion
Das heißt, obwohl wir die Werte auf der rechten Seite schätzen, sind uns die Werte auf der
linken Seite wichtiger.
23.10.2009
http://soa-manifest.de/
110. The Modern DevOps Manifesto
1. Everything is code — Infrastructure, configuration, actions, and changes to production —
can all be code. When everything is code, everything needs DevOps.
2. Establish “trusted” resources — Enterprise assets such as images, templates, policies,
manifests, configurations that codify standards should be governed (with a pipeline)
3. Lean into Least Privilege — New roles are emerging: Cluster Engineer, Image Engineer, Site
Reliability Engineer…define roles with just enough access to the “trusted” resources they
access to get their job done, mitigating risk, limiting exposure.
4. Everything is observable — Lay the foundation for AI for Pipelines by collecting and
organizing data from an instrumented pipeline.
5. Expand your definition of “everything” — DevOps is not just for application code. DevOps
can apply to machine learning model (MLOps or ModelOps), integration (API lifecycle),
infrastructure and configuration (GitOps), and other domains. Expand your stakeholders to
include Security and auditors…the next evolution of breaking down silos.
https://medium.com/ibm-garage/the-modern-
devops-manifesto-f06c82964722
120. A Proposal for an Antifragile Software Manifesto
P. 1 – Our highest priority is to satisfy the customer by building a non-linear, proactive, and self adaptive
system
P. 2 – We welcome changing scenarios where unexpected events (Black Swans) are the real paradigm
shifting entities
P. 3 – We deliver assuring embedded and adaptive fault tolerance
P. 4 – All stakeholders, and the broader environment, lead the antifragile organization
P. 5 – Build antifragile projects around motivated, skilled and open minded people. Give them the
environment and support they need, and trust them to get the job done
P. 6 – The most efficient and effective method of building an antifragile organization is building on honest,
open and transparent communication
P. 7 – Continuous exposure to faults and automatic fixing is the primary measure
P. 8 – An antifragile organization promotes a context aware environment. The stakeholders should be able to
maintain a system indefinitely
P. 9 – Continuous attention to technical excellence, reality, redundancy
P. 10 – Error loving - the art of learning to be antifragile – is essential
P. 11 – Antifragile architectures emerge from self – organizing, context aware teams
P. 12 – At regular intervals, the developing team reflects about the context situation, on how to become more
effective, then tunes and adjusts its behavior accordingly
https://www.sciencedirect.com/science/article/
pii/S1877050916302290
121. The Practical Nerd manifesto
1) Cool is not neccessarily useful.
2) Software is never, ever going to be “dead.”
3) Free isn’t forever.
4) Features aren’t products in the long run.
5) Bubbles happen.
https://www.geekwire.com/2011/practical-nerd-
practical-nerd-manifesto/
125. Manifesto for Agile Software Development
http://agilemanifesto.org/
BizOps Manifesto
https://www.bizopsmanifesto.org/
Robot Operations Manifesto
https://robops.org/manifesto
Nerds with People Skills Manifesto
http://nerdswithpeopleskills.com/manifesto/
The DevOps Manifesto
https://www.opsview.com/resources/devops/blog/devops-manifesto
DevOps for ML Manifesto
https://dotscience.com/manifesto/
Digital Manifesto
https://www.digital-manifesto.org/
Team Manifesto
https://www.linkedin.com/pulse/team-manifesto-foundation-every-barry/
Scaling Manifesto
https://scalingmanifesto.org/
134. Initialisierung der Umgebung
vagrant init hashicorp/bionic64
Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/bionic64"
end
142. Weitere Konfigurationsmöglichkeiten
• Networking
• Forwarded Ports
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080
End
• Öffentliches Netzwerk
Vagrant.configure("2") do |config|
config.vm.network "public_network"
end
• Privates Netzwerks
Vagrant.configure("2") do |config|
config.vm.network "private_network", type: "dhcp"
end
143. Weitere Konfigurationsmöglichkeiten
• Synced Folders zwischen Host und Guest
Vagrant.configure("2") do |config|
config.vm.synced_folder "src/", "/srv/website"
End
• Unterstützte Typen:
• VirtualBox shared folders
• NFS
• SMB
• rsync
144. Vagrant starten
• vagrant up – erzeugt und konfiguriert die VM
• vagrant halt – stoppt die VM
• vagrant destroy – löscht die VM
• vagrant status – Status der VM
• vagrant ssh – SSH in gestartete VM
• https://www.vagrantup.com/docs/cli
170. Alternative to EJB2 entity beans
Provides an SQL inspired language (HQL)
for writing SQL-like queries
=> Warum nicht gleich SQL ?
[https://de.wikipedia.org/wiki/Hibernate_(Framework)]
171. HQL is the object-oriented version of SQL
Criteria Queries are provided as an
object-oriented alternative to HQL
It generates database independent queries
=> Genau wie SQL-92
[https://de.wikipedia.org/wiki/Hibernate_(Framework)]
�
186. JOOQ kann noch mehr
lots of generator options
Database
First
return values on
save/update
(e.g. generated values)
DAOs
lots of fetching options
(lists, maps)
simple CRUD
with generated records
use liquibase changelogs
POJOs
(no need for JPA entities)