Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Microservices on Rails
Search
Marcio Garcia
September 18, 2015
Technology
160
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Microservices on Rails
Minha apresentação sobre microserviços na RubyConfBR 2015
Marcio Garcia
September 18, 2015
Other Decks in Technology
See All in Technology
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.2k
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
170
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
210
AI時代のPRレビューにどう向き合うか?
kairim0
1
240
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
120
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
How to Design Configuration for Rails Applications
willnet
1
780
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
go-sqletch
moznion
0
140
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Design in an AI World
tapps
1
350
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Navigating Team Friction
lara
192
16k
Code Review Best Practice
trishagee
74
20k
Making the Leap to Tech Lead
cromwellryan
135
10k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Side Projects
sachag
456
43k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building AI with AI
inesmontani
PRO
1
1.3k
Transcript
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Microservices on Rails
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Agradecimento
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Agenda Microservices Ruby
on Rails
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Apresentação Marcio Mangar
@mangar github.com/mangar marcio.mangar [at] gmail.com http://rga.com
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Microserviços
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS O que são
Microserviços
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Service Oriented Architecture
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Aplicação Monolítica
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes Pedidos Banco
de Dados def make() Aplicação Monolitica
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes Pedidos Banco
de Dados def make() www.sistema
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes Pedidos Banco
de Dados def make() www.sistema cart.sistema search.sistema
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Escalabilidade
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS X Escalabilidade X
Clientes Pedidos Load Balancer Clientes Pedidos Clientes Pedidos . . . . .
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Aplicação com Microserviços
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes admin.clientes. api.clientes.
www.clientes. Pedidos admin.pedidos. api.pedidos. www.pedidos. Aplicação com Microserviços Banco de Dados
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Comunicação
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes Pedidos Comunicação
Síncrona Assíncrona REST SOAP WS ActiveMQ RabbitMQ Notificação
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Comunicação entre módulos
via API
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Delivery de conteúdo
web estático via CDN
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes api.clientes. Servidor
Web api.admin.clientes. www.clientes. CDN admin.clientes. CDN Delivery de estático via CDN
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes consumindo APIs
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS api.orders. api.clientes. Servidor
Web api.admin.clientes. API
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Escalabilidade X e
Y
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS X Y Clientes
Load Balancer Clientes Pedidos Load Balancer Pedidos Pedidos Pedidos Pedidos Escalabilidade X e Y
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Ruby on Rails
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Routes
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS only / except
resources :customers resources :orders GET (index, new, edit, show) POST (create) PATH,PUT (update) DELETE (destroy)
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS only / except
resources :customers, only: [:index] GET (index)
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS only / except
resources :orders, except: [:destroy, :edit, update] GET (index, new, edit, show) POST (create) PATH,PUT (update) DELETE (destroy)
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS with_options resources :customers,
only: [:index] resources :orders, only: [:index]
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS with_options with_options only:
:index do |option| option.resources :customers option.resources :orders end
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS constraints http://clientes.sistema http://pedidos.sistema
http://www.sistema
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS constraints resources :customers,
contraints: { subdomain: 'clientes'} resources :orders, contraints: { subdomain: 'pedidos'}
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS constraints constraints subdomain:
'api' do resources :customers resources :orders end
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS constraints http://pow.cx/
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS namespaces constraints subdomain:
'api' do resources :customers resources :orders end http://api.sistema/customers http://api.sistemas/orders
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS namespaces constraints subdomain:
'api' do resources :customers resources :orders end controllers/customer_controller controllers/order_controller
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS namespaces constraints subdomain:
'api' do namespace :api do resources :customers resources :orders end end http://api.sistema/api/customers http://api.sistemas/api/orders
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS namespaces constraints subdomain:
'api' do namespace :api, path: '/' do resources :customers resources :orders end end controllers/api/customer_controller controllers/api/order_controller http://api.sistema/customers http://api.sistemas/orders
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Formatos
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS content negotiation http://api.sistema/clientes.json
http://api.sistema/clientes.xml
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS content negotiation http://api.sistema/clientes.json
http://api.sistema/clientes.xml
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS content negotiation {
'Accept' => Mime::JSON } { 'Accept' => Mime::XML } HEADER
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS respond_to respond_to do
|format| format.json { render json: customers, status: 200 } format.xml { render xml: customers, status: 200 } end HTTP/1.1 200 OK Content-Type: application/json
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Accept-Language { 'Accept-Language'
=> 'en' } { 'Accept-Language' => 'pt-BR' } HEADER
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Accept-Language I18n.locale =
request.headers['Accept-Language'] Controller
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Accept-Language gem 'http_accept_language'
locales = I18n.available_locales I18n.locale = http_accept_language.compatible_language_from(locales)
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS HTTP
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP GET
POST PUT PATCH DELETE
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP GET
POST PUT PATCH DELETE Obter dados sem efeito colateral.
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP GET
POST PUT PATCH DELETE Criar Registro.
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP GET
POST PUT PATCH DELETE Atualizar Registro
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP GET
POST PUT PATCH DELETE Remover Registro
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP http://api.sistema/customers/delete/123.json
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP http://api.sistema/customers/delete/123
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Retorno sem body
render nothing: true, status: 204 head 204 POST
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Versionamento de API
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS URI /v1/customers/1 /v2/customers/1
http://api.sistema/ {
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS URI namespace :v1
do resources :customers end namespace :v2 do resources :customers end /v1/customers/1 /v2/customers/1 http://api.sistema/ {
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Header application/vnd.apocalypse[.version]+json
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS URI /v1/customers/1 /customers/1
http://api.sistema/ {
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Autenticação
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Basic Authentication Base64.encode64(username:senha)
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Basic Authentication Base64.encode64(username:senha)
{ 'Authorization' => 'Basic XXXXXXXXXX'} HEADER
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Basic Authentication Base64.encode64(username:senha)
{ 'Authorization' => 'Basic XXXXXXXXXX'} HEADER authenticate_or_request_with_http_basic Decode
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Token Token gerado
pelo server Utilizado na comunicação com o cliente
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Referencia
RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Obrigado @mangar github.com/mangar
marcio.mangar [at] gmail.com