Unsere Architekturprinzipien sind zeitlos. orchideo | architecture vereint Klassik und Moderne.
orchideo | architecture: einfach, eindeutig, konsequent
Software-Architekturen sollten auf elementaren Prinzipien basieren.
Unsere Architekturprinzipien sind allgemeingültige, elementare Handlungsanweisung, die auf allen Ebenen der Softwareerstellung anwendbar sind. Erst durch die sinnvolle und angemessene Verwendung aller Architekturprinzipien entsteht eine gute Architektur – die übertriebene Verwendung nur eines Prinzips führt dagegen in der Regel zu keiner guten Architektur.
einfach
- Angemessenheit
- Minimierung von Abhängigkeiten
Erreiche ein ausgewogenes Verhältnis aus Übersichtlichkeit, Verdichtung und Abstraktion, um die Architektur nicht durch Komplexität zu belasten. Minimiere die Abhängigkeiten zwischen Bausteinen, indem sie zusammengefasst oder lose gekoppelt werden.
eindeutig
- Ausdrücklichkeit
- Vertragsbasierter Entwurf
- Trennung und Isolation der Zuständigkeit
Definiere die Architektur durch explizite Artefakte. Beschreibe das System vollständig über eine Menge von wohldefinierten Schnittstellenverträgen. Trenne die einzelnen Aufgabenkomplexe der Anwendung in Bausteine auf.
konsequent
- Geheimnisprinzip
- Datenhoheit
- Funktionale Homogenität
- Strukturelle Ordnung und Muster
Kapsele internes Wissen eines Bausteins und gib es den Nutzern nicht preis. Definiere, welcher Baustein die exklusive Verantwortlichkeit über Daten hat. Treffe konsequent und konsistente Design-Entscheidungen.
orchideo | architecture: microservices
Microservices brauchen Architektur, sowohl für die innere Struktur als auch im Zusammenspiel untereinander.
In unzähligen Software-Projekten haben wir in den vergangenen Jahrzehnten unsere Architekturprinzipien geschärft und erfolgreich angewendet. Wir sind überzeugt, dass diese Prinzipien wichtige Zutaten für robuste, wartbare und autarke Microservices sind.
In der Microservice-Welt verschiebt sich der Fokus in Richtung höherer Agilität: bessere Skalierbarkeit, schnellere Entwicklung sowie getrennte Produktivsetzung bekommen ein stärkeres Gewicht. Dreh- und Angelpunkt ist – wie beim klassischen Monolithen – eine fachlich passende Modularisierung (Domänenmodell) zu konzipieren und gleichzeitig geforderte nichtfunktionale Anforderungen zu erfüllen.
Eine gute Modularisierung minimiert notwendige Netzwerkkommunikation und maximiert dadurch den Datendurchsatz und die Verfügbarkeit. Unser Kommunikationsdesign zwischen Microservices (und mit Nachbarsystemen) sorgt durch die Anwendung dieser Prinzipien für klare Schnittstellen und Zuständigkeiten und ist damit ein wesentlicher Erfolgsfaktor zum Erreichen dieser Ziele.
Jeder Microservice sollte eine technologisch minimale und fachlich eigenständige Einheit bilden, so dass zum Beispiel unnötige Datenredundanz, Funktionsduplizierungen oder komplexe Abhängigkeiten vermieden werden. Hier unterstützen unsere Prinzipien beim Microservice-Design: Der Wissenstransfer in agilen Teams wird wesentlich erleichtert und beschleunigt durch die homogene und durchgängige Nutzung von Lösungsmustern, Strukturen und Konzepten in allen Microservices. Damit gewährleisten wir eine maximale Wartbarkeit mit kurzen Reaktionszeiten.
Wir wenden technologische Freiheitsgrade passend zum Kundenkontext und zur Problemlösung an
Der Einsatz von Technologien und Produkten ist kein Selbstzweck. Wir wählen zur Lösung der Bedarfe unserer Kunden passende Produkte und Technologien gezielt aus und berücksichtigen dabei den Kontext des Kunden. Ein Sammelsurium an unterschiedlichen Sprachen, Frameworks und Tools erschwert die Wartung und behindert den Wissenstransfer in agilen Teams.