Kir Shatrov: Shopify hat mit Rails angefangen und hier lieben sie diesen Rahmen aufrichtig.

Auf der RubyRussia- Konferenz wird Kir Shatrov über Shopify-Architektur sprechen. Wie unterstützt eine der weltweit größten und schwersten Rails-Anwendungen das Geschäftswachstum seit 10 Jahren, ohne auf Microservices, Elixir und andere beliebte Alternativen umzusteigen? In einem traditionellen Interview vor der Konferenz wurden Kira von Anatoly Zaitsev, dem Entwickler von Evrone, Fragen gestellt.

Bild

Sag mir, wie du deine Karriere begonnen hast?

Wie viele habe ich in der Schule programmiert. Ich habe WordPress-Sites für 200 US-Dollar irgendwie vertraut gemacht. Ich habe Ruby on Rails kennengelernt und festgestellt, dass Aufgaben, die in PHP Stunden und Tage dauern, viel schneller gelöst werden können. Es schien mir, dass es sich lohnt, in diesen Zug zu springen: Ich kaufte ein Buch über Schienen und begann Schritt für Schritt zu lernen. Viele Schritte funktionierten nicht und ich gab den Unterricht auf. Ein Jahr später kehrte er zurück, versuchte, die Online-Tutorials durchzugehen, und dann klappte alles. Erst dann verstand ich, was das Problem war: Während das Buch geschrieben, übersetzt, gedruckt und in die Läden gebracht wurde, vergingen ein oder sogar anderthalb Jahre. Rails hat sich in dieser Zeit stark verändert. Natürlich funktionierten die Anweisungen nicht mehr. Und als ich Materialien online und auf Englisch lesen konnte, trat ich leicht in Rails ein und machte die ersten Hobbyprojekte.

Dann traf ich Oleg Balbekov, den Gründer der RailsClub-Konferenz, die jetzt RubyRussia heißt. Also kam ich zu Evrone, wo ich fast vier Jahre lang arbeitete, und dank nobler und kluger Kollegen konnte ich gut wachsen. Evrone hat am Anfang sehr geholfen: Es gab die Möglichkeit, Open Source zu öffnen und zu wachsen. Dann habe ich bei Evil Martians gearbeitet und Projekte in einem anderen Maßstab durchgeführt - EBay, Groupon, Gett. Marsmenschen haben eine ungewöhnliche Open-Source-Kultur und Experimente, die weit davon entfernt sind, in allen Teams zu sein. Zwischen Projekten oder direkt an Projekten haben die Menschen die Möglichkeit, sich an Open Source zu beteiligen. So stellt sich heraus, dass Autoprefixer , AnyCable und nicht nur entwickelt werden. Infolgedessen gibt es auf Konferenzen etwas zu erzählen. Ich habe im RailsClub in Russland, bei RailsConf in den USA und bei einer Vielzahl anderer großer und nicht sehr großer Veranstaltungen gesprochen. Und weil ich so viel gespielt habe, wurde ich bemerkt und eingeladen, bei Shopify zu arbeiten.

Erzählen Sie mir, wie Sie nach Kanada gezogen sind und wie Shopify dabei geholfen hat.

Dies funktionierte nicht sofort, es gab Schwierigkeiten bei der Umsiedlung: In diesem Moment führte die Regierung in Kanada einen Streik durch und es gab einfach niemanden, der ein Visum beantragte oder umleitete, aber alles war erlaubt. Es war 2013-2014, Shopify fehlten wirklich Entwickler und sie begannen, Ingenieure aus der ganzen Welt zu sich selbst zu transportieren. Dieser Prozess läuft derzeit aktiv. Heute ist die Skala so, dass Shopify zusammen mit der kanadischen Regierung ein Programm entwickelt hat, mit dem Sie in drei Wochen ein Arbeitsvisum erhalten können. Nach diesem Schema ziehen pro Jahr etwa hundert Menschen um. Gleichzeitig können nicht nur Open-Source- und bekannte Lautsprecher arbeiten. Wir brauchen Entwickler, die in das Team passen und guten Code schreiben.

Es stellt sich heraus, dass der Einstieg in Shopify ohne große Erfolgsbilanz möglich ist, wenn Sie Ihre Arbeit gut und professionell erledigen?

Ja das stimmt. Es ist auch wichtig, über Ihre Arbeit sprechen zu können. Jemand wird sagen: "Ich habe einen Fehler behoben und die Ruby-Version aktualisiert und eine neue Funktion hinzugefügt." Und Sie können über das Gleiche erzählen, aber unter dem Gesichtspunkt der Geschäftsentwicklung, die Probleme zu lösen. Selbst während der Interviews mit solchen Unternehmen ist es wichtig, welche Innovationen Sie bei der Arbeit eingeführt haben, wie Sie an der Community teilgenommen haben: Sie haben nicht nur Code geschrieben, sondern waren beispielsweise Freiwillige und haben bei der Organisation einer Ruby-Konferenz mitgewirkt.

Was genau machst du gerade bei Shopify?

Die Aufgaben sind unterschiedlich. Natürlich schreibe ich Code. Aber ich verbringe viel Zeit damit, Prozesse zu organisieren. Zum Beispiel wird es Ende November einen schwarzen Freitag geben. Für alle, die im E-Commerce arbeiten, ist dies die größte Veranstaltung des Jahres. Wir beginnen im August mit den Vorbereitungen: Wir müssen uns mit verschiedenen Teams auf die Veröffentlichung neuer Funktionen einigen, um mit Anbietern und Anbietern übereinzustimmen. Und nachdem der schwarze Freitag vergangen ist, treten wir in die Phase ein, in der wir anfangen, etwas Neues zu tun. Dann muss ich den Hut des Architekten aufsetzen.

Ich habe selbst entschieden, dass es mir angenehm ist, verschiedene Dinge zu tun und neue Dinge auszuprobieren, nicht nur Code zu schreiben. Aber ich kenne Leute, die am liebsten programmieren und die nicht mit Teilnehmern von 30 Teams kommunizieren und an der Organisation von Prozessen teilnehmen möchten. In Shopify ist alles flexibel: Innerhalb des Unternehmens können die Mitarbeiter finden, was sie gerne tun.

Shopify ist eine großartige Plattform. Wie viele Kunden haben Sie?

Die offizielle Zahl beträgt 800.000 aktive Geschäfte. Dies ist nicht nur eine Registrierung (es gibt noch viel mehr), es handelt sich um lebende Unternehmen.

Was bietet Shopify als Plattform Kunden?

Unser Fokus liegt auf kleinen und mittleren Unternehmen. Kleine Unternehmen haben oft nur eine Idee: Sie wissen immer noch nicht, wie sie verkaufen werden. Es ist notwendig, viele Probleme zu lösen: Warenabrechnung, Organisation von Zahlungen und Lieferung, Auswahl von Partnern für all dies. Unsere Aufgabe ist es, den Unternehmern Zeit zu sparen, damit sie sich so wenig wie möglich um Routineprobleme kümmern. Wir nehmen diesen Job auf uns.

Wenn Sie in einem Land leben, in dem Shopify uneingeschränkten Support bietet, müssen Sie kein Zahlungssystem auswählen, da es Shopify Payments gibt. Geben Sie einfach Ihre Steuerdaten ein und alles wird funktionieren. Die gleiche Situation beim Versenden von Waren: Sie drucken einen Aufkleber, kleben ihn auf das Paket und senden. Keine Notwendigkeit, Marken zu kaufen, für den Versand zu bezahlen, Shopify integriert sich automatisch in Mails. Es gibt Lagerservices: Sie können Ihre Waren an das Shopify-Lager senden, und komplexe Algorithmen berechnen, in welchem ​​Lager sie gelagert werden sollen und wie die Lieferung an Kunden an einem Tag sichergestellt werden kann. Dies ermöglicht kleinen Unternehmen, mit Amazon und EBay zu konkurrieren.

Einige Zeit habe ich daran gearbeitet, das Projekt auf Ihre Plattform zu portieren. Dieses Geschäft hatte einen eigenen Bestand, Waren, Kundenstamm. Alles hat ganz bequem geklappt: Es gibt Export / Import, auch Zahlungen von Drittanbietern sind mit zwei Klicks verbunden. Sie haben eine riesige Infrastruktur. Verstehe ich richtig, dass die meisten Bibliotheken (shopify api, shopify app, shopify co) in Ruby and Rails geschrieben sind?

Ja das stimmt.

Ruby wird oft für die schlechte Leistung großer Datenmengen verantwortlich gemacht. Wenn Sie skalieren müssen, fehlt häufig Ruby. Warum verwendet Shopify diesen speziellen Technologie-Stack?

Die Firma begann mit einem Typen namens Toby, der Snowboards liebte. Vor zwölf Jahren beschloss er, ein eigenes Geschäft für den Verkauf dieser Snowboards zu schreiben. Er war nicht daran interessiert, dies in PHP, Java und XML zu tun. Dann zeigte ihm Freund David sein neues cooles Framework, mit dem Sie schnell Webanwendungen erstellen konnten. Das Framework hieß Ruby on Rails und Toby baute darauf seinen eigenen Snowboardladen. Er mochte die Sprache und die Ideen des Frameworks, Toby war einer der ersten Mitwirkenden an Rails. Zu diesem Zeitpunkt hatte Rails noch nicht einmal ein zentrales Git-Repository! Die Leute haben gerade neue Versionen ausgetauscht. Also begannen Tobias Lutke und David Heinemeyer Hansson an Rails zu arbeiten. Und bald wurde Toby klar, dass es viel cooler war, nicht einen eigenen Snowboardladen zu eröffnen, sondern eine ganze Plattform für andere Läden.

Tobias Lyutke ist unser Gründer, er ist immer noch der CEO. Er ist im Büro zu finden, all die fünfzehn Jahre, in denen er an Shopify gearbeitet hat. Das Unternehmen begann mit Rails und beschäftigt Mitarbeiter, die diesen Rahmen aufrichtig lieben. Sie sehen, wie schnell sie auf Rails bauen konnten, was sie wollten. Sie sehen, wie schnell Entwickler etwas tun, experimentieren und an die Produktion liefern können.

Ich glaube nicht, dass das Unternehmen einmal ernsthaft über Optionen für den Wechsel zu etwas anderem nachgedacht hat. Meiner Meinung nach werden Webanwendungen weiterhin in der Datenbank gespeichert. Gehen Sie irgendwohin, nehmen Sie etwas, formatieren Sie es neu, kleben Sie die Vorlage, legen Sie sie in den Cache und geben Sie dann das Ergebnis an. Es dauert die meiste Zeit. Rails eignet sich hervorragend zum Rendern von Seiten in 100 bis 300 Millisekunden. Wenn Sie für 8-10 rendern müssen, müssen Sie natürlich etwas schneller auswählen, z. B. Los. Das Unternehmen verfügt über eine Abteilung, die sich mit Infrastruktur, Skalierung und Erforschung von Wachstumsrichtungen mit unseren aktuellen Technologien befasst.

Wie lösen Sie Probleme mit Skalierung und hohen Lasten?

Wir haben einen sehr typischen Stack: Rails, MySQL, Memcache, Redis. Sicherlich haben Sie bei vielen Projekten damit gearbeitet. Irgendwann im Jahr 2014, als das Unternehmen 10 Jahre alt war, stellten wir fest, dass alles, was wir brauchten, nicht in eine einzige Datenbank passte. Sie können leistungsfähigere Hardware für den MySQL-Server kaufen und vertikal wachsen, aber es gibt eine Grenze für alles.

Dann beschlossen wir, dass Scherben helfen würden, horizontal zu wachsen. Wie bei SaaS, bei dem sich die Daten eines Geschäfts nicht mit den Daten eines anderen Geschäfts überschneiden, können wir das Sharding ganz einfach organisieren. Sie müssen niemals eine Verbindung zwischen zwei verschiedenen Geschäften herstellen. Mit unserem Sharding-Modell leben Tausende von Geschäften unterschiedlicher Größe und Ladung auf demselben Shard. Shard enthält nicht nur die Essenz der Datenbank, sondern auch deren Redis, ihren Memcache und so weiter. Aufgrund der vollständigen Isolation zwischen Shards teilen wir das gesamte Shopify in Hunderte kleiner Shopify auf. Jeder kann in einer separaten Region, einem Rechenzentrum oder einem Anbieter in einer separaten Gerichtsbarkeit gehostet werden. Wenn Sie 100 Shards haben und etwas auf einen von ihnen gefallen ist, betrifft dies nur 1% der Kunden. Dies ist sehr wenig im Vergleich zu der Situation, in der, wenn eine Ressource fällt, alles auf jeden fällt.

Dies ist eine horizontale Skalierung mithilfe von Sharding. Und nicht nur eine, die wichtigste Ressource (Datenbank), sondern auch die Isolation aller Komponenten, die gespeichert werden. Weitere interessante Probleme treten auf. Zum Beispiel gibt es auf einigen Scherben mehr Geschäfte, in denen viel Verkehr herrscht, auf einigen weniger. Bei etwas mehr Last, bei etwas weniger. Wir müssen die Probleme des Ausgleichs der Vorräte innerhalb der Scherbe lösen.

Migrieren Sie ein Geschäft von einem Shard zu einem anderen?

Wenn Sie solche Probleme lösen müssen - ja. Wir haben eine Abstimmung, die ich im Bericht ausführlich beschreiben werde. Es wird eine Geschichte darüber geben, wie wir zu diesem Schema gekommen sind, wie Sharding funktioniert und wie dieser Ansatz nicht nur auf unser Unternehmen, sondern auch auf andere angewendet werden kann. Wir mussten selbst ein Tool für die Migration von Filialen zwischen Shards und Rechenzentren entwickeln. Grundsätzlich ist eine Migration erforderlich, um das Gleichgewicht wieder herzustellen.

Und dann wird es wirklich interessant. Vor fünf Jahren haben wir in einen Ansatz investiert, bei dem eine eigenständige Shopify-Instanz isoliert ausgeführt werden kann. Jetzt haben wir Kunden, die eine Plattform in einer bestimmten Gerichtsbarkeit benötigen. Diese Architektur ermöglicht es uns, eine Instanz zu erstellen, die nur an einem Punkt isoliert ist.

Yukihiro Matsumoto kommt zur Konferenz. Was möchtest du ihn fragen?

Zunächst beschreibe ich den Kontext, damit meine Frage klarer wird. Soweit ich weiß, besteht die Ruby-Entwicklung aus wenigen Einzelpersonen, weniger als zehn Personen, darunter nicht mehr als fünf Schlüssel. Die meisten sind Japaner, die dies schon sehr lange tun. Einige von ihnen können eine so wichtige Funktion wie Gilden- oder Typanmerkungen im Alleingang implementieren. Alles ist an diese Menschen gebunden. Und wenn eine von Cookpad oder Heroku gesponserte Person eine Schlüsselfunktion auf eine bestimmte Weise implementiert, dann ist es genau das, was es sein wird. Aber es gibt einen Busfaktor.

Meiner Meinung nach wurden die größten Fortschritte in Ruby in den letzten Jahren von großen Unternehmen initiiert, da große Probleme nicht alleine gelöst werden können. Stripe beschäftigt beispielsweise Mitarbeiter, die typisierte Programmiersprachen entwickeln, und gibt ihnen ein Jahr Zeit für Recherchen. Es stellt sich also heraus, dass Sorbet nicht nur eine Methode zur Typprüfung ist, sondern ein ganzes Paradigma. Es kann skaliert werden. Die Dokumentation basiert auf den Erfahrungen von Hunderten von Menschen in Stripe. Und es gibt viele solcher Beispiele. Oracle sponsert Truffle, und mehrere Mitarbeiter arbeiten an der Erstellung der virtuellen Maschine der nächsten Generation. Sie verwenden einige der virtuellen Maschinen wieder, die seit Jahrzehnten von Dutzenden intelligenter Mitarbeiter in Oracle entwickelt wurden.

Ich würde Matz fragen, wie sehr er daran glaubt, große Ruby-Probleme mit einer kleinen Gruppe einzelner Mitwirkender realistisch zu lösen. Wie sehr kann ein solches Modell mit Beispielen konkurrieren, wenn Probleme mit Hilfe eines großen Sponsors gelöst wurden.

Wir werden auf der Konferenz diskutieren!

Denken Sie daran, dass es am 28. September in Moskau stattfinden wird, alle Details und Registrierung auf der Website .

Wir werden unterstützt von:

Veranstalter - Evrone
Komplementärin - Toptal
Gold Partner - Gett
Silberpartner - Valarm , JetBrains , Bookmate und Cashwagon
Bronze Partner - InSales

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


All Articles