<?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>Nachteile Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/nachteile/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/nachteile/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:25:21 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Nachteile Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/nachteile/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>OAuth &#8211; Login ohne Preisgabe von Anmeldeinformationen</title>
		<link>https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/</link>
					<comments>https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 22 Apr 2023 19:44:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1]]></category>
		<category><![CDATA[1.0]]></category>
		<category><![CDATA[2]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[Abhängigkeit]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Ausgabe]]></category>
		<category><![CDATA[Autorisierung]]></category>
		<category><![CDATA[Autorisierungsantwort]]></category>
		<category><![CDATA[Benutzerfreundlichkeit]]></category>
		<category><![CDATA[Benutzerkontrolle]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Datenschutzbedenken]]></category>
		<category><![CDATA[Einfachheit]]></category>
		<category><![CDATA[Eingeschränkte]]></category>
		<category><![CDATA[Endbenutzer]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Fluss]]></category>
		<category><![CDATA[Friendly]]></category>
		<category><![CDATA[Geschützt]]></category>
		<category><![CDATA[Granulare]]></category>
		<category><![CDATA[Granularität]]></category>
		<category><![CDATA[Hauptkomponenten]]></category>
		<category><![CDATA[Hauptversionen]]></category>
		<category><![CDATA[Hijacking]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Nachteil]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Nativ]]></category>
		<category><![CDATA[Native]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Offen]]></category>
		<category><![CDATA[Offenes]]></category>
		<category><![CDATA[On]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Owner]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Ressourcenbesitzer]]></category>
		<category><![CDATA[Ressourcenserver]]></category>
		<category><![CDATA[Sicherheitsmechanismen]]></category>
		<category><![CDATA[Sicherheitsrisiken]]></category>
		<category><![CDATA[Sign]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Token]]></category>
		<category><![CDATA[Unterschied]]></category>
		<category><![CDATA[Unterschiede]]></category>
		<category><![CDATA[User]]></category>
		<category><![CDATA[Version]]></category>
		<category><![CDATA[Versionen]]></category>
		<category><![CDATA[Vorteil]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Zugriff]]></category>
		<category><![CDATA[Zugriffsberechtigungen]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1794</guid>

					<description><![CDATA[<p>OAuth (Open Authorization) ist ein weit verbreitetes und offenes Protokoll, um die sichere Autorisierung von Anwendungen und Diensten im Internet zu ermöglichen. OAuth ermöglicht es Benutzern einer Anwendung Zugriff auf Ressourcen und Daten bei anderen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/">OAuth &#8211; Login ohne Preisgabe von Anmeldeinformationen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>OAuth (Open Authorization) ist ein weit verbreitetes und offenes Protokoll, um die sichere Autorisierung von Anwendungen und Diensten im Internet zu ermöglichen. OAuth ermöglicht es Benutzern einer Anwendung Zugriff auf Ressourcen und Daten bei anderen Anbietern zu gewähren, ohne dabei Anmeldeinformationen preisgeben zu müssen. In diesem Beitrag geht es um OAuth, dessen Funktionsweise, die wichtigsten Komponenten, den Vorteilen, Nachteilen und Best Practices.</p>



<h3 class="wp-block-heading">Grundlagen</h3>



<h4 class="wp-block-heading">Warum OAuth?</h4>



<ul class="wp-block-list">
<li><strong>Benutzerkontrolle</strong>: OAuth ermöglicht es Benutzern, Anwendungen und Diensten den Zugriff auf ihre Konten bei verschiedenen Anbietern zu gewähren, ohne dabei ihre Benutzername/Passwort-Kombinationen preiszugeben.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Sicherheit</strong>: Da die Anmeldeinformationen nicht direkt geteilt werden, reduziert OAuth das Risiko von Datendiebstahl und Missbrauch von Anmeldeinformationen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Granulare Berechtigungen</strong>: OAuth erlaubt es Benutzern, den Umfang und die Dauer der Zugriffsberechtigungen, die an eine Anwendung vergeben werden, präzise zu steuern.</li>
</ul>



<h3 class="wp-block-heading">Hauptkomponenten von OAuth</h3>



<ul class="wp-block-list">
<li><strong>Ressourcenbesitzer (Resource Owner)</strong><br>Der Ressourcenbesitzer ist normalerweise der Endbenutzer, der den Zugriff auf seine Daten und Ressourcen bei einem Ressourcenserver gewährt.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Ressourcenserver (Resource Server)</strong><br>Der Ressourcenserver hostet die geschützten Daten und Ressourcen des Ressourcenbesitzers. Er ist dafür verantwortlich, die Autorisierung und Authentifizierung von Anfragen mithilfe von OAuth-Tokens zu überprüfen. (Kleiner Tipp am Rande. Bei den Tokens handelt es sich nicht um die Tokens, die man aus den <a href="https://ceosbay.com/2022/11/01/erklaerung-crypto-bzw-kryptowaehrung/">Kryptowährungen</a> kennt 😉 )</li>
</ul>



<ul class="wp-block-list">
<li><strong>Client</strong><br>Die Client-Anwendung ist der Konsument der geschützten Ressourcen. Sie stellt Anfragen an den Ressourcenserver, um im Namen des Ressourcenbesitzers auf die Daten zuzugreifen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Autorisierungsserver (Authorization Server)</strong><br>Der Autorisierungsserver ist für die Ausgabe, Überprüfung und den Widerruf von OAuth-Zugriffstokens zuständig. Er agiert als Vermittler zwischen dem Ressourcenbesitzer, dem Client und dem Ressourcenserver.</li>
</ul>



<h3 class="wp-block-heading">OAuth-Fluss</h3>



<h4 class="wp-block-heading">Man kann den OAuth-Fluss in vier grundlegende Schritte unterteilen:</h4>



<ul class="wp-block-list">
<li><strong>Anfordern der Autorisierung</strong>: Der Client fordert die Autorisierung des Ressourcenbesitzers an, um auf dessen Ressourcen zuzugreifen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Autorisierungsantwort</strong>: Der Ressourcenbesitzer gewährt die Autorisierung und leitet den Client an den Autorisierungsserver weiter. Der Client erhält einen Autorisierungscode.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Anfordern eines Zugriffstokens</strong>: Der Client sendet den Autorisierungscode an den Autorisierungsserver und fordert ein Zugriffstoken an.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Token-Ausgabe</strong>: Der Autorisierungsserver überprüft den Autorisierungscode, stellt ein Zugriffstoken aus und sendet es an den Client.</li>
</ul>



<p>Nachdem der Client das Zugriffstoken erhalten hat, kann er es verwenden, um auf die geschützten Ressourcen des Ressourcenbesitzers zuzugreifen, indem er Anfragen an den Ressourcenserver stellt. Der Ressourcenserver überprüft das Token und gewährt den Zugriff entsprechend der Berechtigungen, die vom Ressourcenbesitzer festgelegt wurden.</p>



<h3 class="wp-block-heading">Versionen und Unterschiede von OAuth</h3>



<p>Es gibt zwei Hauptversionen. OAuth 1.0 und OAuth 2.0. Die Veröffentlichung von OAuth 1.0 fand im Jahr 2010 statt und verwendet einen komplexeren kryptografischen Ansatz für die Sicherheit. Im Jahr 2012 folgte OAuth 2.0 und ist eine überarbeitete Version, die eine einfachere und flexiblere Architektur bietet. Zweiteres basiert auf Bearer-Tokens. Bei beiden handelt es sich nach wie vor um offene Standardprotokolle zur sicheren Delegierung von Zugriffsberechtigungen. Obwohl sie gemeinsame Ziele verfolgen, unterscheiden sie sich in ihrer Architektur, ihren Sicherheitsmechanismen und besonders in der Benutzerfreundlichkeit. Durch die unterschiedliche Architektur ist keine Abwärtskompatibilität gegeben.</p>



<p><strong>Sicherheitsmechanismen</strong>:</p>



<p><strong>1.0</strong>: Verwendet einen kryptografischen Ansatz, bei dem man Anfragen mithilfe von kryptografischen Signaturen und einem gemeinsamen Geheimnis (Shared Secret) zwischen dem Client und dem Autorisierungsserver signiert. Diese Methode erfordert einen erhöhten Aufwand bei der Implementierung und Konfiguration.</p>



<p><strong>2.0</strong>: Verwendet Bearer-Token, bei denen der Besitzer des Tokens (Client) Zugriff auf die geschützten Ressourcen erhält. Die Sicherheit basiert hauptsächlich auf der sicheren Übertragung und Aufbewahrung von Tokens (z. B. über https). Diese Methode ist einfacher zu implementieren und erfordert weniger kryptografische Kenntnisse.</p>



<p><strong>Flexibilität</strong>:</p>



<p><strong>1.0</strong>: Bietet einen starren Ablauf zur Anforderung und Nutzung von Zugriffstokens, der weniger Anpassungsmöglichkeiten für verschiedene Anwendungsszenarien bietet.</p>



<p><strong>2.0</strong>: Ermöglicht eine größere Flexibilität und Anpassungsfähigkeit, indem man verschiedene &#8222;Grant Types&#8220; (Genehmigungsarten) zur Verfügung stellt, um unterschiedlichen Anwendungsszenarien und Plattformen Genüge zu tun.</p>



<p><strong>Einfachheit</strong>:</p>



<p><strong>1.0</strong>: Die Implementierung und das Debugging von OAuth 1.0 können komplex sein, da Entwickler den kryptografischen Prozess und das Signieren von Anfragen verstehen müssen.</p>



<p><strong>2.0</strong>: Die Implementierung von OAuth 2.0 ist einfacher und erfordert weniger kryptografische Kenntnisse. Dies führt zu einer schnelleren und einfacheren Integration in Anwendungen und Dienste.</p>



<p><strong>Mobile und native Anwendungen:</strong></p>



<p><strong>1.0</strong>: Aufgrund seiner komplexeren Natur und der kryptografischen Anforderungen ist OAuth 1.0 weniger geeignet für mobile und native Anwendungen, bei denen Ressourcen und Konnektivität eingeschränkt sein können.</p>



<p><strong>2.0:</strong> Durch die einfachere Implementierung und den flexibleren Ablauf eignet sich OAuth 2.0 besser für die Integration in mobile und native Anwendungen.</p>



<h3 class="wp-block-heading">Vorteile</h3>



<p><strong>Sicherheit</strong>: Es erhöht die Sicherheit, indem man Anmeldeinformationen nicht direkt teilen muss und Tokens verwendet, um auf Ressourcen zuzugreifen.</p>



<p><strong>Benutzerfreundlichkeit</strong>: Es ermöglicht Single Sign-On (SSO) und reduziert die Notwendigkeit, mehrere Benutzernamen und Passwörter zu verwalten.</p>



<p><strong>Flexibilität</strong>: Es bietet eine flexible Architektur, die für verschiedene Anwendungsszenarien und Plattformen geeignet ist.</p>



<p><strong>Granularität</strong>: Es ermöglicht, den Umfang und die Dauer der gewährten Berechtigungen genau zu steuern.</p>



<h3 class="wp-block-heading">Nachteile</h3>



<p><strong>Komplexität</strong>: Die Implementierung von OAuth, insbesondere bei OAuth 1.0, kann komplex sein, da es verschiedene Abläufe und Mechanismen beinhaltet. Dies kann zu einer steileren Lernkurve für Entwickler führen, die sich nicht mit dem Protokoll auskennen.</p>



<p><strong>Sicherheitsrisiken</strong>: Trotz der verbesserten Sicherheit, die OAuth bietet, gibt es immer noch Sicherheitsrisiken. Fehlkonfigurationen, unzureichende Validierungen und direkte Angriffe auf den Autorisierungscode oder das Zugriffstoken können die Sicherheit weiter gefährden.</p>



<p><strong>Abhängigkeit von Drittanbietern</strong>: Die Verwendung von OAuth kann eine Abhängigkeit von Drittanbieter-Autorisierungsservern schaffen, die möglicherweise Ausfallzeiten, Sicherheitsverletzungen oder andere Probleme aufweisen können.</p>



<p><strong>Datenschutzbedenken</strong>: Bei der Verwendung von OAuth besteht das Risiko, dass Benutzer mehr Daten preisgeben als erforderlich, da Anwendungen möglicherweise Zugriff auf mehr Informationen anfordern, als für ihre Funktionen notwendig ist.</p>



<p><strong>Token-Hijacking</strong>: Obwohl es die Sicherheit gegenüber der direkten Weitergabe von Anmeldeinformationen verbessert, besteht immer noch die Gefahr, dass Angreifer Zugriffstoken abfangen oder stehlen können. Dies kann zu unbefugtem Zugriff auf Benutzerdaten führen.</p>



<p><strong>Eingeschränkte Implementierung</strong>: Die Nutzung von OAuth in bestimmten Anwendungsszenarien, wie beispielsweise bei Geräten mit eingeschränkter Internetkonnektivität oder eingeschränkten Eingabemöglichkeiten, kann sich als schwierig oder teilweise unmöglich gestalten.</p>



<h3 class="wp-block-heading">Best Practices</h3>



<ul class="wp-block-list">
<li>Man sollte immer die neueste Version (aktuell OAuth 2.0) für bessere Sicherheit und Flexibilität verwenden.</li>



<li>Implementierung von &#8222;Proof Key for Code Exchange&#8220; (PKCE) Erweiterung ist zu empfehlen, um Angriffe, die den Autorisierungscode abfangen, verhindern zu können.</li>



<li>Sichere Speicherung des Zugriffstokens und der Client-Anmeldeinformationen, um den Missbrauch zu verhindern.</li>



<li>Verwenden von kurzen Gültigkeiten und Lebensdauern für Zugriffstokens und Erneuerungen bei Bedarf mithilfe von Aktualisierungstokens.</li>



<li>Implementierung von Zustimmungsbildschirmen, um Benutzer über den Umfang und die Dauer der Berechtigungen, die man gewährt, zu informieren.</li>
</ul>



<h3 class="wp-block-heading">Fazit:</h3>



<p>OAuth ist ein leistungsstarkes Protokoll, das die sichere Delegierung von Zugriffsberechtigungen im Internet ermöglicht. Durch das Verständnis der Grundlagen von OAuth und die Einhaltung der Best Practices können Entwickler Anwendungen erstellen, die eine sichere und benutzerfreundliche Erfahrung bei Login-Verfahren bieten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/">OAuth &#8211; Login ohne Preisgabe von Anmeldeinformationen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/22/oauth-login-ohne-preisgabe-von-anmeldeinformationen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1794</post-id>	</item>
		<item>
		<title>JWT &#8211; JSON Web Tokens &#8211; Die moderne Authentifizierungsmethode</title>
		<link>https://ceosbay.com/2023/04/21/jwt-json-web-tokens-die-moderne-authentifizierungsmethode/</link>
					<comments>https://ceosbay.com/2023/04/21/jwt-json-web-tokens-die-moderne-authentifizierungsmethode/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 21 Apr 2023 19:33:00 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Ablaufzeit]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Autorisiert]]></category>
		<category><![CDATA[Autorisierung]]></category>
		<category><![CDATA[Claim]]></category>
		<category><![CDATA[Claims]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Geheim]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Hacken]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[HAL]]></category>
		<category><![CDATA[Header]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Implementiert]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[JWT]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Nutzlast]]></category>
		<category><![CDATA[RFC]]></category>
		<category><![CDATA[Risiken]]></category>
		<category><![CDATA[SHA256]]></category>
		<category><![CDATA[Signatur]]></category>
		<category><![CDATA[Storage]]></category>
		<category><![CDATA[Token]]></category>
		<category><![CDATA[Tokens]]></category>
		<category><![CDATA[Übertragung]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[Verifizierung]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1796</guid>

					<description><![CDATA[<p>JSON Web Tokens (JWT) sind heutzutage eine der gebräuchlichsten Methoden zur Authentifizierung und Autorisierung von Benutzern in Webanwendungen und APIs. Sie bieten eine kompakte und sichere Möglichkeit, Informationen zwischen verschiedenen Parteien auszutauschen und zu überprüfen. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/21/jwt-json-web-tokens-die-moderne-authentifizierungsmethode/">JWT &#8211; JSON Web Tokens &#8211; Die moderne Authentifizierungsmethode</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>JSON Web Tokens (JWT) sind heutzutage eine der gebräuchlichsten Methoden zur Authentifizierung und Autorisierung von Benutzern in Webanwendungen und <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a>. Sie bieten eine kompakte und sichere Möglichkeit, Informationen zwischen verschiedenen Parteien auszutauschen und zu überprüfen. Heute geht es um die Grundlagen von JSON Web Tokens, ihre Struktur, Vorteile und Nutzungsszenarien sowie mögliche Sicherheitsbedenken. Wem <a href="https://ceosbay.com/2023/03/14/erklaerung-json/">JSON</a> so gar nicht bekannt ist, dem ist der Beitrag über <a href="https://ceosbay.com/2023/03/14/erklaerung-json/">JSON</a> vorab zu empfehlen 😉</p>



<h3 class="wp-block-heading">Grundlagen von JSON Web Tokens</h3>



<p>JWTs sind als offener Standard definiert (<a href="https://ceosbay.com/2023/04/12/erklaerung-rfc/">RFC</a> 7519) (Siehe Beitrag über <a href="https://ceosbay.com/2023/04/12/erklaerung-rfc/">RFC</a> und <a href="https://ceosbay.com/2023/03/30/erklaerung-hal-standard/">HAL</a>) und sind in vielen Programmiersprachen und Plattformen implementiert. Ein JWT besteht aus drei Teilen: <strong>Header</strong>, <strong>Nutzlast</strong> (<strong>Payload</strong>) und <strong>Signatur</strong>. Diese Teile sind durch Punkte getrennt und bilden einen kompakten Token, die man beispielsweise in einem https-Header oder einer URL übertragen kann.</p>



<h3 class="wp-block-heading">Struktur von JWT</h3>



<h4 class="wp-block-heading">Header</h4>



<p>Der Header enthält Informationen über den verwendeten Algorithmus zur Signatur des Tokens und den Token-Typ. Typischerweise sieht ein Header folgendermaßen aus:</p>



<pre class="wp-block-code"><code>{
"alg": "HS256",
"typ": "JWT"
}</code></pre>



<h4 class="wp-block-heading">Nutzlast (Payload)</h4>



<p>Die Nutzlast enthält die eigentlichen Informationen, die man zwischen den Parteien austauscht. Diese Informationen bezeichnet man auch als Claims. Der Payload kann sowohl vordefinierte als auch benutzerdefinierte Claims enthalten.</p>



<p>Siehe nachfolgendes Beispiel:</p>



<pre class="wp-block-code"><code>{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}

oder

{
  "user_id": "42"
}</code></pre>



<p>Im zweiten Beispiel ist user_id der Claim-Schlüssel und 42 der zugehörige Wert. Diesen Claim kann man beispielsweise in einem JWT verwenden, um den authentifizierten Benutzer zu identifizieren.</p>



<h4 class="wp-block-heading">Signatur</h4>



<p>Die Signatur dient dazu, die Integrität des Tokens sicherzustellen und zu verhindern, dass man dessen Inhalt manipulieren kann. Dier Erstellung erfolgt durch die Verwendung eines geheimen Schlüssels und des im Header angegebenen Algorithmus (z. B. HMAC-SHA256).</p>



<h3 class="wp-block-heading">Vorteile von JWT</h3>



<h4 class="wp-block-heading">Stateless und skalierbar</h4>



<p>JWTs ermöglichen eine stateless Authentifizierung, da die Nutzlast alle erforderlichen Informationen enthält. Dies bedeutet, dass man keine Sitzungsdaten auf der Serverseite speichern muss. Dadurch sind und bleiben Anwendungen leichter skalierbar.</p>



<h4 class="wp-block-heading">Einfache Implementierung</h4>



<p>Da JWTs auf dem weit verbreiteten JSON-Format basieren, ist ihre Implementierung einfach und sie unterstützt eine Vielzahl von Bibliotheken und Frameworks.</p>



<h4 class="wp-block-heading">Selbstenthaltend</h4>



<p>JWTs enthalten alle erforderlichen Informationen in sich selbst. Dadurch sind keine zusätzlichen Datenbankabfragen zur Verifizierung des Benutzers erforderlich.</p>



<h3 class="wp-block-heading">Nutzungsszenarien von JWT</h3>



<h4 class="wp-block-heading">Authentifizierung</h4>



<p>Man nutzt JWTs häufig zur Authentifizierung von Benutzern in Single-Page-Anwendungen (SPAs) Single Page Applications und <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a>.</p>



<h4 class="wp-block-heading">Autorisierung</h4>



<p>Man kann ein JWT auch zur Autorisierung verwenden. Dies lässt sich bewerkstelligen, sofern Informationen über die Rollen und Berechtigungen des Benutzers in den Claims des Tokens enthalten sind.</p>



<h4 class="wp-block-heading">Informationen teilen</h4>



<p>Da JWTs einfach zu erstellen und zu verifizieren sind, kann man sie verwenden, um Informationen zwischen verschiedenen Diensten oder Parteien sicher auszutauschen.</p>



<h3 class="wp-block-heading">Sicherheitsbedenken und Best Practices</h3>



<h4 class="wp-block-heading">Sichere Übertragung</h4>



<p>Man sollte JWTs immer über sichere Kommunikationskanäle wie https übertragen, um Man-in-the-Middle-Angriffe zu verhindern.</p>



<h4 class="wp-block-heading">Gültigkeit bzw. Ablaufzeit</h4>



<p>Tokens sollten eine Gültigkeit bzw. Ablaufzeit (Expiration Time) enthalten, um das Risiko einer Kompromittierung zu minimieren. Sobald ein Token abgelaufen ist, kann man nicht mehr auf die Ressource zugreifen. Dies schafft eine weitere Sicherheitsinstanz, da der Angreifer, selbst wenn er den Zugang gehacked hat, im Besitz des immer wieder neu generierten Tokens sein muss.</p>



<h4 class="wp-block-heading">Aufbewahrung von geheimen Zugangsdaten</h4>



<p>Man sollte den geheimen Schlüssel, den man zur Signatur von JWTs verwendet, sicher aufbewahren und vor unbefugtem Zugriff schützen.</p>



<h4 class="wp-block-heading">Die Wahl des richtigen Algorithmus</h4>



<p>Man sollte einen sicheren Algorithmus für die Signatur von Tokens verwenden. Beispielsweise HMAC-SHA256 oder RSA. Dies, davon ist auszugehen, kann sich mit der fortschreitenden Entwicklung der Quantencomputertechnologie ändern. Folglich ist es immer von enormer Wichtigkeit, die Entwicklungen dahingehend zu beobachten.</p>



<h4 class="wp-block-heading">Token &#8211; Hijacking)</h4>



<p>Man sollte darauf achten, dass JWTs nicht im Local Storage oder Session Storage des Browsers gespeichert sind. Dies kann die Seite bzw. Anwendung anfällig für Cross-Site-Scripting-Angriffe (XSS) machen. Daher kann es Sinn machen, https-Only-Cookies zu verwenden.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>JSON Web Tokens bieten eine moderne, flexible und sichere Methode zur Authentifizierung und Autorisierung von Benutzern in Webanwendungen und <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a>. Durch die Stateless-Natur, einfache Implementierung und Selbstenthaltung von JWTs lassen sich skalierbare Lösungen für die Identitätsverwaltung erstellen. Dennoch sollte man sich der Sicherheitsrisiken bewusst sein und Best Practices befolgen, um die Integrität und Sicherheit der Anwendung zu gewährleisten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/21/jwt-json-web-tokens-die-moderne-authentifizierungsmethode/">JWT &#8211; JSON Web Tokens &#8211; Die moderne Authentifizierungsmethode</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/21/jwt-json-web-tokens-die-moderne-authentifizierungsmethode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1796</post-id>	</item>
		<item>
		<title>CI/CD &#8211; Continuous Integration und Continuous Deployment</title>
		<link>https://ceosbay.com/2023/04/14/erklaerung-ci-cd/</link>
					<comments>https://ceosbay.com/2023/04/14/erklaerung-ci-cd/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 14 Apr 2023 16:36:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[CD]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[CI-CD]]></category>
		<category><![CDATA[Circle]]></category>
		<category><![CDATA[Clean]]></category>
		<category><![CDATA[Codequalität]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Continuous]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Entwicklungsprozess]]></category>
		<category><![CDATA[Entwicklungszyklen]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Gitlab]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[Konflikte]]></category>
		<category><![CDATA[Konzept]]></category>
		<category><![CDATA[Kultur]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Schleifen]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwarenetwicklung]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testabdeckung]]></category>
		<category><![CDATA[Travis]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[Verbesserung]]></category>
		<category><![CDATA[Vorteile]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1448</guid>

					<description><![CDATA[<p>In der heutigen Softwareentwicklungslandschaft ist es entscheidend, effiziente Prozesse zu implementieren, um schnell und zuverlässig qualitativ hochwertige Software bereitzustellen. CI/CD = Continuous Integration (CI) und Continuous Deployment (CD) sind zwei Konzepte, die dazu beitragen, diesen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/">CI/CD &#8211; Continuous Integration und Continuous Deployment</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der heutigen Softwareentwicklungslandschaft ist es entscheidend, effiziente Prozesse zu implementieren, um schnell und zuverlässig qualitativ hochwertige Software bereitzustellen. CI/CD =  Continuous Integration (CI) und Continuous Deployment (CD) sind zwei Konzepte, die dazu beitragen, diesen Anspruch zu erfüllen.</p>



<h3 class="wp-block-heading">Continuous Integration (CI)</h3>



<p>CI ist eine Praxis der Softwareentwicklung, bei der Entwickler ihre Änderungen am Code regelmäßig in einer zentralen Repository integrieren, in der Regel mehrmals täglich. Dieser Ansatz soll Probleme wie Merge-Konflikte oder schwer auffindbare Fehler aufgrund von Inkonsistenzen im Code frühzeitig erkennen und beheben.</p>



<h3 class="wp-block-heading">Vor- und Nachteile von CI/CD</h3>



<h3 class="wp-block-heading">Einige der Hauptvorteile von CI sind:</h3>



<ul class="wp-block-list">
<li><strong>Früherkennung von Fehlern und Konflikten:</strong>&nbsp;Durch regelmäßige Integration und automatisierte Tests findet die Fehlerfindung und dadurch die Behebung der Fehler frühzeitig statt, bevor sie zu größeren Problemen führen.</li>



<li><strong>Reduzierung von Risiken:</strong>&nbsp;Da man Änderungen in kleineren Schritten und häufiger integriert, reduziert sich das Risiko, dass neue Funktionen bestehende Funktionen beeinträchtigen.</li>



<li><strong>Verbesserung der Codequalität:&nbsp;</strong>CI ermutigt Entwickler, Code häufiger zu testen, was zur Verbesserung der Codequalität beiträgt.</li>
</ul>



<h4 class="wp-block-heading">CI-Tools:</h4>



<p>Es gibt eine Vielzahl von CI-Tools auf dem Markt, darunter <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Jenkins</a>, GitLab CI, Travis CI und CircleCI. Diese Tools automatisieren den Integrationsprozess, indem sie den Code überprüfen, bauen und testen, sobald Änderungen eingecheckt sind.</p>



<h3 class="wp-block-heading">Continuous Deployment (CD)</h3>



<p>Continuous Deployment ist ein Prozess, bei dem man automatisierte Tests und Freigabeprozesse durchführt, um neue Codeänderungen kontinuierlich und in kürzester Zeit in die Produktionsumgebung einzuführen. Im Gegensatz zu Continuous Delivery, bei dem man die Freigabe in die Produktion noch manuell auslösen muss, geschieht dies bei Continuous Deployment vollautomatisch.</p>



<h3 class="wp-block-heading">Vorteile von CD:</h3>



<ul class="wp-block-list">
<li><strong>Schnellere Markteinführung:</strong>&nbsp;Durch den Einsatz von CD kann man Software schneller auf den Markt und in Umlauf bringen, da man dadurch den manuellen Aufwand für die Bereitstellung minimiert.</li>



<li><strong>Automatisierte Fehlerbehebung:</strong>&nbsp;CD-Systeme bieten Möglichkeiten zur automatischen Fehlerbehebung und Rollbacks, um sicherzustellen, dass die Produktionsumgebung stabil bleibt.</li>



<li><strong>Bessere Zusammenarbeit:</strong>&nbsp;Durch CD kann man verschiedene Teams wie die Entwicklung, QA bzw. Testing und Operations besser aufeinander abstimmen, was die Zusammenarbeit und Kommunikation wesentlich verbessert.</li>
</ul>



<h4 class="wp-block-heading">CD-Tools:</h4>



<p>Zu den beliebtesten CD-Tools gehören Spinnaker, GitLab CD, Octopus Deploy und Harness. Diese Tools helfen bei der Automatisierung von Bereitstellungsprozessen, einschließlich der Erstellung von Umgebungen, dem Ausführen von Tests und dem Verwalten von Konfigurationen.</p>



<h3 class="wp-block-heading">Einige wichtige Punkte, die noch bei der Einführung und Anwendung von CI/CD zu beachten sind:</h3>



<ul class="wp-block-list">
<li><strong>Organisationskultur:</strong>&nbsp;Die Implementierung von CI/CD erfordert eine Veränderung in der Denkweise und Kultur eines Teams oder einer Organisation. Es ist wichtig, dass alle Beteiligten die Vorteile erkennen und bereit sind, sich auf kontinuierliche Verbesserung und Zusammenarbeit zu konzentrieren.</li>



<li><strong>Automatisierung:</strong>&nbsp;Um die Vorteile von CI/CD voll auszuschöpfen, ist es entscheidend, möglichst viele Schritte im Entwicklungs- und Bereitstellungsprozess zu automatisieren. Dies kann das Schreiben von Skripten für das Erstellen, Testen und Bereitstellen von Code oder die Verwendung von Tools und Plattformen umfassen, die diese Prozesse unterstützen.</li>



<li><strong>Testabdeckung:</strong>&nbsp;Um sicherzustellen, dass der Code in einer CI/CD-Pipeline zuverlässig funktioniert, ist es wichtig, ausreichende Testabdeckung sicherzustellen. Dies umfasst sowohl Unit-Tests als auch Integrationstests, um sicherzustellen, dass alle Aspekte einer Anwendung korrekt funktionieren. Hier macht es Sinn den Beitrag <a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/" target="_blank" rel="noreferrer noopener">SonarQube</a> zu erwähnen 😉</li>



<li><strong>Monitoring und Feedback:</strong>&nbsp;Im Zusammenhang mit CI/CD ist es wichtig, ein effektives Monitoring-System einzurichten, um Leistungsprobleme oder Fehler frühzeitig zu erkennen. Ebenso ist ein Feedback-System für Entwickler und Stakeholder entscheidend, um kontinuierlich voneinander zu lernen und Verbesserungen vorzunehmen. Hierzu schreibe ich in zukünftigen Beiträgen mehr. Bis es so weit ist, ist der Beitrag über <a href="https://ceosbay.com/2023/04/13/erklaerung-grafana/" target="_blank" rel="noreferrer noopener">Grafana</a> erwähnenswert 😉</li>



<li><strong>Sicherheit:</strong>&nbsp;Bei der Implementierung von CI/CD ist es unerlässlich, Sicherheitspraktiken zu berücksichtigen. Dies umfasst die regelmäßige Überprüfung von Sicherheitspatches, die Durchführung von Sicherheitstests und die Einhaltung von Best Practices für sicheren Code.</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Continuous Integration und Continuous Deployment sind entscheidende Konzepte in der modernen Softwareentwicklung, die dazu beitragen, den Entwicklungsprozess zu beschleunigen, die Codequalität zu verbessern und die Zusammenarbeit zwischen Teams zu fördern. Durch die Einführung von CI/CD-Praktiken im Entwicklungsworkflow kann man Fehler frühzeitig erkennen, den Zeitaufwand für die Behebung von Problemen reduzieren und die Bereitstellung neuer Funktionen und Updates beschleunigen.</p>



<p>Indem man diese Faktoren berücksichtigt und CI/CD-Praktiken erfolgreich in einem Softwareentwicklungsprozess integriert, kann man von den Vorteilen der schnelleren Entwicklungszyklen, verbesserten Zusammenarbeit und von einer höheren Codequalität profitieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/">CI/CD &#8211; Continuous Integration und Continuous Deployment</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/14/erklaerung-ci-cd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1448</post-id>	</item>
		<item>
		<title>Unit Tests &#8211; Fundament für stabile und effiziente Software</title>
		<link>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/</link>
					<comments>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 26 Mar 2023 17:50:20 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Algorithmen]]></category>
		<category><![CDATA[Algorithmus]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Auto]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Baustein]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codebasis]]></category>
		<category><![CDATA[Contract]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Driven]]></category>
		<category><![CDATA[Entwickler]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Jacoco]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilierung]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Komponententest]]></category>
		<category><![CDATA[Lauffähigkeit]]></category>
		<category><![CDATA[Modul]]></category>
		<category><![CDATA[Modultest]]></category>
		<category><![CDATA[Nachteil]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produkt]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testarten]]></category>
		<category><![CDATA[Teststufe]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Unittests]]></category>
		<category><![CDATA[Vertrag]]></category>
		<category><![CDATA[Vorteil]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Weise]]></category>
		<category><![CDATA[Zehnerregel]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1246</guid>

					<description><![CDATA[<p>Ein Unit Test, auch Modul- oder Komponententest bezeichnet, ist ein Test, mit dem man in der Architektur eines Systems einzelne, abgrenzbare Teile (z. B. ausgewählte Codeabschnitte, Module, Unterprogramme, Units oder im Fall objektorientierter Programmierung als &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/26/erklaerung-unit-tests/">Unit Tests &#8211; Fundament für stabile und effiziente Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ein Unit Test, auch Modul- oder Komponententest bezeichnet, ist ein Test, mit dem man in der Architektur eines Systems einzelne, abgrenzbare Teile (z. B. ausgewählte Codeabschnitte, Module, Unterprogramme, Units oder im Fall objektorientierter Programmierung als Klassen), meist auf niedrigster Ebene überprüft. Ziel dieser häufig durch den Softwareentwickler selbst durchgeführten Softwaretests ist, deren technische Lauffähigkeit und die Korrektheit ihrer fachlichen (Teil-)Ergebnisse nachzuweisen.</p>



<p>Man verwendet den Ausdruck Modultest unter anderem bei frühen Teststufen, in denen man die inneren, detailliertesten Komponenten der Software testet. Gemäß Software Validation &amp; Verification Plan sind diese Tests nur für Module mit geringer Kritikalität nicht notwendig. Im Grunde genommen bei Fehlern, die dem User nur geringfügige Unannehmlichkeiten bereiten.</p>



<p>In einer Abstraktion der verwendeten Programmiersprache, spricht man von Komponente oder Softwarebaustein. Den Test eines solchen einzelnen Softwarebausteins bezeichnet man auch allgemeiner als Komponententest.</p>



<p>Als Testbasis kann man in der Regel die komponentenspezifische Anforderung und das Softwaredesign der Komponente (auch Komponentenspezifikation genannt) heranziehen. Für Whitebox-Testfälle oder um Aussagen zur Codeüberdeckung zu erhalten, kann man zusätzlich den Sourcecode einer Komponente analysieren und diesen als Testbasis verwenden. Wobei dabei auch Tools wie <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/" target="_blank" rel="noreferrer noopener">Jacoco</a> helfen können. Ob die Komponente auf einen Testfall richtig reagiert, muss man allerdings auch hier auf Basis der Design- und Anforderungsdokumente beurteilen.</p>



<p>Typische Testobjekte sind wie bereits beschrieben Programmunits, -Module bzw. Klassen. Aber auch Kommandozeilenskripte des Betriebssystems (Shell-Skripte), Datenbankskripte, Datenkonvertierungs- oder Migrationsprozeduren, Datenbankinhalte sowie Konfigurationsdaten können Testobjekte sein. Kennzeichnend ist in der Regel der isolierte Test eines einzelnen Softwarebausteins. Dies dient primär, um komponentenexterne Einflüsse beim Testen auszuschließen. Alle so ermittelten Fehler kann man so dem spezifischen Modul zuordnen.</p>



<p>Klar zu unterscheiden ist auf jeden Fall der Integrationstest, den ich in einem separaten Beitrag thematisiere. Bei einem Integrationstest konzentriert man sich auf die Wechselwirkung mit Nachbarkomponenten.</p>



<p>Die Erstellung solcher Tests ist in der Regel die Aufgabe eines Programmierers. Dies liegt zum einen daran, dass man ein ausgeprägtes Verständnis für die Programmiersprache in der die Anwendung geschrieben ist haben muss. Und zum anderen daran, dass man meist auch einen Testtreiber benötigt, dessen Programmierung in der Regel auch der Entwickler übernimmt.</p>



<h3 class="wp-block-heading">Einordnung im Testprozess</h3>



<p>Algorithmen auf Unitebene besitzen meist nur eine begrenzte Komplexität und man kann sie über klar definierte Schnittstellen aktivieren. Daher kann sie mit relativ wenigen Testfällen weitgehend vollständig testen. Dies gilt als Voraussetzung für die anschließende Teststufe. Dem Integrationstest, um dort die Testfälle auf das integrierte Zusammenwirken größerer Funktionsteile oder der gesamten Anwendung ausrichten zu können. Die modulspezifischen Detailkonstellationen lassen sich damit auf Stichproben beschränken, was die Anzahl der erforderlichen Testfälle signifikant reduziert.</p>



<p>Zum Vergleich: Ein Gerät wird erst dann als Ganzes getestet, wenn die Funktionsfähigkeit seiner Einzelteile gesichert ist.</p>



<h3 class="wp-block-heading">Test des Vertrages und nicht der Algorithmen</h3>



<p>Man testet bei Modultests gemäß dem Design-by-contract-Prinzip möglichst nicht die Interna einer Methode, sondern nur ihre externen Auswirkungen (Rückgabewerte, Ausgaben, Zustandsänderungen, Zusicherungen). Sind die internen Details der Methode geprüft (dies wird als White-Box-Testing bezeichnet), kann der Test fehlschlagen, obwohl sich die externen Auswirkungen nicht geändert haben. Daher empfiehlt man in der Regel das sogenannte Black-Box-Testing, bei dem man sich auf das Prüfen der externen Auswirkungen beschränkt.</p>



<h3 class="wp-block-heading">Was sind die Vorteile von Unit Tests?</h3>



<ul class="wp-block-list">
<li>Mittels automatisierter Unittests kann man im Schnitt 30 % der Fehler erkennen. Bei der Verwendung von <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a> (<a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/">Test Driven Development</a>) kann man im Schnitt 45 % und im besten Fall 85 % der Fehler vermeiden.</li>



<li>Fehler erkennt man durch Modultests bereits während der Entwicklung. Die durch Unittests vermiedenen Fehlerkosten sind daher gemäß der Rule of Ten (Dazu später mehr) um ein Vielfaches höher als bei späteren Teststufen, was Unittests zur effizientesten Teststufe machen.</li>



<li>Im Falle eines Fehlers kann man diesen sehr viel genauer eingrenzen und damit schneller finden und beheben.</li>



<li>Die Tests erfüllen den Zweck einer lebenden Dokumentation. In Kombination mit einer sinnvollen Benamung der Objekte (Clean Code) können zusätzliche Dokumentationsmaßnahmen entfallen.</li>



<li>Da einzelne Module nur wenige mögliche Codeausführungspfade besitzen, muss man viel weniger mögliche kombinatorische Ausführungspfade berücksichtigen als bei anderen Testarten. Bei übergeordneten Tests kann man sich dann stichprobenartig auf die wichtigsten Ausführungspfade konzentrieren und damit die Anzahl dieser Tests deutlich reduzieren.</li>



<li>Da man nur einzelne Module testet, kann man Modultests, oft um mehrere Größenordnungen, schneller und damit öfter (bzw. kontinuierlich) ausführen als andere Testarten.</li>



<li>Wenn man Fehler mit einem Test absichert, kann man den erneuten Auftritt des gleichen Fehlers verhindern.</li>



<li>Durch die Fehlerreduktion ergeben sich Geschwindigkeitsvorteile in der Entwicklung in mittleren bis großen Softwareprojekten.</li>



<li>Da man Abhängigkeiten zwingend vermeiden muss, um einen Modultest zu ermöglichen, bleibt der Code verhältnismäßig schnell änderbar. Hierdurch kann man schneller auf wechselnde Anforderungen reagieren. Siehe <a href="https://ceosbay.com/2023/03/20/erklaerung-das-agile-manifest/" target="_blank" rel="noreferrer noopener">Agile Manifest</a> 😉</li>



<li>Da automatisch ausgeführte Tests um mehrere Größenordnungen schneller sind als manuelle Tests, reduziert sich der Zeitaufwand für das Testen deutlich. Hierdurch kann man die Entwicklungsstufen schneller durchlaufen und die Release-Zyklen signifikant verkürzen.</li>
</ul>



<h3 class="wp-block-heading">Was sind die Nachteile von Unit Tests?</h3>



<ul class="wp-block-list">
<li>Bei der Implementierung neuer Funktionen muss man nicht nur die Funktion implementieren, sondern auch die dazugehörenden Tests vorbereiten bzw. definieren. Dadurch ergibt sich ein oft mehrfacher Implementierungsaufwand.</li>



<li>Bei Änderungen muss man nicht nur die geänderten Funktionen, sondern auch die dazugehörenden Tests anpassen. Insbesondere bei der Entwicklung von Prototypen, bei der sich die Codebasis schnell verändert, ist das Testen daher oft eher ein Hindernis.</li>



<li>Da man die Funktionalität der Tests verwendet, ist in den IDEs schwerer ersichtlich, ob eine Funktionalität keine Verwendung mehr findet und ob man es daher entfernen kann.</li>



<li>Weisen die Tests untereinander Abhängigkeiten auf (z. B. durch gemeinsame Testdaten), so können einzelne Änderungen an der Codebasis eine Vielzahl von Tests beeinflussen, was den Änderungsaufwand mit der Größe der Codebasis exponentiell erhöht.</li>
</ul>



<h3 class="wp-block-heading">Fehlerkosten 10er Regel (Rule of ten)</h3>



<p>Die Zehnerregel der Fehlerkosten besagt, dass je weiter ein Fehler sich unentdeckt in die späten Phasen des Werdegangs eines Produktes oder Prozesses bewegt – oder gar bis zum Kunden –, desto höher steigen die Kosten zur Behebung des Fehlers. Eindrucksvoll untermauert durch die Ergebnisse einiger Studien aus den 70er Jahren in Japan, USA und Großbritannien, die sich mit den Ursachen von Produkt- bzw. Qualitätsmängeln beschäftigten. Alle Analysen lieferten nahezu die gleichen Ergebnisse: Ca. 70 % aller Produktmängel hatten ihre Ursache bereits in der Entwicklung, Konstruktion und Arbeitsvorbereitung. Der Herstellungsprozess selbst hat bezüglich der Endqualität des Produktes offensichtlich eher einen sekundären Einfluss. Eine VDMA-Studie zum Thema „Qualitätsbezogene Kosten“ Anfang der 90er Jahre in der Bundesrepublik Deutschland bestätigt dieses Ergebnis.</p>



<p>Die Zehnerregel der Fehlerkosten oder „Rule of ten“ sagt aus, dass sich die Fehlerkosten für einen nicht entdeckten Fehler von Stufe zu Stufe der Wertschöpfung um den Faktor 10 erhöhen. Je früher ein Fehler entdeckt und beseitigt wird, desto kostengünstiger ist dies für die Organisation und schlussendlich auch für den User bzw. Kunden.</p>



<p>Ansonsten sind diese auch in der DIN 55350-11 im Rahmen des Qualitätsmanagements festgehalten. Doch darauf gehe ich in einem separaten Beitrag ein.</p>



<h3 class="wp-block-heading">Wo sind die Grenzen der Unit Tests?</h3>



<p>Unit Tests können (wie jeder Test) die Fehlerfreiheit der getesteten Units, Module usw. nicht garantieren oder nachweisen, sondern lediglich unterstützen. Die Grenzen von Unit Tests liegen primär nur in den Fällen vor in denen man Fehler finden kann, zu deren Entdeckung die verwendeten Tests geeignet sind. Eine Softwarekomponente, die „grün“ testet, ist also nur bedingt fehlerfrei.</p>



<p>Das Merkmal von Code, „grün“ zu testen, und durchaus auch der Wunsch nach diesem Ergebnis, kann dazu führen, dass man tatsächlich (unbewusst) nur so viel testet, bis alle Tests „grün“ sind. Module, die keine fehlschlagenden Modultests haben, als fehlerfrei zu behandeln, ist ein Fehlschluss in der Praxis des (<a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a>) <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a>.</p>



<p>Um eine ausreichende Testabdeckung zu erzielen, lohnt es sich u.U., vor dem Erstellen der Testfälle Refactoring-Maßnahmen anzuwenden. Dies erst nach abgeschlossenen Unit Tests (für den alten Code) zu tun, schafft Raum (wie jede Änderung im Code) für neue Fehlerrisiken und kann deshalb wiederholtes Testen erforderlich machen.</p>



<p>Wenn der Autor von Unit Tests mit dem Autor der Module identisch ist, können Denkfehler in der Implementierung auch im Test erscheinen und verpasst gegebenenfalls die Chance, diese aufzudecken. Wenn es sich um dieselbe Person handelt, kann man die vorrangige Entwicklung der Tests ebenfalls nicht garantieren, da sowohl die beabsichtigte Funktionsweise des Codes als auch die zukünftige Gestalt bereits im Gedankengut des Testautors und späteren Codeautors präsent sein können. Dies kann im Extreme Programming durch „Test Ping-Pong“ abgefangen werden, bei der sich Entwickler bei der Implementierung der Funktionalität und der Tests abwechseln.</p>



<p>Bei der Entwicklung von Modultests können Testfälle entstehen, die der Zielsetzung und dem Charakter von Modultests nicht oder nur zum Teil entsprechen. Wie bei der Programmierung existieren daher auch für die Entwicklung von Modultests Anti-Pattern, die man möglichst vermeiden sollte.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/26/erklaerung-unit-tests/">Unit Tests &#8211; Fundament für stabile und effiziente Software</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/26/erklaerung-unit-tests/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1246</post-id>	</item>
		<item>
		<title>Community of Practice &#8211; Kraft des gemeinsamen Lernens und Wachsens</title>
		<link>https://ceosbay.com/2023/03/24/erklaerung-community-of-practice/</link>
					<comments>https://ceosbay.com/2023/03/24/erklaerung-community-of-practice/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 24 Mar 2023 22:29:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Coalescing]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CoP]]></category>
		<category><![CDATA[Étienne]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Fokus]]></category>
		<category><![CDATA[Kontext]]></category>
		<category><![CDATA[Konzept]]></category>
		<category><![CDATA[Lave]]></category>
		<category><![CDATA[Lernen]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Maturing]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[Phasen]]></category>
		<category><![CDATA[Potenzial]]></category>
		<category><![CDATA[Soziologe]]></category>
		<category><![CDATA[Soziologie]]></category>
		<category><![CDATA[Stewardship]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Transformation]]></category>
		<category><![CDATA[Umwandlung]]></category>
		<category><![CDATA[Verantwortung]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[Wenger]]></category>
		<category><![CDATA[Wissen]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1233</guid>

					<description><![CDATA[<p>Community of Practice (Abkürzung CoP) ist eine praxisbezogene Gemeinschaft von Personen, die ähnlichen Aufgaben gegenüberstehen und voneinander lernen. Dabei handelt es sich bei dem Begriff nicht um eine klassische Arbeitsgemeinschaft. Im Interesse an Lösungen agiert &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/24/erklaerung-community-of-practice/">Community of Practice &#8211; Kraft des gemeinsamen Lernens und Wachsens</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Community of Practice (Abkürzung CoP) ist eine praxisbezogene Gemeinschaft von Personen, die ähnlichen Aufgaben gegenüberstehen und voneinander lernen. Dabei handelt es sich bei dem Begriff nicht um eine klassische Arbeitsgemeinschaft. Im Interesse an Lösungen agiert ein CoP weitgehend selbstorganisiert. Ich schreibe diesen Beitrag bezugnehmend auf Communities, sowohl im Arbeits- als auch Freizeitumfeld.</p>



<h3 class="wp-block-heading">Kurze Zeitreise und die Entstehung von Community of Practice</h3>



<p>Die Entstehung des Begriffs Community of Practice geht zurück auf das Jahr 1991. Geprägt durch die beiden Sozialwissenschaftler Jean Lave und Étienne Wenger. Sie stellten das Lernen in den Kontext sozialer Beziehungen. Dabei zeigten sie, dass für den Wissenserwerb – neben Strukturen oder Modellen – insbesondere die Teilnahme an einer Gemeinschaft entscheidend ist, in der man das Wissen konstruiert.</p>



<p>1998 erweiterte Etienne Wenger das Konzept für die Organisationsentwicklung und bestimmte damit einen neuen Entwicklungsschwerpunkt. Wenger hat mehr oder weniger die theoretische Grundlegung des Konzeptes beschrieben und generelle Verständnisgrundlagen des Konzeptes dargelegt. Aber auch außerhalb von Organisationen finden sich Communities of Practice. Besonders trifft man auf CoP’s bei internetgestützten Arbeitsgemeinschaften. Die Community of Practice wird heute in enger Verbindung zu Online-Communities und zum Wissensmanagement gesehen und stellt eine wichtige Möglichkeit zur Bildung sozialen Kapitals dar. Der Begriff des Wissensmanagements ist dabei von den beiden Herrschaften kritisch gesehen. Laut Lave, Wenger und anderen Sozialwissenschaftlern ist das Management von Wissen grundsätzlich nicht möglich. Wissen ließe sich ebenso wie die Bildung von Communities of Practice nicht „allein“ durch eine top-down Anordnung oder durch systematische Einrichtungsprozesse implementieren. Sozialwissenschaftler scheinen die Begriffe des „Gardening“ und „Nurturing“ zu bevorzugen.</p>



<h3 class="wp-block-heading">Struktur</h3>



<p>Eine Community of Practice besitzt in der Regel eine Struktur, in der Personen nicht via Festlegung eine bestimmte Rolle erhalten, sondern aufgrund ihrer Tätigkeit und der Akzeptanz bzw. Ablehnung durch andere Mitglieder eine Rolle erwerben. Mit „Festlegung“ ist in diesem Fall die Vorgabe durch Führungskräfte, Organisationsdiagramme oder andere „formale Vorgaben“ gemeint.</p>



<p>Den Begriff der Rolle, der besonders im deutschsprachigen Raum eine längere Tradition hat, verwenden die Sozialwissenschaftler dabei ungern. Sie sprechen von „Identität“, die sich ausbildet, und von Aufgabenverteilungen, die man untereinander aushandelt. So entwickeln sich auf Basis der Kommunikationsprozesse aktive und weniger aktive Mitglieder, Moderatoren und Experten. Diese Moderatoren darf man sich nicht als starr vergebene Positionen innerhalb des Geflechts der Community of Practice vorstellen. Es handelt sich hierbei auch um situativ ausgehandelte Funktionen und Aufgaben innerhalb der Community. Ebenso können sich Untergruppen bilden oder man bindet externe Personen als Gäste ein.</p>



<p>Aus eigener Erfahrung, beispielsweise im <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Space, kann ich sagen, dass zwar in der Öffentlichkeitsarbeit ein gewisses Bild einer Hierarchie erkennbar ist, doch innerhalb einer Arbeitsgruppe Rollen weitestgehend irrelevant sind. Dies liegt zum einen daran, dass man es meist mit sehr facettenreichen und gebildeten Personen zu tun hat und zum anderen daran, dass in diesem Umfeld das Lernen und die Wissensvermittlung im Vordergrund stehen.</p>



<h3 class="wp-block-heading">Phasen</h3>



<p><strong>Fünf Phasen charakterisieren die Entwicklung einer Community of Practice.</strong></p>



<ol class="wp-block-list" type="1">
<li>Die erste Phase (Potential/Potenzial) ist durch eine oder mehrere Personen gekennzeichnet, die sich einer bestimmten Thematik annehmen.</li>



<li>Die zweite Phase (Coalescing/Vereinigung) ist geprägt durch die Bildung einer Grundstruktur, in der man Ziele, Aufgaben und Kommunikationswege skiziiert.</li>



<li>In der dritten Phase (Maturing/Reifung) beginnt die eigentliche Arbeit der Gemeinschaft. Der Wissensaufbau und Austausch. Mit zunehmender Aktivität steigt in der Regel auch die Zahl der Mitglieder. Fortlaufend werden Ziele, Aufgaben und Kommunikationswege bewertet und an die Bedürfnisse der Mitglieder durch die Mitglieder selbst angepasst.</li>



<li>Als vierte Phase (Stewardship/Verantwortung) wenn für die Mehrzahl der Mitglieder ein akzeptabler Stand erreicht ist und kein Bedarf für weitere Aktivitäten erkennbar sind. In diesem Fall sinkt die Anzahl der eingepflegten Informationen im Vergleich zu jener der entnommenen Informationen.</li>



<li>In der fünften und letzten Phase (Transformation/Umwandlung) verliert die Gemeinschaft zunehmend an Gewicht als zentraler Informationsknotenpunkt, weil man auf andere Quellen ausweicht oder die Thematik selbst an Bedeutung verliert.</li>
</ol>



<p>Diese Phasen können, aber müssen nicht auf diese Art und Weise auftreten bzw. durchlaufen. Diesen Phasenablauf haben Wenger, Snyder und McDermott aus verschiedenen Fällen generalisiert, um so ein „Gerüst“ für den jeweiligen Unterstützungsbedarf für das Florieren der Community zugrunde zu legen.</p>



<h3 class="wp-block-heading">Die Pflege von <strong>Community of Practice</strong></h3>



<p><strong><em>Design for evolution</em></strong></p>



<p>Stetige Veränderung ist notwendig: Anpassung an neue Mitglieder, Einführung neuer Mitglieder, Veränderung von Ressourcenlagen, Veränderung von Diskurstraditionen, Veränderung von Problemlagen von Mitgliedern, Veränderungen in der Struktur der CoP.</p>



<p><strong><em>Open a dialogue between inside and outside perspectives</em></strong></p>



<p>Der Austausch mit der Umgebung und die aktive Aushandlung von Bedeutung in der &#8222;Arena&#8220; der CoP bilden den Hauptantriebsgrund, warum Menschen sich zu CoPs zusammenschließen.</p>



<p><strong><em>Invite different levels of participation</em></strong></p>



<p>Von Kernaktivisten allein wird keine CoP getragen. Man muss sich auch um den Nachwuchs für Positionen innerhalb der CoP kümmern. Der Einbezug von anderen &#8222;Zonen&#8220; in der CoP trägt auch zur Pluralität der Blickwinkel auf ein spezifisches Problem bei.</p>



<p><strong><em>Develop both public and private community spaces</em></strong></p>



<p>Auch wenn die CoP oftmals selbst im &#8222;Organizational Underlife&#8220; angesiedelt ist, so gibt es auch hier Bereiche, in denen sich Untergruppen treffen, in denen man Themen abseits der eigentlichen Agenda diskutiert, in denen man auch persönliche Problemlagen und Differenzen ansprechen kann, ohne vor das &#8222;Plenum&#8220; der CoP zu treten. Spannungen bleiben unter Umständen bestehen, wenn man solche Probleme nicht abseits der &#8222;offiziellen Bühne&#8220; diskutiert bzw. diskutieren kann. Oftmals bilden solche Nebenschauplätze auch die Geburtsstätte für nachfolgende Themen einer CoP, die diese dann aufrechterhält, wenn auch in vielleicht geänderter Konstellation.</p>



<p><strong><em>Focus on value</em></strong></p>



<p>Die Sicherstellung von Qualität ist auch für CoPs wichtig. Das betrifft sowohl die Pflege der CoPs auf einem Meta-Niveau als auch die Beiträge zum &#8222;Situated Negotiation of Meaning&#8220;.</p>



<p><strong><em>Combine familiarity and excitement</em></strong></p>



<p>Auch CoPs leben von tragenden Strukturen aus mehr routinisierten Praktiken und frischem Wind.</p>



<p><strong><em>Create a rhythm for the community</em></strong></p>



<p>Auch der Puls verschiedener Aktivitäten trägt zum Fortbestand und zu einem guten Arbeitsklima innerhalb der CoP bei.</p>



<h3 class="wp-block-heading">Vorteile für das Individuum durch <strong>Community of Practice</strong></h3>



<p>Bei Community of Practice-Meetings geht es primär darum, Informationen und Fragen zu bestimmten Problemen aus dem professionellen Alltag zu besprechen und gemeinsam Lösungen zu finden. Die gegenseitige Unterstützung und Zusammenarbeit zwischen den Mitgliedern stehen damit im Vordergrund. Der große Vorteil liegt darin, dass Personen miteinander interagieren, die sonst im Alltag meist nicht miteinander arbeiten. Bei CoP-Meetings hat man die Möglichkeit individuelle Erfahrungen miteinander zu teilen, um daraus wiederum neue Möglichkeiten zu kreieren und bestimmte Herausforderungen zu meistern. Einzig durch die Interaktion von unterschiedlichen Netzwerken können neue Ideen entstehen, wobei jede Partei ihre eigenen Sichtweisen teilt, die Einfluss auf die Entscheidungen der anderen hat und dadurch ein Lerneffekt entsteht. Arbeiten und Lernen gehören im professionellen Kontext stets zusammen. Eine Community of Practice fördert diese Zusammenkunft von Arbeit und Lernen.</p>



<h3 class="wp-block-heading">Vorteile für die Community</h3>



<p>Communities profitieren von Community of Practice dahin gehend, dass das Team sich selbstständig und selbstorganisiert weiterentwickelt, ohne, dass Führungspersonen oder Verantwortliche kostspielige Ausgaben für Fortbildungen oder Ähnliches ausgeben müssen.&nbsp;</p>



<p>Voraussetzungen hierfür sind natürlich, die verfügbare Zeit und die Ressourcen für die eingesetzte Hard- und Software bzw. je nachdem, in welchem Umfeld und mit welcher Zielsetzung man unterwegs ist. Die in den Meetings neu erlangten Kenntnisse wirken sich direkt auf die Leistungen im täglichen Leben aus.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>In meiner Wahrnehmung bzw. in meinem Verständnis, gehe ich davon aus, dass bei der Themenverarbeitung durch einige Sozialwissenschaftler im „Community of Practice“ von einer physischen Präsenz der Teilnehmenden die Rede ist. Zumal die Literatur, die ich gelesen habe, noch aus den frühen 90’ern ist. Jedoch habe ich diese Art von CoP’s primär online kennenlernen dürfen. Dementsprechend habe ich an Meetings virtuell bzw. remote teilgenommen, was seit den Anfängen der Coronapandemie immer häufiger stattgefunden hat und auch im konventionellen Geschäftsleben mehr und mehr ankommt. Besonders im <a href="https://ceosbay.com/2022/11/28/blockchain/" target="_blank" rel="noreferrer noopener">Blockchain</a> Space hat sich diese Methode sehr stark etabliert. Folglich konnte ich die genannten 5 Phasen mehrfach, sowohl mit einem positiven als auch mit einem negativen Verlauf wiedererkennen. Alles in allem sehe ich es von Vorteil, sich mit diesem Thema auseinanderzusetzen. So erhält man eine etwas differenzierte Sicht auf die Zusammenarbeit innerhalb und außerhalb von Communities und kann bewusst mit diversen Herausforderungen umgehen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/24/erklaerung-community-of-practice/">Community of Practice &#8211; Kraft des gemeinsamen Lernens und Wachsens</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/24/erklaerung-community-of-practice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1233</post-id>	</item>
		<item>
		<title>Cloud Computing &#8211; Skalierbare Ressourcen und grenzenlose Möglichkeiten für agile Lösungen</title>
		<link>https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/</link>
					<comments>https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 30 Nov 2022 15:18:27 +0000</pubDate>
				<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Dezentralisierung]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Metaverse]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Datensicherheit]]></category>
		<category><![CDATA[Datenverfügbarkeit]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[IaaS]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Lösung]]></category>
		<category><![CDATA[Nachteil]]></category>
		<category><![CDATA[Nachteile]]></category>
		<category><![CDATA[P2P]]></category>
		<category><![CDATA[Paas]]></category>
		<category><![CDATA[Public]]></category>
		<category><![CDATA[Punkt-zuPunkt]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Solutions]]></category>
		<category><![CDATA[Verfügbarkeit]]></category>
		<category><![CDATA[Vorteile]]></category>
		<category><![CDATA[VPN]]></category>
		<category><![CDATA[Welt]]></category>
		<category><![CDATA[Wölkchen]]></category>
		<category><![CDATA[World]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=554</guid>

					<description><![CDATA[<p>Cloud Computing bzw. die Cloud, aus dem englischen die „Wolke“, begleitet uns bereits für ein Weilchen. Sie ist als bedarfsgerechte Verfügbarkeit von Computer-Systemressourcen, insbesondere von Datenspeichern (Cloud Storage) und Rechenleistung zu verstehen. Mittlerweile kann man &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud Computing &#8211; Skalierbare Ressourcen und grenzenlose Möglichkeiten für agile Lösungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Cloud Computing bzw. die Cloud, aus dem englischen die „Wolke“, begleitet uns bereits für ein Weilchen.</p>



<p>Sie ist als bedarfsgerechte Verfügbarkeit von Computer-Systemressourcen, insbesondere von Datenspeichern (Cloud Storage) und Rechenleistung zu verstehen. Mittlerweile kann man fast die gesamte IT-Infrastruktur ganzer Unternehmen in die Cloud verfrachten. Darüber hinaus wird es heutzutage fast schon erwartet, dass der Administrator bzw. Nutzer die Server als auch die Komponenten der Infrastruktur nicht mehr direkt bzw. aktiv selbst verwalten oder warten müssen. </p>



<p>Große Cloud-Anbieter stellen oft Server bzw. Funktionen zur Verfügung, die auf mehrere Standorte und Systeme verteilt sind. Dadurch werden die Verfügbarkeit und die Zugriffszeiten auf einem optimalen Niveau und redundant gehalten. In der Regel handelt es sich bei jedem dieser „Zugriffspunkte“ meistens um eigenständig agierende Rechenzentren. Cloud Computing beruht auf der gemeinsamen Nutzung von Ressourcen, um im Best-Case-Szenario maximale Kohärenz bzw. Redundanz und damit eine erhöhte Ausfallsicherheit zu erreichen. Meistens wird ein &#8222;Pay-as-you-go&#8220;-Modell angeboten, welches zur Kostensenkung beitragen soll, aber auch zu unerwartet hohen Betriebskosten führen kann.</p>



<h3 class="wp-block-heading">Seit wann schicken wir unsere Daten in, durch und über die Wolken durch Cloud Computing?</h3>



<p>Die ersten Time-Sharing-Konzepte wurden in Form von RJE realisiert. Was an &#8222;JRE&#8220; „Java Runtime Environment“ erinnert, dass ich durchaus in einem späteren Beitrag thematisieren werde, sich aber eigentlich um Remote Job Entry bzw. Remote-Job-Eingabe handelt. Die Konzepte dafür erfreuten sich einer gewissen Popularität in den 60ern größtenteils bei den Computergiganten IBM und DEC. Anfang der 70er waren Time-Sharing-Lösungen auf Plattformen wie Multics (auf GE-Hardware), Cambridge CTSS und den ersten UNIX-Ports (auf DEC-Hardware) verfügbar. Dennoch war das &#8222;Rechenzentrums&#8220;-Modell, bei dem die Benutzer den Betreibern Aufträge zur Ausführung auf den IBM-Mainframes erteilten, vorherrschend.</p>



<h3 class="wp-block-heading">Ist/war Time-Sharing bereits Cloud Computing?</h3>



<p>In der Informatik handelt es sich bei Time-Sharing, um die gemeinsame Nutzung einer Rechenressource durch viele Benutzer zur gleichen Zeit mittels Multiprogramming und Multitasking.</p>



<h3 class="wp-block-heading">Was ist/war RJE</h3>



<p>Es ist ein Verfahren, mit dem von entfernten Arbeitsplätzen aus Anfragen für nicht interaktive Datenverarbeitungsaufgaben (Jobs) an Großrechner gesendet werden und damit auch den Prozess des Empfangs der Ausgabe solcher Jobs an einem entfernten Arbeitsplatz zu ermöglichen.</p>



<p>Das Aufkommen als führendes Computermodell in den 70er Jahren stellte einen bedeutenden technologischen Wandel in der Geschichte der Computertechnik dar. Durch die Möglichkeit, dass viele Benutzer gleichzeitig mit einem einzigen Computer interagieren konnten, senkte die Kosten für die Bereitstellung von Rechenkapazitäten drastisch und ermöglichte es Einzelpersonen und Organisationen, einen Computer zu nutzen, ohne diesen besitzen zu müssen. Zeitgleich wurde dadurch die interaktive Nutzung von Computern und die Entwicklung neuer interaktiver Anwendungen gefördert bzw. vorangetrieben.</p>



<p>In den 90er Jahren begannen Telekommunikationsunternehmen, die zuvor hauptsächlich dedizierte Punkt-zu-Punkt-Datenleitungen anboten.&nbsp;</p>



<h3 class="wp-block-heading">Was ist eine (P2P) Punkt-zu-Punkt-Verbindung</h3>



<p>Eine Punkt-zu-Punkt-Verbindung ist eine private Datenverbindung, die zwei oder mehr Standorte für private Datendienste sicher miteinander verbindet. Es handelt sich dabei in der Regel um einen geschlossenen Netzdatentransportdienst, der nicht über das öffentliche Internet läuft und von Natur aus etwas „sicherer“ ist. Ich persönlich kannte als Vergleich das Tunneling, welches in der Regel bei VPN-Diensten zum Einsatz kommt. VPN-Dienste (Virtual Private Networks). Dieses Thema werde ich zu einem späteren Zeitpunkt in einem separaten Beitrag aufgreifen.</p>



<h3 class="wp-block-heading">Weiter mit der Entstehungsgeschichte</h3>



<p>Sie begannen, das Cloud-Symbol zu verwenden, um die Grenze zwischen dem, wofür der Anbieter und dem, wofür die Nutzer verantwortlich waren, zu markieren. Mit dem Cloud Computing wurde diese Grenze auf alle Server und die Netzinfrastruktur ausgedehnt. Mit der zunehmenden Verbreitung von Computern erforschten Wissenschaftler neue Möglichkeiten. Primär um die Rechenleistung in großem Maßstab durch Time-Sharing einer größeren Audienz zur Verfügung zu stellen. </p>



<p>Sie experimentierten mit Algorithmen zur Optimierung der Infrastruktur, der Plattformen und Anwendungen. Primär zur Priorisierung der Berechnungen durch die CPUs, der auszuführenden Aufgaben und zur Steigerung der Effizienz für die Endnutzer. CPU&#8217;s = Central Processing Unit – Die zentrale Recheneinheit – In anderen Worten, das Gehirn des Computers. Hier werden in einem bestimmten Rhythmus Befehle interpretiert und ausgeführt. </p>



<p>Die Verwendung der Cloud-Metapher für virtualisierte Dienste geht mindestens auf General Magic aus dem Jahr 1994 zurück. Die wurde verwendet, um das Universum der &#8222;Orte&#8220; zu beschreiben, die mobile Agenten in der Telescript-Umgebung aufsuchen konnten. Wie von Andy Hertzfeld beschrieben:</p>



<p>&#8222;Das Schöne an Telescript&#8220;, so Andy, &#8222;ist, dass wir jetzt nicht mehr nur ein Gerät zum Programmieren haben, sondern die gesamte Cloud, in der ein einzelnes Programm zu vielen verschiedenen Informationsquellen reisen und eine Art virtuellen Dienst erstellen kann.&#8220; </p>



<p>Die Verwendung der Cloud-Metapher wird dem Kommunikationsmitarbeiter von General Magic, David Hoffman, zugeschrieben. Es basiert auf der langjährigen Verwendung im Netzwerk- und im Telekommunikationsbereich.</p>



<p>Im Jahr 2002 legte dann Amazon mit der Tochtergesellschaft Amazon Web Services nach. Es ermöglichte Entwicklern, innovative und unternehmerische Anwendungen zu entwickeln. Im März 2006 führte Amazon seinen Simple Storage Service (S3) ein. Dicht gefolgt von Elastic Compute Cloud (EC2) im August desselben Jahres. Diese Produkte leisteten so gesehen Pionierarbeit für die Nutzung der Server-Virtualisierung bzw. zur Bereitstellung von IaaS (Infrastructure as a Service). Dazu aber später mehr.&nbsp;</p>



<p>Im April 2008 veröffentlichte Google die Beta-Version von Google App Engine, welches PaaS, dass eine vollständig gewartete Infrastruktur und eine Bereitstellungsplattform für Benutzer zur Erstellung von Webanwendungen in den gängigen Programmiersprachen Python, Node.js und PHP bot. Dies war damals etwas völlig neuartiges. Ziel war es, einige der für ein IaaS-Modell typischen Verwaltungsaufgaben zu eliminieren. Gleichzeitig sollte eine Plattform geschaffen werden, auf der die Nutzer solche Anwendungen einfacher bereitstellen und je nach Bedarf skalieren konnten.</p>



<p>Ebenfalls im Jahr 2008 wurde dann Nebula veröffentlicht. Ein Produkt aus einem Programm der <a href="https://www.nasa.gov" target="_blank" rel="noreferrer noopener">NASA</a>, dass im Rahmen des von der Europäischen Kommission finanzierten „RESERVOIR“-Projekts weiterentwickelt wurde. Es wurde zur ersten quelloffenen Software für den Einsatz privater und hybrider Clouds.</p>



<p>Mitte 2008 sah Gartner bereits die erhöhte Wahrscheinlichkeit, dass Cloud Computing die Beziehung zwischen den Nutzern von IT-Diensten und denjenigen, die IT-Dienste zur Verfügung stellen, grundsätzlich verändern wird. Gartner ging davon aus, dass Individuen und Unternehmen von unternehmenseigenen Hardware- und Software-Assets zu Service-basierten Modellen wechseln werden. Diese Verlagerung auf das Cloud Computing, sollte in einigen Bereichen zu einem dramatischen Wachstum und in anderen Bereichen zu einer deutlichen Reduzierung bei IT-Produkten führen.</p>



<p>So schlecht war die Prognose eigentlich gar nicht. Wir befinden uns nach wie vor in diesem Prozess 😀</p>



<p>Im gleichen Jahr startete die U.S. National Science Foundation (NSF) das Cluster Exploratory-Programm, um akademische Forschungsarbeiten zu finanzieren, die Google-IBM-Clustertechnologie zur Analyse großer Datenmengen einsetzen sollte.</p>



<h3 class="wp-block-heading">Wieso Cloud Computing?</h3>



<p>Das Ziel des Cloud Computing ist es, den Nutzern die Möglichkeit zu geben, von allen &#8222;neuen&#8220; Technologien zu profitieren, ohne, dass man über tiefgreifende Kenntnisse oder Erfahrungen mit jeder einzelnen Technologie verfügen muss. Die Cloud soll die Kosten senken und den Nutzern helfen, sich auf ihr Kerngeschäft zu konzentrieren. IT-Hindernisse sollen die Arbeit nicht behindern. Die wichtigste Grundlagentechnologie für Cloud Computing ist die Virtualisierung. Virtualisierungssoftware unterteilt ein physisches Computersystem in ein oder mehrere <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">virtuelle Maschinen</a>. Jedes Einzelne zur Ausführung Verwendung und Verwaltung von Computeraufgaben. </p>



<p>Durch die Virtualisierung auf Betriebssystemebene, die im Wesentlichen ein skalierbares System aus mehreren unabhängigen Computergeräten schafft, können ungenutzte Computerressourcen effizienter zugewiesen und genutzt werden. Virtualisierung bietet die nötige Flexibilität, um den IT-Betrieb zu beschleunigen und die Kosten durch eine bessere Auslastung der Infrastruktur zu senken. Autonomic Computing automatisiert den Prozess, durch den der Benutzer Ressourcen nach Bedarf bereitstellen kann. Durch die Minimierung des Benutzereingriffs soll die Automatisierung die Prozesse beschleunigen, die Arbeitskosten senken und die Möglichkeit menschlicher Fehler reduzieren.</p>



<p>Obwohl die serviceorientierte Architektur &#8222;Everything as a Service&#8220; (mit den Akronymen EaaS oder XaaS oder einfach aas) befürwortet, bieten Cloud-Computing-Anbieter ihre &#8222;Dienste&#8220; nach verschiedenen Modellen an. Diese sind in die drei Standardmodelle nach <a href="https://www.nist.gov" target="_blank" rel="noreferrer noopener">NIST</a> gegliedert. Infrastructure as a Service (IaaS), Platform as a Service (PaaS) und Software as a Service (SaaS). Diese Modelle bieten eine zunehmende Abstraktion. Sie werden daher oft als Schichten in einem Stapel dargestellt. Infrastruktur-, Plattform- und Software-as-a-Service, aber diese müssen nicht miteinander verbunden sein. So kann man beispielsweise SaaS auf physischen Maschinen implementieren. Jedoch ohne die zugrunde liegenden PaaS- oder IaaS-Schichten zu verwenden. Und umgekehrt kann ein Programm auf IaaS ausgeführt und direkt darauf zugegriffen werden, ohne es als SaaS zu verpacken.</p>



<h3 class="wp-block-heading">Infrastructure as a service (IaaS)</h3>



<p>Infrastructure as a Service stellt Unternehmen IT-Ressourcen zur Verfügung. Darunter fallen Server-, Netzwerkkomponenten und Speicher, sowie Stellflächen im Rechenzentrum auf der Basis nutzungsabhängiger Gebühren.</p>



<h4 class="wp-block-heading">Die Vorteile von IaaS</h4>



<ul class="wp-block-list">
<li>Man muss nicht in eigene Hardware investieren oder für die Wartung persönlich eingreifen.</li>



<li>Die Infrastruktur kann bei Bedarf zur Unterstützung dynamischer Workloads skaliert werden.</li>



<li>Bei Bedarf erhält man relativ flexible und innovative Services.</li>
</ul>



<h3 class="wp-block-heading">Platform as a Service (PaaS)</h3>



<p>Platform as a Service stellt eine Cloud-basierte Umgebung mit allen Komponenten bereit. Zur Unterstützung des gesamten Lebenszyklus, von der Erstellung bis zur Bereitstellung, von webbasierten (Cloud-) Anwendungen.</p>



<h4 class="wp-block-heading">Die Vorteile von PaaS</h4>



<ul class="wp-block-list">
<li>Schnellere Entwicklung und Markteinführung von Anwendungen.</li>



<li>Bereitstellung neuer Webanwendungen in der Cloud innerhalb kürzester Zeit.</li>



<li>Geringere Komplexität mit Middleware as a Service.</li>
</ul>



<h3 class="wp-block-heading">Software as a Service (SaaS)</h3>



<p>Cloud-basierte Anwendungen – oder Software as a Service. Im Grunde genommen auf Remote-Computern „in der Cloud“ ausgeführt, deren Eigentümer und Betreiber in der Regel externe Anbieter sind. Die Nutzer stellen über das Internet und primär über einen Web-Browser eine Verbindung zu diesen Remote-Computern her.</p>



<h4 class="wp-block-heading">Die Vorteile von SaaS</h4>



<ul class="wp-block-list">
<li>Man kann nach der Anmeldung und Einrichtung relativ schnell mit der Nutzung und Erstellung innovativer Anwendungen beginnen.</li>



<li>Der Zugriff auf Anwendungen und Daten ist von jedem angebundenen Endgerät aus möglich.</li>



<li>Bei einem Ausfall des Endgeräts kommt es zu keinem Datenverlust, da die Daten in der Cloud gespeichert sind.</li>



<li>Der Service kann dynamisch an die Anforderungen der Nutzung angepasst werden.</li>
</ul>



<h3 class="wp-block-heading">Public Cloud</h3>



<p>Eigentümer und Betreiber von Public Clouds sind Unternehmen oder Individuen, die schnellen Zugriff auf kosteneffiziente IT-Ressourcen über ein öffentliches Netzwerk bereitstellen möchten. Bei Public-Cloud-Services müssen die Nutzer keine Hardware, Software oder unterstützende Infrastruktur einkaufen. Die sind und bleiben in der Regel Eigentum des jeweiligen Providers und werden von diesem betrieben und gewartet.</p>



<h4 class="wp-block-heading">Vorteile der Public Cloud</h4>



<ul class="wp-block-list">
<li>Innovative SaaS-Anwendungen, die von CRM-Anwendungen (Customer Resource Management) über das Transaktionsmanagement bis zu Datenanalysen reichen.</li>



<li>Flexible, skalierbare IaaS für sofort einsatzbereite Speicher- und Rechenservices.</li>



<li>Leistungsfähige PaaS für Cloud-basierte Umgebungen für die Anwendungsentwicklung und -bereitstellung.</li>
</ul>



<h3 class="wp-block-heading">Private Cloud</h3>



<p>Eine Private Cloud ist eine Infrastruktur, die nur für ein einziges Unternehmen oder ein einziges Individuum betrieben wird. Für deren Management und Hosting kommt entweder das Unternehmen, der Nutzer selbst oder ein externer Provider in Frage. Private Clouds können die Effizienz der Cloud nutzen. Sie bieten jedoch mehr Kontrolle über die Ressourcen und verzichten auf die Nutzung des Multi-Tenant-Modells.</p>



<h4 class="wp-block-heading">Vorteile der Private Cloud</h4>



<ul class="wp-block-list">
<li>Self-Service-Schnittstelle zur Steuerung der Services, die IT-Mitarbeitern oder Spezialisten eine schnelle Provisionierung, Zuordnung und Bereitstellung von IT-Ressourcen bei Bedarf ermöglicht.</li>



<li>Hochautomatisiertes Management von Ressourcenpools für alle Aspekte von Rechenkapazität bis zu Speicher, Analytics und Middleware.</li>



<li>Ausgereifte Sicherheit und Governance, die für die Anforderungen des jeweiligen Unternehmens konzipiert sind.</li>
</ul>



<h3 class="wp-block-heading">Hybrid Cloud</h3>



<p>Eine Hybrid Cloud nutzt eine Private-Cloud als Grundlage, die mit der strategischen Integration und Nutzung von Public-Cloud-Services kombiniert wird. Tatsächlich kann eine Private Cloud nicht isoliert von den übrigen IT-Ressourcen eines Unternehmens oder Individuums und der Public Cloud existieren. Die meisten Unternehmen und Individuen mit Private Clouds, weiten das Workload-Management auf eine Kombination von Rechenzentren, Private Clouds und Public Clouds aus. Dadurch entstehen Hybrid Clouds.</p>



<h4 class="wp-block-heading">Vorteile einer Hybrid Cloud</h4>



<ul class="wp-block-list">
<li>Möglichkeit für Nutzer und Unternehmen, kritische Anwendungen und sensible Daten in einer traditionellen Rechenzentrumsumgebung oder einer Private Cloud auszuführen bzw. zu speichern.</li>



<li>Nutzung von Public-Cloud-Ressourcen wie SaaS (für die neuesten Anwendungen) und IaaS (für anpassungsfähige virtuelle Ressourcen).</li>



<li>Einfachere Portierbarkeit von Daten, Anwendungen und Services plus größere Auswahl an Bereitstellungsmodellen.</li>
</ul>



<h3 class="wp-block-heading">Nachteile aller Cloud Computing Lösungen</h3>



<p>Nun, bevor ich zu jeder einzelnen Lösung jeweils die Nachteile aufzähle, hier die Nachteile für alle Lösungen zusammengefasst.</p>



<ul class="wp-block-list">
<li>Datensicherheit &amp; Datenverfügbarkeit &#8211; Das Argument der Abhängigkeit von einem Anbieter kann für Individuen Unternehmen schwer wiegen.</li>



<li>Begrenzte Individualisierung.</li>



<li>Abhängigkeit vom Cloud-Anbieter und Cloud-Dienstleister.</li>



<li>Schlechte Portabilität &#8211; Wenn man mal den Anbieter wechseln will.</li>



<li>Verfügbarkeit &#8211; Ja, man benötigt immer einen Internetanschluss. Ansonsten geht gar nichts 😀</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>Soweit ich es beurteilen kann, ist Cloud Computing bereits im Unternehmensalltag angekommen. Nach der anfänglichen Skepsis und Unsicherheit, gehen die meisten Individuen, Unternehmen und bekannte Dienst- und Content-Creator über in die Cloud. Sie entwickeln immer mehr Cloud Computing Anwendungen und Dienste. Sicherlich ist nicht außer acht zu lassen, dass die größeren Anbieter eher im amerikanischen Raum vertreten sind. Folglich wird dadurch auch eine gewisse Abhängigkeit geschaffen.</p>



<p>Es zeigt sich jedoch auch, dass traditionelle Anwendungen, Netzwerkstrukturen und Bereitstellungsmodelle neuen, innovativen Anwendungen nicht mehr lange standhalten können. Die Nutzer erwarten auch bei der mobilen Arbeit einen einfachen Zugang und eine gewisse Flexibilität. Dies kann fast nur über Cloud Lösungen ermöglicht werden.</p>



<p>In meiner Idealvorstellung kann sich eine globale Netzwerk-Infrastruktur bilden lassen, die von Landesgrenzen relativ losgelöst ist. Ich kann mir vorstellen, dass in der Zukunft dezentralisierte <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Cloud Computing Plattformen geschaffen werden. Diese können dem Nutzer bzw. der Gesellschaft einen Mehrwert bieten. Ohne zeitgleich ein Vermögen von einzelnen Individuen oder Unternehmen zu fordern. Ein Sprungbrett dafür bietet die <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a> und die bereits bestehende globale <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Gemeinde. Und vielleicht kann auch so das Fundament für ein funktionsfähiges <a href="https://ceosbay.com/2022/11/17/erklaerung-metaverse/">Metaverse</a> geschaffen werden.</p>



<p>Die Netzwerk-Infrastruktur wird sich ohnehin weiterentwickeln, um sich den durch Virtualisierung und Cloud Computing getriebenen Innovationen rasch anzupassen. Cloud Computing befindet sich meiner Meinung nach immer noch in einer gewissen Entwicklungsphase. Daher können bereits heute die Weichen dafür gestellt werden, um nicht nur den vereinigten Staaten die Hoheit über Cloud Lösungen zu überlassen, sondern der ganzen Welt als Einheit.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud Computing &#8211; Skalierbare Ressourcen und grenzenlose Möglichkeiten für agile Lösungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">554</post-id>	</item>
	</channel>
</rss>
