<?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>Engine Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/engine/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/engine/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 16 Apr 2023 10:24:32 +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>Engine Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/engine/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</title>
		<link>https://ceosbay.com/2023/03/21/erklaerung-angular/</link>
					<comments>https://ceosbay.com/2023/03/21/erklaerung-angular/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 21 Mar 2023 18:57:09 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Databinding]]></category>
		<category><![CDATA[Dynamisch]]></category>
		<category><![CDATA[Eager]]></category>
		<category><![CDATA[ECMAScript]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[ES6]]></category>
		<category><![CDATA[First]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frequenz]]></category>
		<category><![CDATA[JS]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[Lade]]></category>
		<category><![CDATA[Ladetechnik]]></category>
		<category><![CDATA[Ladetechniken]]></category>
		<category><![CDATA[LTS]]></category>
		<category><![CDATA[Major]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[Preloading]]></category>
		<category><![CDATA[Releae]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Statisch]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1210</guid>

					<description><![CDATA[<p>AngularJS, als Vorgängerversion von Angular, ist ein JavaScript Framework für Web- und Softwareentwicklung, entwickelt von Goole. Anfangs für die Entwicklung von Single-Page-Apps gedacht und im Nachgang millionenfach für die Web-Anwendungsentwicklung genutzt. Google entwickelte damit das &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>AngularJS, als Vorgängerversion von Angular, ist ein <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für Web- und Softwareentwicklung, entwickelt von Goole. Anfangs für die Entwicklung von Single-Page-Apps gedacht und im Nachgang millionenfach für die Web-Anwendungsentwicklung genutzt. Google entwickelte damit das erste geeignete <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für große Enterprise-Anwendungen. Durch Methoden wie Dependency Injection (Ein Entwurfsmuster, bei dem ein Objekt oder eine Funktion andere Objekte oder Funktionen empfängt, von denen es/sie abhängt) und ein ausgereiftes Tooling, ermöglichen eine effiziente und wartbare Softwareentwicklung auf Basis von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>.</p>



<p>Seit 2009 ist es ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Projekt, dass auf gute Testbarkeit ausgelegt ist (An dieser Stelle möchte ich auf den <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a> Beitrag verweisen 😉 ). Dies bietet ein MVC/MVVM-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>, welches bidirektionales Databinding unterstützt.</p>



<h3 class="wp-block-heading">MVC/MVVM?</h3>



<p>MVVM teilt die verschiedenen Komponenten des Entwicklungsprozesses in drei Kategorien auf. Model, View und ViewModel. In der Regel handelt es sich dabei um Code-Markup oder grafische Benutzeroberflächen (GUI). MVC (Model-View-Control) ist eine Methode, mit der Entwickler Programme in diese drei Komponenten aufteilen. Auf diese Weise lassen sich geschäftliche Anforderungen und Regeln von der Art und Weise unterscheiden, wie Benutzer mit der Anwendung arbeiten. Gerne gehe ich in einem zukünftigen Beitrag näher darauf ein.</p>



<h3 class="wp-block-heading">Unterschiede zwischen Angular und AngularJS</h3>



<p>Angular ist wie bereits erwähnt der Nachfolger von AngularJS. Von Grund auf neu geschrieben, unterscheiden die beiden sich grundsätzlich und in vielerlei Hinsicht.</p>



<ul class="wp-block-list">
<li>Angular kennt keine „scopes“ oder Controller, sondern verwendet eine Hierarchie von Komponenten als zentrales Architekturkonzept.</li>



<li>Angular hat eine einfachere Syntax für Ausdrücke: Mit „[ ]“ werden Bindings für Eigenschaften und mit „( )“ werden Bindings für Events erzeugt.</li>



<li>Mobile-First-Ansatz: Die Anforderungen von mobilen Plattformen haben besondere Priorität.</li>



<li>Modularität: Module können Funktionalitäten auslagern, sodass Code leichtgewichtiger und schneller sein kann.</li>



<li>Es liegt lediglich die Unterstützung moderner Browser vor, wodurch man weniger Workarounds wegen Browser-Kompatibilitätsproblemen benötigt.</li>



<li>Angular empfiehlt die Verwendung von TypeScript. Es bietet Klassenbasierte objektorientierte Programmierung, Statische Typisierung und Generics.</li>



<li>TypeScript ist eine Obermenge von ECMAScript 6 (ES6) und ist rückwärts kompatibel mit ECMAScript 5, damit JavaScript. Angular bietet somit auch die Vorzüge von ES6: (Lambdas, Iteratoren, for…of-Schleifen, Generatoren im Stil von <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, Reflexion)</li>



<li>Verbesserte Dependency Injection: Bindings ermöglichen die Benennung von Abhängigkeiten.</li>



<li>Directives dienen dem Zweck, dass Aussehen und Verhalten eines Tags dynamisch zu verändern.</li>



<li>Dynamisches Laden ist möglich</li>



<li>Asynchrone Kompilierung von Templates</li>



<li>Einfacheres Routing</li>



<li>Kontroller und $scope sind durch Komponenten und Directives ersetzt. Eine Komponente ist eine Directive mit einem Template.</li>



<li>Reaktive Programmierung mit RxJS</li>
</ul>



<h3 class="wp-block-heading">Angular für konventionelle Websites?</h3>



<p>Angular ist ideal für Websites mit dynamischem Inhalt, jedoch nicht für kleine Seiten mit statischem Inhalt geeignet. Die Implementierung von Angular erhöht in diesem Fall lediglich die Gesamtgröße des Projekts und folglich auch die Ladezeiten. Dies ist eines der Hauptgründe, warum man Angular nicht für Landing Pages und Websites mit statischem Inhalt verwenden sollte. Davon abgesehen ist Angular weit davon entfernt, <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/" target="_blank" rel="noreferrer noopener">SEO</a>-freundlich zu sein. Und im Zeitalter von <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/" target="_blank" rel="noreferrer noopener">Search-Engine-Optimization</a> gibt es weitaus bessere Alternativen, um dieses Ziel zu erreichen. Auch ist Angular keine gute Lösung für kurzfristige Projekte oder Start-ups mit begrenzten Ressourcen. Die Komplexität des Front-Ends kann in relativ kurzer Zeit immense Ausmaße annehmen und später schwer zu bändigen sein.</p>



<p>Das Hauptanwendungsgebiet von Angular bestand darin, Einzelseiten-Webanwendungen zu erstellen. Aus diesem Grund verfügt es über eine breite Palette von Werkzeugen für die SPA-Entwicklung. Darüber hinaus ist es eine ideale Technologie für Websites, bei denen sich der Inhalt auf der Grundlage des Nutzerverhaltens und der Präferenzen der Benutzer dynamisch anpasst. Dependency Injections stellen sicher, dass im Falle der Änderung einer Komponente andere Komponenten, die mit ihr in Zusammenhang stehen, automatisch mitgeändert werden.</p>



<h3 class="wp-block-heading">Die 3 verschiedenen Ladetechniken</h3>



<p>Bei der Arbeit mit Angular bieten sich 3 verschiedene Ladetechniken an. Diese sind das Eager Loading, Lazy Loading und Preloading, auf die ich nachfolgend eingehe.</p>



<p><strong>Eager Loading (Eifriges Laden)</strong></p>



<p>Der Abruf aller benötigten Daten möglichst wirksam und umgehend bzw. sofort. Hierzu gibt es im Grunde genommen nicht viel anzumerken. Die Technik ist zwar effizient, doch die Tatsache, dass man eventuell nur einen bestimmten Teil der Daten benötigt aber dennoch alle Daten lädt, kann sich schnell zu einem Nachteil entwickeln, wenn es sich um große Datenmengen handelt.</p>



<p><strong>Lazy Loading (Langsames Laden)</strong></p>



<p>Die am wenigsten eifrige bzw. nicht eifrige Ladetechnik. Wenn man faul ist, tut man so lange nichts, bis man es wirklich muss oder dazu gezwungen wird. Man stelle sich vor, dass die Anwendung drei Bereiche hat. Home, Admin und das Dashboard. Auf den Home-Bereich wird ständig zugegriffen, auf den Dashboard-Bereich die meiste Zeit. Der Admin-Bereich wird jedoch nur von einigen wenigen Nutzern verwendet. Folglich kann man die Admin-Route nach und nach laden. So lange niemand auf die Idee kommt, auf den Verwaltungsbereich der Anwendung zu klicken, wird der damit verbundene Code auch nicht ausgeführt bzw. nicht geladen.</p>



<p>Die Mehrheit der Nutzer lädt den Code für den Verwaltungsbereich schlichtweg nie. Wenn man also Lazy Loading verwendet, kann man grundsätzlich schneller auf die Anwendung zugreifen, da man nicht so viel Code vom Server laden muss. Dies hängt damit zusammen, dass das ORM-Werkzeug (Objekt-Relationales Mapping-Werkzeug) jeglichen Zugriff auf alle Objektreferenzen »abfangen« muss, um hier bei Bedarf die verbundenen Objekte nachladen zu können. Dieses Abfangen erfolgt durch die Verwendung bestimmter Klassen für Einzelreferenzen und Mengenklassen. Der Unterschied zwischen den ORM-Werkzeugen liegt darin, ob der Entwickler diese Klassen explizit im Code verwenden muss oder ob das ORM-Werkzeug diese beim Kompilieren oder zur Laufzeit austauscht.</p>



<p><strong>Preloading (Vorladen)</strong></p>



<p>Die „somewhere-in-between“ (Irgendwie Zwischendrin) Ladetechnik. Beim Preloading macht man im Grunde genommen dasselbe wie beim Lazy Loading, nur ein bisschen anders.</p>



<p>Anhand des Home, Dashboard und Admin Beispiels lässt sich dies folgendermaßen darstellen. Die Startseite braucht man immer. Also lädt man diese schnell bzw. eifrig. Der Admin-Bereich wird nur selten und nur von wenigen Benutzern benötigt, also kann man diesen erst einmal etwas vernachlässigen bzw. &#8222;lazy&#8220; laden. Aber das Dashboard ist nicht das Erste, was ein Benutzer sieht, also kann es grundsätzlich erst einmal warten. Doch das Dashboard ist gleichzeitig etwas, dass die meisten der Benutzer irgendwann sehen möchten. Also sollte es zumindest dann zur Verfügung stehen, wenn das Laden des Home-Bereichs fertiggestellt ist. Nach jeder erfolgreichen Navigation sucht der Router in seiner Konfiguration nach einem nicht geladenen Modul, das er vorladen kann.</p>



<p>Der Home-Bereich wird erfolgreich geladen und unmittelbar danach wird der Dashboard-Bereich im Hintergrund geladen.</p>



<h3 class="wp-block-heading">Welche Ladetechnik kann/soll ich nun verwenden?</h3>



<p>Wie bei vielen Angelegenheiten in der IT kommt es hier auf den spezifischen Anwendungsfall und den zur Verfügung stehenden Ressourcen an. Wenn man nicht genau weiß, ob man die zusätzlichen Daten benötigt oder nicht, dann kann es ungünstig sein, sie direkt zu laden. Es kann aber auch ungünstig sein, sie später nachladen zu müssen. Entscheidend bei der Entscheidung ist die Wahrscheinlichkeit, ob und wann man die jeweiligen Daten für wen benötigt, um welche Datenmenge es sich handelt und ob man die Daten später einfach nachladen kann. Zu beachten ist, dass man ein automatisches Nachladen, nach einer Serialisierung, in der Regel nicht mehr initiieren kann.</p>



<h3 class="wp-block-heading">Release-Frequenz</h3>



<p>Angular Releases folgen dem Konzept des Semantic Versionings. Man unterscheidet zwischen Major-, Minor- und Bugfix-Releases. Alle 6 Monate gibt es eine neue Major Release. Major Releases enthalten signifikante neue Features, sind aber nicht abwärtskompatibel. Der Umstieg auf eine neuere Major Release benötigt daher oft Update-Scripts, Refactorings des bestehenden Codes, weitere Tests und das Erlernen neuer APIs. Zu jeder Major Release gibt es ein bis drei Minor Releases. Patch Releases und Pre-Releases gibt es fast jede Woche.</p>



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



<p>Der Support von Major Releases beträgt typischerweise 18 Monate lang nach Release. Davon 6 Monate aktiv. Aus diesem Grund gibt es in regelmäßigen Abständen Minor Releases und Patch Releases. Es folgt ein 12-monatiger Long Term Support (LTS) in Form von Patch-Releases, ausschließlich zur Behebung kritischer und sicherheitsrelevanter Fehler.</p>



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



<p>Bei der Verwendung von Angular sollte von vornherein klar sein, dass die Realisierung eines Projekts mit der Abnahme vieler Entscheidungen über Architektur und des Renderings verbunden ist. Dies hat den Vorteil, dass sich das Projektteam zu 100% auf die Umsetzung von Features konzentrieren kann und nicht die grundlegende Architektur eigenständig aufbauen muss.</p>



<p>Durch die sehr einheitliche Struktur von Angular Anwendungen lassen sich gute Entwickler sehr schnell in das Projekt integrieren, da Angular Anwendungen stets einer gewissen Struktur folgen. Dies vereinfacht die Skalierbarkeit des Teams als auch des Projektes selbst als vergleichsweise bei Individuallösungen der Architektur in anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>.</p>



<p>Generell ist es für Enterprise Projekte sicherlich eine gute Wahl. Dennoch sollte man andere <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a> und VueJS nicht außer Acht lassen, über die ich in den kommenden Tagen schreibe.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular &#8211; Entfaltung des vollen Potenzials von Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/21/erklaerung-angular/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1210</post-id>	</item>
		<item>
		<title>SEO &#8211; Online-Erfolg durch optimierte Sichtbarkeit</title>
		<link>https://ceosbay.com/2022/11/23/erklaerung-seo/</link>
					<comments>https://ceosbay.com/2022/11/23/erklaerung-seo/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 23 Nov 2022 17:50:33 +0000</pubDate>
				<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Description]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Keyword]]></category>
		<category><![CDATA[Maschinen]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[Meta Title]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Schlüssel]]></category>
		<category><![CDATA[Schlüsselbegriffe]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[SERP]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Suchen]]></category>
		<category><![CDATA[Suchmaschine]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=628</guid>

					<description><![CDATA[<p>Dies ist zwar mein privater Blog &#8211; Doch auch hier ist die Pflege und SEO angesagt. Was ist SEO? SEO (englisch für Search Engine Optimization), die Suchmaschinenoptimierung. So bezeichnet man alle Maßnahmen, die sich dazu &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/">SEO &#8211; Online-Erfolg durch optimierte Sichtbarkeit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Dies ist zwar mein privater Blog &#8211; Doch auch hier ist die Pflege und SEO angesagt.</p>



<h3 class="wp-block-heading">Was ist SEO?</h3>



<p>SEO (englisch für Search Engine Optimization), die Suchmaschinenoptimierung. So bezeichnet man alle Maßnahmen, die sich dazu eignen, die Platzierung einer Website in den organischen Suchergebnissen von Suchmaschinen zu verbessern und damit den Traffic zu steigern. Man kann den Begriff unter Marketingmaßnahme oder Marketingstrategie ablegen.</p>



<p>Ausgezeichnet wird diese Marketingstrategie einerseits durch den bedingt hohen Wert des Suchmaschinen-Traffics über die benutzten Worte. Andererseits ist SEO die einzige Marketingmaßnahme, die Traffic generiert, ohne viel Geld investieren zu müssen. In meinem Fall ist es eine gute Übung und es trägt seinen Teil dazu bei, dass relevante Informationen die relevanten Personen erreichen, um eine gewisse Hilfestellung oder einen schnellen Einstieg, in das ein oder andere Thema zu ermöglichen.</p>



<p>Wichtige Bestandteile der Suchmaschinenoptimierung sind das Erstellen bzw. Aufbessern relevanter Inhalte (Content), der Einsatz entsprechender Schlüsselbegriffe (Keywords), Title-Tags oder Meta-Descriptions sowie das interne Verlinken auf der Website. Besonders Links von anderen Seiten, die auf die eigene führen, sind für ein gutes Ranking unabdingbar.</p>



<h3 class="wp-block-heading">Was sind Title Tags?</h3>



<p>Der Title Tag, auch Meta-Title oder nur Title genannt, ist ein HTML-Element, welches im Header-Bereich einer Webseite eingebunden wird und den Seitentitel einer Webseite definiert.</p>



<p>Was ist die Meta-Description bzw. Meta-Beschreibung?</p>



<p>Eine Meta-Beschreibung ist ein HTML-Element, dass eine kurze Zusammenfassung einer Webseite enthält. Der Meta-Description-Tag einer Webseite wird als Teil des Such-Snippets auf der SERP angezeigt und soll dem Benutzer eine Vorstellung vom Inhalt der Seite und dessen Bezug zu seiner Suchanfrage vermitteln.</p>



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



<p>Als Search Engine Result Page, kurz SERP, deutsch Suchergebnisseite, wird die Darstellung der Suchergebnisse in Suchmaschinen wie Google bezeichnet.</p>



<p>Google versucht Websites mit Hilfe eines Algorithmus nach den Maßstäben eines menschlichen Lesers zu evaluieren. Nach diesen Kriterien wird auch das Ranking definiert.</p>



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



<p>Suchmaschinenoptimierung kann potenziell günstig die Reichweite steigern. Ist man kommerziell unterwegs und will damit profitablen Traffic erreichen, also den Umsatz eines Unternehmens steigern, ist zu beachten, dass es Agenturen gibt, die sich rein auf SEO spezialisiert haben und damit die Konkurrenz relativ stark sein kann. Vor allem ist zu beachten, dass die Algorithmen und die künstliche Intelligenz sehr schnell dazulernen und die Ansprüche der Suchmaschinen an hochwertigen Content ebenfalls steigt. Dies führt dazu, dass SEO immer teurer und damit weniger profitabel werden kann.</p>



<p>Bereits heute nutzen mehr Menschen mobile Endgeräte statt stationärer Computer. Auch die Suchmaschinen, besonders <a href="https://www.google.com/" target="_blank" rel="noreferrer noopener">Google</a>, hat dies in seinen Mitteilungen explizit zu Wort gebracht. Demnach fallen jetzt schon viele Webseiten aus dem Raster, wenn die Mobile Konformität nicht gegeben ist. Des Weiteren ist SEO keine einmalige Sache. Es muss immer wieder frischer Content generiert werden, um mehr Themen abzubilden, die gefragt sind.</p>



<p>Für kleinere Projekte bieten sich Hilfsmittel wie <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Lösungen oder kommerzielle Plug-Ins an. Ansonsten gibt es, wie bereits angesprochen Agenturen, die sich explizit darum kümmern. Ein paar dieser Tools werde ich gerne in den kommenden Beiträgen vorstellen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/23/erklaerung-seo/">SEO &#8211; Online-Erfolg durch optimierte Sichtbarkeit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/23/erklaerung-seo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">628</post-id>	</item>
		<item>
		<title>Docker &#8211; Verpacken, verteilen und überall ausführen &#8211; Laufzeitumgebung für Softwareanwendungen</title>
		<link>https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/</link>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 28 Oct 2022 12:18:00 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Engine]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Laufzeitumgebung]]></category>
		<category><![CDATA[Operating Systems]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Portainer]]></category>
		<category><![CDATA[Registry]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwareanwendung]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[VMs]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=82</guid>

					<description><![CDATA[<p>Docker ist ein beliebtes Open-Source-Tool, das eine portable und konsistente Laufzeitumgebung für Softwareanwendungen bietet. In anderen Worten: Ein Tool, mit dem Entwickler, Systemadministratoren und andere Normalsterbliche ihre Anwendungen einfach in einer Sandbox (genannt Container) bereitstellen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/">Docker &#8211; Verpacken, verteilen und überall ausführen &#8211; Laufzeitumgebung für Softwareanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Docker ist ein beliebtes <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Tool, das eine portable und konsistente Laufzeitumgebung für Softwareanwendungen bietet. In anderen Worten: Ein Tool, mit dem Entwickler, Systemadministratoren und andere Normalsterbliche ihre Anwendungen einfach in einer Sandbox (genannt Container) bereitstellen können, um sie auf dem Host-Betriebssystem, z. B. auf Linux, auszuführen. Der Hauptvorteil besteht darin, dass es Benutzern ermöglicht, eine Anwendung mit all ihren Abhängigkeiten in eine standardisierte Einheit für die Softwareentwicklung zu verpacken. Im Gegensatz zu virtuellen Maschinen haben Container keinen hohen Overhead (Verwaltungsaufwand) und ermöglichen daher eine effizientere Nutzung des zugrunde liegenden Systems und der Ressourcen. Es kann für die gängigen Betriebsysteme auf der <a href="https://www.docker.com" target="_blank" rel="noreferrer noopener">Website</a> heruntergeladen werden (Achtung! &#8211; Die Desktop Version ist keine <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Anwendung!).</p>



<h2 class="wp-block-heading">Was sind Container?</h2>



<p>Zu dem heutigen Industriestandard gehört die Verwendung von virtuellen Maschinen (VMs) zur Ausführung von Softwareanwendungen zum Alltag. Ein Docker-Container ist eine Standardsoftwareeinheit, die einen Code in all seinen Abhängigkeiten speichert. So wird die Anwendung schnell und zuverlässig auf verschiedensten Computerumgebungen lauffähig. Ein Container bildet ein leichtes eigenständiges ausführbares Softwarepaket ab, das alles enthält, was zum Ausführen einer Anwendungscodelaufzeit benötigt wird. Was im Grunde genommen benötigt wird sind in der Regel der Programmcode, diverse RunTime-Engines, Systemtools, die dazugehörigen Systembibliotheken und so ziemlich alle Einstellungen. Diese containerisierte Software läuft unabhängig von dem Betriebssystem, also auf Linux-, Mac- und Windows-basierten Systemen. Und dies vollkommen unabhängig von der jeweiligen Infrastruktur. Die Container isolieren die Software von der Umgebung und stellen sicher, dass sie trotz der Unterschiede einheitlich funktioniert.</p>



<h2 class="wp-block-heading">Vorteile von Containern</h2>



<p>Docker-Container sind besonders beliebt, weil sie gegenüber&nbsp;<a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">Virtuellen Maschinen (VMs)</a>&nbsp;viele Vorteile bieten. <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">VMs</a> enthalten grundsätzlich vollständige Kopien eines umfassenden Betriebssystems, die Anwendung(en) selbst, alle erforderlichen Binärdateien und Bibliotheken. Diese Tatsache beansprucht in der Regel Unmengen an Speicherkapazität.</p>



<p><a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">VMs</a> booten im Vergleich auch ausgesprochen langsam. Container benötigen grundsätzlich weniger Speicherplatz, da ihre Images normalerweise nur wenige hundert Megabyte groß sind. So können bei dem Einsatz von Docker viel mehr Anwendungen gleichzeitig verarbeitet werden. Dies reduziert Verwendung von <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">VMs</a> und Betriebssystemen. </p>



<p>Auch der Einsatz von Containern auf&nbsp;Edge-Devices, z.B. auf kompakten Einplatinencomputern (Single-Board Computer (SBC) wie die beliebten Raspberry Pi&#8217;s oder NVIDIA Jetson&#8217;s, sowie robusten und wartungsarmen Embedded PC&#8217;s in der Industrie, ist problemlos möglich. Container sind flexibler und effektiver als <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">VMs</a> und die Verwendung von Docker in der Cloud ist ebenfalls sehr beliebt. Die Möglichkeit, dass verschiedene Anwendungen auf einer einzelnen Betriebssystem-Instanz ausgeführt werden können, verbessert vielfältige Einsatzmöglichkeiten immens. Ein weiterer entscheidender&nbsp;Vorteil von Containern&nbsp;ist die Fähigkeit, Apps nicht nur voneinander, sondern auch von ihrem zugrundeliegenden System zu isolieren. </p>



<p>So kann der Anwender leicht bestimmen, wie eine zugewiesene containerisierte Einheit das jeweilige System und die vorhandenen Ressourcen (CPU, GPU und Netzwerk) nutzt. Zudem stellt es auch sicher, dass Daten und Code voneinander getrennt bleiben was durchaus eine weitere Sicherheitsinstanz darstellen kann.</p>



<h2 class="wp-block-heading">Komponenten von Docker</h2>



<p>Die Docker-Plattform besteht aus einer Reihe von Komponenten. Desktop und Engine sind die zwei wesentlichen Bestandteile davon. Images definieren den Inhalt von Containern. Container sind lauffähige Instanzen von Images. Der Daemon ist eine Hintergrundanwendung, die Images und -Container verwaltet und ausführt. Der Client ist ein Befehlszeilenprogramm (CLI <em>Command-Line Interface</em>) &#8222;Ein Befehlszeileninterpreter oder Befehlszeilenprozessor.&#8220; Es verwendet eine Befehlszeilenschnittstelle, um Befehle von einem Benutzer in Form von Textzeilen zu empfangen, dass die API des Daemons aufruft. Registries enthalten Images, und der Hub ist ein weit verbreitetes öffentliches Registry. Zudem gibt es noch die&nbsp;Toolbox,&nbsp;um Docker auf Systeme zu bringen, die nicht nativ unterstützt werden. Dies wird dadurch erreicht, indem eine virtualisierte Linux-Instanz gestartet wird. Dies geschieht beispielsweise innerhalb von VirtualBox. Und Docker wird dann innerhalb dieser virtuellen Maschine ausgeführt.‎ Ein Großteil von Docker (jedoch nicht Desktop) ist <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a>. Lizenziert ist es unter der Apache-V2-Lizenz.</p>



<h2 class="wp-block-heading">Docker Desktop</h2>



<p>Während die meisten Komponenten sowohl für Windows, Mac und Linux verfügbar sind, und trotz der Tatsache, dass die meisten Container auf Linux lauffähig sind, ist Docker Desktop lediglich für Windows und Mac verfügbar. Docker Desktop ist ein GUI-Tool (Graphical User Interface / Grafische Benutzeroberfläche), welches im Wesentlichen eine <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">virtuelle Maschineninstallation</a> abdeckt. Diese virtuelle Maschine ist unter Linux nicht notwendig, da hier direkt die Engine lauffähig ist. Docker Desktop dient unter Windows und Mac zum Management verschiedener Komponenten und Funktionen, einschließlich von Containern, Images, Volumes (an Container angehängter Speicher), lokalem Kubernetes (eine Automatisierung der Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen &#8211; Doch hierzu später mehr), Entwicklungsumgebungen innerhalb von Containern und vielem mehr.</p>



<h2 class="wp-block-heading">Docker-Images und -Registry</h2>



<p>Ein Docker-Image ist eine unveränderliche Datei, die im wesentlichen Sinn einen Schnappschuss eines Containers darstellt. Images werden mit dem Befehl „build“ erstellt und erzeugen einen Container, wenn sie mit „run“ gestartet werden. Images werden in einer Registry wie „registry.hub.docker.com“ gespeichert. Sie sind so konzipiert, dass sie aus mehreren Schichten anderer Images bestehen können. So muss bei der Übermittlung von Images über das Netzwerk nur eine geringe Datenmenge übertragen werden.</p>



<h2 class="wp-block-heading">Docker-Container</h2>



<p>Als Programmierer spricht man bei einem Image immer von einer Klasse und bei Containern über eine Instanz einer Klasse – bzw. über ein Laufzeitobjekt. Container sind der Grund, warum Docker so vielfältig verwendet wird: Sie sind leichtgewichtige und portable Kapselungen einer Umgebung, in der Anwendungen ausgeführt werden können.</p>



<h2 class="wp-block-heading">Docker-Engine</h2>



<p>Bei einem Blick auf die Docker-Engine und ihre Komponenten, kann man eine grundlegende Vorstellung davon erhalten, wie das System funktioniert. Mit der Engine entwickelt man Anwendungen, stellt sie zusammen, liefert sie aus und im Anschluss kann man sie ausführen, indem die folgenden Komponenten verwenden: Der <strong>Docker Deamon</strong> &#8211; Ein dauerhafter Hintergrundprozess, der Images, Container, Netzwerke und Speichervolumen verwaltet. Der Daemon „betrachtet“ ständig die Docker-API-Anforderungen und verarbeitet sie.</p>



<p>Die <strong>Docker Engine REST API</strong> &#8211; Eine Schnittstelle, die von Anwendungen verwendet wird, um mit dem Daemon zu interagieren. Auf sie kann über einen https-Client zugegriffen werden. Der <strong>Docker Client bzw. die CLI</strong> &#8211; Ermöglicht den Benutzern die Interaktion mit Docker. Er kann sich auf demselben Host wie der Daemon befinden oder eine Verbindung zu einem Daemon auf einem entfernten Host herstellen und mit mehr als einem Daemon kommunizieren.</p>



<p>Der Docker-Client bietet eine Befehlszeilenschnittstelle (CLI = Command Line Interpreter), über die man einem Daemon Befehle zum Erstellen, Ausführen und Anhalten von Anwendungen erteilen kann. Der Hauptzweck des Clients besteht darin, ein Mittel zur Verfügung zu stellen, mit dem Images aus einer Registry gezogen und auf einem Docker-Host ausgeführt werden können. Die gängigen Befehle, die von einem Client ausgegeben werden, sind: docker build, docker pull und docker run. </p>



<p><strong>Portainer</strong> &#8211; Zur Vereinfachung der Arbeit mit Docker-Befehlen ist das freie, intuitive und leicht zu implementierende GUI (Graphical User Interface = Grafische Benutzeroberfläche) Portainer oft eine gute Wahl. Die Verwaltung der Engines und das komplette Management ist mit Portainer auch für kleine Projekte geeignet. Ich selbst hatte nur wenig Kontakt damit, daher bitte mit Vorsicht genießen ;). Hardwareinformationen wie die Anzahl der Prozessoren und die Größe des Arbeitsspeichers, sowie Docker-spezifische Informationen (Anzahl der Container, Images, Volumes und Networks) sind auf jeden Fall relativ leicht ersichtlich. So kann das Dockertool mit seiner übersichtlichen Weboberfläche die Standard-Docker-Funktionen und die Verwaltung übernehmen.</p>



<h2 class="wp-block-heading">Kubernetes</h2>



<p>Ein Thema, mit dem ich mich auch noch auseinandersetzen werde und es noch einen gesonderten Beitrag darüber geben wird. Im Grunde genommen ist Kubernetes ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-System, welches mit Hilfe von Prozessautomatisierung die Verwaltung der Container übernimmt und somit Hand in Hand mit dem Docker zusammenarbeitet. </p>



<p>In einem Helm-Chart werden Konfigurationsdaten an Kubernetes übergeben. Dort wird konfiguriert, welche Container ausgerollt, überwacht und verwaltet werden sollen. Kubernetes löst diese Aufgabe auch mit einer hohen Anzahl an Containern problemlos. Außerdem kann Kubernetes Ressourcen perfekt einsetzen. Maschinen, die nicht benötigt werden, können entweder ausgeschaltet oder an andere Tasks weitervergeben werden, um Kosten sowie Kapazitäten zu sparen und folglich ein besseres Ressourcenmanagement zu ermöglichen.</p>



<h2 class="wp-block-heading">Auf welchen Betriebssystemen läuft Docker?</h2>



<p>Ein Docker-Container läuft mit der Engine direkt unter Linux und auf jedem Host-Computer, der die Container-Laufzeitumgebung „Docker Desktop“ unterstützt (Mac und Windows). Die Anwendungen müssen nicht an das Host-Betriebssystem angepasst werden. So kann sowohl die Anwendungsumgebung, als auch die zugrunde liegende Betriebssystemumgebung sauber und minimalistisch gehalten werden. Containerbasierte Anwendungen können so problemlos von Systemen in Cloud-Umgebungen oder von Entwickler-Notebooks auf Server geschoben werden, wenn das Zielsystem Docker und alle damit verwendeten Tools von Drittanbietern unterstützt.</p>



<h2 class="wp-block-heading">Wie kann Docker installiert werden?</h2>



<ul class="wp-block-list">
<li><a rel="noreferrer noopener" href="https://docs.docker.com/desktop/windows/install/" target="_blank">Installationsanleitung für Docker Desktop (Windows)</a></li>



<li><a rel="noreferrer noopener" href="https://docs.docker.com/desktop/mac/install/" target="_blank">Installationsanleitung für Docker Desktop (Mac)</a></li>



<li><a href="https://docs.docker.com/engine/install/" target="_blank" rel="noreferrer noopener">Installationsanleitung für die Docker-Engine auf diversen Linux Distributionen</a></li>
</ul>



<h2 class="wp-block-heading">Microservices-Modell &#8211; Was ist das?</h2>



<p>Die meisten Geschäftsanwendungen bestehen aus mehreren separaten Komponenten, die in einem sogenannten „Stack“ organisiert sind. Beispiele hierfür sind ein Webserver, eine Datenbank oder ein In-Memory-Cache. Container ermöglichen es, diese einzelnen Komponenten zu einer funktionalen Einheit mit leicht austauschbaren Teilen zusammenzustellen. Verschiedene Container können diese Komponenten beinhalten. So kann jede Komponente für sich gepflegt, aktualisiert und unabhängig von den anderen modifiziert werden. Im Grunde ist dies das Microservices-Modell des Anwendungsdesigns. Indem die Anwendungsfunktionalität in separate und in sich geschlossene Dienste unterteilt ist, bietet das Modell eine Alternative zu langsamen traditionellen Entwicklungsprozessen und unflexiblen Apps. Leichtgewichtige übertragbare Container machen es einfacher, Microservices basierende Anwendungen zu erstellen und zu pflegen.</p>



<p>Alles in allem trägt Docker dazu bei, die Verwaltung einer kompletten Infrastruktur wesentlich zu vereinfachen, indem es die zugrunde liegenden Instanzen leichter, schneller und robuster macht. Darüber hinaus trennt es die Anwendungsschicht von der Infrastrukturebene und bringt die dringend benötigte Portabilität, Zusammenarbeit und Kontrolle über die Softwarebereitstellungskette. Es wurde für moderne DevOps-Teams entwickelt. Das Verständnis seiner Architektur kann helfen, das Beste aus containerisierten Anwendungen herauszuholen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/">Docker &#8211; Verpacken, verteilen und überall ausführen &#8211; Laufzeitumgebung für Softwareanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">82</post-id>	</item>
	</channel>
</rss>
