Übertragen Sie den Webdienst mit AWS auf Yandex.Cloud

Hallo allerseits! Mein Name ist Vitaly Davydov, ich bin der Gründer von Poteha Labs.

Ende letzten Jahres hat Yandex ein neues Produkt für Entwickler auf den Markt gebracht - Yandex. Cloud , das Rechenleistung und damit verbundene Dienste für die Datenverarbeitung und -speicherung bereitstellt. In diesem Artikel werde ich darüber sprechen, wie wir die Übertragung eines unserer Projekte in die Cloud, seine Funktionen und Tarife bewertet haben.

Übersicht über Yandex.Clouds

Es gibt zwei Möglichkeiten, Ihren Webdienst oder Ihre mobile Anwendung bereitzustellen. Betrachten Sie ein Datenbankbeispiel (als einen der Teile eines Webdienstes):

  • Selbst verwaltet - mieten Sie ein Auto und setzen Sie Ihr PostgreSQL darauf ein. Sein Postgres hat seine Vor- und Nachteile: Wenn die Lasten klein sind, reicht eine solche Lösung aus. Je größer das Volumen, desto mehr Wartung ist erforderlich, und irgendwann benötigen Sie einen separaten DevOps-Techniker.
  • Vollständig verwaltet - Wählen Sie einen Cloud-Anbieter und verwenden Sie PostgreSQL als Service. In diesem Fall übernimmt der Cloud-Anbieter die Unterstützung der gesamten Infrastruktur und garantiert, dass alles in Übereinstimmung mit dem SLA funktioniert (Vereinbarung über den Grad der Servicebereitstellung, die die maximale Nichtverfügbarkeitszeit, die maximale Gesamtverfügbarkeitszeit für einen bestimmten Zeitraum begrenzt ). Keine Probleme mit der Infrastrukturunterstützung.

Diejenigen, die sich für die Cloud-Option entscheiden, kennen die drei wichtigsten Dienstanbieter: Microsoft Azure , Amazon Web Services (AWS) und Google Cloud . Sie bieten eine unbegrenzte Anzahl virtueller Maschinen und Dutzende praktischer Dienste. Aus drei Optionen können Sie die für den Preis geeignete Lösung auswählen. Wir arbeiten normalerweise mit AWS, die in letzter Zeit einige Unannehmlichkeiten haben, wenn sie in Russland verwendet werden.

Das erste Merkmal von AWS in Russland betrifft aktive ILV-Sperren, unter denen 2018 viele Dienste von Startups bis zu Bankensystemen ( Viber, Skyeng und andere ) litten .

Darüber hinaus berechnete Amazon ab Anfang 2019 von russischen Unternehmen Mehrwertsteuer (20% des Preises) für die Nutzung seiner Cloud-Lösungen. Dies ist nicht spezifisch für Amazon: Die Mehrwertsteuer wird bereits von Microsoft, Google und anderen ausländischen Internetunternehmen erhoben. In jedem Fall ist dies jedoch ein unangenehmer Preisanstieg für Unternehmen für die üblichen Dienstleistungen.

Neben bekannten internationalen Unternehmen gibt es auch den russischen Markt für Cloud-Systeme: die Mail.Ru Cloud Solutions- Plattform, Selectel und einige kleinere Unternehmen. Während viele nur die Vermietung von Eisen anbieten, ist dies nicht gleichbedeutend mit Cloud Computing. Eine vollständige Cloud bietet nicht nur Mietwagen, sondern auch eine Reihe von Begleitdiensten zur Vereinfachung der Infrastruktur (z. B. verwaltete Datenbanken).

Russischer Markt


In Russland gibt es nur wenige vollwertige Cloud-Lösungen (nämlich zwei): MCS von mail.ru und die kürzlich eingeführte Yandex . Cloud .

Yandex befasst sich mit der Frage der Erbringung von Dienstleistungen, um das Ökosystem der Dienstleistungen zu leasen. Eine sofort einsatzbereite Cloud bietet nicht so viele Dienste wie in AWS: Computer, Datenspeicher, Datenbanken, Load Balancer (Alpha), Container Orchestration (Alpha) und das Hinzufügen einer serverlosen Plattform. Mit den vorgeschlagenen Diensten können Sie eine große Anzahl von Geschäftslösungen schneller als in Ihrer eigenen Infrastruktur entwerfen und skalieren, und auch die Anzahl der Dienste wächst ständig. Die Cloud verfügt über drei Rechenzentren, sodass Sie geografisch verteilte Systeme erstellen können.

Ende 2018 startete die Cloud öffentlich und eröffnete zunächst eine Partnerschaftsprogrammverbindung (in der wir einer der ersten Partner wurden). Ab dem 7. Dezember 2018 stand sie allen zur Verfügung. Wenn Sie jetzt eine Verbindung herstellen, gewährt Cloud Benutzern einen Bekanntschaftszuschuss - 4000 Rubel für 2 Monate . Dank des frühen Zugriffs haben wir uns die Möglichkeiten und Tarife angesehen und Berechnungen durchgeführt, um einen unserer Services von AWS in die Cloud zu übertragen.

Architektur


Jetzt arbeitet unser Webservice in der Produktion mit AWS und besteht aus zwei Komponenten: Vorder- und Rückseite. Daher werden wir überlegen, Komponente für Komponente in die Cloud zu übertragen. Wir migrieren die Anwendung mit dem folgenden Technologie-Stack:

- Frontend . In React geschrieben, erfolgt das Rendern auf dem Client. Statische Dateien (HTML, Skripte und Stile) werden im Simple Storage Service (S3) gespeichert. AWS-Frontend-Architektur

- Backend . Eine Django-Anwendung, die in Docker-Containern auf virtuellen EC2-Maschinen (Elastic Compute Cloud) ausgeführt wird. Die Maschinen werden vom Elastic Container Service (ECS, ein kostenloser Container-Orchestrator) verwaltet. Für Datenbanken verwenden wir PostgreSQL im Relational Database Service (RDS). Für den Lastausgleich - Elastic Load Balancer (ELB). AWS-Backend-Architektur
Wir stellen die Anwendung über GitLab CI bereit und verwenden AWS CLI, um den Dienst auf ECS und die Statik auf S3 zu aktualisieren.

Wie die Servicearchitektur auf Yandex.Cloud aussehen wird:

- Frontend . Anstelle von S3 wird Yandex Object Storage verwendet, über das Sie auch Site-Statiken verteilen können. Frontend-Architektur auf Yandex.Cloud

- Backend . Anstelle von EC2 wird die ähnlich strukturierte Yandex Compute Cloud verwendet: Es gibt auch einen Blockspeicher, der getrennt von den Maschinen vorhanden ist. Cloud verfügt derzeit nicht über ein gebrauchsfertiges ECS-Analogon (in der Alpha-Version gibt es jedoch Yandex-Instanzgruppen, auf deren Grundlage sie versprechen, einen verwalteten Containerservice zu präsentieren). Daher müssen Sie vorerst anstelle von ECS Kubernetes oder Rancher verwenden, die Sie selbst bereitstellen müssen. Der Yandex Load Balancer in der Cloud ist ebenfalls in Alpha, sodass Sie vorerst Nginx, das auf einem separaten Computer angehoben wurde, als Balancer verwenden können. Für PostgreSQL verfügt Cloud über den Yandex Managed Service für PostgreSQL. Backend-Architektur auf Yandex.Cloud

Kostenvoranschlag


Nach dem Studium der möglichen Architektur haben wir eine geschätzte Berechnung der Kosten des Dienstes in der Cloud vorgenommen ( offizielle Preise hier ). In der folgenden Tabelle sind die ungefähren Kosten für jedes Element für unseren Service angegeben (Preise ohne Mehrwertsteuer).

WasWie viel, reibe. ($) / Monat
AwsYandex Cloud
Load Balancer
(1 Stk., 1 GB RAM, 1 vCPU 100%, 10 GB SSD)
1.300 (20)630 (10)
Anwendungsinstanzen
(2 Stk., 4 GB RAM, 1 vCPU 100%, 20 GB SSD)
7.400 (115)2,350 (36)
Instanz für Container ORE
(Rancher)
- -630 (10)
Datenbanken
(2 Stück, 4 GB RAM, 1 vCPU 100%, 100 GB SSD)
12.800 (198)630 (10)
Objektspeicherung
(10 GB, 1.000.000 PUT, 10.000.000 GET)
585 (9)470 (7)
Öffentliche IP
(2 Stk. AWS, 4 Stk. Yandex. Cloud)
470 (7)380 (6)
Ausgehender Verkehr
(500 GB)
2 925 (45)635 (10)
Insgesamt25 480 reiben. (392 USD)9 695 reiben. ($ 149)

Für unsere Parameter war die Cloud 2,6-mal billiger als AWS. Die Finanzierung des Übergangs zur Cloud für den Service ist definitiv rentabel (detaillierte Berechnungen für die Cloud, für AWS können Sie den Online-Rechner verwenden ).

Funktionen von Yandex.Cloud Services


  • Yandex Compute Cloud unterscheidet sich von EC2 darin, dass Sie auf EC2 die Leistung einer Maschine nur gleichzeitig durch RAM und CPU erhöhen können. In der Cloud sind sie unabhängig (für jede vCPU können Sie zwischen 1 und 8 GB RAM wählen), was mehr Flexibilität bietet.
  • Yandex Object Storage ist mit der S3-API kompatibel. Von den Minuspunkten können Sie zwar das https-Zertifikat in Ihrer Domain nicht konfigurieren. Das Problem wird mithilfe des Cloudflare-Zertifikats gelöst. Anschließend wird der Datenverkehr vom Benutzer zur externen API-Schicht geschützt. Dies ist eine schnelle und einfache Option. Sie können auch das serverseitige Rendering konfigurieren, sodass wir darauf warten, dass die Cloud diese Funktion hinzufügt.
  • Die Cloud verfügt noch nicht über einen Dienst für die asynchrone zentralisierte Protokollsammlung (ein Analogon zu AWS CloudWatch). Um Protokolle zu sammeln und zu analysieren, müssen Sie daher Lösungen von Drittanbietern verbinden.
  • Ressourcenzugriffskontrolle: In AWS erfolgt dies über Rollen, die im IAM-Dienst (Identity and Access Management) erstellt und automatisch allen Instanzen im ECS-Cluster zugewiesen werden. Die Cloud verfügt auch über ein eigenes IAM , die granularen Rechte wie in AWS sind jedoch noch nicht verfügbar.
  • Zwar gibt es keine GPU-Maschinen zum Rechnen.

Fazit


Abschließend heben wir die Gründe hervor, warum Sie Yandex Cloud ausprobieren sollten:

  • Potenziell große Anzahl von Infrastrukturdiensten;
  • Für einige Dienste ist eine AWS-kompatible API verfügbar, die den Übergang erheblich vereinfacht.
  • Die Tarife sind niedriger als die ihrer westlichen Kollegen, es besteht kein Zusammenhang mit dem Dollar-Wechselkurs.
  • Schutz vor plötzlichen Verriegelungen;
  • Ein Rechenzentrum in Russland, dank dessen das Gesetz zum Schutz personenbezogener Daten von Nutzern immer umgesetzt wird.

Für 2019 hat Cloud große Pläne, die angekündigten Dienste freizugeben und neue hinzuzufügen. Wir glauben, dass es mit solch einer Reihe von Funktionen und Tarifen ein starker Konkurrent von Amazon auf dem russischen Markt werden kann.

Vielen Dank für Ihre Aufmerksamkeit, ich werde Fragen in den Kommentaren beantworten.

Vielen Dank an Frau ( pruzhinkina ) und Kirill ( kpotehin ) für ihre Hilfe bei der Vorbereitung der Überprüfung .

Source: https://habr.com/ru/post/de440054/


All Articles