Cloud-Migration
Machen Sie ihre Anwendung Dienst für Dienst bereit für die Cloud und betreiben Sie diese wo Sie möchten
wann
Haben Sie Skalierungsprobleme?
Erschließen oder wachsen Sie gerade auf neuen Kontinenten?
Ist Ihr Hosting Betreiber zu teuer?
Ist der Betrieb der eigenen Infrastruktur eine zunehmend große Herausforderung?
Wo bringt eine Cloud-Migration einen Mehrwert?
- Reduzierung des Managementaufwands
- Einfacher Zugriff auf betreute Dienste wie Kubernetes, Azure DevOps, Jenkins, IoT/Event hubs
- Vereinfachtes automatisches Testen
- Verbesserte Skalierungsmöglichkeiten
- Schnellere Releases
In der Cloud finden sich betreute und unbetreute Dienste vom Applikationslevel bis hinunter auf die Infrastruktur. Diese können Kosten reduzieren oder optimieren, wenn sie entsprechend eingesetzt werden. Ihre Systeme können diese Dienste bei Bedarf kurzzeitig oder auch langfristig einsetzen. Da eine Cloud-Lösung in Design und Architektur die Vorteile und Möglichkeiten innerhalb der angebotenen Dienste nutzen soll, können Sie Werkzeuge für Verwaltung, Überwachung und komponentenspezifische Skalierung einfach einbinden und nutzen. Wir tun unser Bestes um Ihnen all diese Vorteile zur Verfügung zu stellen.
wie wir arbeiten
Um die unterschiedlichen, skalierbaren Dienste (Datenbanken, Queues, Datenspeicher, Middleware, etc.) zu nutzen, muss eine Software dies in ihrer Architektur ermöglichen. Natürlich wird und wurde nicht jede Lösung so entwickelt, als würde sie irgendwann in der Cloud als Micro-Service laufen. Deswegen nutzen wir Cloud-Patterns, um diese anderen Anforderungen sowohl in Architektur als auch in den Code einzuarbeiten. Die Migration selbst wird nahezu ausfallfrei geplant und umgesetzt. Die Grundstruktur einer Anwendung abzuändern ist eine schwierige Aufgabe, die neben dem Code auch die Datenhaltung verändert. Wir unterstützen hier vom Anfang bis zum Ende mit allen Abhängigkeiten und Zusatzdiensten, die benötigt werden.
- Ein System wird in Micro-Services zerlegt
- Migration der Test und Release Pipeline in die Cloud
- Umzug und Absicherung der Datenspeicher
- Einrichtung von Überwachungs- und Alarmsystemen
Verteilte Systeme
Jetzt auf eine Micro-Service Architektur umschwenken, um deren Vorteile in Ihrer Lösung zu nutzen
wann
Wird der Einbau neuer Komponenten zunehmend schwerer?
Nur wenige Personen verstehen die Software?
Ändern sich die Anforderungen an Komponenten häufig?
Ist die Technologie inzwischen so alt, dass sich eine Neuimplementierung lohnen könnte?
Jede Änderung fügt mehr Bugs hinzu als sie behebt?
Komponenten können nicht unabhängig oder überhaupt nicht skaliert werden?
Wo bringen verteilte Systeme einen Mehrwert?
- Skalierung einzelner Systemteile unabhängig von einander
- Skalierung nach Bedarf
- Measure-Change-Measure funktioniert in viel kleinerem Rahmen
- Zugriff auf den gesamten Leistungsumfang von Docker und Kubernetes
- Erhöhung der Robustheit innerhalb der Kernabhängigkeiten
Wenn ein Softwaresystem wächst, ändern sich einzelne Komponenten davon in unterschiedlichen Geschwindigkeiten. In monolithischen Architekturen fällt es viel schwerer, A-B-Test- oder Canary-Techniken einzusetzen, um letztendlich individuelle Komponenten anzupassen, zu ersetzen oder zu entfernen. Genau dort liegen die Stärken von verteilten Systemen, die eine individuelle Betrachtung eines Softwareteils ermöglichen und nur diesen durch alle Entwicklungsphasen zu bringen. Wenn ein verteiltes System noch einen Schritt weiterentwickelt wird, bezeichnet man dies als Micro-Service Architektur, die sich in den letzten Jahren an zunehmender Beliebtheit erfreut.
wie wir arbeiten
Nachdem die Schichten und Komponenten gefunden wurden, die getrennt werden können und einzeln betriebsfähig sind, findet eine Entkopplung dieser statt und sie werden eigenständig betrieben. Dadurch können diese gesondert weiterentwickelt und skaliert werden ohne weitreichende Auswirkungen auf das Restsystem. Schlüsselkomponenten werden dadurch widerstandsfähiger und erleiden weniger Seiteneffekte, die durch andere Systemteile verursacht werden. Besonders gefährdet sind diese, die häufig geändert und an denen ständig weiterentwickelt wird. Weitere Informationen hierzu finden Sie im Microsoft Architektur-E-Book
- Anpassung der Architektur, damit diese Micro-Services unterstützt
- Identifizieren von Risikokomponenten innerhalb der Software
- Entkoppeln der Komponenten und Verbesserung der Kohärenz
- Finden und Auflösen von Bottlenecks
Softwaresicherheit
Rund-herum sicher mit dem Microsoft SDL Ansatz
wann
Haben Sie schützenswerte Daten?
Gibt es neue Vorschriften, die die Absicherung bestimmter Komponenten vorsehen?
Hat Ihr Team andere Spezialgebiete?
Wo bringt Softwaresicherheit einen Mehrwert?
- Schwachstellen werden vorab bereits identifiziert
- Festsetzen der Anforderungen an Kryptographie und Verschlüsselung
- Data-Lakes und -Warehouses benötigen ebenso ein Sicherheitskonzept wie API-Endpunkte
Verschlüsselter und abgesicherter Zugriff auf Endpunkte verringert die Wahrscheinlichkeit auf erfolgreiche Angriffe. Der nachträgliche oder späte Einbau von Sicherheitsmaßnahmen während der Entwicklung oder sogar nachdem ein System live geschaltet wurde, ist nicht nur kompliziert und teuer, es benötigt auch Zeit. Mit Hilfe von SDL werden diese Maßnahmen bereits zu sehr frühen Zeitpunkten beleuchtet und umgesetzt. Dafür haben wir mehrere zertifizierte Spezialisten, die bereits lange mit Microsoft Produkten arbeiten und die SDL in unseren Projekten umsetzen.
wie wir arbeiten
Die unterschiedlichen Komponenten in verteilten Systemen besitzen meist verschiedene Schwachstellen gegenüber Angriffen und müssen sich an diverse Regularien innerhalb verschiedener Länder halten. Die SDL-Techniken helfen Probleme zu finden und zu lösen bevor sie live gehen. Die übrigen Belange können über den wiederholten Einsatz von Code-Analyse, Penetration-Testing und Verhaltensanalyse gefunden und korrigiert werden.
- Wir bewerten die Anwendungsstruktur in der Designphase
- Einsatz von Penentration-Testing zur Bestimmung der Systemrobustheit
- Systematische Erfassung und Aufbereitung von Störungen
- Aufdecken von Defiziten mit statischer und dynamischer Code-Analyse
- Implementierung von Azure AD Single-Sign-On in alle Dienste
data transformation
Strukturierte oder unstrukturierte Daten werden in wertvolle Informationen umgewandelt
wann
Brauchen die Datenabfragen zu lange?
Gibt es viele, unstrukturierte Datensenken, aber kein ETL, um diese zu konsolidieren?
Datenverknüpfungen zu erstellen ist langwierig und manuelle Arbeit?
Führt das Hinzufügen von Informationen im Datenspeicher zu Fehlern auf den Dashboards?
Wo bringen neue Datenformate einen Mehrwert?
- Strukturierte, optimierte Daten können effizient abgefragt werden
- Automatisierte Programme bringen die Daten zu den Systemen, die sie benutzen
- Verdichtete Daten benötigen weniger Speicherplatz und können historische Zusammenhänge sichtbar machen
- Ihre Prozesse werden mit neuen oder angepassten Workflows unterstützt
Anfänglich wirkt es leicht, alle Daten zu speichern. Sobald sich jedoch die Anforderungen ändern und neue Geschäftsprozesse erstellt wurden, werden neue und erweiterte Daten benötigt, um diese Prozesse zu unterstützen. Es gibt keinen perfekten Weg, die Daten für jeden möglichen Fall zu speichern. Deswegen haben sich ETL und ELT bewährt, um die Daten zu bündeln, verknüpfen, verdichten und Systemen und Benutzern zur Verfügung zu stellen.
wie wir arbeiten
Mit Hilfe von Konnektoren und ML-gestützten Werkzeugen bieten viele Softwarelösungen effizienten und anpassbaren Zugriff auf On-Premise- und Clouddatenspeicher. Daten werden in optimierten Formaten durch ELT und ETL Prozesse in Lösungen integriert, die schnell auf die Daten zugreifen müssen. Durch Veränderung und Zusammenführung werden Abfragen auf den entsprechenden Daten verbessert und angereichert, damit sie neue Perspektiven auf die Systeme und deren Geschäftsbereiche liefern. Wir arbeiten mit DataBricks und Microsoft Azure, um Ihre Daten auf einer grundlegenden Ebene weiterzuentwickeln, um Ihre Arbeitsabläufe weiter zu verbessern.
- Mit Apache Spark und Azure SQL Data Warehouse (Synapse) automatisiert, effizient und skalierbar auf Daten zugreifen und diese miteinander verknüpfen
- Integration und Hosting auf DataBricks oder Microsoft Azure
- Daten verändern oder anpassen, um Kosten einzusparen, Zusammenhänge sichtbar zu machen oder neue Mehrwerte zu erzeugen mit Azure Data Factory und Azure Synapse
Business Analytics & Visualisierung
Mehrwerte für unterschiedlichste Benutzer schöpfen durch die Auswertung und Darstellung von Daten
wann
Haben Sie langsame Dashboards satt?
Sind Ihre Daten nur schwer zu verstehen?
Haben Sie nur einen Satz an Visualisierungen für Management und Techniker?
Wo bringt die umfassende Verwendung von Business Analytics einen Mehrwert?
- Komplexe Daten benötigen eine einfache Darstellung, damit sie verarbeitet und verstanden werden können
- Handlungsempfehlungen sollten auf Basis von Daten erfolgen
- Zusammengeführte Daten führen zu einem besseren Verständnis über Benutzer, System und dem ganzen Geschäftsfeld
- Datenbasierte Bewertung von Risiken und Chancen
Die Erzeugung und Speicherung von Daten ist verhältnismäßig leicht. Diese jedoch zu verknüpfen und darzustellen, um sie als Richtlinie oder Beleg zu benutzen, ist komplizierter, aber meistens den Mehraufwand wert. Die Weiterentwicklung Ihrer Lösungen sollte, wo möglich, immer durch eine Datenbasis belegt und unterstützt werden. Die gleichen Daten können darüber hinaus benutzt werden, um Einblicke in Kundengewinnung, Datenentwicklung, Kundenerhaltung und weitere wertvolle Bereiche zu gewinnen.
wie wir arbeiten
Unterschiedliche Benutzer innerhalb eines Unternehmens besitzen jeweils unterschiedliche Anforderungen an Daten, auf denen sie ihre Entscheidungen treffen. Die Dashboards und Ansichten auf die Datensätze sollten auf die Benutzer angepasst und zugeschnitten werden. Wir verwenden passende Frameworks, die eine gute Darstellung dieser Daten ermöglichen, um Ihre Anforderungen besser zu stützen.
- Große Datenmengen und deren flexible Darstellung auf Dashboards gehen wir mit Power BI an
- Eigene Ansichten können mit grafischen Frameworks wie D3 erstellt und weiterentwickelt werden
- Regelsätze und Filter fügen weitere benutzerfreundliche Ebenen auf Visualisierungen hinzu
deployment
Routinierte Releases, die schnell, präzise und häufig stattfinden, wirken Problemen und Schwachstellen entgegen
wann
Gibt es zu viele Probleme durch Releases im Betrieb?
Neue Features brauchen zu lange, bis sie zuverlässig laufen?
Wird die Zeit, die für das Deployment verwendet wird, woanders benötigt?
Wo bringen verbesserte Deploymentstrukturen einen Mehrwert?
- Continuous Integration/Delivery funktionieren nachweislich
- Die Angst rund um Releases ist unbegründet und richtet mehr Schaden als Nutzen an
- Schlecht optimierte Deployments fressen Zeit, die man besser an anderer Stelle verwendet
Häufige Releases führen zu Routine und dadurch verringert sich die Zeit, die man für deren Planung und Umsetzung benötigt. Dies wird oft dadurch erreicht, dass ein programmatischer Auslöser den Prozess anstößt und dieser komplett eigenständig läuft, bis ein Fehler auftritt. Sowohl Kunden als auch Benutzer generell schätzen die Vorteile von wartungsfensterfreien Techniken, die in CI/CD integriert werden. Häufige Releases verbessern die Kundenzufriedenheit und können die Kundenbindung zum Produkt erhöhen.
wie wir arbeiten
Auf bestehenden Technologien für CI/CD, automatische Tests und Überwachung aufzubauen ist eine zuverlässige und bewährte Grundlage für viele Softwarelösungen. Unterschiedliche Technologien zum Aufspüren von Bugs und Sicherheitslücken sind verfügbar für nahezu jede Programmiersprache und jedes Framework. Diese stellen die Ausführung der automatischen Tests sicher und melden die Ergebnisse zurück an die CI/CD-Pipeline oder an die Erfassungssysteme. Die meisten dieser Lösungen bieten Flexibilität und können bis auf den Code hin angepasst werden, dadurch ist die Integration in die eigenen Prozesse und Workflows problemlos möglich.
- Release-Pipelines durch Jenkins und Azure DevOps
- Wir setzen auf die vielen Vorteile von automatischen Tests
- Mehr Kontrolle durch die Erfassung von Systemdaten und deren Überwachung sowie der Aufzeichnung von Meldungen in entsprechenden Werkzeugen (EFK, Azure Monitor, etc.)
Sec DevOps
Frühzeitiges Aufspüren von Fehlern und Bugs, verringert potentielle Sicherheitsrisikos
wann
Tauchen Ihre Sicherheitslücken nur im Betrieb auf?
Werden Ihre Nutzer Opfer von Angriffen?
Sehen Sie die unzureichenden Statusinformationen bezüglich ihrer Softwaresicherheit als Problem?
Wo bringt höhere Softwaresicherheit einen Mehrwert?
- Alle Probleme, die im Betrieb auftreten, bringen einen Zugzwang und erhöhen die Kosten
- Viele Fehler können automatisch und programmatisch gefunden werden
- Erhöhen des Nutzervertrauens durch das Entfernen möglicher Sicherheitslücken
Jeder Bug oder jedes Problem, das Auswirkungen auf einen Benutzer hat, ist nicht nur teuer, sondern führt zu Frustration in allen betroffenen Abteilungen, und zusätzlich ist der Kundenerfolg gefährdet. Der Release Prozess ist die letzte Möglichkeit einzugreifen, bevor eine Funktion oder Änderung live geht, die die Daten- und Softwaresicherheit in Gefahr bringt.
wie wir arbeiten
Eine CI-/CD-Pipeline ist nur ein Framework, in das man eine Vielzahl von eigenen und fremden Werkzeugen integriert. Statische Code-Analyse, Sicherheitslücken aufspüren, eigene Test Suites und viele weitere Möglichkeiten verringern die Gefahr, dass ein Bug integriert, bestätigt und live gebracht wird. Jedoch müssen all diese Methoden erst eingebaut werden. In einer idealen Welt wachsen und verändern sich diese zusammen mit der Software und ihrer Evolution.
- Spezielle Werkzeuge zur Codeanalyse innerhalb der Deployment-Pipeline (SonarQube, etc.)
- Sicherheitsrelevante Fälle werden in den automatischen Tests abgedeckt
- Bewertung des Risikos von fremden Komponenten
- Überwachung der Interprozesskommunikation
Alarmierung & Überwachung
Komplexe Zusammenhänge und dringende Angelegenheiten werden durch generierte Daten beleuchtet und priorisiert
wann
Werden Fehler von unzufriedenen Benutzern gefunden und gemeldet?
Soll der Systemstatus zu jeder Zeit verfügbar und einsehbar sein?
Sind detaillierte Berichte nicht nur schwierig zu erstellen, sondern auch schnell veraltet?
Schickt das System zufällige Datenfehler?
Wo bringen gute Alarmierungs- und Überwachungssysteme einen Mehrwert?
- Frühzeitige Reaktion auf Ausfälle, Erreichbarkeitsprobleme und Ausführungsfehler
- Skalierungs- und Auslastungsänderungen werden sofort beim Auftreten erkannt
- Einfache Einsicht in den Systemstatus
- Was nicht gemessen wird, kann auch nicht verbessert werden
In vielen Softwarelösungen kommuniziert eine Vielzahl an Modulen miteinander, nutzen Datenquellen und sorgen für einen geschäftlichen Mehrwert. Da nur weniger dieser Lösungen einfach sind, ist es schwierig herauszufinden, was genau passiert ist, gerade eben passiert und (idealerweise) passieren wird. Diese Informationen können den Unterschied gegenüber ihren Mitbewerbern machen und Kundenabwanderung verhindern. Deswegen sollten wertvolle Daten hierzu gesammelt und derartig verknüpft werden, dass sie eine fundierte Entscheidungsgrundlage bilden.
wie wir arbeiten
Geschäftliche Rohdaten werden von der gesamten Systemlandschaft gesammelt (Logstash, etc.). Verknüpfungen der Rohdaten werden in Überwachungs- (Graylog o.ä.) und Visualisierungssystemen (Kibana o.ä.) hergestellt. Diese Art von Daten wächst kontinuierlich und kann aggregiert werden, um Einblicke in historische Zusammenhänge zu bekommen.
Echtzeitdaten werden oftmals zum Feststellen des Systemzustands (Last und Ausfälle) benutzt und werden in den seltensten Fällen gespeichert, deswegen gibt es weitere Software (Prometheus & Grafana, etc.) die sich mit kurzlebigen Daten auseinandersetzen. Micro-Services kommunizieren ständig miteinander und Daten legen lange Strecken zurück. Zu verstehen, wo und wie sich diese bewegen, wirkt sich direkt auf Deployment und Strukturen innerhalb der Implementierung aus.
- Generierte Daten über alle Systeme hinweg verknüpfen mit dem EFK Stack
- Prometheus & Grafana bieten Echtzeitüberwachung und -warnungen
- Datenflüsse mit Jaeger & Istio verfolgen und überprüfen