Devops

DevOps und Continuous Delivery für mehr Agilität

Softwareentwicklung in schnellen und agilen Zeiten

Softwareentwicklungen legen heutzutage ein rasantes Tempo hin. Qualitätssicherung wird hier zu einer großen Herausforderung:
Continuous Delivery eröffnet die Möglichkeit, dass zu jeder Zeit eine aktuelle Version der erstellten Software auf eine Zielumgebung aufgebracht werden kann. Zudem kann eine Anwendung auf eine Umgebung deployed werden, zum Zweck der automatisierten und manuellen Tests. Sind diese Tests rein automatisch und die einzigen Abnahmekriterien, so kann auch das eigentliche Deployment auf die Produktionsumgebung beziehungsweise einen Teil davon automatisch erfolgen. Dann spricht man von Continuous Deployment.

Um diese hohe Geschwindigkeit zu ermöglichen, sind neben agilen Prozessen vor allem DevOps von essentieller Bedeutung.  DevOps ist die Verbindung von Development und IT Operations. Damit soll durch gemeinsame Anreize, Prozesse und Werkzeuge eine effektivere und effizientere Zusammenarbeit der Bereiche Entwicklung, IT-Betrieb und Qualitätssicherung ermöglicht werden. DevOps hat das Ziel, diese Bereiche in der Rolle des Buildmanagers/Build-Teams/DevOps Engineers konsequent zu verzahnen.

DevOps ist die Verbindung von Development und IT Operations

Dadurch können betriebsrelevante Fragen, die beim herkömmlichen, getrennten Ansatz erst zu einem späten Stadium auftauchen und das eigentliche Deployment blockieren können, frühzeitig erkannt, gestellt und beantwortet werden. Auf diese Weise wird der Betrieb von Anfang an in die Entwicklung eingebunden. Die Software kann so früh wie möglich als sogenanntes “Walking Skeleton” deployed werden: Ein sicheres Mittel, den Worst Case, nämlich dass sich Fehler erst beim Livegang zeigen, auszuschließen.

Gute DevOps-Teams sind sowohl mit entwicklungsnahen Buildmanagern als auch mit betriebsnahen Administratoren besetzt. Sie begleiten den gesamten Prozess von den ersten Ansätzen bis zur
Fertigstellung und können so jederzeit schnell auf neue Anforderungen beider Seiten reagieren.

Integrata Seminare zu DevOps und Continous Delivery

 

Weiterlesen

Softwarequalität

Softwarequalität – Vorteile durch Verfahren und Techniken

Techniken und Verfahren für eine hohe Softwarequalität

Software muss wartungsfreundlich, flexibel, portierbar, wiederverwendbar, robust, agil und vieles mehr sein, d.h. die Softwarequalität muss stimmen. Für eine hohe Codequalität sorgen Techniken und Verfahren wie:

  • Ein durchdachtes Projektkonzept, für das ein Corporate Style entwickelt wurde und das Qualitätskriterien, Regeln, die geplante Architektur sowie die verwendeten Techniken, Methoden und Modellierungsmittel klar definiert.
  • Eine moderne komponenten- und schichtenbasierte Architektur, „Best Practice“-Techniken sowie der Einsatz moderner Frameworks.
  • Testings, bei denen neben Integrationstests auch Unittests eine immer größere Rolle spielen. Entwickler sollten Testframeworks, Mocking und Tests von Legacy-Code beherrschen und mit komplexen Testfällen umgehen können.
  • Messungen zur Sicherstellung der fachlichen und technischen Qualität.

Auch wenn der hohe initiale Aufwand beim konsequenten Einsatz der genannten Techniken abschreckt – die Vorteile überwiegen:

  • Die Verfahren schärfen sich gegenseitig. Beispielsweise erfordern Unittests ein striktes Einhalten moderner Architekturregeln. In diesem Fall sind Probleme, die beim Testen auftreten, Symptome für Designfehler.
  • Eine hohe Testabdeckung ist Voraussetzung für konsequentes Refactoring und erhält damit die Agilität und gleichzeitig die Robustheit der Software. Das Redesign problematischer Implementierungen kann so leicht bewerkstelligt werden und Releasezyklen können eine höhere Frequenz bekommen.
  • Mit Hilfe von Messverfahren können Probleme hinsichtlich Kopplung, Kohäsion und Kapselung identifiziert werden.
  • Durch Messungen lässt sich die Einhaltung von Unternehmensregeln wie Corporate Styles, Clean Code Regeln oder Konvention vor Dokumentation überprüfen.
  • Regelmäßige Messungen decken Degenerationserscheinungen auf und man kann rechtzeitig eingreifen.
  • Tools wie „Sonarcube“ können Ergebnisse und Statistiken graphisch aufbereiten und Kosten für die Behebung von Problemen berechnen.

Integrata Seminare zur Java Softwarequalität

Optimierung und Tuning von Java-Programmen
Verfügbarkeit, Performance und Betrieb von Java-Anwendungen und Applikationsservern
Clean Code – Professionelle Codeerstellung und Wartung

 

Bildnachweis: pixabay CC0 Public Domain  by geralt

Weiterlesen

Java-Performance

Java-Performance

Leistung zielgerichtet und passgenau optimieren

Zeit ist in unserer modernen Welt zu einem Faktor geworden, der über den Erfolg oder Misserfolg ganzer Geschäftsmodelle entscheiden kann. Wer das Tempo der Konkurrenz nicht mitgehen beziehungsweise übertreffen kann, ist schnell aus dem Rennen. Folgerichtig spielt Geschwindigkeit auch in der IT-Landschaft eine wichtige Rolle, aber nicht nur.

Neben der eigentlichen Performance-Steigerung zählen die Analyse von Code und das Monitoring von Anwendungen zu den Aufgaben, die mit leichtgewichtigen Anwendungen einhergehen.

  • Welche Performance- und Monitoring-Möglichkeiten bestehen?
  • Stresstools wie z.B. Apache-Benchmark, Apache-JMeter, LOIC oder HOIC helfen, die Anwendungen und Server verschiedenen Szenarien auszusetzen.
  • Für das Monitoring stehen uns neben Werkzeugen wie jps, jstat, jconsole, jvisualvm und jmc auch Access-Logfile, Error-Logfile und HEAP-Dump- Analysen zur Verfügung.
  • Darüber hinaus müssen Entwickler die Arbeitsweise der Java Virtuellen Maschine verstehen. Sie müssen wissen, mit welchen Parametern sich diese konfigurieren lässt und wie beispielsweise das Zusammenspiel mit den unterschiedlichen Prozessorfeatures aussieht.
  • Des Weiteren ist die richtige Wahl der verwendeten Objekte aus den zahlreichen Bibliotheken und Frameworks von entscheidender Bedeutung.
  • Außerdem spielt die richtige und ausgewogene Konfiguration der Frameworks sowie der Serverlandschaft eine große Rolle.

Durch Java Performance limitierende Faktoren optimieren

Der Aufgabenstellung Java-Performance zu verbessern kann man sich, wie sich zeigt, sowohl von architektonischer, administrativer, konfiguratorischer wie auch programmatischer Seite her nähern. All diese Maßnahmen tragen dazu bei, die drei limitierenden Faktoren CPU, Speicher und IO-Zugriffe zu optimieren.

Integrata-Seminare zum Thema:

Verfügbarkeit, Performance und Betrieb von Java-Anwendungen und Applikationsservern
Optimierung und Tuning von Java-Programmen
Enterprise Architekturen mit Java und der Java Enterprise Edition

Weiterlesen

SW-Architektur im Kontext von Microservices

SW-Architektur im Kontext von Microservices

Kleine Dienste – große Herausforderung

Derzeit ist kein Monolith vor ihnen in Sicherheit. Die IT hat sich mal wieder neu erfunden und treibt ein neues Schlagwort durch das Dorf. Um künftig Skalierbarkeit sicherzustellen und die Wartungskosten im Griff zu haben, werden große Applikationen in kleine Dienste zerlegt. Was man erhält bezeichnet man als Microservicearchitektur. Ein Microservice ist demnach ein unabhängig lauffähiges Artefakt, das dem Gesamtsystem eine kleine oder sehr kleine Menge an Verantwortlichkeiten bereitstellt.

Doch wie gut funktioniert die Implementierung eines Systems aus Microservices tatsächlich? Meist folgt nach der ersten Aufbruchstimmung die Ernüchterung und man sieht sich mit zahlreichen Fragen konfrontiert:

  • Wie schneide ich meine Services?
  • Welche Art von Interface biete ich eigentlich nach außen hin an?
  • Wie transportiere ich Zustände, die vorher im Monolith einfach verwaltbar waren (Security, Globale Filterparameter)?
  • Darf ich Ergebnisse anderer Services cachen?
  • Wie kann ich eine produktionsnahe Integrationsumgebung aufbauen und pflegen?
  • Wie finden sich die Services untereinander?
  • Orchestriere ich die Services im Browser oder ist eine Fassade besser?
  • Wie gehe ich mit Schnittstellenänderungen um, ohne meine Abhängigkeiten alle konkret zu kennen?
  • Und nicht zuletzt organisatorische Fragen wie beispielsweise: „Wie viele Services darf ein Team haben?“

Umsetzung von Microservices mit Spring Boot

Leider lässt sich nicht alles sofort beantworten. Und auch wenn im Java Umfeld durch Spring Boot sehr viel technische Unterstützung für die Umsetzung von Microservices vorhanden ist – alles kann damit nicht abgedeckt werden. Umso wichtiger ist es, ein Problembewusstsein für die organisatorischen, architektonischen Fragen zu entwickeln. Wer sensibilisiert ist, wird Herausforderungen beim Aufbau eines Systems von lose gekoppelten Services schneller erkennen und kann mögliche Lösungen zielführend diskutieren.

Integrata-Seminare zum Thema:

Konzeptionelle Seminare

Microservices 
Service Oriented Architecture (SOA) – Kompakt Seminar – Services, Domänen und Bebauungspläne

Technische Seminare

RESTful Web Services – Implementierung mit Java
Spring Aufbau
Apache ActiveMQ

Bildnachweis: pixabay CC0 Public Domain  by Unsplash

Weiterlesen