Der Inhalt der vorliegenden Arbeit liefert einen Überblick über die Anwendungsmöglichkeiten von verteilten Systemen, insbesondere der gegenwärtigen Webanwendungen und zeigt dafür verwendete und nützliche Technologien auf. Dies beinhaltet eine Einführung in die Funktionsweise von Virtualisierung, Betriebssystemen und Desktop- sowie Webanwendungen. Weiterhin werden Konzepte wie Service-orientierte Architekturen, Software-on-Demand sowie mit besonderem Schwerpunkt das Cloud-Computing erläutert. Außerdem wird auf die Entwicklungen und den Ausbau der notwendigen Übertragungstechnologien eingegangen. Auch die Verfügbarkeit und Entwicklung von Client- und Server-Hardware als Teil der für Webanwendungen benötigten Infrastruktur, inklusive der Tendenz zu umweltfreundlichen, energieeffizienten und gut skalierbaren Rechensystemen wird im Folgenden behandelt.
In die Kategorie des Cloud-Computings fallen auch die in der Arbeit beschriebenen Anwendungen, Infrastruktur- und Plattform-Lösungen. Es handelt sich dabei um eine vielfältige Kombination von Technologien, mit dem Ziel, eine breite Anwendungspalette sowie Infrastruktur-, Rechen- und Speicherkapazitäten über das Internet bzw. das World Wide Web gegen Bezahlung zugänglich zu machen. Hier spielt auch die Orientierung an einem immer höheren Vernetzungs-, und Effizienzgrad eine Rolle, die das Potential und die Nützlichkeit der genannten Dienste bestimmen. Dabei ist auch die Integration solcher Dienste in den allgemeinen Prozessablauf und das Prozessmanagement von besonderer Bedeutung. Des weiteren werden eventuelle Weiterentwicklungen und Anwendungsmöglichkeiten des Cloud-Computings, inklusive bereits existierender neuer Ansätze, erörtert. Beispiele dafür sind die Integration von Cloud-Diensten in eine SOA, in Anwendungen oder gar das Betriebssystem sowie die Realisierung eines persönlichen, virtuellen Computers im Internet mit Hilfe Cloud-basierter Dienste.
Zum Abschluss der Arbeit werden einige der Vor- und Nachteile, die sich durch die Verwendung von webbasierten, speziell von Cloud-Diensten, ergeben, aufgezählt und beschrieben. Hier sind Kosten- und Energiesparmöglichkeiten, aber auch Sicherheitsrisiken zu nennen. Auch die Änderungen und damit einhergehenden Verwendungsmöglichkeiten, die in Verbindung mit den Cloud-Diensten entstehen und immer stärker mit der Entstehung des Strom- oder Wassernetzes verglichen werden können, werden im Fazit dieser Arbeit thematisiert.
Inhaltsverzeichnis
1 Einleitung
2 Motivation
3 Grundlagen und wichtige Technologien
3.1 Verteilte Systeme
3.2 Betriebssysteme
3.3 Virtualisierung
3.4 Das Client-Server-Modell
3.5 Desktopanwendungen
3.5.1 Fat-Client-Anwendungen
3.5.2 Rich-Client-Anwendungen
3.5.3 Thin-Client-Anwendungen
3.5.4 Smart-Client-Anwendungen
3.6 Webanwendungen
3.6.1 Webbasierte Desktopanwendungen
3.6.2 Rich Internet Applications
3.7 Geschäftsmodelle und Konzepte für webbasierte Services
3.7.1 Service Oriented Architecture
3.7.2 Software on Demand: ASP und SaaS
3.7.3 Cloud-Computing.
4 Infrastruktur
4.1 Übertragungsinfrastruktur
4.2 Rechnerinfrastruktur
4.2.1 Hochleistungssysteme: Supercomputer, Cluster- und Grid
4.2.2 Client-Systeme
5 Cloud- und webbasierte Systeme
5.1 Cloud- und Webanwendungen
5.1.1 Google Apps
5.1.2 Salesforce.com
5.1.3 Microsoft Office Live Workspace
5.1.4 Panda Cloud Antivirus
5.1.5 Zscaler
5.1.6 Einige weitere Anwendungs-Anbieter .
5.2 Cloud-Infrastruktur-Software.
5.2.1 Amazon Elastic Cloud Computing
5.2.2 Google App Engine
5.2.3 Microsoft Azure
5.2.4 EnStratus
5.2.5 Eucalyptus
5.2.6 Einige weitere Infrastruktur-Anbieter
6 Zukünftige Entwicklungen
6.1 Live Cloud Computing
6.1.1 Integration in oder als eine Anwendungen
6.1.2 Integration ins Betriebssystem
6.2 Integration in eine SOA
7 Potential und Probleme des Cloud-Computings
7.1 Vorteile der Nutzung von Web-gestützten Diensten
7.1.1 Dynamische Ressourcenanpassung
7.1.2 Geschwindigkeit und Verfügbarkeit von Rechen- und Speicherkapazität
7.1.3 Energiesparmöglichkeiten.
7.1.4 Aufwandsbegrenzung und Vereinfachung von IT-Projekten
7.1.5 Austauschbarkeit
7.1.6 Kosteneinsparungen
7.2 Nachteile der Nutzung von Web-gestützten Diensten
7.2.1 Fehlende Standards und fehlende Zertifizierungen
7.2.2 Datenschutz
7.2.3 Datensicherung und Archivierung
7.2.4 Abhängigkeit
7.2.5 Verfügbarkeit
7.2.6 Sicherheitsprobleme und Sicherheitsrisiken
Fazit und Ausblick
Anhang
A Literaturverzeichnis
B Abbildungsverzeichnis
C Tabellenverzeichnis
D Abkürzungsverzeichnis
E Hilfsmittel
Zusammenfassung des Themas
Der Inhalt der vorliegenden Arbeit liefert einen Überblick über die Anwendungsmöglichkeiten von verteilten Systemen, insbesondere der gegenwärtigen Webanwendungen und zeigt dafür verwendete und nützliche Technologien auf. Dies beinhaltet eine Einführung in die Funktionsweise von Virtualisierung, Betriebssystemen und Desktop- sowie Webanwendungen. Weiterhin werden Konzepte wie Service-orientierte Architekturen, Software-on-Demand sowie mit besonderem Schwerpunkt das Cloud-Computing erläutert. Außerdem wird auf die Entwicklungen und den Ausbau der notwendigen Übertragungstechnologien eingegangen. Auch die Verfügbarkeit und Entwicklung von Client- und Server-Hardware als Teil der für Webanwendungen benötigten Infrastruktur, inklusive der Tendenz zu umweltfreundlichen, energieeffizienten und gut skalierbaren Rechensystemen wird im Folgenden behandelt.
In die Kategorie des Cloud-Computings fallen auch die in der Arbeit beschriebenen Anwendungen, Infrastruktur- und Plattform-Lösungen. Es handelt sich dabei um eine vielfältige Kombination von Technologien, mit dem Ziel, eine breite Anwendungspalette sowie Infrastruktur-, Rechen- und Speicherkapazitäten über das Internet bzw. das World Wide Web gegen Bezahlung zugänglich zu machen. Hier spielt auch die Orientierung an einem immer höheren Vernetzungs-, und Effizienzgrad eine Rolle, die das Potential und die Nützlichkeit der genannten Dienste bestimmen. Dabei ist auch die Integration solcher Dienste in den allgemeinen Prozessablauf und das Prozessmanagement von besonderer Bedeutung. Des weiteren werden eventuelle Weiterentwicklungen und Anwendungsmöglichkeiten des Cloud-Computings, inklusive bereits existierender neuer Ansätze, erörtert. Beispiele dafür sind die Integration von Cloud-Diensten in eine SOA, in Anwendungen oder gar das Betriebssystem sowie die Realisierung eines persönlichen, virtuellen Computers im Internet mit Hilfe Cloud-basierter Dienste.
Zum Abschluss der Arbeit werden einige der Vor- und Nachteile, die sich durch die Verwendung von webbasierten, speziell von Cloud-Diensten, ergeben, aufgezählt und beschrieben. Hier sind Kosten- und Energiesparmöglichkeiten, aber auch Sicherheitsrisiken zu nennen. Auch die Änderungen und damit einhergehenden Verwendungsmöglichkeiten, die in Verbindung mit den Cloud-Diensten entstehen und immer stärker mit der Entstehung des Strom- oder Wassernetzes verglichen werden können, werden im Fazit dieser Arbeit thematisiert.
Executive Summary
This Thesis' content includes an overview about the applicability of distributed systems, preferably current web applications. It also shows some of the useful technologies needed to put such applications into practice.
Therefore it implys an introduction into virtualization, operating systems and as well desktop applications as web applications. Furthermore concepts like Service oriented Architectures, Software on Demand and especially Cloud Computing are discussed. Including the future development and availability of basic infrastructure services like data transmission in Germany and both client and server hardware, which is needed by web applications. Environment-friendly, energy efficient technologies and advantages of high scalable data processing centers which can be realised by using Cloud Computing will be explained as part of the Thesis, too.
After giving a definition of Cloud Computing a selection of possible Cloud solutions including Cloud Platform and Cloud Infrastructure Services will be given. These applications, which combine different technologies, are aiming to provide a broad field of computing and storage power that can be used to perform different tasks against payment of a fee by using the internet and world wide web. The fast growing networks and the importantance of being more and more efficient lead to a higher potential and usefulness of the abovementioned services. Hence the integration of these services into an existing Business Process Management and process chains plays a sustainable role. In addition the author argues possible further and derivative development of Cloud Computing including some basic approaches matching its evolution. For Example the integration of Cloud Services into a Service oriented Architecture as into other applications or into an operating system. Another subject is the internet based realization of a virtual personal computer through Cloud based services.
Finally some of the resulting advantages and disadvantages, which can be associated with web and Cloud based services, are summarized and pictured. This can be energy efficient computing on one and security risks on the other hand. In the end possible development and changes caused by Cloud Computing encompassing computing's trend of becoming more and more a commodity like water and electricity is part of the final result.
1 Einleitung
Webanwendungen und Webservices dominieren mittlerweile das Bild der Anwendungsentwicklung. Es wird kaum noch eine Software veröffentlicht, die nicht zumindest auch als Webanwendung umgesetzt oder mit Schnittstellen zu diesen ausgerüstet wird. Die stetige Vereinfachung und Automatisierung der Arbeit durch und mit Hilfe von Informationstechnologie sowie den unverzichtbaren verteilten Systemen, wie Webanwendungen, sind Thema dieser Arbeit. Der Schwerpunkt liegt dabei in der Beschreibung und Analyse einiger ausgewählter und gängiger Webgestützter Services und dem Aufzeigen von Einsatzmöglichkeiten sowie möglichen Problemen. Anhand von Konzeptbeschreibungen soll gezeigt werden, welches Potential und welche Entwicklungsmöglichkeiten beim zukünftigen Einsatz von Cloud-Services möglich und zu erwarten sind und welche Erleichterungen und Probleme dies mit sich bringt. In diesem Rahmen konzentriert sich der Autor auf Dienste, die als „Cloud Computing“ bezeichnet werden und hauptsächlich von externen Anbietern bezogen werden. Es sollen grundlegende Funktionsweisen der verwendeten Technologien sowie die Prinzipien der Geschäftsmodelle beschrieben und eine kurze Einführung in die Grundlagen des verteilten Rechnens gegeben werden. Da dies den Rahmen dieser Arbeit um ein Vielfaches sprengen würde, wird auf eine technisch detaillierte Beschreibung der jeweiligen Anwendungen und Technologien an dieser Stelle verzichtet, genauso auf die umfangreiche Darstellung der Möglichkeiten, die sich durch die Technologien für die jeweiligen Anwendungsanbieter bieten. Vielmehr soll der Leser ein Bild des Ist-Zustandes webbasierter Dienste, verteilter Anwendungen und deren Bedeutung sowie einen Ausblick auf die zukünftige Entwicklung möglicher geschäftskritischer Technologien (Business Technologies) bekommen. Zum
Abschluss der Arbeit wird deshalb auch auf die Risiken, die mit der Verwendung von Web- sowie Cloud-basierten Anwendungen einhergehen, eingegangen.
Im Rahmen dieser Bachelorarbeit erhebt der Autor keinen Anspruch auf Vollständigkeit der aufgeführten Softwareauswahl und deren Beschreibung, die in ausführlicher Form den jeweils angegebenen Quellen entnommen werden kann. Bei der Behandlung der Dienste werden die Verwendungsmöglichkeit und das Potential behandelt sowie gegebenenfalls mögliche und geplante Entwicklungswege erörtert. Um den verfügbaren Rahmen nicht zu sprengen und trotzdem einen weiträumigen Überblick über Funktionsweise und Nutzen von Cloud-Diensten geben zu können, wird bei den jeweiligen Technologien auf eine tiefgehende Beschreibung der technischen Details verzichtet und lediglich auf geeignete Quellen verwiesen.
Zum besseren Verständnis der Thematik sind fortgeschrittene Kenntnisse von informationstechnischen und wirtschaftlichen Fachbegriffen sowie der grundlegenden Funktionsweise von Rechner- und Anwendungssystemen hilfreich. Auch Kenntnisse über eventuelle Besonderheiten von Hard- und Software, physikalischer Kommunikation und das Verständnis von grundlegenden wirtschaftlichen Zusammenhängen werden vorausgesetzt und sind nicht Teil dieser Arbeit.
Alle genannten, gegebenenfalls geschützten, Unternehmens- und Markennamen werden in dieser Arbeit zwar nicht ausdrücklich als solche gekennzeichnet, gehören jedoch dem jeweiligen Eigentümer und werden sich vom Autor in keiner Weise zu Eigen gemacht.
2 Motivation
Der für viele Menschen faszinierende und spannende Fortschritt der Informationstechnologie hat in den letzten 60 Jahren eine beispiellos rasante Entwicklung vollzogen und beschleunigt sich von Tag zu Tag mehr. Parallel dazu steht seit ca. 40 Jahren die Vernetzung dieser unterschiedlichen Technologien immer mehr im Vordergrund.
Bei der ersten Nutzung von elektronischen Computersystemen in den 1940er Jahren zu militärischen Zwecken, z. B. des Vakuumröhrenrechners „COLOSSUS“, welcher 1943 in Großbritannien mit dem Ziel der Dekodierung der deutschen ENIGMA-Verschlüsselungsmaschine gebaut wurde und dem etwa zeitgleich vom US-Militär genehmigten ENIAC, ( Electronic Numerical Integrator And Computer), der allerdings erst 1946 fertiggestellt werden konnte, spielte noch eine spezielle (in diesem Fall militärische) Aufgabe die entscheidende Rolle zum Bau des Rechners.1 Es wurde aber eine Entwicklung angestoßen, die eine Vielzahl neuer Möglichkeiten zur Lösung von Problemen schaffen sollte, auch wenn die Idee einer Rechenmaschine an sich nicht neu war.
Nach der bedeutsamen Erfindung des Transistors machten die Entstehung des Betriebssystems (etwa 1960) sowie der ersten Minicomputer (z. B. der DEC PDP-8) die neue Rechenmaschine auch für den alltäglichen Gebrauch interessant.2 Eine logische Entwicklung zur Gewinnung von mehr Rechenkapazität und einer höheren Verfügbarkeit waren deshalb auch Rechnernetzwerke (z. B. der Vorläufer des Internets, das ARPANET). Der endgültige Durchbruch gelang mit der Erfindung und Verwirklichung des integrierten Schaltkreises, des darauf basierenden IBM-PCs (1981) und der dadurch möglichen vergleichsweise kleinen Server- und Client-Systeme. Seitdem konnte sich das enorme Potential von elektronischen Rechnern für alle Arten von Anwendungen entfalten.3
Mit der Verfügbarkeit vernetzter Systeme begann die Entwicklung von an Komplexität stetig wachsender verteilter Software für unterschiedliche Arten von Anwendungsgebieten, die softwareseitig mit der Durchsetzung der TCP- und Internet-Protokoll-Familie4 (IP) ihren vorläufigen Höhepunkt durch den Aufbau und die Entwicklung des Internets und dem darauf aufbauenden WWW (World Wide Web) fand. Dafür verwendete Software und Protokolle sind je nach Anwendungsgebiet sehr vielfältig und werden teilweise mit ausgefeilten MiddlewareLösungen5 miteinander verbunden und für unterschiedliche Aufgabenbereiche eingesetzt.
Die derzeitige Entwicklung und weiter wachsende Bedeutung von verteilten Systemen, die auch durch die zunehmende Verbreitung von Ubiquitous (Allgegenwärtig) bzw. Pervasive (Durchdringend) Computing6 beeinflusst wird, mit primären Bezug auf Web- und Netzwerkinhalte bzw. Anwendungen und Dienste ist Thema dieser Arbeit und soll abschließend auch einen Ausblick auf die Generation kommender Systeme, insbesondere den möglichen und schon stattfindenden Änderungen von Betriebssystemen und der Arbeitsweise mit Computern, bieten.
3 Grundlagen und wichtige Technologien
Im folgenden Kapitel sollen zusammengefasst die Grundlagen des verteilten Rechnens und Betriebssystemen dargestellt sowie die Prinzipien wichtiger Geschäftsmodelle, wie Software als Service (SaaS), der Vorgänger Application Service Providing (ASP) bzw. On-Demand Services, erläutert werden. Des weiteren werden Funktion und Nutzen von Virtualisierung und das ClientServer-Modell dargestellt und auf Webanwendungen und Service-orientierte Architekturen (SOA) eingegangen. Die vorgestellten Technologien und Modelle sind zum Teil gängige Mechanismen in der Praxis und schon seit vielen Jahren im Einsatz, haben aber an Aktualität nicht verloren und stellen wichtige Teile oder Grundlagen aktueller, neuer und kommender Technologien dar, auf die in dieser Arbeit eingegangen wird.
3.1 Verteilte Systeme
Die meisten gängigen Definitionen für verteilte Systeme unterscheiden sich in einigen Punkten und sind in manchen Teilen sogar widersprüchlich. Eine grobe, aber treffende Erklärung stammt von Andrew S. Tanenbaum und Maarten van Steen aus ihrer Publikation „Verteilte Systeme – Prinzipien und Paradigmen“: „Ein verteiltes System ist eine Ansammlung unabhängiger Computer, die den Benutzern wie ein einzelnes kohärentes System erscheinen.“ 7 Daraus kann man ableiten, dass ein verteiltes System aus autonomen Komponenten besteht, die untereinander durch Nachrichten kommunizieren und das nach außen hin transparent ist; das heißt, dass z. B. der Ort und die Zugriffsart der Ressource für den Anwender verborgen bleiben. Prinzipiell kann mit autonomen Komponenten auch Software gemeint sein, die auf unterschiedlichen vernetzten Computern läuft.8 Der Nachrichtenaustausch erfolgt entweder synchron oder asynchron. Im ersten Fall sind die kommunizierenden Systeme während des Vorgangs aktiv bzw. blockiert und warten auf die Antwort des jeweiligen Partners. Bei der asynchronen Kommunikation braucht der sendende Teil keine Antwort abzuwarten und kann weitere Nachrichten abarbeiten; der Empfänger benötigt in diesem Fall einen Zwischenspeicher (Cache) und eine Logik zum korrekten Verarbeiten der empfangenen Nachrichten.
Der Nutzen verteilter Systeme ergibt sich im alltäglichen Gebrauch von Informationstechnologie, wenn Nebenläufigkeit (das Ausführen mehrerer Prozesse gleichzeitig), Skalierbarkeit, Offenheit, Transparenz und leichter Zugriff auf Ressourcen im Vordergrund stehen, seien es Anwendungen respektive Szenarios für Personalcomputer, mobile Computer (Laptop/Notebook) oder Mobiltelefone.
Beispiele, bei denen verteilte Systeme verwendet werden können, sind ein Hochschulnetzwerk, das Internet oder ein lokales Unternehmensnetzwerk wie in Abbildung 1: Hier greift ein Benutzer von einem Arbeitsplatzrechner auf eine Anwendung zu, ohne zu wissen, ob und wie diese ihre Ressourcen, in diesem Fall (über eine Middlewareschicht verbundene) Applikations-, und Datenbankserver im Netzwerk verwaltet.
Abbildung in dieser Leseprobe nicht enthalten
Gründen sehr umfangreich: Das Spektrum reicht von verteilten Betriebssystemen, Datenbanken, über diverse Middleware-Implementierungen, Cluster- oder Grid-Systeme und Webservices bis hin zum Cloud-Computing. Als Beispiel für ein verteiltes Betriebssystem kann das von den Bell Labs initiierte „PLAN 9“ genannt werden, welches auf Unix basiert und vollständig als verteiltes System ausgerichtet wurde. Folgende Prinzipien wurden bei der Entwicklung des OS (Operating System) beachtet: Alle Ressourcen werden als Dateien betrachtet (auch Hardware inklusive Peripherie) und haben einen Namen; es gibt außerdem keine Unterscheidung zwischen lokalen und nicht-lokalen Objekten. Dies wird mit Hilfe eines eigenen Dateiprotokolls (9P) umgesetzt. Da sich der genannte Systemansatz von anderen Systemen deutlich unterscheidet, ist die Anwendungsvielfalt für das OS relativ gering. Der Einsatz erfolgt hauptsächlich im universitären Umfeld und bietet sich sehr gut für den Einsatz als Grid-Betriebssystem an.9 Auch andere (Unix-) Betriebssysteme, beispielsweise SUNs Solaris oder Linux weisen Eigenschaften auf, die aus dem Konzept von PLAN 9 übernommen wurden, so z. B. das /proc-Dateisystem, in welchem alle Ressourcen (mit Namen oder Nummern) als Datei ansprechbar sind. Weitere in Betriebssystem integrierte Eigenschaften verteilter Systeme sind z. B. das RPC-Protokoll (Remote Procedure Call), welches im nächsten Absatz näher erläutert wird. Genutzt wird das Protokoll u. a. zur Realisierung des Netzwerkdateisystems NFS (Network File System).
Eine wichtige Voraussetzung zur Implementation von verteilten Systemen ist Middleware-Software.
Kurz zusammengefasst ist eine Middleware eine zusätzliche, anwendungsneutrale Softwareschicht zwischen dem Betriebs- oder einem Netzwerk-System und einer Anwendung.10 Es existieren verschiedene Typen von Middleware: Unter anderem funktionsorientierte, nachrichtenorientierte (MOM), transaktionsorientierte und objektorientierte Middleware. Für funktionsorientierte Middleware existiert das RPC-Protokoll, für Objektorientierte sogenannte ORBs (Object Request Brokers). RPC realisiert dabei besonders einfach ein verteiltes System, indem darüber Prozeduraufrufe wie in einem lokalen System über das Netzwerk abgegeben werden können, ohne dass der Anwender davon Kenntnis besitzt.11 Über einen Object Request Broker als Middleware lässt sich nicht unähnlich dem RPC-Protokoll ein verteiltes System in beliebiger Größe und mit unterschiedlichen Anwendungen realisieren. Hier werden allerdings nicht Funktionen, sondern Objekte angesprochen. Die Standardspezifikation für die rein objektorientierte Architektur ist CORBA (Common Object Request Broker Architecture).12 Ein umfangreiches Middleware-Beispiel ist „Oracle Fusion Middleware“, welche mehrere Anwendungen zur Erstellung einer Serviceorientierten Architektur (SOA – Siehe Kapitel 3.7.1) beinhaltet. Sehr nützlich und vielfach verwendet ist Oracles auf verteilte Systeme ausgelegtes relationales Datenbanksystem (DBS) „Oracle Database“ (derzeit in Version 11g – g steht hier für Grid). Das zugrundeliegende Datenbankmanagementsystem (DBMS) und die Datenbankengine sind sehr flexibel, auf hohe Verfügbarkeit ausgelegt und dadurch gut skalierbar und auch bei großen Datensätzen performant. Es ermöglicht den Einsatz in einem Cluster oder Grid (Mehr dazu in Kapitel 4.2.1) und kann partitioniert werden. Partitionierung bedeutet in diesem Fall, dass Tabellen und Tabellenindizes z. B. nach Aufrufwahrscheinlichkeit der Spalten (vertikal) oder Zeilen (horizontal) aufgeteilt werden. In einem verteilten System können dadurch verschiedene Partitionen auf unterschiedlichen Systemen gespeichert werden, was bei großen Datensätzen einen enormen Performance-Gewinn mit sich bringt. Eine vergleichbare Datenbankanwendung ist IBMs DB2.
3.2 Betriebssysteme
Bei einem Betriebssystem handelt es sich um eine zum Betrieb eines Computers notwendige Softwareschicht, welche die Aufgabe hat, die verfügbaren Geräte zu verwalten und anderen Programmen per Schnittstelle den Zugriff darauf zu gewähren. Gleichwohl unterscheiden sich die Definitionen in Bezug auf den Umfang der Funktionalität, gemeinsam ist ihnen aber in der Regel die Funktion des Ressourcenmanagers und die Vereinfachung der Hardware-Zugriffe als erweiterte Maschine. Andrew S. Tanenbaum beschränkt sich zur Beschreibung eines Betriebssystems auf die wichtigste zum Betrieb des Rechners benötigte Software, die im hardwaregeschützten Kernelmodus ausgeführt wird. Im Gegensatz dazu steht der Benutzermodus, der für die Ausführung von Bibliotheken und Anwendungen vorgesehen ist, die nur eingeschränkte Zugriffsrechte auf die Hardware besitzen dürfen.13 Deutlich wird diese Unterteilung in unterschiedliche Bereiche und Funktionsebenen auf Abbildung 2.
Während bei manchen Designs (Client-Server- oder Microkernel-Modell) möglichst viel Funktionalität im Benutzermodus ausgeführt werden soll und damit dem Benutzer mehr Einflussmöglichkeiten auf die Softwareauswahl hat, umfasst die Architektur des häufig verwendeten monolithischen Kernels mehr, teils lose integrierte Prozeduren im Betriebssystemkern.14 Der Vorteil des Mikrokerns ist eine hohe Abstraktion, Transparenz und Sicherheit der Prozesse, dagegen sticht bei monolithischen Systemen die beliebige Kommunikation der implementierten Methoden untereinander sowie eine erhöhte Performance, da weniger zwischen Benutzer- und Kernelmodus gewechselt werden muss, hervor. Prozesse entsprechen, grob beschrieben, dem Ablauf eines oder Teilen eines Programms, das auf die Ressourcen zugreift. Dabei kann von einem Prozessor immer nur ein Prozess verarbeitet werden, weshalb entweder mehrere Prozessoren zur schnellen Bearbeitung eines Ablaufs erforderlich sind oder die Prozesse nacheinander und dadurch langsamer abgearbeitet werden. Die Fähigkeit, einen Prozess zeitweise zu unterbrechen, ermöglicht es deshalb, unterschiedliche Prozesse beinahe zeitgleich und dadurch effizienter zu verarbeiten.
Abbildung in dieser Leseprobe nicht enthalten
Als Untergruppe der Betriebssysteme können Netzwerkbetriebssysteme und verteilte Betriebssysteme genannt werden. Allerdings unterscheiden sich die Netzwerkbetriebssysteme nicht mehr von Einzelplatz-Betriebssystemen, da die Funktionalität für Netzwerkanwendungen schon seit längerer Zeit in die heute gängigen Systeme integriert wurde und täglich von deren Anwendern genutzt wird. Unterschiede gibt es dagegen zu verteilten Betriebssystemen, die, wie die Definition verteilter Systeme in 3.1 nahe legt, für den Benutzer immer wie ein Einzelplatzsystem erscheinen, auch dann, wenn dem System mehrere Rechner zugrunde liegen.15 Diese Besonderheit gewinnt auch bei der Behandlung der Desktop- und besonders der Webanwendungen in Kapitel 3.5 und 3.6 an Bedeutung.
Je nach Hersteller und Zweck unterscheiden sich die Architekturen der Betriebssysteme, was am Beispiel Unix/Linux und Windows deutlich wird. Der Software-Zugriff auf die unixoiden Systeme erfolgt z. B. direkt über sogenannte Systemaufrufe (engl. „system calls“), während unter Windows in erster Linie die ereignisbasierte Win32 API (Application Program Interface), eine Schnittstelle für die Nutzung von Systemaufrufen, verwendet wird.16
3.3 Virtualisierung
Bei der Virtualisierung handelt es sich um ein Thema, das in den letzten Jahren wieder17 stark an Bedeutung gewonnen hat. Da es sich dabei um eine grundlegende Technologie für die Bereitstellung von verteilten Systemen und besonders von Cloud-Systemen handelt, wird an dieser Stelle kurz auf die Funktionsweise eingegangen. Durch die Virtualisierung können entweder unterschiedliche Plattformen auf einem Rechner zugänglich gemacht, unterschiedliche ( oder gleiche) Betriebssysteme parallel ausgeführt werden und auch eine optimale Nutzung der Ressourcen erreicht werden, indem der Rechner (oder das verteilte System) in mehrere (unabhängige) Systeme unterteilt wird. Für den Serverbetrieb sind diese Funktionen zum einen für Serverhoster interessant, zum anderen auch für Unternehmen, die so ihre IT-Infrastruktur auch auf einem (verteilten) System abbilden und damit z. B. Legacy-Software ( Alt-Software ) weiterverwenden können.
Als Beispiele können hier der Paravirtualisierer „Xen“, „VMware“, SUNs „VirtualBox“, „KVM“ und Microsofts „Virtual PC“ und „Hyper-V“ genannt werden. Eine Besonderheit von Xen ist, wie in Abbildung 3 zu sehen, dass der Hypervisor (auch „Virtual Machine Monitor“ – VMM – genannt) direkt auf der Hardware läuft und als Hostsystem eine bestimmte Anzahl Gastsysteme beherbergen kann. Die Unterteilung des Haupt- und der Gastsysteme in Domänen (Paravirtualisierung) erfordert allerdings eine diesbezügliche Anpassung der Gastsysteme, um eine optimale Steuerung und Transparenz gewährleisten zu können. Dies wird auch mittlerweile von diversen Prozessoren und Chipsätzen unterstützt (Intels VT und AMD-V) und macht eine Modifizierung des GastBetriebssystems überflüssig.18 Ähnlich funktioniert auch VMwares ESX-Server und das freie KVM ( Kernel-based Virtual Machine ).
Abbildung in dieser Leseprobe nicht enthalten
3.4 Das Client-Server-Modell
Als eines der wichtigsten Prinzipien des verteilten Rechnens gilt das Client-Server-Modell (auch Zwei-Schichten-Modell). Dabei wartet ein Programm oder Rechner (Server) auf eine Kontaktaufnahme durch ein anderes Programm/einen anderen Rechner (Client).19 Dadurch ist auch die Implementierung beliebiger unterschiedlicher Anwendungen für denselben Zweck möglich, die untereinander austauschbar sind. Ein Beispiel für die Verwendung des Client-Server-Modells in verteilten Systemen findet sich in Abbildung 4. Dieses Prinzip wird auch für die Umsetzung von Betriebssystem-Funktionalität eingesetzt; dabei wird möglichst viel Funktionalität bzw. Code im Benutzermodus als Server-Anwendung implementiert. Über einen Client-Prozess wird dann auf den benötigten Server-Prozess zugegriffen. Der Betriebssystem-Kern regelt dabei lediglich die Kommunikation zwischen den Prozessen.20 Ähnlich funktioniert beispielsweise die Kommunikation von Webbrowser (Client) und Webserver und spielt deshalb eine Rolle bei der Entwicklung sowohl von Desktop- als auch von Webanwendungen.
Abbildung in dieser Leseprobe nicht enthalten
3.5 Desktopanwendungen
Als Desktopanwendung wird in dieser Arbeit Software bezeichnet, die zur Interaktion mit dem Benutzer mit Hilfe eines Betriebssystems (bzw. Plattform) ausgeführt werden kann und lokal auf einem (Personal-) Computer installiert ist, auf welchem in vielen Fällen auch die komplette Datenverarbeitung- (Logik) und Speicherung vollzogen wird. Der Sinn und Nutzen dieser Anwendungen ist die Bereitstellung nützlicher Funktionen, die über das Betriebssystem und Systemsoftware, die lediglich für den Betrieb des Rechners notwendig sind, nicht zur Verfügung gestellt werden kann. Solche Anwendungen sind meist in die Betriebssystemumgebung integriert und bieten eine entsprechende Benutzeroberfläche. Diese Art von Software wird in den meisten Fällen auf einem Datenträger gekauft und von diesem Installiert. Eine Netzwerk- oder Onlineverbindung ist dafür nicht notwendig, kann aber davon verwendet werden. Die Struktur der Anwendungen orientiert sich meist am Multi-Tier- Modell (Tier – Englisch für Rang/Schicht), speziell der Drei-Schichten-Architektur.21 In Abbildung 5 bis Abbildung 8 wird der Schichtenaufbau anhand der Drei-Tier-Architektur mit den Schichten Präsentation, Logik (oder Verarbeitung) und Daten schematisch dargestellt. Prinzipiell können diese 3 Schichten erneut in weitere Bereiche (Multi-Tier) unterteilt werden, was besonders für Webanwendungen interessant ist.
Anwendungsarten, die wie Desktopanwendungen in der Betriebssystemumgebung ausgeführt werden und verteilte Inhalte nutzen oder für deren Darstellung und die Kommunikation sorgen, werden in den folgenden Abschnitten kurz beschrieben.
3.5.1 Fat-Client-Anwendungen
Dieses Modell umfasst auf Client-Seite die Schichten Präsentation und Logik (Vergleiche Abbildung 5) , während die Daten vom Client getrennt sind.22 Der ( Datenbank-) Server kann auf demselben System oder auch auf einem anderen Rechner im Internet oder Intranet installiert sein. Der Einsatz sowohl einer lokalen als auch externen Datenhaltung ist möglich, erfordert aber eine Synchronisationslogik. Dieses Modell wird aufgrund seiner Einfachheit von vielen Anwendungsherstellern genutzt.
3.5.2 Rich-Client-Anwendungen
Eine Weiterentwicklung des Fat-Client-Ansatzes hin zu multifunktionalen Programmen sind RichClient-Plattformen, welche ein eigenes Basisprogramm mit vielen (modular verfügbaren) Aufgabenfeldern und Problemlösungen zur Verfügung stellen und von den Benutzern über Erweiterungen oft beliebig erweitert werden können. Hier ist eine umfangreiche Online-Fähigkeit (z. B. ein E-Mail-Client) die Regel. Ein bekanntes Rich-Client Beispiel ist die Eclipse IDE, die auf dem Eclipse Framework aufbaut und über die nahezu alle erdenklichen Anwendungen realisiert werden (können). Ein Rich-Client umfasst wie der Fat-Client die Schichten Präsentation und Logik aus Abbildung 6, kann aber auf weitere Lösungen der Logik- und/oder Datenschicht zugreifen.
Abbildung in dieser Leseprobe nicht enthalten
3.5.3 Thin-Client-Anwendungen
Ein Thin-Client beschreibt sowohl ein verbreitetes Konzept für den Einsatz von leistungsschwachen Endgeräten (Hardware) eines Netzwerkes, deren Aufgabe, mit Hilfe eines kleinen Betriebssystems zur Steuerung, lediglich die Vermittlung der Ein- und Ausgabe für verteilte Software ist als auch für Anwendungen, die dem Zweck der Vermittlung von Ein- und Ausgaben dienen; der Client umfasst demnach lediglich die Präsentationsschicht. Ein bekanntes Beispiel für solch eine Anwendung und in einigen Quellen auch als einzige Anwendung genannt, ist der Webbrowser, der in seiner Grundfunktion lediglich den Zugriff und die Kommunikation auf bzw. mit Webanwendungen bietet.23
Auf Abbildung 7 wird der Aufbau eines ThinClients schematisch dargestellt.
3.5.4 Smart-Client-Anwendungen
Ein Versuch, die Vorteile von Thin- und Rich-Client zu verbinden, ist der sogenannte Smart-Client. Der Smart-Client ist eine (kompilierte) Anwendung, die z. B. über den Browser aufgerufen, heruntergeladen und lokal auf dem Rechner ausgeführt wird.24 Ein Beispiel, das diese Funktionalität bietet, ist Java WebStart, weitere Programme basieren auf dem Microsoft .NET-Framework. Vorteil dieser Anwendungen ist die nahtlose Integration in die Betriebssystemumgebung sowie die automatische Installation und automatische Aktualisierungen. Zudem sind Smart-Clients zumindest in gewissem Umfang offline-fähig, das heißt, dass temporär die Datenverarbeitung und Datenhaltung auf dem Client-Rechner geschehen oder vorbereitet werden kann, obwohl keine Verbindung zu den verteilten Systemen besteht. Ein schematischer Aufbau des SmartClients findet sich auf Abbildung 8.
3.6 Webanwendungen
Webanwendungen basieren, wie der Name schon andeutet, im Gegensatz zu DesktopAnwendungen auf der Nutzung von Webtechnologien. In den meisten Fällen handelt es sich dabei um Webseiten bzw. Services, die über den Webbrowser, i. d. R. dargestellt durch den zur Gestaltung und Verarbeitung von Online-Texten verwendeten HTML-Standard (HyperText Markup Language), im World Wide Web (WWW) genutzt werden. Die Software wird mit Hilfe von Skript- bzw. Programmiersprachen erstellt und läuft als Skript oder Binär-Programm auf einem zentralen Weboder Applikations-Server. Für die Frontend-Darstellung wird oft auf dynamische Skriptsprachen wie JavaScript zurückgegriffen. JavaScript, eine Skript-Sprache für dynamische Seiteninhalte und Gestaltung, die von den meisten Browsern unterstützt wird, stellt dabei die Inhalte dar und ermöglicht zusätzlich die Ausführung diverser Programmlogik auf dem lokalen PC. In Analogie zum Schichtenmodell ( siehe Abbildung 9) können Webanwendungen die Funktionslogik und Datenverarbeitung verwirklichen, die über einen Thin-Client, in diesem Fall der Webbrowser dargestellt und verwendet werden. Da besonders die Programm-Logik unter Umständen von mehreren Instanzen verarbeitet wird, ist an dieser Stelle das Multi-Tier-Modell für die Entwicklung solcher Anwendungen interessant.
Für das Ziel der interoperablen sowie unabhängigen Kommunikation von Websoftware untereinander und als Basis für benötigte Informationen von Webanwendungen oder APIs existieren Standards für Webservices, die in erster Linie aus dem Technologieset SOAP, WSDL (WebService Definition Language) und UDDI (Universal Description, Discovery and Integration) bestehen. Alle drei sind XML-basierte Sprachen bzw. Protokolle. UDDI beschreibt einen Verzeichnisdienst für Webservices und WSDL dient als Metasprache zur Beschreibung davon, während SOAP ein Protokoll für die Kommunikation von Webdiensten ist und durch den Aufbau als Nachricht einige Ähnlichkeiten zu RPC aufweist.25 XML (eXtensible Markup Language) ist eine standardisierte Auszeichnungssprache, die strukturierte Daten in hierarchischer Form, was mit Hilfe sogenannter Tags erreicht wird, enthält; einige darauf basierende Formate sind XHTML und SVG (Scalable Vector Graphics). Mehr Informationen zum Thema Webservices und verwendete Technologien finden sich bei [ACKM04]. Aufgrund verschiedener Probleme, die zum einen mit der Komplexität der Serviceerstellung und zum anderen mit der Vielzahl von Standardimplementierungen zu tun haben, ist die Akzeptanz dieser Standards noch nicht so hoch, auch wenn bereits eine Vielzahl von nicht selten missglückten Implementierungsversuchen existiert.26 Deshalb werden gerade im Bereich der API-Erstellung häufig eigene oder einfachere Konzepte wie REST (REpresentational State Transfer) oder JSON (JavaScript Object Notation) oder andere objektbasierte Methoden verwendet. REST arbeitet mit URIs (Uniform Resource Identifier) bzw. URLs (Uniform Resource Locator), die zur eindeutigen Identifizierung einer Ressource (im Internet) verwendet und gemeinhin auch als Link bezeichnet werden. Über die HTTP-Methoden (HyperText Transfer Protocol) GET, POST, PUT und DELETE können relativ einfach Ressourcen abgefragt, verändert, hinzugefügt oder gelöscht werden. Über weitere Verlinkungen können so auch beliebig tiefe Hierarchien aufgelöst und genutzt werden.
Als in vielen Fällen kompaktere Alternative zu XML bietet sich JSON an. Es basiert, wie der Name andeutet, auf JavaScript, lässt sich aber in nahezu jede Programmiersprache integrieren. Verarbeitet werden können innerhalb einer simplen Auflistung Objekte, Arrays, Zeichenketten, boolesche Werte und Zahlen.27
Gemeinsam ist den beschriebenen Technologien, dass sie ohne eine Netzwerk- bzw. Internetverbindung sowie Browser nicht oder nur eingeschränkt nutzbar sind. Dieses Problem kann aber beispielsweise mit Hilfsmitteln wie Google Gears (vgl. Kapitel 4.2.2 Client-Systeme) zumindest teilweise umgangen werden.
In den folgenden Abschnitten werden zwei spezielle Arten von Webanwendungen beschrieben.
3.6.1 Webbasierte Desktopanwendungen
Als webbasierte Desktopanwendungen werden in dieser Arbeit Anwendungen verstanden, die zur Integration von Webanwendungen in die Betriebssystemumgebung entstanden sind. Es handelt sich dabei in der Regel um ein kleines Programm oder Tool, das für eine bestimmte Betriebssystemumgebung programmiert wurde, aber auf Inhalte und Schnittstellen von Webanwendungen zugreift und für eine Interaktion zwischen Benutzerumgebung und Webanwendungen sorgt. Dies können z. B. Applets, Widgets, Gadgets oder Screenlets sein. Ähnlich wie beim Smart-Client-Ansatz (siehe 3.5.4) sollen hier Programme oder Funktionen von Webanwendungen auf den Desktop gebracht bzw. in die Desktopumgebung integriert werden.
Derlei „Helferlein“ werden in ähnlicher Form auch auf Webseiten, etwa für die Anzeige fremder Inhalte, eingesetzt (Bsp: iGoogle).
3.6.2 Rich Internet Applications
Bei Rich Internet Applications (RIA) handelt es sich um komplexere Client-Anwendungen, die dynamische Interaktionen des Benutzers mit der Webanwendung erlauben. Der Zugriff erfolgt meist aus dem Browser heraus und das Programm muss nicht installiert werden, setzt allerdings eine zusätzliche Software für die Ausführung voraus. Beispiele für RIAs sind Anwendungen, die mit Hilfe von Frameworks wie Adobe Flash, JavaFX, Microsoft Silverlight oder dem TechnologieKonstrukt AJAX (Asynchronous JavaScript and XML) umgesetzt wurden. Wie der Name schon sagt, wird mit AJAX JavaScript mit XML kombiniert, um eine asynchrone Kommunikation mit dem Webserver zu erreichen. Per JavaScript kann eine Anwendung über eine XML-formatierte Anfrage an den Webserver dynamisch Inhalte nachladen, ohne dass dabei die gesamte Webseite neu geladen werden muss. Ziel solcher Anwendungen ist es, dem Benutzer eine einfache und nach Möglichkeit intuitive Bedienung, ähnlich wie bei Desktopanwendungen, zu ermöglichen oder Inhalte grafisch aufbereitet zu präsentieren. Die Bedeutung dieser Art Software ist demnach für die Entwicklung heutiger und zukünftiger webbasierter Anwendungen von großer Bedeutung.
3.7 Geschäftsmodelle und Konzepte für webbasierte Services
Die Verbindung bzw. Kombination der oben beschriebenen Technologien macht unterschiedliche Geschäftsmodelle und Konzepte möglich, von denen die meisten in bestimmte Kategorien eingeteilt werden können. An dieser Stelle sollen die wichtigsten und derzeit gängigsten Konzepte und Modelle, die für webbasierte Dienste in Frage kommen, beschrieben werden. Im einzelnen sind dies das Prinzip einer Service-orientierten Architektur sowie das Geschäftsmodell des „Software on Demand“ und damit verbundene Konzepte wie „Software as a Service“. Abschließend wird das Konzept des „Cloud Computings“ und das damit zusammenhängende Geschäftsmodell des „Utility Computings“ beschrieben. Die Verwendung dieser Beispiele oder die Entwicklung neuer Geschäftsmodelle mit Hilfe der beschriebenen Technologien kann Unternehmen essentielle Wettbewerbsvorteile gegenüber Mitbewerbern bringen.
3.7.1 Service Oriented Architecture
Bei Service orientierten Architekturen (SOA) handelt es sich um ein Architektur- und Managementkonzept, das in seiner Komplexität von vielen (potentiellen) Anwendern unterschätzt wurde und wird.28 Ziel einer SOA ist es, die meist heterogene Software-Landschaft eines Unternehmens miteinander zu vernetzten und eine bessere Prozessabbildung zu erreichen. Die unterschiedlichen Anwendungen und Lösungen sollen als höherwertige, eigenständige Dienste gekapselt (orchestriert) werden und über Middleware-Lösungen und eine zentrale Schnittstelle, den „Enterprise Service Bus“ (ESB), miteinander verbunden werden. In einem Service-Repository (Verzeichnis) werden die angemeldeten, verfügbaren Dienste gespeichert. Durch Interoperabilität, Austauschbarkeit und Wiederverwendung der Dienste sollen über eine SOA IT-Kosten reduziert werden. Ein potentieller Service-Nutzer (meist eine Anwendung) muss lediglich die Service-Schnittstelle kennen, um einen Dienst verwenden zu können. Für die Umsetzung einer solchen Service orientierten Architektur ist je nach Komplexität eine große Anzahl an Programmanpassungen notwendig. Außerdem orientiert sich eine Dienst-orientierte Architektur an der Umsetzung von Geschäftsprozessen, so dass im Idealfall jeder Service eine Prozessphase abbildet. Dadurch fällt es (bei richtiger Planung und Umsetzung) wesentlich leichter, die ständigen Optimierungen und Qualitätsmanagement unterzogenen und damit Veränderungen ausgesetzten Prozesse in die IT-Infrastruktur zu integrieren. Hier kommen auch, jedoch nicht zwangsweise, die oben genannten Webservices ins Spiel, die für die Dienstumsetzung genutzt werden können. Anzumerken ist deshalb noch, dass es sich dabei nicht um ein Konzept für webbasierte Dienste handelt, sondern solche lediglich als Teil einer SOA genutzt werden können. So kann auch das weiter vorne genannte CORBA für eine SOA-Implementation verwendet werden.
3.7.2 Software on Demand: ASP und SaaS
Das Geschäftsmodell der Software on Demand beschreibt im wesentlichen die dynamische Verwendung von unterschiedlicher Software, die von einem externen Dienstleister zur Nutzung angeboten wird. Vorteil ist hier, dass die Software und dafür notwendige Hardware (bis auf die Arbeitsplatzrechner) nicht im eigenen Unternehmen vorgehalten und gepflegt werden muss. Daher ist die Verwendung von Software on Demand gerade für kleinere mittelständische Unternehmen interessant. Application Service Providing (ASP) und Software as a Service (SaaS) beschreiben nah verwandte Konzepte der Software-Distribution über das Internet bzw. das Web. Sowohl über ASP als auch SaaS werden Software oder Webdienste (in der Regel auf Mietbasis) von einem Dienstleister für potentielle Nutzer zur Verfügung gestellt.
[...]
1 [Tane06, S. 34]
2 [Tane06, S. 26-31]
3 [ Tane06, S. 38-42]
4 [ Come02, S. 292-296]
5 [CDK02, S. 204 f.]
6 [ Weis93] zitiert nach [Tane06, S. 43]
7 [ TaSt08, S. 19]
8 [ CDK02, S. 17]
9 [Bell09]
10 [Hamm05, S. 18]
11 Vgl. [TaSt08, S. 150 ff.]
12 [ Come02, S. 551]
13 [Tane03, S. 13-18]
14 [Tane03, S. 71-78]
15 [ Tane03, S. 28]
16 [ Tane03, S. 59-71]
17 Bereits in den 70ern spielte das Thema eine Rolle. IBM machte durch Virtualisierung den Betrieb unterschiedlicher Betriebssysteme und damit auch alter Software auf ihren IBM 370-Mainframes möglich. Weitere Informationen auch bei [SmNa2005].
18 [ Wind 08]
19 [ Come02, S. 42]
20 [ Tane03, S. 77]
21 [ Schn09, S. 131 f. ]
22 [ Schn09, S. 132]
23 [Hill05]
24 [Hill05]
25 [ TaSt08, S. 608 f. ]
26 [Möll09, S. 113-115]
27 [ JSON 09]
28 [Herr08a]
-
-
-
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X. -
-
Téléchargez vos propres textes! Gagnez de l'argent et un iPhone X.