Hallo Habr.
Wir brechen die Stille für eine lange Zeit und kündigen die Veröffentlichung der zweiten Version von Scorocode an.
Dies ist nicht einmal die Evolution, sondern die Geburt eines neuen Dienstes.
Arbeitsjahr, Docker, Kubernetes, Yandex.Cloud usw.
Ich warne vor der Frage „Warum gibt es hier einen Go-Hub?“ - alle Scorocode-Dienste sind in Golang geschrieben . Dies ist die Sprache, die wir im Technologie-Stack verwenden.
Ich frage nach Details unter Katze.
Historischer Hintergrund
Scorocode v1 wurde im Sommer 2016 gestartet und sammelte in 3 Monaten etwa 20.000 Registrierungen. 2,5 Jahre lang war es ein kostenloses Tool für unser öffentliches Publikum. Es wurde verwendet, um private Clouds bereitzustellen, auf denen in dieser Zeit 8 Systeme unterschiedlicher Ebenen entwickelt wurden: aus dem Dienst Taxi zum Produktionsmanagementsystem.
In der ersten Version gab es selbstgeschriebene Dienste für die Arbeit mit NoSQL MongoDB DBMS, einem eigenen Parser für Datenbankabfragen, Dienste, die die Ausführung von JavaScript-Code auf dem Server ermöglichten, und all dies war ein einziges Ganzes in der Cloud.
Die Hauptnachteile der v1-Plattform:
- Alle Ressourcen wurden zwischen den Anwendungen durchsucht, und es war unmöglich, eine garantierte Ressource zu erhalten, was in unserer Zeit bereits zumindest seltsam aussieht.
- Es gab keinen Mechanismus zum Starten eines vollwertigen WEB-Knotenservers, nur ein einmaliger Start von Skripten mit begrenzter Ausführungszeit war möglich.
- Wie sich herausstellte, wird MongoDB für die meisten unserer NoSQL-Clients nicht benötigt. Stattdessen fragten alle nach relationalem MySQL / PostgreSQL.
- Die Kosten für den anfänglich bezahlten Tarif waren hoch, etwa 3.000 Rubel / Monat, und es gab kein Verständnis dafür, wofür der Benutzer bezahlte.
Ende letzten Jahres beschloss unser Team, nachdem es alle Erfolge und Misserfolge verstanden hatte, sich an der Entwicklung einer neuen Version zu beteiligen und die Architektur grundlegend neu zu gestalten.
Was ist neu in v2?
Die Logik hat sich nicht geändert. Es gibt ein Konto, in dem der Benutzerkontoinhaber Anwendungen erstellen kann. Die Struktur der Anwendung hat sich jedoch geändert. Es ist jetzt unabhängig und wird auf dedizierten Ressourcen gehostet (in einer öffentlichen Cloud - auf einem dedizierten virtuellen Server).
Wenn wir die geleistete Arbeit bewerten, verstehen wir, dass wir den langen Weg gegangen sind. Für den Anfang haben wir eine grundlegende Architektur erstellt, deren Bausteine Dienste sind, die in Docker- Containern leben, die wiederum in abhängigen Gruppen zusammengefasst sind, und die in den von Kubernetes verwalteten Pods leben. Im Allgemeinen ist alles ein Klassiker des Genres.
Von den vorgefertigten Diensten werden verwendet:
Der nächste Schritt ist das Schreiben und Erstellen eigener Dienste.
Auth
Anwendungsautorisierungsdienst mit der HTTP-Autorisierungsmethode (Typ Bearer).
Makler
Service zum Packen Ihrer eigenen Services (Entschuldigung für die Tautologie). Heute wird es in Form eines Knotenservers dargestellt, auf dem Sie entweder Ihre vollständige Anwendung mit Quellcodes oder eine vorgefertigte Baugruppe eines Knotens bereitstellen können (weitere Informationen finden Sie unter scorocode-cli). Wir entwickeln den Service in Richtung der Möglichkeit, sowohl fertige Services von DTR als auch selbst geschriebene Services zu verpacken. Wir machen natürlich die ersten Experimente mit Dienstleistungen, die in Golang geschrieben wurden.
DBAPI
Ein Dienst, der eine RESTful-API-Operation mit allen PostgreSQL-Datenbanktabellen bereitstellt.
Das heißt, sobald Sie eine Tabelle in der Datenbank erstellen, werden alle CRUD-Operationen über die API verfügbar.
Websockets
Wenn Clients über das WebSocket-Protokoll verbunden werden, werden Clients identifiziert, nach denen benannte oder Broadcast-Nachrichten von der Server-API gesendet werden können. Weiter werden wir den Service in Richtung Pufferung und garantierte Nachrichtenübermittlung weiterentwickeln.
FS
Arbeiten Sie mit Ordnern und Dateien des Anwendungsspeichers.
DRÜCKEN
Senden von Push-Benachrichtigungen. Android / iOS-Zertifikate sind in Ihrem Konto gebunden.
Konsolendienstprogramm scorocode-cli
2 Jahre Benutzer, die mit der ersten Version gearbeitet haben, haben uns gelehrt, dass der Entwickler nach einer gewissen Zeit des "Verwöhnens" zu seiner vertrauten Umgebung zurückkehren möchte - zu seinem lokalen Computer, egal wie schön die Tools auf dem Portal im persönlichen Konto des Benutzers dargestellt sind. Daher könnten wir nicht auf ein Konsolendienstprogramm verzichten.
Heute bietet scorocode-cli (sc-cli binary) dem Entwickler folgende Funktionen:
holenHerstellen einer Verbindung zur Anwendung in der Cloud, Autorisierung, Speichern der Konfiguration im CLI-Ordner.
initAbrufen des Repositorys und Bereitstellen der Basisanwendung, gefolgt vom Erstellen und Speichern in der Cloud. Die grundlegende Anwendung ist immer noch eine, wie Sie Ihre Hände in die Hand bekommen - wir werden noch ein paar verschiedene Arten schreiben.
ziehenSynchronisieren Sie lokale Projektdateien mit der Cloud.
drückenSpeichern Sie lokale Projektdateien in der Cloud.
regdbRegistrieren Sie eine Datenbank.
ProtokolleAbrufen von Protokollen vom Dienst.
BrückeLeiten Sie lokale Ports für alle Dienste an die Cloud weiter. Nach dem Starten der Bridge können Sie beispielsweise einen beliebigen Client als lokalen Client mit dem wolkigen PostgreSQL verbinden.
servierenLokaler Start der Anwendung. Wird zum lokalen Debuggen verwendet.
Die Probleme
Es gab viele Probleme auf der Straße. Und immer noch gibt es viele von ihnen. Grundsätzlich entstehen sie an der Schnittstelle von Open-Source-Produkten. Manchmal führten elementare Aktionen zu wöchentlichem Graben und infolgedessen zu einer Pull-Anforderung an das Produkt-Repository. Es ist schwer, alles in einen Artikel zu schieben. Ich hoffe, ich werde mehr über bestimmte Probleme und Lösungen schreiben.
Entwicklungspläne
Zunächst werden wir Dienstleistungen schreiben. Viele Dienstleistungen. Wir werden sie aber nicht abstrakt schreiben, sondern auf Wunsch unserer Kunden. Wir werden auch Anwendungsvorlagen entwickeln, damit Benutzer weniger Code schreiben, um neue Funktionen zu verbinden.
Über das Geschäft
Wir haben unseren Fokus von privaten Nutzern auf das B2B-Marktsegment verlagert. Und wir haben die Basis geändert - jetzt sind wir in Yandex.Cloud . Mehr dazu in den Artikeln unseres Produktes Korbut . Genau aus diesem Grund wurde die Testversion in der neuen Version der öffentlichen Cloud veröffentlicht - 1 Monat. Danach möchten wir wissen, ob der Benutzer das Interesse an uns verloren hat oder bereit ist, für den Dienst zu zahlen (die Kosten für die Grundkonfiguration der Anwendung betragen 990 Rubel / Monat).
Über Tarife
Jetzt haben wir absolut transparente Tarife. Der Benutzer sieht die für seine IaaS-Anwendung zugewiesenen Ressourcen, deren Kosten wir einfach in Prozent berechnen. Der Prozentsatz ist abhängig vom verbrauchten Volumen variabel. Dies gab uns Tariftransparenz und die Möglichkeit, nach dem Start des Yandex.Cloud-Marktplatzes private Clouds mit Tarifierung für Benutzer im Yandex.Cloud-Konto bereitzustellen.
Und ja, wir sind vorsichtig. In Anbetracht der Tatsache, dass wir für jede Anwendung zugewiesene Ressourcen bereitstellen, ist der Anwendungspool für den Testzeitraum mit etwa hundert klein. Zunächst haben wir eine Einladung von der alten Version an unsere Benutzer gesendet, aber wir akzeptieren weiterhin Anträge auf Verbindung zum Testzeitraum auf der Seite scorocode.ru
Nachwort
Ich bin unserem Team sehr dankbar, das auch in den schwierigsten Situationen nicht den Mut verloren hat. Übrigens über den Befehl:
- Anya Korbut - Produktmanagerin
- Zhenya Khramtsov - Architekt, geh Entwickler
- Levan Kiknadze - Architekt, Entwickler
- Roma Gayazov - js / Frontend-Entwickler
- Tagir Khalilov - DevOps
- Dasha Golubeva - Systemanalytikerin
Und natürlich vielen Dank an das Yandex.Cloud-Team für die Schnelligkeit, Unterstützung und Teilnahme an neu auftretenden Problemen.
Vielen Dank für das Lesen bis zum Ende. Ich habe alles