fbpx

Hannes Wambach, Objectbay: Checklisten für sichere, wirtschaftliche und nachhaltige (grüne) Software-Investitionen

by Yara El-Sabagh

OUT NOW im #ConfareBlog mit Hannes Wambach, Objectbay:
Checklisten für sichere, wirtschaftliche und nachhaltige (grüne) Software-Investitionen

SoftwareHannes Wambach von Objectbay verfügt über viele Jahre Erfahrung in der IT- und Software-Entwicklung. Er ist überzeugt: Im digitalen Zeitalter wird jedes Unternehmen bis zu einem gewissen Grad auch ein Software-Unternehmen sein. Agile Entwicklung, Geschwindigkeit im Wettbewerb und Time-To-Market bringen schnelle Innovations-Zyklen und kurze Abstände bei Releases. Gleichzeitig entwickeln sich Technologie, Kundenanforderungen und Plattformen rasant weiter. Hannes ist es ein wichtiges Anliegen, dass bei all der Hektik was Skalierung, Innovation und Flexibilität betrifft, wesentliche Aspekte nicht untergehen. Im Bloginterview verrät er seine wesentlichen Checklisten, damit Qualität und Geschwindigkeit, Sicherheit und Nachhaltigkeit gewährleistet werden können und erklärt was entscheidende Faktoren für den Erfolg von DevSecOps sind.

Mehr zu Objectbay finden Sie HIER

Das Confare Factsheet Software Transformation, an dem zahlreiche hochkarätige IT-Entscheider mitgearbeitet haben, können Sie hier kostenfrei herunterladen: Software Transformation (confare.at)

CIOs und IT-Manager machen die Welt zu einem besseren Ort. Sie leben neue Führungsprinzipien vor, schaffen die Voraussetzungen für Nachhaltigkeit und Umweltschutz oder helfen gesellschaftlichen Herausforderungen mit Digitalisierung und Technologie erfolgreich zu begegnen. Sie verändern Unternehmen oder sogar ganze Branchen, helfen Menschen, die in Not sind und leben gesellschaftliche Verantwortung vor.

Wir zeichnen Sie aus, diese Weltverbesserer und Verantwortungsträger – bei der DACH-weiten Confare CIO #ImpactChallenge. Die Gewinner werden beim Confare #CIOSUMMIT Frankfurt gekürt. Wollen Sie persönlich die besten Beispiele erleben? Melden Sie sich jetzt an.

Ab Mitte Mai können Sie hochkarätige IT-Leader aus Deutschland, Österreich und der Schweiz täglich mit Ihrer Stimme beim Voting unterstützen. Registrieren Sie sich jetzt, um von Beginn an dabei zu sein.

Geschwindigkeit und Time-To-Market sind enorm wichtige Faktoren beim Entwickeln digitaler Produkte. Was ist zu beachten, damit Softwarequalität und Sicherheit nicht zu kurz kommen?

Um Geschwindigkeit und Time-to-Market beim Entwickeln digitaler Produkte zu optimieren, ohne die Softwarequalität und Sicherheit zu vernachlässigen, sollten Sie die folgenden Punkte beachten:

  1. Security und Quality by Design: Beachten Sie diese Prinzipien bereits bei der Planung eines digitalen Produktes und implementieren Sie die diese über den gesamten Produktlebenszyklus – von der Anforderungsanalyse, über die Entwicklung des Produktes, der Durchführung von Tests bis hin zur Inbetriebnahme. Berücksichtigen Sie Sicherheitsprinzipien wie „Least Privilege” und „Defense in Depth” bei der Systemarchitektur und dem Design und implementieren Sie Clean Code Prinzipien und Zero Bug Policy für Ihren Entwicklungsprozess.
  2. Agile Methoden: Implementieren Sie agile Methoden wie Scrum oder Kanban, um schneller auf Kundenanforderungen und Marktveränderungen zu reagieren, ohne dabei die Qualität zu beeinträchtigen. Bewusste technische Schulden (Kompromittierung von Security oder Qualität) sind ein No-Go.
  3. Automatisierung: Nutzen Sie Automatisierungswerkzeuge für Continuous Integration (CI) und Continuous Deployment (CD), um den Entwicklungsprozess zu beschleunigen und Fehler zu reduzieren.
  4. Testautomatisierung: Implementieren Sie automatisierte Tests, um die Softwarequalität kontinuierlich zu überwachen und Sicherheitslücken frühzeitig zu erkennen.
  5. Code Reviews: Führen Sie regelmäßige Code Reviews durch, um die Codequalität zu gewährleisten und Sicherheitsprobleme zu identifizieren.
  6. Sicherheitsrichtlinien und -schulungen: Stellen Sie sicher, dass das gesamte Team über die neuesten Sicherheitsrichtlinien und -standards (z. B.: OWASP Top 10) informiert ist und regelmäßig geschult wird, um mögliche Sicherheitsrisiken zu erkennen und zu beheben.
  7. Architektur- und Designprinzipien: Befolgen Sie bewährte Architektur- und Designprinzipien wie modulare Strukturen, Separation of Concerns und Microservices, um die Wartbarkeit und Skalierbarkeit des Systems zu gewährleisten.
  8. Kommunikation und Zusammenarbeit: Fördern Sie eine offene Kommunikation und Zusammenarbeit innerhalb des Teams und zwischen verschiedenen Teams, um frühzeitig Probleme zu erkennen und gemeinsam Lösungen zu entwickeln.
  9. Monitoring und Performance-Management: Implementieren Sie Monitoring- und Performance-Management-Tools, um Code Qualität und Security laufend zu überwachen (z. B.: SonarQube), Systemausfälle frühzeitig zu erkennen und die Systemleistung kontinuierlich zu optimieren.
  10. Iterative Verbesserung: Betrachten Sie Softwareentwicklung als kontinuierlichen Prozess, bei dem das Produkt in regelmäßigen Abständen verbessert und optimiert wird (z. B.: via Refactoring). Nutzen Sie Kundenfeedback und Datenanalysen, um die Qualität und Sicherheit des Produkts ständig zu erhöhen.

Indem Sie diese Punkte befolgen, können Sie die Entwicklungszeit verkürzen und gleichzeitig die Softwarequalität und Sicherheit gewährleisten.

Kompromisse bei der Softwarequalität und Security fußen in der Praxis häufig auf der falschen These, dass gute Qualität Geschwindigkeit kostet. Das Gegenteil entspricht der Realität. Eingangs vielleicht schneller, rächen sich technische Schulden schon nach kurzer Zeit, erfahrungsgemäß bereits nach 6 bis 8 Wochen und führen zum exakten Gegenteil, nämlich zu einer zunehmenden Verlangsamung der Entwicklungsgeschwindigkeit.

Was sind denn die entscheidenden Faktoren beim Beurteilen moderner Software? Worauf sollte man schon in der Entwicklung achten?

Entscheidend für die Beurteilung und damit den Erfolg von moderner Software sind 2 zentrale Faktoren: die Anwendersicht und die technische Sicht.

Aus Anwendersicht ist es zentral, dass die Software einen echten Mehrwert liefert bzw. das Leben für den Anwender erleichtert. Daher ist es wesentlich, den (zukünftigen) Anwender bzw. von Anfang an in den Entwicklungsprozess zu integrieren und durch laufendes Feedback sicherzustellen, dass die Lösung den Bedürfnissen der Nutzer entspricht. Dabei sind Funktionalität sowie User Experience und gutes Design für die Benutzerakzeptanz entscheidend.

Aus technischer Sicht geht es zentral um die Frage der langfristigen Lebensfähigkeit des Produktes. Aber auch hier zahlt technische Excellence in die User Akzeptanz ein. Für die technische Umsetzung ist es notwendig, dass das Entwicklerteam die gängigen Praktiken des modernen Softwareengineerings Ende-zu-Ende beherrscht und sich laufend verbessert. Nur dann ist sichergestellt, dass das digitale Produkt auch im Hinblick auf Aspekte wie Performance, Stabilität und Zuverlässigkeit, Security & Privacy, Interoperabilität, Wartbarkeit und Anpassungsfähigkeit, Nachhaltigkeit und Compliance Best Practice entspricht.

Welche Möglichkeiten gibt es, um den Faktor Nachhaltigkeit bei der Software-Entwicklung entsprechend zu berücksichtigen? Wie grün muss Software-Entwicklung heute sein?

Wie grün die Software-Entwicklung heute sein sollte, hängt von verschiedenen Faktoren ab, einschließlich Branchentrends, Kundenanforderungen, gesetzlichen Vorschriften und der Unternehmensphilosophie. Es gibt jedoch einen wachsenden Konsens, dass Unternehmen und Entwickler eine Verantwortung haben, umweltfreundliche und nachhaltige Praktiken in der Software-Entwicklung zu fördern.

Um bei der Software-Entwicklung “grüner” oder umweltbewusster zu werden, können Unternehmen und Entwickler verschiedene konkrete Praktiken und Maßnahmen anwenden:

  1. Energieeffiziente Programmierung: Optimieren Sie den Energieverbrauch Ihrer Software, indem Sie energieeffiziente Algorithmen und Datenstrukturen verwenden. Minimieren Sie unnötige Prozesse und achten Sie auf die effiziente Nutzung von CPU, GPU, Speicher und Netzwerkressourcen.
  2. Cloud-Computing und Green Hosting: Nutzen Sie Cloud-basierte Infrastrukturen, um den Energieverbrauch und CO2-Emissionen bei der Bereitstellung Ihrer Software zu reduzieren. Berücksichtigen Sie die Nutzung von Green-Data-Centern oder energieeffizienten Hosting-Lösungen.
  3. Virtuelle Maschinen und Container: Nutzen Sie Virtualisierungstechnologien, wie virtuelle Maschinen und Container, um Hardware-Ressourcen effizienter zu nutzen und den Energieverbrauch zu reduzieren.
  4. Hardware-unabhängige Software: Entwickeln Sie Software, die auf einer Vielzahl von Geräten und Betriebssystemen funktioniert, um die Lebensdauer der Hardware zu verlängern und die Entsorgung von Elektroschrott zu vermeiden.
  5. Ökodesign und modulare Architekturen: Entwickeln Sie Software mit modularen, skalierbaren und wartungsfreundlichen Architekturen, die eine einfache Anpassung und Erweiterung ermöglichen, ohne die gesamte Anwendung neu entwickeln zu müssen.
  6. Code-Wiederverwendung: Nutzen Sie bestehende Open-Source-Bibliotheken und Frameworks, um den Entwicklungsprozess effizienter zu gestalten und die Notwendigkeit für die Erstellung neuer Ressourcen zu reduzieren.
  7. Automatisierung und Continuous Integration/Deployment: Implementieren Sie automatisierte Entwicklungs- und Bereitstellungsprozesse, um den Ressourcenverbrauch zu optimieren und den Energieverbrauch zu reduzieren.
  8. Remote-Arbeit und digitale Zusammenarbeit: Fördern Sie Remote-Arbeitsmöglichkeiten und digitale Zusammenarbeit, um den Energieverbrauch und CO2-Emissionen durch Pendeln und Geschäftsreisen zu reduzieren.
  9. Umweltfreundliche Softwareentwicklungsmethoden: Wenden Sie nachhaltige Softwareentwicklungsmethoden an, wie z. B. Agile- oder Lean-Methoden, die den Ressourcenverbrauch während des Entwicklungsprozesses reduzieren.
  10. Umweltbewusstsein fördern: Schaffen Sie ein Bewusstsein für Umweltthemen innerhalb Ihres Entwicklungsteams und fördern Sie umweltfreundliche Praktiken und Entscheidungen.

Indem Sie diese Praktiken und Maßnahmen in Ihrem Entwicklungsprozess anwenden, können Sie dazu beitragen, die Umweltauswirkungen Ihrer Softwareentwicklung zu reduzieren und gleichzeitig Kosten zu sparen, die Kundenzufriedenheit zu verbessern und Ihre Wettbewerbsfähigkeit zu erhöhen.

Technologien entwickeln sich heute rasch. Wie kann man sicherstellen, dass man nicht heute in die Legacy-Anwendungen von morgen investiert?

Das Risiko, in die Legacy-Anwendungen von morgen zu investieren, lässt sich zwar nicht vollständig eliminieren, aber es gibt Strategien, um die Wahrscheinlichkeit zu verringern und die langfristige Relevanz Ihrer Softwareinvestitionen zu erhöhen:

  1. Modulare Architektur: Entwickeln Sie Software mit einer modularen, skalierbaren und flexiblen Architektur, die eine einfache Anpassung und Erweiterung ermöglicht, ohne die gesamte Anwendung neu entwickeln zu müssen.
  2. Offene Standards und Technologien: Nutzen Sie offene Standards und Technologien, die eine breite Akzeptanz und Unterstützung in der Branche haben. Dies erhöht die Wahrscheinlichkeit, dass Ihre Software auch in Zukunft kompatibel und anpassungsfähig bleibt.
  3. Interoperabilität: Stellen Sie sicher, dass Ihre Software mit anderen Systemen und Plattformen kommunizieren und zusammenarbeiten kann. Implementieren Sie Schnittstellen, APIs und Datenformate, die den Datenaustausch und die Integration erleichtern.
  4. Fortlaufende Weiterentwicklung: Planen Sie kontinuierliche Verbesserungen und Aktualisierungen Ihrer Software, um sie auf dem neuesten Stand der Technik zu halten und auf sich ändernde Anforderungen und Technologien reagieren zu können.
  5. Agile Entwicklungsmethoden: Wenden Sie agile Softwareentwicklungsmethoden an, um schnell auf sich ändernde Anforderungen zu reagieren und die Software kontinuierlich zu verbessern.
  6. Wartbarkeit und Dokumentation: Schreiben Sie sauberen, gut strukturierten Code und erstellen Sie eine ausführliche Dokumentation, um die Wartung und Weiterentwicklung der Software zu erleichtern.
  7. Investition in Talent: Stellen Sie sicher, dass Ihr Entwicklungsteam über die erforderlichen Fähigkeiten und das Wissen verfügt, um mit den neuesten Technologien und Trends Schritt zu halten.
  8. Monitoring und Feedback: Sammeln Sie kontinuierlich Feedback von Benutzern und Stakeholdern, um Ihre Software an deren Bedürfnisse anzupassen und aufkommende Trends frühzeitig zu erkennen.
  9. Flexibilität: Seien Sie bereit, Ihre Strategie und Technologieentscheidungen anzupassen, wenn sich neue Möglichkeiten und Herausforderungen ergeben.
  10. Partnerschaften und Community: Beteiligen Sie sich an der technologischen Community und bauen Sie Partnerschaften mit anderen Unternehmen, um von deren Erfahrungen und Erkenntnissen zu profitieren und Ihre Software zukunftssicher zu gestalten.

Durch die Anwendung dieser Strategien können Sie das Risiko minimieren, in die Legacy-Anwendungen von morgen zu investieren, und sicherstellen, dass Ihre Software längerfristig relevant und wertvoll bleibt.

Was bedeutet DevSecOps in der Praxis?

DevSecOps steht für „Development, Security and Operations” und ist ein Ansatz, der darauf abzielt, Sicherheit von Anfang an in den gesamten Softwareentwicklungs- und Betriebslebenszyklus zu integrieren. In der Praxis bedeutet dies, dass Sicherheitspraktiken und -prinzipien in die Entwicklungs- und Betriebsprozesse eingebettet werden, um potenzielle Sicherheitsrisiken frühzeitig zu erkennen und zu beheben.

Einige der Hauptaspekte von DevSecOps in der Praxis sind:

  1. Kultur der Zusammenarbeit: DevSecOps fördert eine Kultur der Zusammenarbeit zwischen Entwicklern, Sicherheitsexperten und Betriebsingenieuren. Die Teams arbeiten eng zusammen, um sicherzustellen, dass Sicherheitsanforderungen von Anfang an berücksichtigt werden.
  2. „Shift Left” bei Sicherheit: Sicherheit wird im gesamten Entwicklungsprozess von Anfang an integriert, statt erst am Ende als separates Prüfelement. Dies ermöglicht eine schnellere Identifizierung und Behebung von Sicherheitslücken.
  3. Automatisierung: DevSecOps setzt auf Automatisierung, um Sicherheitsüberprüfungen, Tests und Bereitstellungen effizienter und zuverlässiger zu gestalten. Dazu gehören automatisierte statische und dynamische Code-Analysen, Sicherheits-Scans, Penetrationstests und Compliance-Checks.
  4. Continuous Integration und Continuous Deployment (CI/CD): Durch die Integration von Sicherheitskontrollen in den CI/CD-Prozess werden Sicherheitsprobleme kontinuierlich identifiziert und behoben. Dies führt zu einer schnelleren Erkennung und Behebung von Schwachstellen.
  5. Monitoring und Feedback: DevSecOps umfasst kontinuierliches Monitoring und Feedback, um Sicherheitsvorfälle und -bedrohungen in Echtzeit zu erkennen und darauf zu reagieren. Dies ermöglicht eine schnellere Reaktion auf Sicherheitsvorfälle und eine verbesserte Sicherheitslage.
  6. Threat Modeling und Risikobewertung: In der DevSecOps-Praxis werden regelmäßig Bedrohungsmodellierungen und Risikobewertungen durchgeführt, um potenzielle Sicherheitsrisiken zu identifizieren und geeignete Gegenmaßnahmen zu entwickeln.
  7. Ausbildung und Bewusstsein: DevSecOps legt Wert auf die kontinuierliche Weiterbildung und Sensibilisierung der Teammitglieder in Bezug auf Sicherheitsaspekte, um ein hohes Sicherheitsbewusstsein zu fördern und sicherheitsorientierte Entscheidungen zu unterstützen.

In der Praxis bedeutet DevSecOps also die nahtlose Integration von Sicherheitspraktiken in den gesamten Softwareentwicklungs- und Betriebslebenszyklus, die Förderung einer Kultur der Zusammenarbeit und die Automatisierung von Sicherheitsüberprüfungen und -tests, um eine robuste und sichere Softwareanwendung zu gewährleisten.

Welche Rolle spielt Objectbay im Software-Ecosystem des CIO?

Im Software-Ecosystem des CIO (Chief Information Officer) spielt die Entwicklung von digitalen Produkten und Services eine entscheidende Rolle, da sie die Grundlage für die Bereitstellung von Anwendungen, Diensten und technischen Lösungen bildet, die den individuellen Geschäftsanforderungen und -zielen entsprechen. Der CIO ist unter anderem auch dafür verantwortlich, die Fähigkeiten und die IT-Infrastruktur laufend zu verbessern, um kontinuierlich und in immer kürzer werden Zeiträumen maßgeschneiderte digitale Lösungen bereitzustellen, die die Wettbewerbsfähigkeit des eigenen Unternehmens verbessern. An dieser Stelle kommt Objectbay als führendes Unternehmen im Bereich agiler digitaler Produktentwicklung ins Spiel.

Entwicklung neuer digitaler Produkte und Services: Objectbay übernimmt mit seinen eingespielten Scrum zertifizierten Software-Engineering Teams Ende-zu-Ende die Entwicklung einer neuen Lösung (Web, mobil, hybrid) und liefert kontinuierlich in 2-wöchigen Sprints. Ende-zu-Ende bedeutet, dass alle notwendigen Aufgaben wie Konzeption, Design, Architektur, Frontend und Backend Entwicklung, Testing, DevSecOps, technische Dokumentation in einem agilen Setting (Scrum Framework) seitens Objectbay wahrgenommen und kontinuierlich verbessert werden.

Software Modernisierung: Sie haben Software-Systeme im Einsatz, die geschäftskritisch sind, aber nicht mehr den aktuellen Anforderungen Ihrer KundInnen bzw. AnwenderInnen entsprechen, Sicherheitsprobleme verursachen und zunehmend mehr Wartungskosten verschlingen? Übergeben Sie diese Altlasten an Objectbay. Wir analysieren Ihre bestehende Systeme, erstellen ein Konzept mit Architektur- und Technologievorschlägen und schöpfen für Sie sämtliche Vorteile der Software Modernisierung aus – für maximale Wartbarkeit, Skalierbarkeit und User Experience. Gemeinsam mit unseren Scrum-zertifizierten Expertenteams, bestehend aus erfahrenen SoftwarearchitektInnen und Software-Engineers, treiben wir die Digitalisierung Ihres Unternehmens mit moderner Anwendungssoftware Schritt für Schritt voran.

Verbesserung von Agilität: Alle Software-Engineers von Objectbay sind zertifizierte Scrum Master (gemäß Scrum Alliance). In der Zusammenarbeit mit unseren Kunden erleben diese hautnahe und täglich, wie Agilität in der Praxis gelebt werden kann, womit ein laufender Know-how-Transfer in Richtung der Kundenorganisation stattfindet und die kundenseitige Agilität laufend verbessert wird.

Langfristiger CIO Partner im Bereich digitaler Transformation und Innovation: Objectbay arbeitet typischerweise mit seinen Kunden über Jahre hinweg zusammen, um die digitale Transformation der Kunden nachhaltig voranzutreiben. Wir entwickeln und verbessern dabei nicht nur die zu entwickelnden digitalen Lösungen, sondern verbessern laufend die CI/CD, Testautomatisierung, Entwicklungsprozesse, Tools und die Fähigkeiten der Team-Mitglieder sowie von Kommunikation und Zusammenarbeit. Wir bringen dabei ein für den Kunden exklusiv arbeitendes Full-Stack Software-Engineering Team zum Einsatz.

Für das Software Ecosystem eines CIO*s kann Objectbay ein Schlüsselfaktor für die digitale Transformation und Innovation in einem Unternehmen sein. Wir ermöglicht die Implementierung neuer Technologien und Prozesse, um Geschäftsmodelle zu verbessern, Wettbewerbsvorteile zu erzielen und den Kundennutzen zu steigern.

Mehr Infos hier: https://www.objectbay.com/scrum-team-as-a-service

Für Sie ausgewählt

Leave a Comment