Architektonische Strategien zur Minimierung des Cloud-Lock-in-Risikos?

9

Ich würde gern verstehen, wie Sie das Risiko einer Herstellerabhängigkeit für Cloud-basierte Systeme am besten mindern können.

Ich möchte beispielsweise eine Vielzahl verschiedener Systeme beispielsweise für Amazon EC2 oder Windows Azure bereitstellen, aber ich möchte die Kosten für die Migration dieser Systeme auf einen alternativen Cloud-Anbieter bei Bedarf minimieren.

Zumindest scheint es, je mehr ich mich auf herstellerspezifische Lösungen (wie Amazon Queue Service) verlassen kann, desto mehr bin ich von Natur aus eingeschlossen (zumindest denke ich das), aber ich würde es gerne verstehen dieses Risiko besser und alles darüber hinaus.

Gibt es architektonische Strategien, die ich verwenden kann, um dies zu mildern (z. B. verlassen Sie sich auf Kartenreduzierung, da meine Skripte auf eine andere Karte portierbar sind, reduzieren Sie die Cloud-Umgebung)? Gibt es O / S oder Stacks, die besser sind als andere (Linux, LAMP?). Ist JClouds hilfreich?

Idealerweise würde ich gerne virtuelle Systeme entwerfen, die beispielsweise auf EC2 bereitgestellt werden können, dann aber problemlos zu Azure oder App Engine migriert werden können (oder umgekehrt).

Ich schreibe generell in Java, erwäge aber die selektive Verwendung von Scala und Python (oder Jython) und versuche generell, JVM-basiert zu bleiben. Ich tendiere dazu, viel parallel zu arbeiten, und setze sowohl SQL- als auch Nicht-SQL- (aber nicht notwendige NoSQL) Speicher- und Datenmanipulationstechnologien ein.

Vielen Dank im Voraus. Hoffe, ich bin hier nicht zu unrealistisch.

    
kvista 08.01.2011, 06:20
quelle

4 Antworten

5

Meiner Meinung nach ist das einzige architektonische Muster für das von Ihnen beschriebene Problem: Abstraktion

Achten Sie darauf, bei der Verwendung von Ressourcen zu bleiben, die über verschiedene Anbieter hinweg angeboten werden, z. B. Speicher, Warteschlange usw. Erstellen Sie Abstraktionsschichten für jede von ihnen.

Hoffe, das hilft. Ich denke nicht, dass es eine sehr einfache Aufgabe zu tun ist, angesichts der Variabilität der Dienste über Cloud-Anbieter

    
Igorek 08.01.2011, 07:08
quelle
1

Ich stimme IgoreK zu - wenn Sie das im Code machen, wird es eine Menge Abstraktion brauchen, das ist es.

Eine weitere Option ist die Verwendung eines IaaS-Cloud-Ansatzes - Entwerfen Sie Ihre Anwendung nur basierend auf den Rollen der virtuellen Maschine. Die meisten Cloud-Anbieter bieten eine Form der virtuellen Maschinenrolle an - Amazon, Azure, Rackspace usw. Migration bedeutet dann weit weniger Code-Änderungen, aber ein bisschen mehr Admin auf Ihrer Seite.

    
Doobi 09.01.2011 00:12
quelle
0

Das Kundenberatungsteam von Microsoft verfügt über ausgezeichnete Probe, wie man das macht (ich glaube, ich habe das Projekt von hier heruntergeladen). Es gibt eine Menge Code darin und einige wirklich gute Abstraktionen, um Dinge "frei" zu machen. Natürlich, wie bei jeder Abstraktion, führen Sie auch eine neue Ebene der Komplexität ein, also stellen Sie sicher, dass Sie wirklich alles haben, bevor Sie es anwenden.

In den meisten Fällen ist weniger mehr. Und obwohl ein Lock-in nicht etwas ist, das Sie wollen, ist es wahrscheinlich nicht so schwer zu "reparieren", wenn es nötig ist. Aber fragen Sie sich, ob es wichtig ist, dass Sie jetzt zufrieden sind, oder sollten Sie das Projekt beenden und später umgestalten.

    
Anže Vodovnik 03.07.2011 18:11
quelle
-2

Ehrlich gesagt basiert Ihre Frage auf einer falschen Prämisse. Sie versuchen, Lock-In zu vermeiden, anstatt zu versuchen, die von Ihnen gewählte Plattform voll auszunutzen.

Der beste Weg, das Problem anzugehen, besteht nicht darin, zu versuchen, dass Ihre Infrastruktur Hot-Swap-fähig ist (z. B. Vermeidung von Vendor-Lock-In), sondern um tatsächlich eine Entscheidung über den IaaS-Anbieter zu treffen Ich möchte es so gut wie möglich nutzen und nutzen.

    
Skyler Johnson 09.01.2011 20:44
quelle