Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Microservices on Rails

Avatar for Marcio Garcia Marcio Garcia
September 18, 2015

Microservices on Rails

Minha apresentação sobre microserviços na RubyConfBR 2015

Avatar for Marcio Garcia

Marcio Garcia

September 18, 2015

Other Decks in Technology

Transcript

  1. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Apresentação Marcio Mangar

    @mangar github.com/mangar marcio.mangar [at] gmail.com http://rga.com
  2. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes Pedidos Banco

    de Dados def make() www.sistema cart.sistema search.sistema
  3. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS X Escalabilidade X

    Clientes Pedidos Load Balancer Clientes Pedidos Clientes Pedidos . . . . .
  4. 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
  5. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Clientes Pedidos Comunicação

    Síncrona Assíncrona REST SOAP WS ActiveMQ RabbitMQ Notificação
  6. 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
  7. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS X Y Clientes

    Load Balancer Clientes Pedidos Load Balancer Pedidos Pedidos Pedidos Pedidos Escalabilidade X e Y
  8. 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)
  9. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS only / except

    resources :customers, only: [:index] GET (index)
  10. 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)
  11. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS with_options with_options only:

    :index do |option| option.resources :customers option.resources :orders end
  12. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS constraints resources :customers,

    contraints: { subdomain: 'clientes'} resources :orders, contraints: { subdomain: 'pedidos'}
  13. 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
  14. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS namespaces constraints subdomain:

    'api' do resources :customers resources :orders end controllers/customer_controller controllers/order_controller
  15. 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
  16. 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
  17. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS content negotiation {

    'Accept' => Mime::JSON } { 'Accept' => Mime::XML } HEADER
  18. 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
  19. 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)
  20. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Verbos HTTP GET

    POST PUT PATCH DELETE Obter dados sem efeito colateral.
  21. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Retorno sem body

    render nothing: true, status: 204 head 204 POST
  22. 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/ {
  23. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Basic Authentication Base64.encode64(username:senha)

    { 'Authorization' => 'Basic XXXXXXXXXX'} HEADER authenticate_or_request_with_http_basic Decode
  24. RUBYCONF 2015 MARCIO MANGAR MICROSERVICES on RAILS Token Token gerado

    pelo server Utilizado na comunicação com o cliente