<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>voltage IT</title>
	<atom:link href="https://voltage-it.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://voltage-it.com/</link>
	<description>Mit agilem Softwareengineering  das Business gestalten.</description>
	<lastBuildDate>Mon, 26 Apr 2021 08:30:21 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.6</generator>

<image>
	<url>https://voltage-it.com/wp-content/uploads/2021/03/cropped-favicon-rund-voltage-it-32x32.png</url>
	<title>voltage IT</title>
	<link>https://voltage-it.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Warum agile Software-Entwicklung der perfekte Ansatz für IoT-Projekte ist</title>
		<link>https://voltage-it.com/agile-software-entwicklung-iot/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 26 Apr 2021 08:30:10 +0000</pubDate>
				<category><![CDATA[internet of things]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<guid isPermaLink="false">https://voltage-it.com/?p=1268</guid>

					<description><![CDATA[<p>Eine Herausforderung für Entwicklungsteams in IoT-Projekten besteht darin, ein breites Spektrum an Fähigkeiten in Bereichen wie Hardware, Netzwerke, Sicherheit, Cloud-Plattformen, Analytik, künstliche Intelligenz und Schnittstellen (API) abzudecken.</p>
<p>Der Beitrag <a href="https://voltage-it.com/agile-software-entwicklung-iot/">Warum agile Software-Entwicklung der perfekte Ansatz für IoT-Projekte ist</a> erschien zuerst auf <a href="https://voltage-it.com">voltage IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><b>Obwohl agile Prinzipien mittlerweile in der Softwareentwicklung weit verbreitet sind, werden viele IoT-Projekte nach wie vor auf traditionelle (zunehmend veraltete) Weise umgesetzt. Die Folge: Nicht wenige IoT-Projekte dauern viel länger als geplant oder scheitern völlig.</b></p>
<p><span style="font-weight: 400;">Eine Herausforderung für Entwicklungsteams in IoT-Projekten besteht darin, ein breites Spektrum an Fähigkeiten in Bereichen wie Hardware, Netzwerke, Sicherheit, Cloud-Plattformen, Analytik, künstliche Intelligenz und Schnittstellen (API) abzudecken. Diese Fähigkeiten sind in den meisten Organisationen traditionell sehr siloartig verteilt. Der Austausch und die Zusammenarbeit zwischen “Zuständigkeitssilos” funktioniert in vielen Fällen eingeschränkt bis gar nicht. Es fehlt eine gemeinsame Vision.</span></p>
<p><span style="font-weight: 400;">In IoT-Projekten müssen Entwicklungsteams jedoch integriert auf ein gemeinsames Ziel hinarbeiten. Dies ist einer der Hauptgründe, warum die traditionelle IoT-Entwicklung nach der Wasserfallmethode an ihre Grenzen stößt. Das beginnt schon bei der Projektsteuerung: Ein IoT-Projekt, das mit Methoden und Werkzeugen des klassischen Projektmanagements, wie GANTT-Charts geplant und gesteuert wird, läuft früher oder später aus dem Ruder und endet im Extremfall im Chaos. Das zeigt unsere Erfahrung.</span></p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_0">
				
				
				
				
				<span class="et_pb_image_wrap "><img fetchpriority="high" decoding="async" width="594" height="432" src="https://voltage-it.com/wp-content/uploads/2021/04/Agile-collaboration-instead-of-responsibility-silos.png" alt="" title="Agile collaboration instead of responsibility silos" srcset="https://voltage-it.com/wp-content/uploads/2021/04/Agile-collaboration-instead-of-responsibility-silos.png 594w, https://voltage-it.com/wp-content/uploads/2021/04/Agile-collaboration-instead-of-responsibility-silos-480x349.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 594px, 100vw" class="wp-image-1276" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><b>Teams im IoT Development: Agile Zusammenarbeit statt Zuständigkeitssilos</b></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><blockquote>
<p><span style="font-weight: 400;">“</span><i><span style="font-weight: 400;">Projekte, die agil umgesetzt wurden, weisen eine Erfolgsquote von 64 Prozent auf, verglichen mit 49 Prozent bei Projekten, die mit traditionellen Methoden umgesetzt wurden</span></i><span style="font-weight: 400;">” &#8211;</span><a href="https://www.informationweek.com/devops/why-iot-development-is-heading-to-agile/a/d-id/1334647"> <span style="font-weight: 400;">Boris Shiklo, CTO bei ScienceSoft.</span></a></p>
</blockquote>
<p><span style="font-weight: 400;">Agile Software-Entwicklung konzentriert sich auf Wertschöpfung statt Umsetzung einzelner Funktionen. Entlang von Wertschöpfungskette werden kleine funktionierende Teile der Software in Iterationen erstellt, statt auf ein komplettes Produkt (als Summe von Funktionen) hinzuarbeiten. Das hat in der Software-Entwicklung den großen Vorteil, dass Nutzer während der Entwicklungsphase Feedback geben und Anforderungen ändern können, ohne das gesamte Projekt in Gefahr zu bringen. </span></p>
<p><span style="font-weight: 400;">In IoT-Projekten ist dies besonders wichtig, da hier die fachlichen Anforderungen und das Zusammenwirken verschiedener Disziplinen und Zuständigkeitsbereiche in der Regel deutlich komplexer ist als in “normalen” Software-Projekten.</span></p>
<blockquote>
<p><span style="font-weight: 400;">“</span><i><span style="font-weight: 400;">IoT-Projekte sind nur dann erfolgreich, wenn alle Beteiligten an einer gemeinsamen Vision arbeiten. Ein Denken in Zuständigkeitssilos führt nicht zum Ziel</span></i><span style="font-weight: 400;">.” &#8211; Igor Pshul, Solution Architect.</span></p>
</blockquote>
<p><a href="https://agilemanifesto.org/iso/de/principles.html"><b>Agiles Manifest (2001)</b></a> <span style="font-weight: 400;">&#8211; Ausschnitt</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Funktionierende Software ist wichtiger als umfassende Dokumentation</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Individuen und Interaktionen sind wichtiger als Prozesse und Werkzeuge</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Zusammenarbeit mit dem Kunden ist wichtiger als Vertragsverhandlung</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Reagieren auf Veränderung ist wichtiger als das Befolgen eines Plans</span></li>
</ul>
<p><span style="font-weight: 400;">In IoT-Projekten, in denen Teams aus verschiedenen Bereichen der Architektur &#8211; Frontend, Middleware und Hardware &#8211; integriert zusammenarbeiten müssen, kommt es besonders auf eine reibungslose Interaktion zwischen Individuen an &#8211; Kommunikation ist ein erfolgskritischer Faktor. Um optimalen Austausch zu gewährleisten, braucht es zum einen die Bereitschaft im Team, einer gemeinsamen Vision zu folgen und zum anderen ein Projektmanagement, das die Zusammenarbeit über Zuständigkeitsgrenzen hinweg etabliert.</span></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">Die Rolle des Projektmanagers in agilen IoT-Projekten</span></h2>
<p><span style="font-weight: 400;">Der Erfolg von IoT-Projekten steht und fällt mit der Interaktion zwischen Entwicklern aus verschiedenen Bereichen der IoT-Architektur. Damit verändert sich auch die Rolle des Projektmanagements &#8211; weg von Aufgaben und Timelines hin zum Menschen. “People-Management” statt “Projekt-Management”.</span></p>
<p><span style="font-weight: 400;">Ziel des Projektmanagements in IoT-Projekten ist es, Entwickler in jeder Situation zu befähigen, wechselnde Rollen in agilen Teams zu übernehmen. “Projektmanager” &#8211; egal ob “Product Owner” oder “Scrum Master” &#8211; müssen in der Lage sein, Rollen und Kompetenzen in den Teams dynamisch zu steuern und die Rahmenbedingungen dafür schaffen, dass die Interaktion zwischen Entwicklern und den Teams jederzeit reibungsfrei funktioniert. </span></p>
<blockquote>
<p><span style="font-weight: 400;">“</span><i><span style="font-weight: 400;">Jetzt ist es ein extremer Teamsport [&#8230;] wir haben viel mehr Releases, aber die Prototypen sind kleiner und es gibt viel mehr Komponenten</span></i><span style="font-weight: 400;">.” &#8211;</span><a href="https://www.oreilly.com/content/creating-functional-teams-for-the-iot/"> <span style="font-weight: 400;">Harel Kodesh, ehem. CTO bei GE Software.</span></a></p>
</p>
</blockquote>
<h2><span style="color: #800080;">Gemeinsame Vision &amp; vertikale Orientierung im Team</span></h2>
<p><span style="font-weight: 400;">In Zeiten, in denen sich Technologien und Anforderungen an Software-Systeme immer schneller ändern, verändern sich auch Architekturen &#8211; weg von einzelnen Funktionen (horizontal) in Monolithen hin zu Wertschöpfungsketten (vertikal) in modularen Systemen. Dementsprechend muss sich auch die Organisation von Teams in IoT-Projekten vertikal ausrichten. Statt spezialisierte Teams für die Entwicklung einzelner Funktionen werden cross-funktionale Teams gebildet, die die Features einer Wertschöpfungskette umsetzen. </span></p>
<p><span style="font-weight: 400;">Die Herausforderung für Projektmanager besteht vor allem in Unternehmen, die klassisch “horizontal ticken”, darin, eine vertikale Orientierung im Team (und im Produkt) zu etablieren. Dazu braucht es eine agile Kultur und eine gemeinsame Vision für das Produkt und den Weg zum Ergebnis. Fehlen diese Kultur und Vision im Team (oder auch nur bei einzelnen Entwicklern) dann ist Reibung vorprogrammiert und das Risiko zu scheitern extrem hoch.</p>
<p></span></p>
<h2><span style="color: #800080;">Kommunikationsblockaden überwinden</span></h2>
<p><span style="font-weight: 400;">In einem idealtypischen IoT-Projekt arbeiten Entwickler aus allen Bereichen der System-Architektur in agilen Teams zusammen. In der Praxis können jedoch besonders in internationalen Projekten unterschiedliche Sprachen, Zeitzonen, Kulturen und Arbeitsweisen die Zusammenarbeit und den Austausch erschweren, im Extremfall sogar unmöglich machen. Hier muss das Projektmanagement gegebenenfalls Brücken bauen. </span></p>
<p><span style="font-weight: 400;">Oft braucht es kreative Workarounds, um Kommunikationsblockaden zwischen Teams aufzulösen. Dazu ein Beispiel aus unserer Praxis: Läuft die Zusammenarbeit zwischen den Bereichen Software (Frontend, Middleware) und Hardware (Firmware) nicht optimal &#8211; etwa, weil verschiedene Sprachen, Kulturen, Zeitzonen o.ä. aufeinander treffen &#8211; dann muss das Projektmanagement gegebenenfalls gemeinsam mit dem Software-Team Wege finden, auch ohne Zugang zur Hardware zu entwickeln. Eine Lösung wäre beispielsweise, die Hardware mithilfe eines digitalen Zwillings zu simulieren.</span></p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_1">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="531" height="484" src="https://voltage-it.com/wp-content/uploads/2021/04/Digital-twin-helps-neutralize-communication-barriers.png" alt="" title="Digital twin helps neutralize communication barriers" srcset="https://voltage-it.com/wp-content/uploads/2021/04/Digital-twin-helps-neutralize-communication-barriers.png 531w, https://voltage-it.com/wp-content/uploads/2021/04/Digital-twin-helps-neutralize-communication-barriers-480x438.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 531px, 100vw" class="wp-image-1278" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><b>Beispiel: Digitaler Zwilling hilft, Kommunikationsblockaden zu neutralisieren</b></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><span style="font-weight: 400;">Ein solcher Workaround per Simulation mit digitalem Zwilling ermöglicht es, Blockaden im Projekt pragmatisch zu beseitigen auch wenn die Entwicklung eines Digital Twins ursprünglich nicht geplant war. Das macht jedoch nur dann Sinn, wenn der Aufwand in einem vernünftigen Verhältnis zur Minderung von Reibung in der Kommunikation und damit zu einem Zuwachs an Entwicklungsgeschwindigkeit im Projekt steht.</span></p>
<p><span style="font-weight: 400;">Zudem müssen Entwickler aus dem Software-Team in der Lage sein, die Hardware zu simulieren. Hier ist echte Full-Stack-Entwicklung gefragt, die über den Kompetenzbereich der “normalen” Software-Entwicklung hinausgeht. Deshalb stehen wir bei voltage IT für holistisches Full Stack Development statt Entwicklung in Zuständigkeits- und Kompetenzinseln.</span></p>
<h2><span style="color: #800080;">Unsere Vision: 100% holistische Entwicklung in autonomen Teams</span></h2>
<p><span style="font-weight: 400;">Software-Entwicklung ist Team-Sport, keine Einzeldisziplin. IoT-Projekte sind dann erfolgreich, wenn es gelingt, Kompetenzen innerhalb und zwischen den beteiligten Teams zu steuern, Stärken zu kombinieren und Zuständigkeiten zu bündeln. Ziel ist es, Teams zusammenzustellen, die Probleme autonom lösen können. Die Herausforderung für Project Owner besteht darin, die optimale Balance zwischen Steuerung und Autonomie zu finden. </span></p>
<p><span style="font-weight: 400;">Bei voltage IT folgen wir diesen Prinzipien:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Verantwortlichkeiten &amp; Zuständigkeiten folgen Zielen, nicht den Rollen im Team<br />
</b><span style="font-weight: 400;">Agile Software-Entwicklung orientiert sich an Wertschöpfung statt an Funktionen. Verantwortlichkeiten &amp; Zuständigkeiten im Team werden so verteilt, dass die Features einer Wertschöpfungskette schnell und effizient umgesetzt werden können. Dazu müssen gegebenenfalls klassische Rollen und Zuständigkeiten aufgebrochen werden. An die Stelle von spezialisierten Teams treten cross-funktionale Teams, in denen notwendige Kompetenzen bestmöglich kombiniert werden.</span></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Full-Stack-Entwicklung und -Kompetenzen im Team, nicht in Einzelpersonen<br />
</b><span style="font-weight: 400;">Sind Kompetenzen gleichmäßig auf möglichst viele Projektbeteiligte verteilt, lassen sich einfacher und flexibler agile Teams bilden, die in der Lage sind, autonom zu entwickeln. Zudem sinkt durch die Verteilung von Kompetenzen das Projektrisiko durch Ausfall einzelner Entwickler (“Bus Factor”).  </span></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Agile Methoden wie z.B. Pair Programming stärken die Autonomie<br />
</b><span style="font-weight: 400;">Autonome Teams sind in der Lage, aus sich selbst heraus auf neue Anforderungen im Projekt zu reagieren und Lösungen zu finden. Zudem können autonome Teams mithilfe von agilen Arbeitsmethoden und Tools fortlaufend die Qualität der Entwicklung sichern. Bei voltage IT setzen wir auf “Pair Programming”, bei dem Entwickler paarweise zusammenarbeiten, simultan entwickeln und Qualität prüfen. </span></li>
</ul>
<ul></ul>
<h2><span style="color: #800080;">Fazit: Agile Entwicklung ist perfekt für IoT-Projekte</span></h2>
<p><span style="font-weight: 400;">So wie Anwendungen im IoT dezentral organisiert sind, muss auch die Software-Entwicklung dezentral organisiert sein. An die Stelle des klassischen Projektmanagements nach dem Wasserfall-Prinzip tritt Agile Leadership. Cross-funktionale Teams arbeiten autonom und holistisch entlang von Wertschöpfungsketten, statt fremdbestimmt und engmaschig funktionale Anforderungen abzuarbeiten. Das ist bei voltage IT nicht nur Vision und Anspruch, sondern erfolgreiche Realität in komplexen IoT-Projekten.</span></p>
<h4><span style="color: #800080;">Leseempfehlungen</span></h4>
<ul>
<li aria-level="1"><a href="https://www.scrum.org/resources/blog/how-much-autonomy-should-teams-get-their-agile-leader"><b>How Much Autonomy Should Teams get from Their Agile Leader?</b></a> <span style="font-weight: 400;">(scrum.org)</span></li>
</ul>
<ul>
<li aria-level="1"><a href="https://www.youtube.com/watch?v=8OKdilyNOIg"><b>Allen Holub über Software-Handwerk und agile Prinzipien</b></a> <span style="font-weight: 400;">(Video)</span></li>
</ul>
<p><b></b></p>
<h4><span style="color: #800080;">Wir unterstützen Sie</span></h4>
<p><span style="font-weight: 400;">Seit vielen Jahren kämpfen wir dafür, dass Unternehmen die richtigen IT-Entscheidungen treffen und Software-Systeme bekommen, von denen sie nachhaltig profitieren und die sie selbst beherrschen können. Unser Credo: Vernünftige Lösungen jenseits von Technologie-Hype.</span></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>
<p>Der Beitrag <a href="https://voltage-it.com/agile-software-entwicklung-iot/">Warum agile Software-Entwicklung der perfekte Ansatz für IoT-Projekte ist</a> erschien zuerst auf <a href="https://voltage-it.com">voltage IT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Schluss mit “Quick &#038; Dirty” &#8211; Aufruf zu mehr “Vernunft” in der Software- Entwicklung</title>
		<link>https://voltage-it.com/quick-and-dirty/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 13 Apr 2021 11:46:46 +0000</pubDate>
				<category><![CDATA[Software Architecture]]></category>
		<guid isPermaLink="false">https://voltage-it.com/?p=1198</guid>

					<description><![CDATA[<p>“Quick &#038; Dirty” in der Software-Entwicklung spart kurzfristig Zeit, kann aber langfristig mehr schaden als nützen. Hier ist ein Umdenken in Richtung “vernünftige” Software-Entwicklung gefragt. Erfahren Sie hier, worauf es dabei ankommt.</p>
<p>Der Beitrag <a href="https://voltage-it.com/quick-and-dirty/">Schluss mit “Quick &#038; Dirty” &#8211; Aufruf zu mehr “Vernunft” in der Software- Entwicklung</a> erschien zuerst auf <a href="https://voltage-it.com">voltage IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_1 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><b>“Quick &amp; Dirty” in der Software-Entwicklung spart kurzfristig Zeit, kann aber langfristig mehr schaden als nützen. Hier ist ein Umdenken in Richtung “vernünftige” Software-Entwicklung gefragt. Erfahren Sie hier, worauf es dabei ankommt.</b></p>
<p>Software, die schnell aber handwerklich schlecht entwickelt wird, verursacht weltweit immensen Schaden &#8211; der größte Teil davon durch Software-Ausfälle im Betrieb.<a href="https://www.it-cisq.org/the-cost-of-poor-software-quality-in-the-us-a-2020-report.htm"> <span>Studien zufolge</span></a> lagen die Kosten von Ausfällen infolge schlechter Softwarequalität in den USA im Jahr 2020 bei 1,56 Billionen US-Dollar. Das ist 10-mal teurer, als Fehler in der Entwicklung zu vermeiden bzw. zu beheben, bevor die Software in Betrieb genommen wird.</p>
<p>Wenn Software weiterentwickelt wird und wächst, neigt ihre Architektur dazu, komplex zu werden. Das macht die Wartung der Software schwierig und fehleranfällig. Sind Design, Architektur und Quellcode zudem von vornherein schlecht angelegt, kann früher oder später jede noch so kleine Anpassung für Product Owner und Entwickler zum Alptraum werden.<span class="Apple-converted-space"> </span></p>
<p>Die Herausforderung für Entwickler ist, Fehler im Programmiercode zu vermeiden bzw. so früh wie möglich zu erkennen, sodass sie relativ kostengünstig zu beheben sind. Dazu müssen Software-Handwerk und Qualitätsmanagement ab der ersten Zeile Code eng ineinandergreifen. Denn bereits in Zeile 1 wird die Basis für qualitätvolle und nachhaltige Software gelegt.<span class="Apple-converted-space"> </span></p>
<p>Vernünftige Software-Entwicklung zielt darauf ab, Geschwindigkeit und Qualität bestmöglich zu vereinbaren. Der Schlüssel liegt in gutem Software-Design, das nicht “quick &amp; dirty” sondern nachhaltig entwickelt werden sollte.</p>
<h4><span style="color: #800080;">Grundwerte unseres Software-Handwerks (Software Craftsmanship)</span></h4>
<ul>
<li><b>Qualität:</b> Software soll nicht nur funktionieren, sondern auch gut gemacht sein</li>
<li><b>Mehrwert:</b> Wir reagieren nicht nur auf Veränderungen, sondern schaffen stetig Mehrwerte</li>
<li><b>Team:</b> Nicht Individuen schaffen gute Ergebnisse, sondern eine Gemeinschaft von Fachleuten</li>
<li><b>Kooperation</b>: Produktive Partnerschaften statt nur Zusammenarbeit mit Kunden</li>
</ul>
<p><span>Quelle:<a href="https://manifesto.softwarecraftsmanship.org/"> manifesto.softwarecraftsmanship.org</a></span></p>
<h2><span style="color: #800080;"><br />Komplexe Software schnell und auf höchstem Qualitätsniveau entwickeln</span></h2>
<p>Software Code wird heutzutage dank fortgeschrittener Tools und Methoden schneller als je zuvor veröffentlicht. Dadurch können Unternehmen neue Funktionen in immer kürzerer Zeit entwickeln. Gleichzeitig wächst auch die Komplexität der Funktionen, die früher sehr viel mehr Zeit für Entwicklung und Testing beansprucht hat als heute. Diese erfreuliche Entwicklung hat jedoch Grenzen, wenn die Qualität der Software unter Zeitdruck und Komplexität leidet.<span class="Apple-converted-space"> </span></p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_2">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="617" height="432" src="https://voltage-it.com/wp-content/uploads/2021/04/reasonable-software-development.png" alt="" title="reasonable-software-development" srcset="https://voltage-it.com/wp-content/uploads/2021/04/reasonable-software-development.png 617w, https://voltage-it.com/wp-content/uploads/2021/04/reasonable-software-development-480x336.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 617px, 100vw" class="wp-image-1211" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><b>Die Herausforderung: </b>Je schneller Unternehmen neue Funktionen entwickeln, desto schwieriger ist es, die Qualität und Zuverlässigkeit von Software sicherzustellen. Durch sehr kurze Testzeiten wächst das Risiko, dass mehr Fehler unentdeckt bleiben und ihren Weg in die Produktion finden. Je nach Häufigkeit und Umfang von Anpassungen akkumulieren diese Fehler und lassen Software-Design und -Architektur über kurz oder lang erodieren bzw. verrotten. Die Kosten für das Finden und Beheben von Fehlern in erodierenden Systemen steigen mit jeder Anpassung.</p>
<p><b>Kosten eines Fehlers im Software-Entwicklungsprozess</b></p>
<p>Kritische Software-Fehler im laufenden Betrieb zu finden und zu beheben ist<a href="https://www.it-cisq.org/the-cost-of-poor-software-quality-in-the-us-a-2020-report.htm"> <span>10-mal teurer</span></a>, als diese zu finden und zu beheben, bevor die Software in Betrieb genommen wird. Es lohnt sich also zu Beginn in die Vermeidung von Fehlern durch sauberes Design zu investieren, statt unter Zeit- und Erfolgsdruck “quick &amp; dirty” zu entwickeln.</p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_3">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="1134" height="654" src="https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs.png" alt="" title="SDLC costs" srcset="https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs.png 1134w, https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs-980x565.png 980w, https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs-480x277.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1134px, 100vw" class="wp-image-1215" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_7  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;">Quelle: altexsoft.com</p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_8  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h2><span style="color: #800080;">Die Kehrseite von “quick &amp; dirty”</span></h2>
<p><b>Software-Erosion, -Zerfall oder -Verrottung</b> bezeichnet die schleichende Verschlechterung einer Software infolge schlechter Planung und/ oder Umsetzung. Indizien für Software-Erosion sind u.a. die Akkumulation von Programmfehlern, erschwerte Anpassbarkeit, Rückgang der Performanz, sowie Inkompatibilitäten mit neuen und zukünftigen Software-Umgebungen. Die Software bekommt mittelfristig einen “Code-Smell”, bei dem der Quellcode zwar noch funktioniert, aber schlecht strukturiert ist. Die Software wird nach und nach zu einem Altsystem und damit funktional und wirtschaftlich unbrauchbar.</p>
<h4><span style="color: #800080;">Symptome für verrottendes Software-Design</span></h4>
<ol>
<li><b>Starrheit:</b> das System lässt sich nur schwer und mit viel Aufwand ändern</li>
<li><b>Fragilität: </b>kleine Änderungen haben unvorhersehbare Konsequenzen im System</li>
<li><b>Unbeweglichkeit:</b> einzelne Komponenten lassen sich nur schwer isolieren</li>
<li><b>Viskosität:</b> die Architektur der Software lässt sich bei Eingriffen schwer erhalten</li>
<li><b>Unnötige Komplexität: </b>die Software enthält Infrastruktur ohne direkten Nutzen</li>
<li><b>Unnötige Wiederholungen:</b> Architektur enthält Code-Strukturen, die sich wiederholen</li>
<li><b>Undurchsichtigkeit:</b> Quellcode ist schwer zu lesen und zu verstehen</li>
</ol>
<p>Quelle: in Anlehnung an Robert C. Martin</p>
<h2><span style="color: #800080;">Nachhaltige Software-Entwicklung statt “quick &amp; dirty”</span></h2>
<p>Die Qualität von Software steht und fällt langfristig mit einem guten Software-Design und einer sauberen Umsetzung des Software-Codes. Die Weiche für Qualität wird bereits im Design gestellt, denn der Plan für eine Computersoftware ist so wichtig wie der Plan für ein Haus, sonst entsteht Chaos. Das Software-Design definiert, was in der Umsetzung in Form von Software-Code gebaut werden soll. Beide &#8211; Design und Code &#8211; erfordern höchstes handwerkliches Niveau.</p>
<h4><span style="color: #800080;">Die Rolle von gutem Software-Design</span></h4>
<p>Gutes Design kostet zwar Zeit und Mühe, zahlt sich aber aus, weil es die Weiterentwicklung der Software in Zukunft erleichtert. Schlechtes Design spart kurzfristig Zeit und Aufwand, verursacht aber technische Schulden, die die Produktivität der Software-Entwicklung später bremsen.</p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_4">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="672" height="363" src="https://voltage-it.com/wp-content/uploads/2021/04/cumulatice-fuctionality.png" alt="" title="cumulatice-fuctionality" srcset="https://voltage-it.com/wp-content/uploads/2021/04/cumulatice-fuctionality.png 672w, https://voltage-it.com/wp-content/uploads/2021/04/cumulatice-fuctionality-480x259.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 672px, 100vw" class="wp-image-1207" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_9  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><span>Quelle:<a href="https://martinfowler.com/bliki/DesignStaminaHypothesis.html"> martinfowler.com</a></span></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_10  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;">Gutes versus schlechtes Software-Design</span></h4></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_5">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="701" height="396" src="https://voltage-it.com/wp-content/uploads/2021/04/schlechtes-vs-gutes-design.png" alt="" title="schlechtes-vs-gutes-design" srcset="https://voltage-it.com/wp-content/uploads/2021/04/schlechtes-vs-gutes-design.png 701w, https://voltage-it.com/wp-content/uploads/2021/04/schlechtes-vs-gutes-design-480x271.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 701px, 100vw" class="wp-image-1213" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_11  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;">Quelle: in Anlehnung an<a href="https://www.geeksforgeeks.org/difference-between-good-design-and-bad-design-in-software-engineering/"> <span>geeksforgeeks.org</span></a></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_12  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;">Die Rolle von gutem Software-Code</span></h4>
<p>Die Qualität und Struktur des Quellcodes entscheidet wesentlich darüber, ob sich eine Software wirtschaftlich weiterentwickeln lässt oder nicht. Wird Software-Code etwa zu Beginn der Entwicklung unter Zeitdruck schnell und “schmutzig” entwickelt, schleichen sich Fehler ein, die man später im Projekt teuer bezahlt. Anders als bei “Clean Code”, der einfach und strukturiert geschrieben ist, wachsen die Kosten für Anpassungen von “schmutzigem” Code über die Zeit.</p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_6">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="1024" height="713" src="https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-1024x713.png" alt="" title="costs-dirty-clean-code" srcset="https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-1024x713.png 1024w, https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-980x682.png 980w, https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-480x334.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" class="wp-image-1205" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_13  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><span>Quelle:<a href="https://www.geeksforgeeks.org/7-tips-to-write-clean-and-better-code-in-2020/"> geeksforgeeks.org</a></span></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_14  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>“Dirty and Fast Code” hat nur der Entwickler im Griff, der diesen geschrieben hat und selbst dieser tut sich nach einiger Zeit und tausenden von Zeilen irgendwann schwer damit, seinen eigenen Code zu verstehen. Und was passiert, wenn dieser Entwickler ausfällt, etwa durch Krankheit, Urlaub oder, weil er zu einem anderen Arbeitgeber wechselt? Dann kann es zur Katastrophe kommen &#8211; der sogenannte “Bus-Faktor” beschreibt dieses Risiko.<b></b></p>
<p><b>Exkurs: Der &#8222;Bus-Faktor&#8220;</b> beziffert die Mindestanzahl von Entwicklern im Team, die plötzlich aus einem Projekt verschwinden müssen, damit ein Projekt wegen Mangel an Code-Wissen zum Stillstand kommt. Wenn sich nur ein Entwickler mit dem Code auskennt, ist das Risiko extrem hoch, dass ein Projekt zum Stillstand kommt, sollte dieser Entwickler ausfallen. Es empfiehlt sich daher, Code-Wissen immer im Team zu verteilen.Sobald andere Entwickler an fremdem Code arbeiten sollen, wächst der Aufwand immens, da diese zunächst die individuelle Struktur verstehen müssen, bevor sie diese anpassen können. Und selbst dann, lassen sich die Risiken von Eingriffen nur schwer abschätzen, da verborgene Beziehungen im System nicht einfach zu erkennen sind. “Clean Code” dagegen macht es Entwicklern, die den Code nicht selbst geschrieben haben, sehr viel leichter, Strukturen zu verstehen und diese mit minimalem Risiko weiterzuentwickeln.</p>
<p>&#8222;<i>Clean Code ist einfach und direkt. Clean Code liest sich wie eine gut geschriebene Prosa. Clean Code verschleiert nie die Absicht des Designers, sondern ist voller klarer Abstraktionen und geradliniger Kontrolllinien</i>.&#8220; &#8211;<a href="https://www.goodreads.com/quotes/7029841-clean-code-is-simple-and-direct-clean-code-reads-like"> <span>Grady Booch</span></a> (Autor von Object-Oriented Analysis and Design with Applications)</p>
<p><span><b>Leseempfehlung</b> zur Bedeutung der Architektur für die Nachhaltigkeit von Software:<br /><a href="https://voltage-it.com/blog/">Software-Architektur für KMU: Microservices vs Monolith – Welches ist die beste Lösung?</a><span class="Apple-converted-space"> </span></span></p>
<h2><b><br /></b><span style="color: #800080;">Agile Softwareentwicklung nach handwerklichen Prinzipien</span></h2>
<p>Software-Entwicklung nach dem Quick-and-dirty-Prinzip verursacht immense Folgekosten und lässt Product Owner in Unternehmen schlecht schlafen. Deshalb folgen wir bei voltage IT in der Softwareentwicklung den Prinzipien des “Software Craftsmanship”, die nachhaltige Qualität konsequent über kurzfristige Erfolge stellt.<span class="Apple-converted-space"> </span></p>
<p>Nachhaltiges Software-Design und sauberer Code spielen in unseren Projekten eine zentrale Rolle. Für die Umsetzung nutzen wir agile Methoden und Werkzeuge:</p>
<ul>
<li><b>TDD (Test Driven Development): </b>Die Funktionalität jedes Software Features wird über mindestens einen automatisierten Test überwacht. Dies schafft Sicherheit und Vertrauen bei Code-Änderungen und ermöglicht schnelle Entwicklungszyklen ohne manuelle Testdurchläufe.</li>
<li><b>Pair Programming/ Continuous Code Review: </b>Während ein Entwickler den Code schreibt, liefert ein anderer laufend Feedback und macht Verbesserungsvorschläge. Dadurch entsteht bereits während der Arbeit ein qualitativ besserer Code und spart nachträgliche Code Reviews.</li>
<li><b>Refactoring: </b>Gut gemachte Software muss intensiv und kontinuierlich refaktorisiert werden, um gut gemacht zu bleiben. Beim Refactoring wird die interne Struktur eines bestehenden Code angepasst ohne das externe Verhalten zu ändern.</li>
<li><b>Continuous Delivery: </b>Code wird in sehr kurzen Zyklen angepasst, sodass Änderungen jederzeit für das gesamte Team nachprüfbar bleiben. Damit lassen sich große, verborgenen Softwarefehler in der Produktion vermeiden und kleinere Defekte blitzschnell beheben.</li>
</ul>
<p><b>Ein Wort zum Schluss:</b> In vielen Bereichen unseres Lebens konnten handwerkliche Tätigkeiten durch Fließband und Automatisierung rationalisiert werden, was in vielen Fällen aus ökonomischer Sicht seine Berechtigung hat. Unsere langjährige Erfahrung zeigt, dass Fließbandarbeit in der Softwareentwicklung an Grenzen stößt und mittelfristig eher schadet als nützt. Gute Software braucht nach wie vor gutes Handwerk, und das wird so bleiben.</p>
<h4><span style="color: #800080;">Leseempfehlungen</span></h4>
<ul>
<li><a href="https://refactoring.com/"><span><b>Refactoring</b></span></a> &#8211; Kurze Einführung von Martin Fowler (refactoring.com)</li>
<li><a href="https://martinfowler.com/bliki/DesignStaminaHypothesis.html"><span><b>DesignStaminaHypothesis</b></span></a> &#8211; Lohnt sich der Aufwand, Software gut zu gestalten? (martinfowler.com)</li>
<li><a href="https://www.it-cisq.org/the-cost-of-poor-software-quality-in-the-us-a-2020-report.htm"><span><b>Cost of Poor Software Quality</b></span></a> in den USA: 2020 Report (it-cisq.org)</li>
</ul>
<h4><span style="color: #800080;">Wir unterstützen Sie</span></h4>
<p>Seit vielen Jahren kämpfen wir dafür, dass Unternehmen die richtigen IT-Entscheidungen treffen und Software-Systeme bekommen, von denen sie nachhaltig profitieren und die sie selbst beherrschen können. Unser Credo: Vernünftige Lösungen jenseits von Technologie-Hype.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>
<p>Der Beitrag <a href="https://voltage-it.com/quick-and-dirty/">Schluss mit “Quick &#038; Dirty” &#8211; Aufruf zu mehr “Vernunft” in der Software- Entwicklung</a> erschien zuerst auf <a href="https://voltage-it.com">voltage IT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Software-Architektur für KMU: Microservices vs Monolith &#8211; Welches ist die beste Lösung?</title>
		<link>https://voltage-it.com/microservice-vs-monolith/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 02 Mar 2020 01:27:20 +0000</pubDate>
				<category><![CDATA[Software Architecture]]></category>
		<guid isPermaLink="false">http://voltage-it.com/?p=1</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://voltage-it.com/microservice-vs-monolith/">Software-Architektur für KMU: Microservices vs Monolith &#8211; Welches ist die beste Lösung?</a> erschien zuerst auf <a href="https://voltage-it.com">voltage IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_2 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_2">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_2  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_15  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span><b>Microservices sind seit Jahren hype, aber nicht immer die beste Lösung. Was vor allem kleine und mittlere Unternehmen mit knappen Ressourcen oft übersehen: Microservice-Architekturen sind trotz aller Vorteile im laufenden Betrieb echte Ressourcenfresser. Erfahren Sie hier mehr über (oft totgesagte) Alternativen.</b></span></p>
<p><span>Um Missverständnissen vorzubeugen: Microservice-Architekturen sind für KMU nicht per se ungeeignet; sie haben jedoch einige Tücken, die man bedenken sollte. Um die Flexibilität, die Microservices ohne Zweifel bieten, voll auszuschöpfen müssen Unternehmen in der Lage sein, dezentrale Entwicklung und Pflege in ihrer IT-Organisation abzubilden. Das ist oft eine große Herausforderung.</span></p>
<p><span>“<i>Unternehmen, die nicht über ausgereifte Teams für die Software-Entwicklung und -pflege verfügen, sollten kritisch hinterfragen, ob sie sich Microservices wirklich leisten können</i>.” &#8211; Igor Pshul, Solution Architect</span></p>
<p><span>Monolithische Architekturen werden oft als überkommenes Gegenmodell zu Microservices dargestellt. Sie sind jedoch nicht so schlecht wie ihr Ruf, vorausgesetzt sie werden handwerklich auf einem hohen Qualitätsniveau umgesetzt. In (oft ideologisch geführten) Debatten um Software-Architekturen werden die Vorteile von Monolithischen Architekturen nicht selten ignoriert.</span></p>
<p><span>Welcher Architekturstil im Einzelfall der richtige ist entscheidet sich nicht daran, was gerade technologisch en vogue ist. Entscheidend ist vielmehr, welcher Ansatz für ein Unternehmen realisierbar ist und sich besser eignet, Geschäftsziele zu erreichen. Deshalb unterstützen wir bei voltage IT unsere Kunden objektiv und mit klarem Blick auf den langfristigen Erfolg.</span></p>
<p><span>Die Herausforderung, vor dem jedes Unternehmen früher oder später steht: durch Erosion ihrer Architektur werden Software-Systeme nach und nach fehleranfälliger und ineffizienter. Schon kleinste Anpassungen können schließlich mit viel Angst und Schmerz verbunden sein. Wir wollen im Folgenden Hinweise geben, wie Sie mit der richtigen Architektur vorbeugen können.<br /> </span></p>
<h2><span style="color: #800080;">Microservice-Architektur: Eigenschaften, Anforderungen, Pro &amp; Contra</span></h2>
<p><span>Microservices stehen für einen Architekturstil von Software-Anwendungen, die aus kleinen Dienste (Microservices) bestehen. Jeder einzelne Service wird in einem eigenen Prozess ausgeführt und kommuniziert über Schnittstellen (HTTP, REST API) mit anderen Services oder Systemen im Unternehmen.<span class="Apple-converted-space"> </span></span></p>
<p><span>Services werden um Geschäftsfunktionen herum organisiert, weitestgehend dezentral verwaltet und können unabhängig voneinander und voll automatisiert bereitgestellt werden (automated deployment). Dabei können Microservices in verschiedenen Programmiersprachen entwickelt sein und unterschiedliche Technologien für die Datenspeicherung verwenden. Die Umsetzung erfolgt mithilfe von Containern, die mit Kybernetes orchestriert (bereitgestellt, skaliert und verwaltet) werden.</span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_3">
				<div class="et_pb_column et_pb_column_3_5 et_pb_column_3  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_16  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;">Vorteile von Microservice-Architekturen:</span></h4>
<ul>
<li><span><b>Flexibilität: </b>durch Modularisierung leicht ersetzbar und erweiterbar</span></li>
<li><span><b>Nachhaltigkeit:</b> Softwareentwicklung langfristig beherrschbar</span></li>
<li><span><b>Risiko:</b> Änderungen am Gesamtsystem weniger riskant</span></li>
<li><span><b>Freiheit:</b> unterschiedliche Technologien einsetzbar</span></li>
<li><span><b>Skalierbarkeit:</b> granulare Erweiterung bei Bedarf</span></li>
</ul></div>
			</div>
			</div><div class="et_pb_column et_pb_column_2_5 et_pb_column_4  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_7">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="274" height="241" src="https://voltage-it.com/wp-content/uploads/2021/02/345.png" alt="" title="345" class="wp-image-690" /></span>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_4">
				<div class="et_pb_column et_pb_column_2_5 et_pb_column_5  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_8">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="182" height="214" src="https://voltage-it.com/wp-content/uploads/2021/02/860.png" alt="" title="860" class="wp-image-696" /></span>
			</div>
			</div><div class="et_pb_column et_pb_column_3_5 et_pb_column_6  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_17  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;">Herausforderungen:</span></h4>
<ul>
<li><span><b>Ressourcen:</b> Verschiedene Teams für Pflege und Entwicklung nötig</span></li>
<li><span><b>Kommunikation:</b> Steuerung unabhängiger Deployment-Einheiten</span></li>
<li><span><b>Performance: </b>Latenzzeiten im Zusammenspiel von Services und Systemen</span></li>
<li><span><b>Infrastruktur:</b> Redundanzen durch unabhängige Deployment-Prozesse</span></li>
<li><span><b>Sicherheit:</b> Jede API ist potenzieller Angriffspunkt für Cyberkriminalität</span></li>
<li><span><b>Architektur:</b> Dezentrale Service-Struktur erhalten (“Monolithisierung” vermeiden)</span></li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_5">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_7  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_18  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span><b>Fazit:</b> Microservice-Architekturen sind per se flexibel in der Anpassung und Weiterentwicklung. Dafür müssen jedoch verteilte Teams bereitgestellt und koordiniert werden. Bei stark verteilten Systemen entwickeln Unternehmen einen Overhead für die Verwaltung und Kommunikation.</span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_6">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_8  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_19  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span></span></p>
<h2><span style="color: #800080;">Monolithische Architektur: Eigenschaften, Anforderungen, Pro &amp; Contra</span></h2>
<p><span>Anders als verteilte Systeme auf Basis von Microservices verbinden Monolithische Software-Architekturen ihre funktionalen Elemente in einem einzigen homogenen Gebilde. Die Komponenten des Systems werden gemeinsam bereitgestellt (Deployment) und in einem gemeinsamen Prozess betrieben. Sie lassen sich dementsprechend nur als Ganzes skalieren.</span></p>
<p><span>Die Vorteile Monolithischer Architekturen entsprechen größtenteils den Nachteilen von Microservice-Architekturen und umgekehrt.<span class="Apple-converted-space"> </span></span></p>
<p><span></span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_7">
				<div class="et_pb_column et_pb_column_3_5 et_pb_column_9  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_20  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;"> Vorteile von Monolithischen Architekturen: </span></h4>
<ul>
<li><span><b>Entwicklung: </b> “klassische” Umsetzung und einfacher Roll-out </span></li>
<li><span><b>Kommunikation:</b> zentrale Steuerung einer Deployment-Einheit</span></li>
<li><span><b>Performance:</b> “kurze” Kommunikationswege zwischen Komponenten </span></li>
</ul>
<h4><span style="color: #800080;"> Herausforderungen: </span></h4>
<ul>
<li><span><b> Skalierbarkeit: </b> „one size fits all“ stößt bei wachsender Komplexität an Grenzen </span></li>
<li><span><b> Nachhaltigkeit: </b> Softwareentwicklung zunehmend mit Aufwand und Angst verbunden </span></li>
<li><span><b> Risiko:</b> Änderungen am Gesamtsystem zunehmend riskant </span></li>
<li><span><b> Freiheit:</b>  beschränkt auf Technologien, die harmonieren </span></li>
</ul></div>
			</div>
			</div><div class="et_pb_column et_pb_column_2_5 et_pb_column_10  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_9">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="107" height="202" src="https://voltage-it.com/wp-content/uploads/2021/02/400.png" alt="" title="400" class="wp-image-694" /></span>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_8">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_11  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_21  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner">Fazit: Monolithische Architekturen lassen sich einfach entwickeln, ausrollen und mit schlanken Ressourcen betreiben. Sie sind häufig performanter als servicebasierte Architekturen. Jedoch neigen monolithische Systeme (insbesondere bei Schwächen in der Entwicklung) dazu, mit wachsender Komplexität schwerfälliger in der Anpassung und Erweiterung z.B. um Komponenten für KI oder Automatisierung zu werden. </div>
			</div><div class="et_pb_module et_pb_text et_pb_text_22  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span></span></p>
<h2><span style="color: #800080;"> Modulare Monolithen: Das Beste aus beiden Welten kombinieren </span></h2>
<p><span> Was in der oft ideologisch geführten Debatte um Software-Architekturen nicht selten untergeht: Microservices und Monolithen schließen sich nicht gegenseitig aus. Das Optimum liegt wie so oft irgendwo in der Mitte. Smarte Programmierer vereinen das Beste aus beiden Welten und schaffen Systeme, die sich nicht dogmatisch an Architekturstilen orientieren. Entscheidend ist der Business Value, der aus der intelligenten Kombination verschiedener Ansätze resultiert. </span></p>
<p><span></span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_9">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_12  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_10">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="800" height="600" src="https://voltage-it.com/wp-content/uploads/2021/02/slide.034.png" alt="" title="slide.034" srcset="https://voltage-it.com/wp-content/uploads/2021/02/slide.034.png 800w, https://voltage-it.com/wp-content/uploads/2021/02/slide.034-480x360.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 800px, 100vw" class="wp-image-700" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_23  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><span>Quelle:<a href="http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html"> Simon Brown @ codingthearchitecture.com</a></span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_10">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_13  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_24  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span>Wir bei voltage IT verfolgen besonders für kleine und mittlere Unternehmen mit knappen Ressourcen eine strukturierte Software-Entwicklung, die monolithisch startet, jedoch bei Bedarf jederzeit die Vorteile von Microservices nutzen kann. Sinnvoll ist beispielsweise, im Monolithen eine klare vertikale Trennung nach Funktionalitäten vorzunehmen und nach höchsten Qualitätsstandards zu entwickeln: Domain Driven Design, Test Driven Development, Clean Code, um die Erosionen und die enge Kopplung der einzelnen Module zu vermeiden und für jedes Modul die Möglichkeit zur Extraktion zu einem Microservice zu erhalten.</span></p>
<p><span>Wir nennen das “vernünftiges” Software-Engineering &#8211; “vernünftig”, weil wir uns nicht vom Microservice-Hype leiten lassen, sondern strategisch die Basis für Systeme legen, die die tatsächlichen Anforderungen in den Mittelpunkt stellen und von Unternehmen bzw. deren Dienstleistern langfristig selbst gepflegt und flexibel weiterentwickelt werden können.<span class="Apple-converted-space"> </span></span></p>
<p><span><b>Leseempfehlungen</b></span></p>
<ul>
<li><a href="https://martinfowler.com/articles/microservices.html"><span>Microservices</span></a><span> &#8211; schöne Einführung von James Lewis (martinfowler.com)</span></li>
<li><a href="https://martinfowler.com/bliki/MonolithFirst.html"><span>MonolithFirst</span></a><span> &#8211; Argumente für den Start mit Monolithen (martinfowler.com)</span></li>
<li><a href="https://martinfowler.com/articles/dont-start-monolith.html"><span>Don’t start with a monolith</span></a><span> &#8211; Wann sich<span class="Apple-converted-space">  </span>Monolithen nicht eignen (martinfowler.com)</span></li>
<li><a href="http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html"><span>Distributed big balls of mud</span></a><span> &#8211; Über verteilte Architekturen (codingthearchitecture.com)</span></li>
</ul>
<p><span><b>Wir unterstützen Sie</b></span></p>
<p><span>Seit vielen Jahren kämpfen wir dafür, dass Unternehmen die richtigen IT-Entscheidungen treffen und Software-Systeme bekommen, von denen sie nachhaltig profitieren und die sie selbst beherrschen können. Unser Credo: Vernünftige Lösungen jenseits von Technologie-Hype.</span></p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>
<p>Der Beitrag <a href="https://voltage-it.com/microservice-vs-monolith/">Software-Architektur für KMU: Microservices vs Monolith &#8211; Welches ist die beste Lösung?</a> erschien zuerst auf <a href="https://voltage-it.com">voltage IT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
