En la conferencia
RubyRussia, Kir Shatrov hablará sobre la arquitectura Shopify. ¿Cómo una de las aplicaciones Rails más grandes y pesadas del mundo respalda el crecimiento del negocio durante 10 años sin cambiar a microservicios, Elixir y otras alternativas populares? En una entrevista tradicional antes de la conferencia, Anatoly Zaitsev, desarrollador de Evrone, hizo preguntas a Kira.
¿Dime cómo empezaste tu carrera?Como muchos, estaba programando en la escuela. Hice sitios de WordPress por $ 200 de tipo familiar. Aprendí sobre Ruby on Rails y me di cuenta de que esas tareas que llevan horas y días en PHP se pueden resolver mucho más rápido. Me pareció que valía la pena saltar en este tren: compré un libro sobre Rails y comencé a aprender paso a paso. Muchos pasos no funcionaron y abandoné las clases. Regresó un año después, trató de leer los tutoriales en línea y luego todo salió bien. Solo entonces comprendí cuál era el problema: mientras el libro se escribía, traducía, imprimía y llevaba a las tiendas, transcurría un año o incluso un año y medio. Rails ha cambiado mucho durante este tiempo. Naturalmente, las instrucciones ya no funcionaron. Y cuando pude leer materiales en línea y en inglés, ingresé fácilmente a Rails e hice los primeros proyectos de pasatiempos.
Luego conocí a Oleg Balbekov, el fundador de la conferencia RailsClub, ahora llamada RubyRussia. Así que llegué a Evrone, donde trabajé durante casi cuatro años y gracias a colegas elegantes e inteligentes pude crecer bien. Evrone ayudó mucho a comenzar: había una oportunidad para abrir código abierto, para crecer. Luego trabajé en Evil Martians, hice proyectos de una escala diferente: EBay, Groupon, Gett. Los marcianos tienen una cultura y experimentos de código abierto inusual, que está lejos de estar en todos los equipos. Entre proyectos o directamente en proyectos, las personas tienen la oportunidad de participar en código abierto. Así es como se desarrolla
Autoprefixer ,
AnyCable y no solo. Como resultado, hay algo que contar en las conferencias. Hablé en RailsClub en Rusia, RailsConf en los Estados Unidos y en una gran cantidad de otros eventos importantes y no muy importantes. Y debido a que realicé mucho, me notaron e invitaron a trabajar en Shopify.
Cuéntame cómo te mudaste a Canadá y cómo Shopify ayudó en el proceso.Esto no funcionó de inmediato, hubo dificultades con la reubicación: en ese momento en Canadá el gobierno organizó una huelga y simplemente no había nadie para solicitar o redirigir visas, pero todo estaba permitido. Era 2013-2014, Shopify realmente carecía de desarrolladores y comenzaron a transportar a ingenieros de todo el mundo para sí mismos. Este proceso está actualmente en curso. Hoy, la escala es tal que, junto con el gobierno canadiense, Shopify ha desarrollado un programa que le permite obtener una visa de trabajo en tres semanas. Según este esquema, alrededor de cien personas se mudan por año. Al mismo tiempo, no solo los altavoces de código abierto y conocidos pueden ponerse a trabajar. Necesitamos desarrolladores que encajen en el equipo y escriban un buen código.
Resulta que entrar en Shopify es posible sin un gran historial, si haces tu trabajo bien y profesionalmente.Si lo es También es importante poder hablar sobre su trabajo. Alguien dirá: "Arreglé un error y actualicé la versión de Ruby, agregué una nueva función". Y puede decir lo mismo, pero desde el punto de vista del desarrollo empresarial, resolver sus problemas. Incluso durante las entrevistas con tales compañías, es importante qué innovaciones introdujo en el trabajo, cómo participó en la comunidad: no solo escribió código, sino que, por ejemplo, fue voluntario, ayudó a organizar una conferencia de Ruby.
¿Qué estás haciendo exactamente en Shopify ahora?Las tareas son diferentes. Por supuesto que estoy escribiendo código. Pero gran parte de mi tiempo lo dedico a organizar procesos. Por ejemplo, a finales de noviembre habrá Black Friday. Para todos los que trabajan en el comercio electrónico, este es el mayor evento del año. Comenzamos a prepararnos en agosto: debemos acordar con diferentes equipos el lanzamiento de nuevas funciones, para acordar con los proveedores y proveedores. Y después de que pasa el viernes negro, entramos en la fase cuando comenzamos a hacer algo nuevo. Luego tengo que ponerme el sombrero del arquitecto.
Decidí por mí mismo que me siento cómodo haciendo cosas diferentes y probando cosas nuevas, no solo escribiendo código. Pero conozco personas a las que les gusta más que nada programar, y no querrían comunicarse con los participantes de treinta equipos y participar en la organización de los procesos. Todo es flexible en Shopify; dentro de la empresa, las personas pueden encontrar lo que les gusta hacer.
Shopify es una gran plataforma. ¿Cuántos clientes tienes?La cifra oficial es de 800,000 tiendas activas. Esto no es solo registro (hay muchos más), son negocios vivos.
¿Qué ofrece Shopify como plataforma a los clientes?Nuestro enfoque son las pequeñas y medianas empresas. Las pequeñas empresas a menudo solo tienen una idea: todavía no saben cómo venderán. Es necesario resolver muchos problemas: contabilidad de bienes, organización de pagos y entrega, selección de socios para todo esto. Nuestra tarea es ahorrar el tiempo de los empresarios para que se ocupen de los problemas de rutina lo menos posible. Tomamos este trabajo en nosotros mismos.
Si vives en un país donde Shopify tiene soporte completo, significa que no necesitas elegir un sistema de pago, porque hay pagos de Shopify. Simplemente ingrese sus detalles de impuestos y todo funcionará. La misma situación con el envío de productos: imprime una pegatina, la pega en el paquete y la envía. No es necesario comprar marcas, pagar el envío, Shopify se integra automáticamente con los correos. Hay servicios de almacén: puede enviar sus productos al almacén de Shopify, y los algoritmos complejos calculan en qué almacén almacenarlos, cómo garantizar la entrega a los clientes en un día. Esto permite que las pequeñas empresas compitan con Amazon y EBay.
Durante algún tiempo trabajé en portar el proyecto a su plataforma. Esta tienda tenía su propio inventario, productos, base de clientes. Todo funcionó bastante convenientemente: hay exportación / importación, incluso los pagos de terceros se conectan en dos clics. Tienes una gran infraestructura. ¿Entiendo correctamente que la mayoría de las bibliotecas (shopify api, shopify app, shopify co) están escritas en Ruby and Rails?Si lo es
A menudo se culpa a Ruby por el bajo rendimiento de grandes cantidades de datos. Cuando necesita escalar, a menudo falta Ruby. ¿Por qué Shopify utiliza esta pila de tecnología en particular?La compañía comenzó con un tipo llamado Toby, aficionado a las tablas de snowboard. Hace doce años, decidió escribir su propia tienda para la venta de estas tablas de snowboard. No estaba interesado en hacer esto en PHP, Java y XML. Luego, su amigo David le mostró su nuevo marco genial, que le permitía crear rápidamente aplicaciones web. El marco se llamaba Ruby on Rails, y Toby construyó su propia tienda de snowboard. Le gustó el lenguaje y las ideas del marco, Toby fue uno de los primeros contribuyentes a Rails. ¡En ese momento, Rails ni siquiera tenía un repositorio git centralizado! La gente acaba de intercambiar nuevas versiones. Entonces
Tobias Lutke y
David Heinemeyer Hansson comenzaron a trabajar en Rails. Y pronto Toby se dio cuenta de que era mucho más divertido lanzar no su propia tienda de snowboard, sino una plataforma completa para otras tiendas.
Tobias Lyutke es nuestro fundador, sigue siendo el CEO. Lo pueden encontrar en la oficina, todos estos quince años que ha estado trabajando en Shopify. La compañía comenzó con Rails, y emplea a personas que aman sinceramente este marco. Ven lo rápido que pudieron construir en Rails lo que querían. Ven lo rápido que los desarrolladores pueden hacer algo, experimentar y entregarlo a la producción.
No creo que la compañía alguna vez haya considerado seriamente las opciones para cambiar a otra cosa. En mi opinión, las aplicaciones web seguirán descansando en la base de datos. Vaya a algún lado, tome algo, vuelva a formatearlo, pegue la plantilla, póngala en el caché y luego dé el resultado. Toma la mayor parte del tiempo. Rails es ideal para renderizar páginas en 100-300 milisegundos. Por supuesto, si necesita renderizar para 8-10, tendrá que elegir algo más rápido, por ejemplo, Ir. La compañía tiene un departamento que se ocupa de la infraestructura, el escalado y la investigación de direcciones de crecimiento con nuestras tecnologías actuales.
¿Cómo se resuelven los problemas de escala y cargas elevadas?Tenemos una pila muy típica: Rails, MySQL, Memcache, Redis. Seguramente has trabajado con esto en muchos proyectos. En algún lugar de 2014, cuando la empresa tenía 10 años, nos dimos cuenta de que todo lo que necesitábamos no cabía en una sola base de datos. Puede comprar hardware más potente para el servidor MySQL y crecer verticalmente, pero hay un límite para todo.
Luego decidimos que el fragmentación ayudaría a crecer horizontalmente. Al igual que SaaS, donde los datos de una tienda no se superponen con los datos de otra, podemos organizar el fragmentación de manera bastante simple. Nunca tiene que hacer una unión entre dos tiendas diferentes. Con nuestro modelo de fragmentación, miles de tiendas de diferentes tamaños y diferentes cargas viven en el mismo fragmento. Shard incluye no solo la esencia de la base de datos, sino también su Redis, su Memcache, etc. Debido al aislamiento completo entre fragmentos, dividimos todo el Shopify en cientos de pequeños Shopify. Todos pueden estar alojados en una región separada, centro de datos, proveedor, en una jurisdicción separada. Si tiene 100 fragmentos y algo cayó sobre uno de ellos, afectará solo al 1% de los clientes. Esto es muy poco en comparación con la situación en que, cuando un recurso cae, todo recae en todos.
Esta es la escala horizontal mediante fragmentación. Y fragmentar no solo uno, el recurso más importante (base de datos), sino el aislamiento de todos los componentes que utilizan las tiendas. Otros problemas interesantes aparecen. Por ejemplo, en algunos fragmentos hay más tiendas, donde hay mucho tráfico, pero en algunas menos. Con algo más de carga, pero con algo menos. Tenemos que resolver los problemas de equilibrar las tiendas dentro del fragmento.
¿Estás migrando una tienda de un fragmento a otro?Cuando necesite resolver tales problemas, sí. Tenemos un ajuste, que describiré en detalle en el informe. Habrá una historia sobre cómo llegamos a este esquema, cómo funciona el fragmentación, cómo este enfoque se puede aplicar no solo a nuestro negocio, sino también a otros. Nosotros mismos tuvimos que desarrollar una herramienta para la migración de tiendas entre fragmentos y centros de datos. Básicamente, la migración es necesaria para reequilibrar.
Y luego se vuelve realmente interesante. Hace cinco años, invertimos en un enfoque en el que una instancia de Shopify independiente se puede ejecutar de forma aislada. Ahora tenemos clientes que necesitan tener una plataforma en una determinada jurisdicción. Esta arquitectura nos permite construir una instancia aislada en un solo punto.
Yukihiro Matsumoto llega a la conferencia. ¿Qué te gustaría preguntarle?Primero, describiré el contexto para que mi pregunta sea más clara. Hasta donde yo sé, el desarrollo de Ruby es de unos pocos individuos, menos de diez personas, entre ellas no más de cinco claves. La mayoría son japoneses que han estado haciendo esto durante mucho tiempo. Algunos de ellos pueden implementar una característica tan importante, como las anotaciones de gremio o de tipo. Todo está atado a estas personas. Y si una persona patrocinada por Cookpad o Heroku implementa una característica clave de cierta manera, entonces eso es exactamente lo que será. Pero hay un factor de autobús.
En mi opinión, los grandes avances en Ruby que han tenido lugar en los últimos años han sido iniciados por grandes empresas, ya que los grandes problemas no se pueden resolver solos. Por ejemplo, Stripe emplea a personas que desarrollan lenguajes de programación mecanografiados y les da un año para investigar. Resulta que Sorbet, que no es solo un método de verificación de tipos, sino un paradigma completo, puede escalarse, su documentación se basa en la experiencia de cientos de personas dentro de Stripe. Y hay muchos ejemplos de este tipo. Oracle patrocina a Truffle, y varias personas están trabajando para crear la máquina virtual de próxima generación, reutilizando algunas de las máquinas virtuales que han sido desarrolladas durante décadas por docenas de personas inteligentes dentro de Oracle.
Le preguntaría a Matz cuánto cree en resolver de manera realista los grandes problemas de Ruby con un pequeño grupo de contribuyentes individuales. Cuánto puede competir un modelo de este tipo con ejemplos cuando los problemas se resolvieron con la ayuda de un patrocinador importante.
¡Discutiremos en la conferencia!Recordemos que se llevará a cabo el 28 de septiembre en Moscú, todos los detalles y registro
en el sitio .
Estamos respaldados por:
Organizador -
EvroneSocio general -
ToptalGold Partner -
GettSocios de plata:
Valarm ,
JetBrains ,
Bookmate y
CashwagonSocio de bronce -
InSales