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

Construindo aplicação Rails preparadas para uma...

Construindo aplicação Rails preparadas para uma arquitetura de Micro serviços

Talk apresentada no TDC SP 2017.

http://www.thedevelopersconference.com.br/tdc/2017/saopaulo/trilha-ruby

Como construir aplicações Rails preparadas para quebrar em serviços menores e especializados no futuro? Rails Engines é o caminho!

Descubra como construir aplicações quebráveis em serviços, se aproveitando da simplicidade de aplicações monolíticas e construindo um futuro melhor com arquiteturas de micro serviços.

Lucas André de Alencar

July 22, 2017
Tweet

More Decks by Lucas André de Alencar

Other Decks in Programming

Transcript

  1. ▾ app/ ▸ controllers/ ▾ models/ ▸ account_subscription/ ▸ admin/

    ▸ analytics/ ▸ api/ ▸ billing/ ▸ blog/ ▸ campaign/ ▸ company/ ▸ concerns/ ▸ dashboard/ ▸ email_data/ ▸ facebook_ads/ ▸ facebooks/ ▸ field/ ▸ field_adapter/ ▸ form_integration/ ▸ funnel/ ▸ landing_page/
  2. ▸ mail/ ▾ mailing/ ▸ email/ ▸ event/ ▸ mc_events/

    ▸ templates/ ▸ unsubscribe/ campaign_relatable.rb collection_keen_stats.rb dispatch.rb email.rb email_ab.rb email_campaign_factory.rb email_data_real_time_preview.rb email_model.rb email_template_default_values_parser.rb event.rb keen_stats.rb lead_email_activity_batch_queue.rb mail.rb mail_variation.rb
  3. u debugar os serviços? Qual vai ser o padrão de

    comunicação? Como lidar com transações na rede? Qual protocolos de segurança usar? Quais tipos de informações são necessárias? Como vou fazer auditoria Como vou migrar todo o meu banco de al a ordem das transação? ou fazer autenticação dos usuários? Quais protocolos de segurança usar? Como lidar com transações entre todos os serviç Como vou debugar os serviços? Como monitorar esse Como vou migrar todo o meu banco de dados? ue tipo de informações são necessárias? Como vou identificar qual serviço que ocorre Qual o padrão de comunicação entre esses serviços? Como vou fazer auditoria desse o vou migrar todo o meu banco de dados? s informações essenciais em cada transação? Quais protocolos de segurança usar? Como lidar com transações entre vários Como debugar todos os serviços? O qu Qual a ordem das transações? Paralelo ou serial?
  4. ~/code rails plugin new engines/engineX --mountable create create README.rdoc create

    Rakefile create engine_x.gemspec create MIT-LICENSE create .gitignore create Gemfile create app create app/controllers/engine_x/application_controller.rb create app/helpers/engine_x/application_helper.rb create app/mailers create app/models create app/views/layouts/engine_x/application.html.erb create app/assets/images/engine_x create app/assets/images/engine_x/.keep create config/routes.rb create lib/engine_x.rb create lib/tasks/engine_x_tasks.rake
  5. . ├── app ├── bin ├── config ├── db ├──

    engines │ ├── engineX │ ├── engineY │ └── engineZ ├── lib ├── public ├── test └── tmp
  6. 1 source 'https://rubygems.org' 2 3 path './engines' do 4 gem

    'engineX' 5 gem 'engineY' 6 gem 'engineZ' 7 end 8 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NORMAL Gemfile
  7. 1 YourApp::Application.routes.draw do 2 mount EngineX::Engine => '/engine_x' 3 end

    4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NORMAL  ⎇ masterɆ  routes.rb
  8. . ├── app ├── config └── engines └── engineX ├──

    app │ ├── models │ ├── views │ ├── controllers │ └── helpers ├── config │ └── routes.rb ├── Gemfile └── engine_x.gemspec
  9. Engine X Engine Y Engine Z Engine … Banco de

    dados Aplicação Principal Aplicação Z
  10. Aplicação Z Engine X Engine Y Engine Z Engine …

    Banco de dados Aplicação Principal Banco de dados
  11. Identificação de pontos de separação cedo Facilmente montáveis Arquitetura da

    aplicação familiar Adiar problemas para o futuro Engines são de graça