Criação de aplicativos complexos do Shopify com IronMQ e IronWorker

Os proprietários de lojas do Shopify estão construindo sistemas complexos nos bastidores. Há uma tonelada de métricas que o Shopify fornece por meio de suas APIs, mas se você quiser começar a puxar métricas de indústria e publicidade, execute pesquisas complexas, faça um aprendizado profundo … a quantidade de infraestrutura e código que você precisa escrever para coordenar as coisas podem começar a ficar um pouco fora de controle. Usar serviços de terceiros para lidar com essas tarefas acaba fazendo muito sentido.

Neste exemplo arbitrário, vamos utilizar alguns serviços de terceiros. A API do Shopify nos notificará quando um novo cliente for criado, o IronMQ e o IronWorker cuidarão da mensagem / infraestrutura / dimensionamento e, em seguida, usaremos alguns serviços adicionais para descobrir mais sobre esse cliente. Estaremos usando Ruby para ilustrar nosso exemplo.

Declare a gema IronMQ em seu Gemfile:

gem 'iron_mq'

Dentro do seu código, ou em uma sessão de console, crie sua nova fila push IronMQ

Quando uma mensagem chega a essa fila, ela dispara eventos, com o corpo da mensagem, para os terminais que você especificar. Neste exemplo, digamos que desejamos que um IronWorker formate as informações dos clientes e as adicione ao seu banco de dados. Também postaremos em um endpoint HTTP que obterá as informações dos clientes e fará algumas pesquisas de mercado sobre seus hábitos de compra. Assim que este serviço tiver os dados prontos para você, ele os enviará de volta para outra fila que formatará seus hábitos de compra e também os adicionará ao seu banco de dados.

require 'iron_mq'
ironmq
= IronMQ::Client.new(token: 'xxxxx', project_id: 'xxxxx')

new_customer_queue
= {
push
: {
subscribers
: [
{
name
: 'buying-habits-api',
url
: 'https://xxxxxxxx.com/lookup-buying-habits',
},
{
name
: 'iron-worker',
url
: 'ironworker://projectid:token@host:port/process-customer'
}
]
}
}
ironmq
.create_queue(new_customer_queue)

customer_buying_habits_queue
= {
push
: {
subscribers
: [
{
name
: 'iron-worker',
url
: 'ironworker://projectid:token@host:port/process-buying-habits'
}
]
}
}
ironmq
.create_queue(customer_buying_habits_queue)

Comece a preencher sua fila de clientes

A maneira mais fácil de preencher sua fila seria criar um web-hook no Shopify que poste os dados do cliente diretamente na sua “fila de novos clientes”. Como o IronMQ tem uma API HTTP, é apenas uma questão de fornecer ao Shopify a URL correta para postar:

POST queues/new-customer-queue/messages

Você também pode postar em sua fila por meio das bibliotecas cliente do IronMQ:

queue = ironmq.queue('new-customer-queue')
queue
.post('customer data here')

Conclusão

Usando os web-hooks do Shopify, IronMQ e IronWorker, você pode conectar rapidamente um grupo de serviços e enviar uma agregação significativa de volta ao seu banco de dados. Se seu aplicativo começar a se popularizar, você não precisa se preocupar em gerenciar ou dimensionar qualquer uma dessas infraestruturas, pois tudo acontece para você. O pessoal do Shopify pode ajudá-lo a configurar seus web-hooks e a equipe e a Iron ficarão felizes em ajudá-lo a começar a trabalhar rapidamente.