Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Sistemas Distribuidos Escaláveis com Microserviços
Search
reinaldob
November 28, 2015
Technology
0
52
Sistemas Distribuidos Escaláveis com Microserviços
Sistemas Distribuidos Escaláveis com Microserviços
reinaldob
November 28, 2015
Tweet
Share
More Decks by reinaldob
See All by reinaldob
Devolta ao Monolito
reinaldob
0
55
Home Office
reinaldob
0
79
QCon SP 2013 - Legado Vale Ouro
reinaldob
0
52
Other Decks in Technology
See All in Technology
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
520
On Your Data を超えていく!
hirotomotaguchi
2
680
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
360
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
130
web-application-security
matsuihidetoshi
0
170
データベース02: データベースの概念
trycycle
0
160
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
740
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
15k
アクセス制御にまつわる改善 / Improving access control
itkq
0
540
JSON攻略法.pdf
miyakemito
8
5k
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
170
Featured
See All Featured
The Invisible Side of Design
smashingmag
294
49k
The Straight Up "How To Draw Better" Workshop
denniskardys
227
130k
Six Lessons from altMBA
skipperchong
21
3k
Agile that works and the tools we love
rasmusluckow
325
20k
Music & Morning Musume
bryan
41
5.6k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
For a Future-Friendly Web
brad_frost
172
9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
What's new in Ruby 2.0
geeforr
337
31k
Building Adaptive Systems
keathley
31
1.9k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Transcript
Orquestração Database Sistemas Distribuídos Escaláveis com Microserviços HTTP Autenticação
@reinaldob • Programador na Spree Commerce Inc. • Empresa focada
em eCommerce • Equipe distribuída • 99% home office
None
Conceitos :)
O que são microserviços?
None
Quando eu deveria utilizá- lo?
Quando dá mais trabalho manter o sistema junto do que
ter ele separado.
Trabalho • Vários times mexendo no mesmo código • 1
app importante e estável send “deployada" junto com 1 app que muda frequentemente • API junto com APP, requisitos de segurança diferentes • etc…
Junto • Mesmo deploy • Mesmo codebase • Mesma equipe
Separado • Deploy separado • Codebase separado • Mesmo que
esteja na mesma máquina!
Como criar uma aplicação utilizando esse modelo arquitetural?
None
Don't Tell Me What To Do https://medium.com/@danielfilho
Sem bala de prata • Estudar o contexto • Perfil
da equipe de Dev • Equipe Devops • Conways law • Tamanho dos times • Melhores protocolos • A lista é grande…
Quem está usando hoje em dia?
TODO MUNDO!
• Netflix • SoundCloud • Amazon • eBay • …
Preciso utilizar?
NÃO
Wombat
Um pouco de história
Storefront Wombat Order Payment Shipment Fulfilment Replicate ready, complete, paid
ready, approved, rejected ready, delivered, completed completed, cancelled Order Payment Shipment Fulfilment ready, complete, paid ready, approved, rejected ready, delivered, completed completed, cancelled
Order pedido incluso pronto -> pago pago -> cancelado pago
-> completo Email de confirmação Contas a receber Email, Baixa do contas a receber Email, Baixa do estoque
Integrações • STOREFRONT INTEGRATIONS • BigCommerce • Magento • NuORDER
• Shopify • ACCOUNTING AND ERP • Abacos • Netsuite • Odoo • Quickbooks Desktop • Quickbooks Integration • Microsoft Dynamics • FULFILLMENT AND INVENTORY • Aftership • DotCom • Fifth Gear • Fosdick • MDS Fulfillment • COMMUNICATION AND CUSTOMER SERVICE • Amazon SES • Bronto • Desk.com • ExactTarget • MailChimp • Mandrill • DATA, ANALYTICS, AND CRM INTEGRATIONS • Amazon S3 • Highrise • Jirafe • MK Data Services • Salesforce • SugarCRM • POINT OF SALE (POS) • Square • Vend • AccuPOS • LightSpeed • Microsoft RMS
Contexto • Alto volume • Um engine complexo(que não pode
falhar) • MUITAS integrações
Push API Wombat Engine Integrations Storefront (client) HTTP SNS/SQS HTTP
SQS Push API Push API Wombat Engine Wombat Engine Integrations Integrations SQS
Push API • Sinatra • Redis • Controle de acesso
(throttle) • Docker
Wombat Engine • Rails • Redis • Shoryuken(SQS) • Mongo
• Controle de acesso (throttle) usando SQS • Docker
Integrations • Sinatra (stateless) • Docker, Heroku, Rackspace, Standalone, etc…
• Open Source
Comunicação
JSON
HTTP • HMAC Auth e Token Auth • Nada fancy,
simples POST
SQS • Assíncrono • Várias filas para cada processo •
Dividir o numero de mensagens por min, regulando o bottleneck por cliente • Visibility Timeout • https://github.com/phstc/shoryuken
Engine Listener Evento SQS O bjeto + Evento Objeto +
Evento Erro ou Throttle Persistência SQS REDIS Controle de Throttle Notificações SQS Delivery SQS Status Objeto + Evento
Ganhamos • Integrações Dinâmicas • Liberdade pra habilitar quantos nodes
precisar por integração, dependendo do nível de uso • Delegamos o trabalho pra AWS, menos devops • Garantia de falha e multi-AZ • Deploys separados \o/
Perdemos • Ambiente local é complexo de montar • Testes
complexos e demorados, nosso ambiente de CI é bem hackeado • Dependencia da AWS
Custo/Benefício
Dicas • http://putsreq.com • https://ngrok.com • Use ferramentas simples (cURL)
e formatos simples (JSON)
Obrigado :) Dúvidas?