Denken Sie zurück an die Tage, als Sie die Liebe Ihres Lebens getroffen haben. Das Gefühl war gegenseitig. Die Welt schien ein besserer Ort zu sein, und Sie waren auf einer aufregenden Reise mit Ihrem Partner. Sie waren beide „voll dabei“, während Sie Pläne für ein gemeinsames Leben schmiedeten.
Das Leben war fantastisch… bis es das nicht mehr war.
Wenn die Dinge nicht wie geplant laufen, müssen Sie die harte Arbeit leisten, die Beziehung zu entwirren. Mit einander und mit anderen kommunizieren. Gemeinsame Käufe klären. Weitermachen. Ugh.
Ob Sie es glauben oder nicht, unsere Beziehung zur Technologie ist nicht viel anders.
Die Trennung von einem Dienst
Es gab eine Zeit, in der Sie beschlossen haben, einen Dienst zu nutzen – vielleicht war es ein SaaS, ein PaaS oder etwas Allgemeineres. Damals haben Sie die Entscheidung getroffen, ohne auch nur an die Zeit zu denken, in der Sie den Dienst nicht mehr nutzen würden? Wahrscheinlich nicht. Sie dachten nur an all die wunderbaren Möglichkeiten für die Zukunft.
Aber was passiert, wenn die Nutzung dieses Dienstes nicht mehr in Ihrem besten Interesse ist? Jetzt stehen Sie vor einer Herausforderung, und sie heißt Dienstabwicklung. Während Dienste mit einem vertretbaren Aufwand abgeschaltet werden können, kann es problematisch sein, an die zugrunde liegenden Daten zu gelangen. Das hängt oft von der Art des Dienstes und dem Datenvolumen ab, das von diesem Dienstanbieter gehalten wird.
Manchmal sieht die ideale Abwicklung so aus: Hören Sie auf, für den Dienst zu zahlen, behalten Sie aber für eine gewisse Zeit den Zugang zur Datenquelle. Ist das überhaupt möglich? Ja, das ist es!
Die Macht des VPC-Peerings
Die führenden Cloud-Anbieter haben das virtuelle private Cloud (VPC) Netzwerk als de facto Ansatz zur Herstellung von Konnektivität zwischen Ressourcen angenommen. Zum Beispiel kann eine EC2-Instanz auf AWS auf eine Datenquelle zugreifen, indem sie VPCs und VPC-Endpunktdienste verwendet. Man kann es sich wie eine Punkt-zu-Punkt-Verbindung vorstellen.
VPCs ermöglichen es uns, den Zugriff auf andere Ressourcen desselben Cloud-Anbieters zu gewähren, aber wir können sie auch verwenden, um den Zugriff auf externe Dienste zu gewähren. Betrachten Sie einen Dienst, der kürzlich aufgegeben wurde, aber mit der ursprünglichen Datenquelle an Ort und Stelle geblieben ist. So könnte es aussehen:
Dieses Konzept wird als VPC-Peering bezeichnet und ermöglicht es, eine private Verbindung von einem anderen Netzwerk herzustellen.
Ein Beispiel für die Migration von Diensten
Betrachten wir ein konkreteres Beispiel. In Ihrer Organisation wurde die geschäftliche Entscheidung getroffen, die Art und Weise, wie sie in der Cloud arbeitet, zu optimieren. Während sie weiterhin einige AWS-Dienste nutzt, wollte Ihre Organisation optimieren, wie sie ihre Anwendungen erstellt, bereitstellt und verwaltet, indem sie einen Drittanbieter, cloudbasierten Dienst, der auf AWS läuft, beendet. Sie haben die Zahlen durchgerechnet und sind zu dem Schluss gekommen, dass interne Softwareingenieure einen neuen automatisch skalierbaren Dienst auf Heroku für einen Bruchteil der Kosten aufbauen und unterstützen könnten, die sie zuvor an den Drittanbieter gezahlt hatten.
Allerdings ist aufgrund einer langen Vertragslaufzeit mit dem Dienstleister eine Migration der Datenquelle vorerst keine Option. Sie möchten den Dienst nicht nutzen und können die Daten nicht verschieben, aber Sie möchten dennoch Zugriff auf die Daten haben. Glücklicherweise hat der Anbieter zugestimmt, einen neuen Vertrag abzuschließen, um die Daten weiterhin zu hosten und Zugriff zu gewähren — über VPC-Peering.
So würde die neue Vereinbarung aussehen:
VPC-Peering mit Heroku
Um Ihrem neuen Dienst (einer Heroku-App) den Zugriff auf die originale Datenquelle in AWS zu ermöglichen, müssen Sie Ihre App zunächst innerhalb eines privaten Spaces ausführen. Weitere Informationen finden Sie in meinem Artikel über sichere Cloud-Adoption und meine Entdeckung von Heroku Private Spaces.
Anschließend müssen Sie die folgenden einfachen Netzwerkanforderungen erfüllen:
- Die VPC muss einen kompatiblen IPv4-CIDR-Block in ihrer Netzwerkkonfiguration verwenden.
- Die VPC muss einen RFC1918-CIDR-Block verwenden (
10.0.0.0/8
,172.16.0.0/12
oder192.168.0.0/16
). - Der CIDR-Block der VPC darf nicht mit den CIDR-Bereichen Ihres privaten Spaces überlappen. Die Standardbereiche sind
10.0.0.0
/16
,10.1.0.0/16
und172.17.0.0/16
.
Mit Ihrem privaten Space betriebsbereit müssen Sie die Peering-Informationen abrufen:
$ heroku spaces:peering:info our-new-app
=== our-new-app Peering Info
AWS Account ID: 647xxxxxx317
AWS Region: us-east-1
AWS VPC ID: vpc-e285ab73
AWS VPC CIDR: 10.0.0.0/16
Space CIDRs: 10.0.128.0/20, 10.0.144.0/20, 10.0.0.0/20, 10.0.16.0/20
Unavailable CIDRs: 10.1.0.0/16
Notieren Sie sich die AWS-Konto-ID (647xxxxxx317) und die AWS-VPC-ID (vpc-e285ab73). Sie müssen diese Informationen dem Drittanbieter zur Verfügung stellen, der die AWS-Datenquelle kontrolliert. Von dort aus können sie entweder die AWS-Konsole oder die CLI verwenden, um eine Peering-Verbindung zu erstellen. Ihr Vorgang würde ungefähr so aussehen:
$ aws ec2 create-vpc-peering-connection \
--vpc-id vpc-e527bb17 \
--peer-vpc-id vpc-e285ab73 \
--peer-owner-id 647xxxxxx317
{
"VpcPeeringConnection": {
"Status": {
"Message": "Initiating Request to 647xxxxxx317",
"Code": "initiating-request"
},
"Tags": [],
"RequesterVpcInfo": {
"OwnerId": "714xxxxxx214",
"VpcId": "vpc-e527bb17",
"CidrBlock": "10.100.0.0/16"
},
"VpcPeeringConnectionId": "pcx-123abc456",
"ExpirationTime": "2025-04-23T22:05:27.000Z",
"AccepterVpcInfo": {
"OwnerId": "647xxxxxx317",
"VpcId": "vpc-e285ab73"
}
}
}
Dies erstellt eine Anfrage zum Peeren. Sobald der Anbieter dies getan hat, können Sie die ausstehende Anfrage auf der Heroku-Seite einsehen:
$ heroku spaces:peerings our-new-app
Im Screenshot unten sehen wir den Status der ausstehenden Annahme für die Peering-Verbindung.
Von hier aus können Sie die Anfrage zur Peering-Verbindung annehmen:
$ heroku spaces:peerings:accept pcx-123abc456 --space our-new-app
Accepting and configuring peering connection pcx-123abc456
Wir überprüfen den Anfrage-Status ein zweites Mal:
$ heroku spaces:peerings our-new-app
Wir sehen, dass die Peer-Verbindung aktiv ist.
An diesem Punkt kann die Anwendung, die in unserem Heroku Private Space läuft, auf die AWS-Datenquelle ohne Probleme zugreifen.
Fazit
Eine bedauerliche Wahrheit im Leben ist, dass Beziehungen ebenso oft erfolglos sein können, wie sie lange dauern können. Dies gilt für Menschen und es gilt für Technologie.
Wenn es um technologische Entscheidungen geht, treiben uns manchmal sich ändernde Situationen und Bedürfnisse dazu, in unterschiedliche Richtungen zu gehen. Manchmal funktionieren die Dinge einfach nicht. Und in diesen Situationen besteht die größte Herausforderung oft darin, eine bestehende Implementierung aufzulösen — ohne den Zugang zu persistente Daten zu verlieren.
Glücklicherweise bietet Heroku eine Lösung, um schrittweise von bestehenden Cloud-basierten Lösungen migrieren zu können, während der Zugriff auf extern gehostete Daten erhalten bleibt. Die einfache Integration für VPC-Peering mit AWS ermöglicht Ihnen den Zugriff auf Ressourcen, die weiterhin in der Legacy-Implementierung leben müssen, auch wenn der Rest von Ihnen bereits weitergezogen ist.
Dieser Ansatz ermöglicht es Ihrem neuen Dienst, ohne Unterbrechung des Service für den Verbraucher zu gedeihen.
Source:
https://dzone.com/articles/when-tech-service-relationships-dont-work-out