FAE WS 20/21 - Knowledge Map
Diese Seite versucht sich an einer "Knowledge Map" für diese Veranstaltung. Sie enthält zwei Informationen:
- Die Selbsteinschätzung der Teilnehmenden, welchen Grad an Vertrautheit sie mit Teilaspekten der Architektur haben. Das abgefragte Raster listete sowohl zentrale Prinzipien und Konzepte wie auch wichtige Technologien und Tools in diesem Bereich.
- Materialien zum Selbstlernen sowie Literaturhinweise, um sich die entsprechenden inhaltlichen Bereiche zu erschließen.
Legende für Umfrage
Die Ergebnisse der Umfrage sind nach folgenden Farbschlüssel dargestellt:
Agiles Projektvorgehen
(nicht in der Umfrage abgefragt)
Prinzipien der agilen Entwicklung
- Inhaltsimpuls Bente: https://ilias.th-koeln.de/goto.php?target=file_1800072_download&client_id=ILIAS_FH_Koeln
- Scrumguide: https://www.scrumguides.org/
Tools zur Taskplanung
- Zenhub + Github Issues
- JIRA
- Trello
SW-Development
Java und Git sind gut vertraut, Spring nicht durchgehend.
Entwicklung mit Spring (Spring Data JPA, Web MVC, Data REST)
- Video zu Grundlagen des Object-Relational Mappings: ORM und Repositories
- Video zu "Getting Started" mit Spring: Spring Data JPA in Action
- Video: Value Objects in Spring Data JPA
- Beziehungen zwischen Entities
- Video: Beziehungen zwischen Entities mit Spring Data JPA persistent machen
- Video: Warum sollte man zwischen Entities unidirektionale Beziehungen modellieren - Warum unidirektionale Beziehungen im Logischen Datenmodell?
- Bei speziellen Problemen
- Sehr gute Online-Dokumentation
- Spring selbst
- Baeldung
- Stackoverflow
- selbst gezielt suchen, Google-Suche reicht
- Sehr gute Online-Dokumentation
Domain-Driven Design (DDD)
Durchgehend ähnliches Bild: Konzepte sind bekannt, aber nicht durchgehend vertraut und schon aktiv benutzt
Allgemeine Grundlagen Domain-Driven Design
- Video: Eine kurze Einführung in Domain-Driven Design (DDD)
- Video: DDD Building Blocks und Strategic Design
- Evans-Kurzreferenz: https://www.domainlanguage.com/wp-content/uploads/2016/05/DDD_Reference_2015-03.pdf
Entitites und Value Objects
- Video: Entities und Value Objects
Bounded Contexts & Context Maps
Domain- und Application Services
Architekturstile großer Softwaresysteme
- Wenig Vertrautheit mit Microservice und Modulith
- klassischer Monolith eher vertraut, aber Begriff nicht durchgängig gebräuchlich?
Schichtenarchitektur nach DDD
- Schichtenarchitektur nach DDD (Domain & Application Layer)
Microservices / "Modulith" (Monolith mit striktem fachlichen Schnitt)
- Warum Modulith oder Microservice?
APIs (REST oder Alternativen)
- Etwa die Hälfte der Teilnehmenden hat aktiv Berührung gehabt, aber tiefe Vertrautheit ist selten.
- GraphQL ist fast durchgehend unbekannt
Aggregates als DDD-Grundlagen für REST
- Inhaltsimpuls Bente: Aggregate-Konzept in DDD
- Folien: https://ilias.th-koeln.de/goto.php?target=file_1807388_download&client_id=ILIAS_FH_Koeln
- Vorlesungsmitschnitt ST2 (nicht nachbearbeitet!)
https://vimeo.com/416975550 (Teil 1)
https://vimeo.com/416956143 (Teil 2)
Prinzipien eines "guten" REST-API-Designs
- Original-Quellen von Fielding zu REST:
- Fielding, Roy T., & Taylor, R. N. (2002). Principled design of the modern Web architecture. ACM Transactions on Internet Technology (TOIT), 2(2), 115–150.
- Fielding, Roy Thomas. (2000). Architectural styles and the design of network-based software architectures. University of California, Irvine.
- Inhaltsimpuls Bente: Grundlagen von REST (Prinzipien von REST und Maturity Levels nach Richardson, Regeln und Konventionen)
- Folien: https://ilias.th-koeln.de/goto.php?target=file_1807406_download&client_id=ILIAS_FH_Koeln
- Bente, Vorlesungsmitschnitte ST2 (nicht nachbearbeitet!)
Grundlagen von REST, https://vimeo.com/420759314
Standards und Regeln bei REST, https://vimeo.com/422898267
- REST Level 3, https://vimeo.com/429656995
Implementieren von REST mit Spring (Web MVC oder Data REST)
- Bente, Vorlesungsmitschnitte ST2 (nicht nachbearbeitet!)
Coding REST Level 2 mit Spring Web MVC, Teil 1, https://vimeo.com/423398203
Coding REST Level 2 mit Spring Web MVC, Teil 2, https://vimeo.com/424206761
Coding REST Level 2 mit Spring Web MVC, Teil 3, https://vimeo.com/427357342
- Coding REST Level 3, Happy Path, https://vimeo.com/434306336
Coding REST Level 3, Sonderfälle, https://vimeo.com/438723246
GraphQL (als mögliche Alternative zu REST)
Prinzipien der API-Entwicklung (API first / Code first)
Formate / Tools für Dokumentation von REST APIs
Asynchrone Kommunikation (Events)
- Durchgehend wenig Vertrautheit mit Konzepten und Technologien
- tbd:
- gezielte Recherche in den SIGs
- Information der restlichen Teilnehmenden auf diesem Weg
Methoden der Erhebung fachlicher Events (z.B. Event Storming)
Prinzipien des Eventings (Event-Carried State Transfer, Event Sourcing, Event Notification)
Apache Kafka
Spring Boot Application Events
Formate / Tools für Dokumentation von Events
DevOps
- uneinheitliches Build: einige Teilnehmenden sind vertraut mit vielen der Themen, viele nicht
- Build Tools scheinen (relativ) gut vertraut
- Docker, staging, hosting - gemischtes Bild
- Kubernetes: generell wenig Vertrautheit
- tbd:
- "learning by doing"
- bei einigen Themen ist das leichter als bei anderen
- "Basis-Set" an Wissen
- arbeitsteiliges Vorgehen
- Developer Guide für DevOps-Themen
- "learning by doing"
Build Tools (Maven, Gradle, ...)
Build Pipeline (Jenkins, ...)
Docker
Kubernetes
Staging-Konzepte (Dev- / Prod-Umgebungen)
Hosting von SW-Applikationen (VMs, Cloud, ...
Testing
- Unit Tests gute Vertrautheit, Integration Tests schon weniger
- Events und Test Data Management weitgehend blank
- tbd:
- Videos zum Selbststudium
- ?
Unit Tests mit JUnit
Integration Testing von APIs
Integration Testing von Events
Test Data Management
Literatur
Hier ist eine umfangreiche Liste von Literatur zur Veranstaltung. Fettgedruckte Autorennamen bedeuten, dass die Publikation in der Veranstaltung eine besondere Rolle spielen wird.
- Balzert, H. (2011). Lehrbuch der Softwaretechnik: Entwurf, Implementierung, Installation und Betrieb (3. Aufl. 2012). Spektrum Akademischer Verlag.
- Bente, S., Deterling, J., Reitano, M., & Schmidt, M. (2020, March 27). Sieben Weggabelungen—Wegweiser im DDD-Dschungel. JavaSPEKTRUM, 2020(02), 28–31.
- Bloomberg, J. (2013). The Agile Architecture Revolution: How Cloud Computing, REST-Based SOA, and Mobile Computing Are Changing Enterprise IT (1. Auflage). John Wiley & Sons.
- Dowalil, H. (2019). Modulith First! Der angemessene Weg zu Microservices. Informatik Aktuell. https://www.informatik-aktuell.de/entwicklung/methoden/modulith-first-der-angemessene-weg-zu-microservices.html
- Esposito, D., & Saltarello, A. (2014). Discovering the Domain Architecture. In Microsoft .NET - Architecting Applications for the Enterprise (2nd edition). Microsoft Press. https://www.microsoftpressstore.com/articles/article.aspx?p=2248811&seqNum=3
- Evans, E. (2015). Domain-Driven Design Reference—Definitions and Pattern Summaries. Domain Language, Inc. http://domainlanguage.com/wp-content/uploads/2016/05/DDD_Reference_2015-03.pdf
- Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software (1 edition). Addison-Wesley Professional.
- Fielding, Roy T., & Taylor, R. N. (2002). Principled design of the modern Web architecture. ACM Transactions on Internet Technology (TOIT), 2(2), 115–150.
- Fielding, Roy Thomas. (2000). Architectural styles and the design of network-based software architectures. University of California, Irvine.
- Fowler, M. (2002). Patterns of Enterprise Application Architecture (1 edition). Addison-Wesley Professional.
- Fowler, M. (o.J.). Data Transfer Object. https://martinfowler.com/eaaCatalog/dataTransferObject.html
- Fowler, M. (2010, March 18). Richardson Maturity Model. Martinfowler.Com. https://martinfowler.com/articles/richardsonMaturityModel.html
- Fowler, M. (2014, January 15). Bounded Context. Martinfowler.Com. https://martinfowler.com/bliki/BoundedContext.html
- Fowler, M. (2017, February 7). What do you mean by “Event-Driven”? Martinfowler.Com. https://martinfowler.com/articles/201701-event-driven.html
- Fowler, M. (2018). Refactoring: Improving the Design of Existing Code (2nd ed.). Addison-Wesley Professional.
- Gauder, S. (2019, April 1). A competitive food retail architecture with microservice. microxchg 2019. https://speakerdeck.com/rattakresch/microxchg-2019-a-competitive-food-retail-architecture-with-microservice
- Goll, J. (2014). Architektur- und Entwurfsmuster der Softwaretechnik. Springer Fachmedien Wiesbaden. http://link.springer.com/10.1007/978-3-658-05532-5
- Graca, H. (2017, November 16). DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together. @hgraca. https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
- Holmström, P. (2020). Domain-Driven Design and the Hexagonal Architecture. Vaadin. https://vaadin.com/learn/tutorials/ddd/ddd_and_hexagonal
- Jackson, C. (2019, June 19). Micro Frontends. Martinfowler.Com. https://martinfowler.com/articles/micro-frontends.html
- Levin, G. (2017, March 25). Internal vs. External APIs. REST API and Beyond. http://blog.restcase.com/internal-vs-external-apis/
- Lilienthal, C. (2015). Langlebige Software-Architekturen: Technische Schulden analysieren, begrenzen und abbauen (1st ed.). dpunkt.verlag GmbH.
- Lilienthal, C. (2019, March 25). Von Monolithen über modulare Architekturen zu Microservices mit DDD. JAX 2020. https://jax.de/blog/microservices/von-monolithen-ueber-modulare-architekturen-zu-microservices-mit-ddd/
- Martin, R. C. (2017). Clean Architecture: A Craftsman’s Guide to Software Structure and Design (01 ed.). Prentice Hall.
- Massé, M. (2011). REST API Design Rulebook (1st ed.). O’Reilly and Associates.
- Müller, F. (2017, November 10). How to be an Architect in an Agile World. 17. Arbeitstreffen User Group Architekturmanagement, Softwareforen Leipzig. https://www.softwareforen.de/portal/Veranstaltungen/User-Groups/Architekturmanagement/Startseite.xhtml
- Newman, S. (2015). Building Microservices (1st ed.). O’Reilly and Associates.
- Richardson, C. (2015, May 19). Introduction to Microservices. NGINX. https://www.nginx.com/blog/introduction-to-microservices/
- Richardson, C. (2018). Microservice Patterns. Manning.
- Samokhin, V. (2018, January 18). DDD Strategic Patterns: How to Define Bounded Contexts - DZone Microservices. Dzone.Com. https://dzone.com/articles/ddd-strategic-patterns-how-to-define-bounded-conte
- Starke, G. (2015). Effektive Softwarearchitekturen: Ein praktischer Leitfaden (7th ed.). Carl Hanser Verlag GmbH & Co. KG.
- Steinacker, G. (2016, March 20). Why Microservices? Dev.Otto.De. https://dev.otto.de/2016/03/20/why-microservices/
- Sturgeon, P. (2017, January 24). GraphQL vs REST: Overview. Phil Sturgeon. https://philsturgeon.uk/api/2017/01/24/graphql-vs-rest-overview/
- Tilkov, S., Eigenbrodt, M., Schreier, S., & Wolf, O. (2015). REST und HTTP: Entwicklung und Integration nach dem Architekturstil des Web (3., akt. u. erw. Aufl.). dpunkt.verlag GmbH.
- Toth, S. (2015). Vorgehensmuster für Softwarearchitektur: Kombinierbare Praktiken in Zeiten von Agile und Lean (2., aktualisierte und erweiterte Auflage). Carl Hanser Verlag GmbH & Co. KG.
- Vernon, V. (2013). Implementing Domain-Driven Design (01 ed.). Addison Wesley.
- Wolff, E. (2015). Microservices: Grundlagen flexibler Softwarearchitekturen (1., Auflage). dpunkt.verlag.
- Wolff, E. (2016b, November 29). Self-contained Systems: A Different Approach to Microservices. InnoQ Blog. https://www.innoq.com/en/articles/2016/11/self-contained-systems-different-microservices/
- Zörner, S. (2015). Softwarearchitekturen dokumentieren und kommunizieren: Entwürfe, Entscheidungen und Lösungen nachvollziehbar und wirkungsvoll festhalten (2., überarbeitete und erweiterte Auflage). Carl Hanser Verlag GmbH & Co. KG.