Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JAX_-_Architekturen_für_die_Digitalisierung.pdf

 JAX_-_Architekturen_für_die_Digitalisierung.pdf

Präsentation auf der JAX 2019 in Mainz

Avatar for Stephan Kaps

Stephan Kaps

May 07, 2019

Other Decks in Programming

Transcript

  1. Stephan Kaps Leiter Softwareentwicklung Bundesversicherungsamt Gründer Java User Group Bonn

    Java Entwickler & Architekt seit 2002 Weitere Schwerpunkte: - Softwareentwicklungsprozesse - BizDevSecOps - OpenSource - Speaker & Autor @kitenco1 07.05.2019
  2. Wer sind wir uns was machen wir? (Aufsichts-) Behörde mit

    ca. 600 Mitarbeiter ca. 60 Fachanwendungen (Produkte) für interne Fachbereiche & Landesprüfdienste 10 Entwickler und 2 Product Owner 2 parallele Sprints noch einige Legacy VB/.NET Apps
  3. - Modularity - Information Hiding - Loosely coupled - Highly

    maintainable and testable - Independently deployable - Enables the continuous delivery/deployment of large, complex applications - Enables an organization to evolve its technology stack - Organized around business capabilities Why Microservices?
  4. Process Transparency State Machine Rules / Decision Automation Long (&

    Short) Running Tasks Human Interaction Microservice Orchestration
  5. OpenSource Lightweight Workflow & Decision automation BPMN, DMN, CMMN Microservice

    orchestration REST & Java API Additional Apps Why Camunda?
  6. @Named public class DmsFileCreateOrUpdateDelegate extends CamundaEndpoint implements JavaDelegate { ...

    @Override @Transactional(Transactional.TxType.REQUIRES_NEW) @Interceptors(CamundaLoggerIntercept.class) public void execute(DelegateExecution execution) throws Exception { try { Long mfdId = getMfdId(execution); Akte akte = antragService.createOrUpdateAkte(mfdId); execution.setVariable(ATTRIB_AKTENZEICHEN, akte.getGeschaeftszeichen()); } catch (Exception e) { createIncident(e, execution); } } }
  7. Microservices Logging BPMN-Workflows Spring Boot Docker Consul Vault Grafana Keycloak

    Elastic Stack Camunda REST APIs Resilience Wildfly Portainer Java Nginx
  8. • Architektur "im Kleinen" • das Team kann eine geeignete

    Lösung für ein konkretes Problem festlegen. Diese muss sich lediglich im Rahmen der Makro- Architektur bewegen Vorteile: Vorteile: Vorteile: • Neue Trends lassen sich schneller aufgreifen • Fehlentscheidungen haben geringere Relevanz • Geringere Abhängigkeit von einzelnen Lieferanten ... Mikro-Architektur Makro-Architektur • Architektur "im Großen" • Einheitlichkeit und Standards Vorteile: Vorteile: Vorteile: • Entwickler wechseln leicht zwischen Teams und Projekten • Konzentration auf Applikationsspezifika (z.B. Fachlichkeit) leichter möglich • Wiederverwendung von techn. Lösungen • Vermeidung von Fehlern in kritischen Bereichen durch erprobte Konzepte • Geringere Kosten durch weniger Produkte (Lizenzen, Ausbildung von Spezialisten)
  9. • Architektur "im Kleinen" • das Team kann eine geeignete

    Lösung für ein konkretes Problem festlegen. Diese muss sich lediglich im Rahmen der Makro- Architektur bewegen Vorteile: Vorteile: Vorteile: • Neue Trends lassen sich schneller aufgreifen • Fehlentscheidungen haben geringere Relevanz • Geringere Abhängigkeit von einzelnen Lieferanten • ... Mikro-Architektur Makro-Architektur • Architektur "im Großen" • Einheitlichkeit und Standards Vorteile: Vorteile: Vorteile: • Entwickler wechseln leicht zwischen Teams und Projekten • Konzentration auf Applikationsspezifika (z.B. Fachlichkeit) leichter möglich • Wiederverwendung von techn. Lösungen • Vermeidung von Fehlern in kritischen Bereichen durch erprobte Konzepte • Geringere Kosten durch weniger Produkte (Lizenzen, Ausbildung von Spezialisten)
  10. Java Web Anwendungen Authentifizierung / Autorisierung per Keycloak Schnittstellen als

    REST Apis wo möglich, Microservices einsetzen Oberflächen-Technologie und Design Ausnahme- und Fehlerbehandlung Persistenz (Hibernate) Entwicklungswerkzeuge (Versionsverwaltung, Build-Management, Tests, ...) Vorgehen (Scrum, BDD, ..) Logging, Tracing, Resilienz Zielumgebung, Virtualisierung, Container Deployment, Verfügbarkeit, Recovery ... Makro-Architektur-Leitlinien
  11. • Vertikaler Schnitt mit Frontend, Backend, Datenhaltung • Kommunizieren mit

    anderen SCSs, wenn nötig, asynchron über APIs • Teilen keine Geschäftslogik mit anderen SCSs • Teilen keine Infrastruktur mit anderen SCSs • Gemeinsame (technische) Bibliotheken können genutzt werden, z.B. oAuth Client • Ein SCS ist „klein genug“, dass es von einem Team betreut werden kann • Möglichst viele Faktoren des 12factor- manifests: https://12factor.net/de/ Self-Contained Systems
  12. Evolving Architecture incremental change in an architecture over time -

    Number of µ-Services - Use of Service Discovery - Technology Decisions - Moving Boundaries - Maybe µ-Service will be Services - Communication Styles - ...
  13. "Die Rückkehr zu pragmatischen, einfachen, dem tatsächlich identifizierten Problem angemessenen

    Lösungen im Kleinen anstelle generischer, eierlegender Wollmilchsäue!" – S. Tilkov
  14. 9 Uhr 10 Uhr 11 Uhr 12 Uhr 13 Uhr

    14 Uhr 15 Uhr 16 Uhr 17 Uhr Inno-Day Wartung Review Retro Refine- ment Projekt X Refine- ment Projekt Y Code Review TechTalk Wartung
  15. 2FA

  16. Zukunft - weg von Application Servern mit mehreren Anwendungen -

    alles in Containern - hin zu Self-Contained-Systems - Einsatz von Vault ausweiten - Continuous Deployment - Service Mesh - Quarkus.io & MicroProfile - UI-Tests - Docker Swarm
  17. Nicht erwähnt - Testautomatisierung - Cucumber - Pact - Zed

    Attack Proxy - OWASP Dependency Check - (Automatisierte) Dokumentation - arc42 - Asciidoctor - Automatisierung der Infrastruktur - Flyway - Ansible - Lean EAM