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

Architekturikonen in Software. Wegweisende Lösu...

Architekturikonen in Software. Wegweisende Lösungen im Porträt

Folien zum Vortrag beim Software Architecture Meetup
Nürnberg, 03. Dezember 2024

Abstract
Die Architekturkritik bezeichnet bahnbrechende Bauwerke als Architekturikonen. Sie sind wegweisend, stilbildend, populär – jeder Mensch kennt sie. Den Kölner Dom etwa. Oder den Eiffelturm.
In diesem Vortrag greift Stefan Zörner den Begriff auf und diskutiert die Lösungsstrategien einiger prominenter Softwarelösungen. Er stellt den Architekturzielen die gewählten Entwurfsentscheidungen gegenüber und macht auf diese Weise das Geheimnis ihres Erfolges sichtbar. Euch erwartet eine kleine Galerie prägnanter Architektur-Porträts vom Framework bis zum Quelltext-Editor, von 2002 bis 2020. Was ist die Sydney-Oper der Softwarearchitektur?

Weitere infos
https://www.embarc.de/architekturikonen-szoerner-swa-meetup-n-2024/

Avatar for Stefan Zörner

Stefan Zörner

December 03, 2024
Tweet

More Decks by Stefan Zörner

Other Decks in Technology

Transcript

  1. 0 Wegweisende Lösungen im Porträt embarc.de embarc Architekturikonen in Software.

    Wegweisende Lösungen im Porträt Software Architecture Meetup Nürnberg, 03. Dezember 2024 Stefan Zörner, embarc
  2. 1 Wegweisende Lösungen im Porträt embarc.de Abstract Architekturikonen in Software.

    Wegweisende Lösungen im Porträt Die Architekturkritik bezeichnet bahnbrechende Bauwerke als Architekturikonen. Sie sind wegweisend, stilbildend, populär – jeder Mensch kennt sie. Den Kölner Dom etwa. Oder den Eiffelturm. In diesem Vortrag greift Stefan Zörner den Begriff auf und diskutiert die Lösungsstrategien einiger prominenter Softwarelösungen. Er stellt den Architekturzielen die gewählten Entwurfsentscheidungen gegenüber und macht auf diese Weise das Geheimnis ihres Erfolges sichtbar. Euch erwartet eine kleine Galerie prägnanter Architektur-Porträts vom Framework bis zum Quelltext-Editor, von 2002 bis 2020. Was ist die Sydney-Oper der Softwarearchitektur?
  3. 2 Wegweisende Lösungen im Porträt embarc.de Stefan Zörner § Softwarearchitekt

    bei embarc in Hamburg § Vorher Bayer AG, Mummert + Partner, IBM, oose, ... Schwerpunkte § Softwarearchitektur (Entwurf, Bewertung, Dokumentation) § Cloud-Technologien
  4. 4 Wegweisende Lösungen im Porträt embarc.de Architekturikonen bei Gebäuden „Architekturikone

    ist ein Begriff aus der Architekturkritik und bezeichnet Bauwerke, die wegweisend sind beziehungsweise waren oder aufgrund ihrer Gestaltung Einzigartigkeit beanspruchen.“ (Wikipedia)
  5. 5 Wegweisende Lösungen im Porträt embarc.de Architekturikonen „… Diese herausragenden

    Bauwerke, Gebäude und Ensembles erfüllen mehrere der folgenden Kriterien: ▪ allgemeine Anerkennung ▪ Popularität ▪ Originalität ▪ Symbolwert ▪ Bedeutung für die Entwicklung der Architektur ▪ repräsentativ für einen Architekturstil“
  6. 6 Wegweisende Lösungen im Porträt embarc.de Was erwartet Euch in

    diesem Vortrag? ▪ Fünf Kurzporträts prominenter (wegweisender) Softwaresysteme der letzten zwei Jahrzehnte. ▪ Jeweils eine kurze Einordnung, die Architekturziele und die zentralen Lösungsansätze. Plus Informelle Architekturüberblicke (Bilder) ▪ Anregungen, wie Ihr die Architektur von Softwaresystemen prägnant festhaltet.
  7. 7 Wegweisende Lösungen im Porträt embarc.de 5 Software-Gattungen Die gezeigten

    Softwarelösungen sind sehr unterschiedlich … ▪ Applikationsframework ▪ Mobiler Instant-Messenger ▪ Programmiersprache ▪ Quelltexteditor ▪ Statischer Site-Generator (alphabetisch sortiert)
  8. 8 Wegweisende Lösungen im Porträt embarc.de 5 Programmiersprachen … sie

    sind in unterschiedlichen Programmiersprachen entwickelt: ▪ C ▪ Go ▪ Java ▪ Swift ▪ TypeScript (alphabetisch sortiert)
  9. 9 Wegweisende Lösungen im Porträt embarc.de 5 Erscheinungsjahre … und

    in unterschiedlichen Zeiten veröffentlicht worden ▪ 2002 ▪ 2009 ▪ 2012 ▪ 2013 ▪ 2015 (chronologisch sortiert)
  10. 10 Wegweisende Lösungen im Porträt embarc.de 01. Porträt #1 Das

    Applikations-Framework „Spring“, initiiert von Rod Johnson (Interface 21)
  11. 11 Wegweisende Lösungen im Porträt embarc.de Zeitliche Einordnung, Porträt #1

    2000 2010 2005 2015 2020 Das Spring Framework, veröffentlicht: 2002
  12. 12 Wegweisende Lösungen im Porträt embarc.de Die Java-Welt 2002 und

    Kritik an J2EE Java um die Jahrtausendwende ▪ Technologie ist ausgewachsen (Sprache seit 1995 verfügbar) ▪ Unternehmen beginnen geschäftskritische Anwendungen in Java zu realisieren ▪ Standard-Java dazu: J2EE („Enterprise Edition“) Kritik an J2EE ▪ Geringe Entwicklerproduktivität ▪ Einfache Dinge nicht angemessenen leicht, das galt insbesondere für das Komponentenmodell EJB ▪ Prominente Stimme: Rod Johnson
  13. 13 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele des Spring

    Frameworks Zukunftsfähiges Framework Hohe Entwicklerproduktivität Unternehmenskritische Anwendungen ermöglichen Auf lange Sicht wartbare Lösungen Portable und kompatible Arbeitsergebnisse
  14. 14 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele des Spring

    Frameworks Ziel Beschreibung (und zugehöriges Software-Qualitätsmerkmal) Hohe Entwickler- produktivität Anwendungen auf Basis von Spring lassen sich effizient entwickeln. Java-Entwickler kommen gut mit dem Framework zurecht. Die dahinterliegenden Konzepte sind schnell verstanden und kein Hexenwerk. Entwickler konzentrieren sich auf die Fachlogik. (Wartbarkeit, Benutzbarkeit (aus Entwicklersicht)) Unternehmens- kritische Anwendungen ermöglichen Spring erlaubt die Entwicklung von zuverlässigen und sicheren Applikationen, wie sie Unternehmen und Organisationen zur Unterstützung wichtiger Geschäftsfähigkeiten erwarten. (Zuverlässigkeit, Sicherheit) Auf lange Sicht wartbare Lösungen Mit Spring realisierte Anwendungen sind leicht erweiterbar und änderbar. Genutzte Technologien (z.B. Bibliotheken, Middleware, Persistenz) lassen sich einfach aktualisieren und zu einem gewissen Grad auch austauschen. Das gilt insbesondere für Spring selbst. (Erweiterbarkeit. Änderbarkeit) Portable und kompatible Arbeitsergebnisse Die Anwendungen sind auf allem relevanten Zielplattformen lauffähig (Applikationsserver wie z.B. WebSphere, Web-App-Server wie Tomcat, Standalone als Java-Prozess ...). Neue Java- oder Spring-Versionen brechen eine vorhandene Anwendung nicht. (Kompatibilität, Portierbarkeit) Zukunftsfähiges Framework Spring kann dem technologischen Fortschritt folgen. Neue Produkte, Entwicklungsmethoden und Zielumgebungen sind rasch adaptiert. Die Entscheidung für Spring ist keine Sackgasse. (Wartbarkeit (des Frameworks selbst))
  15. 15 Wegweisende Lösungen im Porträt embarc.de Zentrale Lösungsansätze von Spring

    Dependency Injection zur Entkopplung, Lightweight Container Gute Unterstützung für Unit- und Integrationstests Aspektorientierte Programmierung (AOP) für Transaktionen, Security ... "entrümpelt" Fachlogik Konfiguration / Meta- Daten externalisiert (XML, u.a., später u.a. auch mit Annotationen) Nutzung und Ergänzung verbreiteter (Java-) Standards wie Servlets, JDBC, JTA, ... Integration etablierter Open-Source- Bibliotheken und Frameworks POJOs (JavaBeans) als "Spring-Komponenten" (keine Abhängigkeit zum Framework, nicht invasiv) Abstraktion von Technologien, z.B. über Templates, vereinfachte APIs Auf lange Sicht wartbare Lösungen Portable und kompatible Arbeitsergebnisse Hohe Entwicklerproduktivität Unternehmenskritische Anwendungen ermöglichen Zukunftsfähiges Framework Betonung von Java und "klassischem" OO und Vermeidung server- spezifischen Komponenten- modellen wie EJB Einsatz bekannter Entwurfsmuster, inkl. entsprechender Benennung (z.B. Prototype, Adapter ...) Klare Trennung von fachlichem und technischem Code möglich. Modularer Aufbau des Frameworks Durchgängige Konzepte wie Templates, Repositories ... Entkopplung des Frameworks von spezifischen Java- und Server-Versionen Zuordnung zu Zielen (Farbcode)
  16. 16 Wegweisende Lösungen im Porträt embarc.de Datenbank z.B. MySQL z.B.

    ActiveMQ Messaging z.B. OpenLDAP Verzeichnisdienst POJOs der Applikation Spring Beans Entitäten Dependency Injection Erzeugen der POJOS, Abhängigkeiten, Parameter Konfiguration Bereitstellen von Front- und Backend-Technologien. z.B. als Spring-Beans. Templates, Adapter, Aspekte .... Konzepte Beispiel-Technologien REST Servlets Filter Services Templates Controller DAOs Entities JTA JSP Hibernate JDBC JMS JNDI Integration Backend Geschäftlogik Web Aspekte (AOP) Logging Transaktionen Security Dekorieren der POJOs mit übergreifenden Themen, z.B. Spring Lightweight Container auf einer Java VM z.B. in Tomcat API-Client z.B. Mobile-App Web-Browser z.B. Firefox Eine Web-Anwendung im Rahmen von Spring
  17. 17 Wegweisende Lösungen im Porträt embarc.de Das Spring Framework ca.

    2004 Abkürzungen (Auswahl) DAO Data Access Object ORM Objekt-/Relationales Mapping AOP Aspekt-orientierte Programmierung JEE Java Enterprise Edition JPA Java Persistence API JMS Java Message Service EJB Enterprise JavaBeans MVC Model View Controller JSF JavaServerFaces JSP JavaServerPages IoC Inversion of Control
  18. 18 Wegweisende Lösungen im Porträt embarc.de von 2004 nach 2024

    … Projekte des Spring Ökosystems (Winter 2024) Spring Framework ca. 2004
  19. 20 Wegweisende Lösungen im Porträt embarc.de Steckbrief: Spring Framework Software-Gattung

    : Applikationsframework Veröffentlicht : 2002 (Version 1.0 2004) Herkunft / Ursprung : Interface21 (später VMWare), Open Source (Apache License) Zielplattform : Java (JVM), plattformunabhängig Programmiersprache(n) : Java Homepage : ➔ https://spring.io Vermächtnis (Warum bemerkenswert?) ▪ Stilbildend für Unternehmensanwendungen in Java und Java EE ▪ über Java hinaus: Etablieren von Dependency Injection und AOP
  20. 21 Wegweisende Lösungen im Porträt embarc.de 02. Porträt #2 Der

    statische Webseiten- Generator „Hugo“, initiiert von Steve Francia, Open Source.
  21. 22 Wegweisende Lösungen im Porträt embarc.de Zeitliche Einordnung, Porträt #5

    2000 2010 2005 2015 2020 Das Spring Framework, veröffentlicht: 2002 Statischer Site-Generator Hugo veröffentlicht: 2013
  22. 23 Wegweisende Lösungen im Porträt embarc.de „Klassische“ Web Content Management

    Systeme Vier Prominente Vertreter, alle auf PHP-Basis ▪ TYPO3 (1998) ▪ Drupal (2001) ▪ WordPress (2003) ▪ Joomla (2005) Typische Herausforderungen im Server-Betrieb ▪ für die Inhalte in der Regel eine relationale Datenbank erforderlich ▪ eine Ablaufumgebung ist zu installieren und aktuell zu halten. ▪ Software und Plugins sind aktuell zu halten (Sicherheitsrisiken) ▪ Anspruchsvolle Konfiguration für hocheffiziente Seiten auch bei hoher Last
  23. 24 Wegweisende Lösungen im Porträt embarc.de Eigenschaften Statischer Website-Generatoren Development-Server

    Einfacher HTTP-Server zum lokalen Testen und Debuggen der generierten Seiten in kurzen Entwicklungszyklen. Erweiterbare Architektur Konzepte (z.B. Plugins), um die Funktionalität des Generators oder die Template-Sprache zu ergänzen oder anzupassen. Build-Prozess Generieren der statischen Website mit aussagekräftigen Log- und ggf. Fehlermeldungen. Integration in CI/CD- Pipelines. Text-Dateien als Input Inhalte der Website in text-basiertem Dateiformat, z.B. Markdown, (Meta-) Daten z.B. in JSON oder YAML. Template-Sprache Vorlagen zur Seiten-erzeugung, Dynamisierung über eine Skriptsprache, Platzhalter ... Kommandozeile Das Tool starten und steuern einfach über die Kommandozeile. Keine GUI — Headless.
  24. 26 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele von Hugo

    Hugo selbst erweitern Moderne Seiten einfach bauen, in allen Lebenslagen Ultrakurze Verarbeitungszeit Sichere Websites erstellen und betreiben Betreibbar auf allen möglichen Systemen
  25. 27 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele von Hugo

    Ziel Beschreibung (und zugehöriges Software-Qualitätsmerkmal) Moderne Seiten einfach bauen, in allen Lebenslagen Hugo ermöglicht es technisch versierten Menschen zeitgemäße Websites zu erstellen und zu pflegen – in kürzester Zeit und mit viel Spaß. Egal, ob es sich um einen Blog, einen überzeugenden Marketingauftritt oder eine umfangreiche Software- Dokumentation handelt. (Benutzbarkeit aus Entwicklersicht) Ultrakurze Verarbeitungszeit Hugo zeichnet sich durch eine sehr hohe Verarbeitungsgeschwindigkeit aus, sowohl während des Bearbeitungs- und Entwicklungsprozesses als auch bei der Erstellung einer Website für die Produktion. (Effizienz) Sichere Websites erstellen und betreiben Mit Hugo gebaute Websites sind sehr schwer zu kompromittieren. Verbundene Hintergrundsysteme sind sicher vor Angriffen aller Art. Es ist mit Hugo einfach, den Datenschutz einzuhalten. (Sicherheit) Betreibbar auf allen möglichen Systemen Hugo läuft auf allen relevanten Betriebssystemen und Plattformen. Dies gilt sowohl für die Entwicklung einer Website als auch für den Live-Betrieb in Produktion. (Portierbarkeit, Kompatibilität) Hugo selbst erweitern Das Hugo-Team und die Community können die Software problemlos erweitern. Dazu gehören zum Beispiel die Unterstützung neuer Inhaltstypen, die Anbindung an Systeme von Drittanbietern und die Berücksichtigung neuer Trends bei User Experience oder Web- Design. (Wartbarkeit)
  26. 31 Wegweisende Lösungen im Porträt embarc.de Steckbrief: Hugo Software-Gattung :

    Statischer Website-Generator Veröffentlicht : 2013 Herkunft / Ursprung : initiiert von Steve Francia, Open Source (Apache 2.0 Lizenz) Zielplattform : Cross-Plattform (Linux, Windows, MacOS …) Programmiersprache(n) : Go Homepage : ➔ https://gohugo.io Vermächtnis (Warum bemerkenswert?) ▪ was Bekanntheit und Verbreitung angeht herausragender Vertreter der statischen Website Generatoren ▪ Die Gattung hat auch große Bedeutung für Doc-As-Code-Ansatz
  27. 32 Wegweisende Lösungen im Porträt embarc.de 03. Porträt #3 Der

    Quelltexteditor Visual Studio Code. Unter Leitung von Erich Gamma, Microsoft.
  28. 33 Wegweisende Lösungen im Porträt embarc.de Spektrum der Quelltexteditoren Ausgewachsenen

    Entwicklungs- umgebungen (kurz IDEs) wie Eclipse (2001) oder Visual Studio von Microsoft für .NET. Reine Texteditoren wie vi (1976) oder Sublime (2008), ggf. mit Programmiersprachen- unterstützenden Features VS Code: Ein neuer Spieler auf dem Platz ▪ Im Spektrum näher an reinen Texteditoren ▪ Ursprünglich als Editor im Browser von einem Team um Erich Gamma bei Microsoft konzipiert
  29. 35 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele von Visual

    Studio Code Gute Wartbarkeit der Plattform, auch in Zukunft Überzeugendes Benutzungserlebnis beim Programmieren Leicht zu erweitern, auch durch Dritte Bestmöglich auf allen relevanten Zielumgebungen Verlässlicher Betrieb
  30. 36 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele von Visual

    Studio Code Ziel Beschreibung (und zugehöriges Software-Qualitätsmerkmal) Überzeugendes Benutzungserlebnis beim Programmieren Mit VS Code lässt sich Quelltext intuitiv und effizient bearbeiten. Das Werkzeug punktet bei Entwicklern durch kaum spürbare Start- und Antwortzeiten, etwa beim Refactoring. (Benutzbarkeit, Effizienz) Leicht zu erweitern, auch durch Dritte VS Code lässt sich leicht um neue Sprachen oder Funktionen erweitern, durch uns und auch die Community oder unsere Partner. Entwicklungsnahe Tools sind bei Bedarf rasch angebunden. (Erweiterbarkeit) Bestmöglich auf allen relevanten Zielumgebungen VS Code läuft anstandslos auf allen verbreiteten Desktop-Betriebssystemen – Windows, macOS, Linux. Und zwar so, wie es Nutzer des jeweiligen Betriebssystems erwarten. Auch remote Deployment-Szenarien sind mit der Lösung darstellbar. (Portierbarkeit, Kompatibilität) Verlässlicher Betrieb VS Code ist ein sehr zuverlässiges Werkzeug. Nutzer setzen darauf, dass ihre Arbeitsergebnisse selbst bei Abstürzen oder anderen Störungen (z.B. Verbindungsabbrüchen) sicher sind. (Zuverlässigkeit) Gute Wartbarkeit der Plattform, auch in Zukunft VS Code selbst lässt sich auch über einen langen Zeitraum warten und weiterentwickeln. Die Lösung bleibt über viele Jahre zukunftsfähig. (Wartbarkeit)
  31. 37 Wegweisende Lösungen im Porträt embarc.de Verwendung von Electron als

    UI- Framework "Extension Isolation" -- Extensions laufen im eigenen Prozess (nicht im Core) Entwicklung in TypeScript Zugriff auf Command Line ("Terminal") integriert Unterstützung für wichtige Werkzeuge wie Git out-of-the- box Language Server Protocol, ermöglicht Extensions in beliebigen Sprachen Extension Mechanismus node.js im Hintergrund, für Zugriff auf Native OS-Ressourcen + Node Ecosystem Market Place für Extensions Entwicklung Open Source, dadurch rasches Feedback Überzeugendes Benutzungserlebnis beim Programmieren Leicht zu Erweitern, auch durch Dritte Bestmöglich auf allen relevanten Zielumgebungen Verlässlicher Betrieb Gute Wartbarkeit der Plattform, auch in Zukunft Zentrale Lösungsansätze von VS Code Zuordnung zu Zielen (Farbcode)
  32. 39 Wegweisende Lösungen im Porträt embarc.de Steckbrief: Visual Studio Code

    Software-Gattung : Quelltext-Editor Veröffentlicht : 2015 (Version 1.0 April 2016) Herkunft / Ursprung : Microsoft Open Source (MIT License) Zielplattform : Desktop (Windows, macOS, Linux) oder Browser-basiert Programmiersprache(n) : vorherrschend TypeScript Homepage : ➔ code.visualstudio.com Warum bemerkenswert? („Vermächtnis“) ▪ Dank Erweiterbarkeit hohe Akzeptanz bei Communities auch außerhalb des Microsoft-Universums ▪ Mit dem Language Server Protocol wegweisend für Programmiersprachen-Unterstützung
  33. 40 Wegweisende Lösungen im Porträt embarc.de 04. Porträt #4 Ein

    Kind der Cloud. Die Programmiersprache „Go“, initiiert durch Google.
  34. 41 Wegweisende Lösungen im Porträt embarc.de Zeitliche Einordnung, Porträt #4

    2000 2010 2005 2015 2020 Das Spring Framework, veröffentlicht: 2002 Die Programmiersprache Go veröffentlicht: 2009 Statischer Site-Generator Hugo veröffentlicht: 2013 Visual Studio Code veröffentlicht: 2015
  35. 43 Wegweisende Lösungen im Porträt embarc.de CNCF – Cloud Native

    Landscape “Das Cloud-Native-Landscape-Projekt der CNCF ist als eine Karte durch das bisher unerforschte Terrain der Cloud-Native-Technologien gedacht. Damit wird versucht, viele der beliebtesten Projekte und Produktangebote im Cloud-Native- Bereich zu kategorisieren.” è https://github.com/cncf/landscape Ordnung schaffen in der Cloud. Wörtlich: “The CNCF Cloud Native Landscape Project is intended as a map through the previously uncharted terrain of cloud native technologies. This attempts to categorize many of the most popular projects and product offerings in the cloud native space.”
  36. 45 Wegweisende Lösungen im Porträt embarc.de Open Source-Projekte der Cloud

    Native Landscape Kubernetes Netdata Ansible Prometheus Grafana Apache Dubbo Hasura GraphQL Engine Redis Serverless Apache Spark Docker Compose Caddy Terraform Traefik Apache SkyW alking Apache ShardingSphere Rancher Kubernetes Apache Kafka MinIO etcd RethinkDB Alibaba Sentinel gRPC minikube InfluxData Apache RocketMQ emscripten OpenAPI Kong Apache Flink OpenFaaS Portainer Apollo TiDB Firecracker Consul Istio Backstage Drone TDengine Vault Grafana Loki Nacos Gradle Build Tool GitLab JHipster Jenkins go-zero Apache Hadoop Seata Helm Envoy FoundationDB Harbor kratos Apache Druid Podm an Kubespray Jaeger Netflix Eureka Keycloak Apache Pulsar containerd Netflix Zuul ORY Hydra Dapr Logstash SaltStack Zipkin NGINX Skaffold Kubesphere PostgreSQL Teleport k3s ArangoDB Pulum i Wasmer Vitess Packer Pinpoint Nomad gVisor Cilium V8 Trivy Tengine kaniko kOps Fluentd Thanos k6 Akuity Akka Vector Beats Argo TiKV Ceph NATS Go Java C Python JavaScript / TypeScript Sonstige (Scala Lua, Ruby, Rust, ...) C++ Farbcode: Primäre Sprache im Projekt Go (45%) Top 100 Open-Source-Projekte der Cloud Native Landscape Aufgeschlüsselt nach Programmiersprachen
  37. 46 Wegweisende Lösungen im Porträt embarc.de Was ist Go? è

    golang.org Go ist eine Open-Source- Programmiersprache, die es leicht macht, einfache, zuverlässige und effiziente Software zu erstellen.
  38. 47 Wegweisende Lösungen im Porträt embarc.de Herkunft Entwickelt von Google-Mitarbeitern.

    Federführend dabei: Robert Griesemer, Rob Pike und Ken Thompson Robert Griesemer *1964 Rob Pike *1956 Ken Thompson (1973) *1943 (Dennis Ritchie)
  39. 48 Wegweisende Lösungen im Porträt embarc.de Wichtige Ziele der Programmiersprache

    Go Fühlt sich an wie eine dynamische Sprache Skalierbar bezüglich der Programmgröße Hohe Effizienz in Lauf- und Übersetzungszeiten Leicht portierbare Programme Moderne Concurrency-Konzepte Konzeptionelle Einfachheit der Sprache
  40. 49 Wegweisende Lösungen im Porträt embarc.de Wichtige Ziele der Programmiersprache

    Go Ziel Beschreibung (und zugehöriges Software-Qualitätsmerkmal) Skalierbar bezüglich der Programmgröße Mit Go lassen sich Programme jeder Größe mit angemessenem Aufwand realisieren. Von kleinen Kommandozeilenwerkzeugen bis hin zu sehr großen Systemen. Hohe Effizienz in Lauf- und Übersetzungszeiten Go unterstützt die Entwicklung hochperformanter Anwendungen und Dienste für moderne Serverplattformen. Die Programme sind flink übersetzt, ihre Effizienz ist voraussehbar gut. Auch systemnahe Software wie Netzwerkserver oder Datenbanken sind gut realisierbar. Leicht portierbare Programme In Go verfasste Programme sind leicht auf andere Hardwareplattformen und Betriebssysteme übertragbar. Das gilt auch für das Go-Tooling, also etwa den Compiler. Moderne Concurrency-Konzepte Mit der Sprache ist es vergleichsweise einfach nebenläufige Programme zu schreiben. Die Ausführung auch kleinteilig paralleler Abläufe erfolgt in Go auf effiziente Art und Weise. Fühlt sich an wie eine dynamische Sprache In Go zu programmieren geht trotz statischer Typisierung sehr leicht von der Hand. Die Sprache wählt wo möglich selbst "das Richtige" aus. Konzeptionelle Einfachheit der Sprache Go besticht durch eine überschaubare und zugleich schlüssige Auswahl an Sprach- Features. Es verzichtet auf "heikle" Programmierkonstrukte und verbirgt nötige Komplexität geschickt. Go ist als Sprache daher vergleichsweise leicht zu erlernen.
  41. 50 Wegweisende Lösungen im Porträt embarc.de Interfaces, Typen zuweisungskompatibel ohne

    explizite Implementierung Pakete und später auch Module Auslassen "heikler" Sprachfeatures wie Zeigerarithmektik Sehr effiziente Garbage Collection Tools forcieren guten Programmierstil und einheitliche Formatierung Cross-Compiler (kann von der Host-Plattform verschiedene Binärformate erzeugen, z.B. Windows auf Mac OS) Alle Dependencies landen statisch gelinkt im kompilierten Programm Kleiner, fixer Sprachumfang, daher nur wenige Möglichkeiten, Dinge zu tun Übersetzung in native Programme mit sehr effizientem Code Schneller Compiler Direkte Sprachunterstützung von Goroutines und Channels (Schlüsselwörter, Operatoren) Go Runtime kann Unmengen leichtgewichtiger Go- Routines (Scheduler) steuern Effiziente Abstraktion von Betriebssystemthreads Typinferenz führt zu kompakten Schreibweisen (":=") Go-Compiler wird (mittlerweile) mit sich selbst übersetzt Go Libraries sind nahezu komplett in Go geschrieben Go Runtime ist Teil des übersetzten Programmes Leistungsfähige Klassenbibliothek für heute übliche Aufgaben speziell im Web Fühlt sich an wie eine dynamische Sprache Konzeptionelle Einfachheit der Sprache Hohe Effizienz in Lauf- und Übersetzungszeiten Skalierbar bezüglich der Programmgröße Leicht portierbare Programme Moderne Concurrency-Konzepte Zentrale Lösungsansätze von Go Zuordnung zu Zielen (Farbcode)
  42. 51 Wegweisende Lösungen im Porträt embarc.de Hard-/Software-Zielplattform C (z.B. macOS

    / ARM) Go RT mywebapp Hard-/Software-Zielplattform B (z.B. Linux / 386) mywebapp Go RT Hard-/Software-Zielplattform A (z.B. Windows / AMD64) Go RT mywebapp.exe Go-Runtime, stets Teil des Programmes. Beinhaltet Garbage Collection, Scheduler für Go-Routinen ... Native Programme mit sehr effizientem Code Lauffähig ohne weitere Abhängigkeiten direkt auf der Zielplattform. Kein Interpreter, keine extra installierte Runtime oder Bibliotheken (z.B. libc) ... Ausführbare Programme Weitere Kommandozeilenbefehle, z.B. $ go test Unit-Tests, Benchmarks $ go fmt Quelltext formatieren $ go get Abhängigkeiten herunterladen $ go vet "Verdächtiges" im Code melden Host-Plattform (z.B. macOS / ARM) Go Compiler GOOS=windows GOARCH=amd64 Hocheffizient, inkrementell, unterstützt Crosscompiling auf viele Plattformen $ go build mywebapp.go Per Kommandozeile oder via API und Plugins / Extensions integriert in eine IDE ... Go-Tooling z.B. Datenbanktreiber, Web-Frameworks ... 3rd Party-Bibliotheken z.B. Ein-/Ausgabe, Netzwerk, En-/Decoding von JSON, XML ... Go Standard-Bibliotheken mywebapp.go Dateien, organisiert in Modulen. Enthalten i.d.R. eine main-Funktion Eigenes Programm package main import ( "fmt" "html" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) }) http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request){ fmt.Fprintf(w, "Hi") }) log.Fatal(http.ListenAndServe(":8081", nil)) "import" nutzt Bibiliotheken Syntax C-ähnlich, kleiner Sprachumfang (nur 25 Keywords) Quelltext in Go Go: Ausgewählte Lösungsansätze
  43. 52 Wegweisende Lösungen im Porträt embarc.de Steckbrief: Go Software-Gattung :

    Programmiersprache Veröffentlicht : 2009 (Version 1.0: 2012) Herkunft / Ursprung : Google, Open Source Zielplattform : Linux (AMD64, PowerPC, …), macOS (x86-64, ARM …), Windows u.v.a. Programmiersprache(n) : Go, früher C (Bootstrapping) Homepage : ➔ go.dev Vermächtnis (Warum bemerkenswert?) ▪ Moderne Sprache jenseits OO, Nebenläufigkeit an Bord ▪ Kind der Cloud – die vorherrschende Cloud-Native-Sprache
  44. 54 Wegweisende Lösungen im Porträt embarc.de TIOBE Index, November 2024

    ➔ tiobe.com/tiobe-index/ “The Go language is making its way up in the TIOBE index. After having been in the top 10 for quite some time now, it is now holding position #7. This is an all time high for Go. …”
  45. 55 Wegweisende Lösungen im Porträt embarc.de 05. Porträt #5 Der

    mobile Instant Messenger „Threema“. Initiiert u.a. von Manuel Kasper, Threema GmbH.
  46. 56 Wegweisende Lösungen im Porträt embarc.de Zeitliche Einordnung, Porträt #5

    2000 2010 2005 2015 2020 Mobiler Instant-Messenger Threema, veröffentlicht: 2012 Das Spring Framework, veröffentlicht: 2002 Die Programmiersprache Go veröffentlicht: 2009 Statischer Site-Generator Hugo veröffentlicht: 2013 Visual Studio Code veröffentlicht: 2015
  47. 57 Wegweisende Lösungen im Porträt embarc.de Heinrich Stephan (1831 -1897)

    ▪ Generalpostdirektor des Deutschen Reichs ▪ Organisator des deutschen Postwesens ▪ Mitbegründer des Weltpostvereins
  48. 60 Wegweisende Lösungen im Porträt embarc.de Threema Wofür steht der

    Name? § Threema steht für End-to-End-Encrypting Messaging Application, kurz EEEMA. § Die drei E sind zum Englischen "Three" zusammengefasst. ➔ https://www.threema.ch
  49. 61 Wegweisende Lösungen im Porträt embarc.de Wichtige Architekturziele von Threema

    Leicht erweiterbar und anpassbar Kommunikations- und Nutzerdaten sind geschützt Einfach zu verwenden Zuverlässig und effizient im Betrieb Interoperabel über alle Plattformen hinweg
  50. 62 Wegweisende Lösungen im Porträt embarc.de Ziel Beschreibung Kommunikations- und

    Nutzerdaten sind geschützt Personenbezogene Daten und andere vertrauliche Informationen der Nutzer:innen sind unter allen Umständen sicher vor Ausspähung und anderen fremden Zugriffen. Einfach zu verwenden Der Austausch von Informationen im täglichen Gebrauch und Kontaktaufnahmen erfolgen flink und intuitiv. Auch Threema-Neulinge finden sich mühelos zurecht. Zuverlässig und effizient im Betrieb Eine Kommunikation zwischen den Nutzer:innen ist jederzeit möglich, Daten gehen nicht verloren. Auch Lastschwankungen oder Teilausfälle einzelner Komponenten beeinträchtigen sie nicht. Der Betrieb erfolgt ressourcensparsam. Interoperabel über alle Plattformen hinweg Nutzer:innen tauschen Nachrichten auch dann zuverlässig miteinander aus, wenn sie unterschiedliche Smartphone-Hersteller, Software-Versionen oder ähnliches verwenden. Der Wechsel auf ein neues Endgerät erfolgt problemlos. Leicht erweiterbar und anpassbar Neue Features lassen sich durch das Threema-Entwicklungsteam einfach in die bestehende Lösung, inklusive aller Clients, einbauen. Das gilt für Funktionen für Nutzer:innen ebenso wie Technisches „unter der Haube“. Auch Anbindungen durch Dritte sind möglich. Die vorrangigen Qualitätsziele von Threema in der Reihenfolge ihrer Wichtigkeit. Architekturziele
  51. 65 Wegweisende Lösungen im Porträt embarc.de Das Backend im Detail

    Speichert eine ID zusammen mit dem Public Key und (optional) Hash-Werten der verknüpften E- Mail-Adresse / Mobil-Nummer. Ermöglicht es nach IDs zu suchen (Abgleich mit Kontakten). Nimmt verschlüsselte Nachrichten entgegen, speichert sie zwischen und leitet sie an den Empfänger weiter. Löscht Daten nach Auslieferung. Nimmt verschlüsselte Daten entgegen, verknüpft sie mit einer Media ID und speichert sie temporär. Stellt Empfängern die Daten über die ID zur Verfügung.
  52. 66 Wegweisende Lösungen im Porträt embarc.de Vertrauenslevel Threema kennt unterschiedliche

    Stufen der Kontaktverifikation, gekennzeichnet mit farbigen Punkten. Threema. Petra S83NAH84 Anita XA66ZF4E Daniel L9GG2B7Y Urs H1B5K4NY Marianne 71GVAMM0 Die Liste der Kontakte in der Threema-App zeigt über ein Punktesystem den Grad der Verifizierung eines Kontaktes (Threema.ID und Public Key) an. Peters Smartphone Orange Die ID wurde erfolgreich mit einem Kontakt in Peters Adressbuch (Rufnummer oder E- Mail-Adresse) abgeglichen. Da der Server Rufnummern und E-Mail- Adressen verifiziert, kann Peter einigermaßen sicher sein, dass die Person diejenige ist, die sie vorgibt zu sein. Grün Peter hat die ID und den öffentlichen Schlüssel des Kontakts durch Scannen des QR-Codes persönlich überprüft. Peter kann sehr sicher sein, dass die Nachrichten von diesem Kontakt wirklich von der Person geschrieben wurden, die sie vorgibt zu sein. Vorausgesetzt, das Gerät des Kontakts wurde nicht "gekapert". Rot In Peters Adressbuch wurde kein passender Kontakt für diese Threema-ID gefunden (Rufnummer oder E- Mail-Adresse). Peter kann nicht sicher sein, dass die Person diejenige ist, die sie in ihren Nachrichten vorgibt zu sein.
  53. 67 Wegweisende Lösungen im Porträt embarc.de Steckbrief: Threema Software-Gattung :

    Mobiler Instant-Messenger Veröffentlicht : 2012 (für iOS), 2013 (für Android) Herkunft / Ursprung : Threema GmbH (bis 2014 Kasper Systems GmbH) Zielplattform : Mobile Apps (iOS, Android), daneben Desktop- und Browser-Clients. Backend auf Unix (Linux, FreeBSD) Programmiersprache(n) : Swift/Objective-C (iOS), Kotlin/Java (Android), … Backend ebenfalls polyglott (u.a. Rust, C, Python) Homepage : ➔ https://threema.ch Vermächtnis (Warum bemerkenswert?) ▪ Betonung der Privatsphäre als Gegenentwurf zu „Platzhirschen“ ▪ Interessante Option für Unternehmen und Organisationen (Threema Work)
  54. 73 Wegweisende Lösungen im Porträt embarc.de Unsere Speaker 2024 16.

    Dezember | online Infos, Programm & Anmeldung Alex Kaserbacher Stefan Toth Matthias Naab Stefan Zörner Anja Kammer Michael Wyss Kim Duggen Felix Kammerlander embarc.de/events/punsch-2024