Na conferência
RubyRussia, Kir Shatrov falará sobre a arquitetura do Shopify. Como um dos maiores e mais pesados aplicativos Rails do mundo suporta o crescimento dos negócios por 10 anos sem mudar para microsserviços, Elixir e outras alternativas populares? Em uma entrevista tradicional antes da conferência, Kira foi questionada por Anatoly Zaitsev, desenvolvedora da Evrone.
Diga-me como você começou sua carreira?Como muitos, eu estava programando na escola. Eu criei sites WordPress por um familiar de US $ 200. Eu aprendi sobre Ruby on Rails e percebi que as tarefas que levam horas e dias no PHP podem ser resolvidas muito mais rapidamente. Pareceu-me que valia a pena pular neste trem: comprei um livro sobre Rails e comecei a aprender passo a passo. Muitos passos não funcionaram e eu abandonei as aulas. Ele voltou um ano depois, tentou passar pelos tutoriais online e tudo deu certo. Só então entendi qual era o problema: enquanto o livro estava sendo escrito, traduzido, impresso e levado às lojas, um ano ou mesmo um ano e meio se passaram. O Rails mudou muito durante esse período. Naturalmente, as instruções não funcionaram mais. E quando pude ler os materiais on-line e em inglês, entrei facilmente no Rails e fiz os primeiros projetos de hobby.
Então eu conheci Oleg Balbekov, o fundador da conferência RailsClub, agora chamada RubyRussia. Então cheguei a Evrone, onde trabalhei por quase quatro anos e, graças a colegas elegantes e inteligentes, consegui crescer bem. Evrone ajudou muito a começar: havia uma oportunidade de abrir o código aberto, crescer. Depois, trabalhei no Evil Martians, fiz projetos de uma escala diferente - EBay, Groupon, Gett. Os marcianos têm uma cultura e experimentos incomuns de código aberto, que estão longe de estar em todas as equipes. Entre os projetos ou diretamente nos projetos, as pessoas têm a oportunidade de se envolver em código aberto. É assim que se desenvolve o
Autoprefixer ,
AnyCable e não apenas. Como resultado, há algo para contar nas conferências. Falei no RailsClub na Rússia, no RailsConf nos Estados Unidos e em um grande número de outros eventos grandes e não muito. E por ter realizado muito, fui notado e convidado a trabalhar no Shopify.
Conte-me como você se mudou para o Canadá e como o Shopify ajudou no processo.Isso não funcionou imediatamente, houve dificuldades com a realocação: naquele momento, no Canadá, o governo realizou uma greve e simplesmente não havia ninguém para solicitar ou redirecionar vistos, mas tudo era permitido. Em 2013-2014, o Shopify realmente não possuía desenvolvedores e eles começaram a transportar engenheiros de todo o mundo para si mesmos. Este processo está ativamente em andamento agora. Hoje, a escala é tal que, juntamente com o governo canadense, o Shopify desenvolveu um programa que permite obter um visto de trabalho em três semanas. De acordo com esse esquema, cerca de cem pessoas se mudam por ano. Ao mesmo tempo, não apenas falantes de código aberto e conhecidos podem trabalhar. Precisamos de desenvolvedores que se encaixem na equipe e escrevam um bom código.
Acontece que entrar no Shopify é possível sem um enorme histórico, se você faz seu trabalho bem e profissionalmente?É sim. Também é importante poder falar sobre o seu trabalho. Alguém dirá: "Corrigi um bug e atualizei a versão do Ruby, adicionei um novo recurso." E você pode dizer o mesmo, mas do ponto de vista do desenvolvimento de negócios, resolvendo seus problemas. Mesmo durante entrevistas com essas empresas, é importante quais inovações você introduziu no trabalho, como participou da comunidade: não apenas escreveu código, mas, por exemplo, foi voluntário, ajudou a organizar uma conferência Ruby.
O que exatamente você está fazendo no Shopify agora?As tarefas são diferentes. Claro que estou escrevendo código. Mas muito do meu tempo é gasto na organização de processos. Por exemplo, no final de novembro haverá sexta-feira negra. Para quem trabalha em e-commerce, este é o maior evento do ano. Começamos a nos preparar em agosto: precisamos concordar com diferentes equipes sobre o lançamento de novos recursos, concordar com vendedores e provedores. E depois que a sexta-feira negra passa, entramos na fase em que começamos a fazer algo novo. Então eu tenho que colocar o chapéu do arquiteto.
Decidi por mim mesmo que me sinto confortável fazendo coisas diferentes e tentando coisas novas, não apenas escrevendo código. Mas eu conheço pessoas que gostam de programar acima de tudo e não gostariam de se comunicar com participantes de trinta equipes e participar da organização de processos. Tudo é flexível no Shopify; dentro da empresa, as pessoas podem encontrar o que gostam de fazer.
O Shopify é uma ótima plataforma. Quantos clientes você tem?O número oficial é de 800.000 lojas ativas. Não se trata apenas de registro (existem muitos mais), são negócios vivos.
O que o Shopify como plataforma oferece aos clientes?Nosso foco são pequenas e médias empresas. As pequenas empresas geralmente têm apenas uma ideia: elas ainda não sabem como vão vender. É necessário resolver muitos problemas: contabilidade de mercadorias, organização de pagamentos e entrega, seleção de parceiros para tudo isso. Nossa tarefa é economizar o tempo dos empreendedores para que eles cuidem dos problemas de rotina o mínimo possível. Nós assumimos este trabalho por nós mesmos.
Se você mora em um país em que o Shopify tem suporte total, isso significa que você não precisa escolher um sistema de pagamento, porque existe o Shopify Payments. Basta digitar seus detalhes fiscais e tudo funcionará. A mesma situação no envio de mercadorias: você imprime um adesivo, cola no pacote e envia. Não há necessidade de comprar marcas, pagar pelo frete, o Shopify se integra automaticamente aos e-mails. Existem serviços de armazém: você pode enviar suas mercadorias para o armazém do Shopify, e algoritmos complexos calculam em qual armazém armazená-lo, como garantir a entrega aos clientes em um dia. Isso permite que pequenas empresas concorram com a Amazon e o eBay.
Durante algum tempo, trabalhei na migração do projeto para sua plataforma. Esta loja tinha seu próprio estoque, mercadorias e base de clientes. Tudo funcionou de maneira conveniente: há exportação / importação, até pagamentos de terceiros são conectados em dois cliques. Você tem uma infraestrutura enorme. Entendo corretamente que a maioria das bibliotecas (api shopify, app shopify, shopify co) são escritas em Ruby e Rails?É sim.
O Ruby é frequentemente responsabilizado pelo baixo desempenho de grandes quantidades de dados. Quando você precisa escalar, muitas vezes Ruby está ausente. Por que o Shopify usa essa pilha de tecnologia específica?A empresa começou com um cara chamado Toby, que gostava de pranchas de snowboard. Doze anos atrás, ele decidiu escrever sua própria loja para a venda dessas pranchas de snowboard. Ele não estava interessado em fazer isso em PHP, Java e XML. Então, o amigo David mostrou a ele seu novo quadro legal, que permitiu criar rapidamente aplicativos da web. A estrutura se chamava Ruby on Rails, e Toby construiu sua própria loja de snowboard nela. Ele gostou da linguagem e das idéias do framework, Toby foi um dos primeiros colaboradores do Rails. Naquela época, o Rails nem tinha um repositório centralizado do git! As pessoas apenas trocaram novas versões. Então
Tobias Lutke e
David Heinemeyer Hansson começaram a trabalhar no Rails. E logo Toby percebeu que era muito mais legal lançar não sua própria loja de snowboard, mas uma plataforma inteira para outras lojas.
Tobias Lyutke é nosso fundador, ele ainda é o CEO. Ele pode ser encontrado no escritório, todos esses quinze anos em que trabalha no Shopify. A empresa começou com o Rails e emprega pessoas que amam sinceramente essa estrutura. Eles vêem com que rapidez eles conseguiram construir no Rails o que queriam. Eles vêem a rapidez com que os desenvolvedores podem fazer algo, experimentar e entregar à produção.
Não acho que a empresa tenha considerado seriamente opções para mudar para outra coisa. Na minha opinião, os aplicativos da web ainda permanecerão contra o banco de dados. Vá a algum lugar, pegue algo, reformate-o, cole o modelo, coloque-o no cache e depois forneça o resultado. Leva a maior parte do tempo. O Rails é ótimo para renderizar páginas em 100 a 300 milissegundos. Obviamente, se você precisar renderizar entre 8 e 10, precisará escolher algo mais rápido, por exemplo, Ir. A empresa possui um departamento que lida com infraestrutura, dimensionamento e pesquisa de direções de crescimento com nossas tecnologias atuais.
Como você resolve problemas com escala e altas cargas?Temos uma pilha muito típica: Rails, MySQL, Memcache, Redis. Certamente você trabalhou com isso em muitos projetos. Em 2014, quando a empresa tinha 10 anos, percebemos que tudo o que precisamos não se encaixava em um único banco de dados. Você pode comprar um hardware mais poderoso para o servidor MySQL e crescer verticalmente, mas há um limite para tudo.
Decidimos então que o sharding ajudaria a crescer horizontalmente. Como o SaaS, onde os dados de uma loja não se sobrepõem aos dados de outra, podemos organizar o sharding de maneira bastante simples. Você nunca precisa fazer uma junção entre duas lojas diferentes. Com nosso modelo de sharding, milhares de lojas de diferentes tamanhos e cargas diferentes vivem no mesmo shard. O Shard inclui não apenas a essência do banco de dados, mas também seus Redis, Memcache e assim por diante. Devido ao completo isolamento entre os fragmentos, dividimos o Shopify inteiro em centenas de pequenos Shopify. Todos podem ser hospedados em uma região separada, data center, provedor, em uma jurisdição separada. Se você tiver 100 fragmentos e algo cair em um deles, isso afetará apenas 1% dos clientes. Isso é muito pouco quando comparado com a situação em que, quando um recurso cai, tudo cai sobre todos.
Essa é a escala horizontal usando sharding. E sharding não apenas um, o recurso mais importante (banco de dados), mas o isolamento de todos os componentes que as lojas usam. Outros problemas interessantes aparecem. Por exemplo, em alguns fragmentos, há mais lojas, onde há muito tráfego, mas em alguns menos. Com um pouco mais de carga, mas com um pouco menos. Temos que resolver os problemas de balanceamento de lojas dentro do fragmento.
Você está migrando uma loja de um fragmento para outro?Quando você precisa resolver esses problemas - sim. Temos um ajuste, que descreverei em detalhes no relatório. Haverá uma história sobre como chegamos a esse esquema, como o sharding funciona, como essa abordagem pode ser aplicada não apenas aos nossos negócios, mas também a outros. Nós mesmos tivemos que desenvolver uma ferramenta para a migração de lojas entre shards e data centers. Basicamente, a migração é necessária para o reequilíbrio.
E então isso se torna realmente interessante. Há cinco anos, investimos em uma abordagem em que uma instância autônoma do Shopify pode ser executada isoladamente. Agora, temos clientes que precisam ter uma plataforma em uma determinada jurisdição. Essa arquitetura nos permite construir uma instância que é isolada em apenas um ponto.
Yukihiro Matsumoto chega na conferência. O que você gostaria de perguntar a ele?Primeiro, descreverei o contexto para que minha pergunta fique mais clara. Até onde eu sei, o desenvolvimento Ruby é formado por alguns indivíduos, menos de dez pessoas, entre eles não mais que cinco chaves. A maioria é japonesa e faz isso há muito tempo. Alguns deles podem implementar, sozinho, um recurso tão importante, como anotações de guilda ou tipo. Tudo está ligado a essas pessoas. E se uma pessoa patrocinada pela Cookpad ou Heroku implementa um recurso-chave de uma certa maneira, então é exatamente isso que será. Mas há um fator de ônibus.
Na minha opinião, os maiores avanços em Ruby que ocorreram nos últimos dois anos foram iniciados por grandes empresas, pois grandes problemas não podem ser resolvidos sozinhos. Por exemplo, o Stripe emprega pessoas que desenvolvem linguagens de programação digitadas e lhes dá um ano para pesquisar. Acontece que o Sorbet, que não é apenas um método de verificação de tipo, mas um paradigma inteiro, pode ser dimensionado, sua documentação é baseada na experiência de centenas de pessoas dentro do Stripe. E existem muitos exemplos. A Oracle patrocina a Truffle e várias pessoas estão trabalhando para criar a máquina virtual de próxima geração, reutilizando algumas das máquinas virtuais que foram desenvolvidas há décadas por dezenas de pessoas inteligentes dentro da Oracle.
Eu perguntaria a Matz o quanto ele acredita na resolução realista de grandes problemas de Ruby com um pequeno grupo de colaboradores individuais. Quanto esse modelo pode competir com exemplos quando os problemas foram resolvidos com a ajuda de um grande patrocinador.
Vamos discutir na conferência!Lembre-se de que será realizada no dia 28 de setembro em Moscou, com todos os detalhes e inscrições
no site .
Somos apoiados por:
Organizador -
EvroneParceiro Geral -
ToptalParceiro Gold -
GettParceiros Silver -
Valarm ,
JetBrains ,
Bookmate e
CashwagonParceiro Bronze -
InSales