Slide 1

Slide 1 text

Você mantém uma app monolítica e quer migrar para micro serviços? Eu posso te ajudar!

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

▾ 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/

Slide 4

Slide 4 text

▸ 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

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Micro serviços seriam legais…

Slide 7

Slide 7 text

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?

Slide 8

Slide 8 text

Muito trabalho e pouco tempo

Slide 9

Slide 9 text

Rails Engines Micro Serviços como um caminho para

Slide 10

Slide 10 text

LUCAS ALENCAR RESULTADOS DIGITAIS FULL STACK RUBY ENGINEER

Slide 11

Slide 11 text

Como usar Por que O que é Próximos passos Rails Engine ?

Slide 12

Slide 12 text

O que são Rails Engines?

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Código Rotas Testes Migrações de dados O que tem dentro de uma Engine?

Slide 15

Slide 15 text

class Rails::Application < Rails::Engine

Slide 16

Slide 16 text

irb(main):001:0> Rails.application.class.ancestors [MyApp::Application, Rails::Application, Rails::Engine, Rails::Railtie, Rails::Initializable, ActiveSupport::ToJsonWithActiveSupportEncoder, Object, PP::ObjectMixin, ActiveSupport::Dependencies::Loadable, JSON::Ext::Generator::GeneratorMethods::Object, ActiveSupport::Tryable, Kernel, BasicObject]

Slide 17

Slide 17 text

Como usar Rails Engines?

Slide 18

Slide 18 text

~/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

Slide 19

Slide 19 text

. ├── app ├── bin ├── config ├── db ├── engines │ ├── engineX │ ├── engineY │ └── engineZ ├── lib ├── public ├── test └── tmp

Slide 20

Slide 20 text

1 source 'https://rubygems.org' 2 3 path './engines' do 4 gem 'engineX' 5 gem 'engineY' 6 gem 'engineZ' 7 end 8 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NORMAL Gemfile

Slide 21

Slide 21 text

Banco de dados Aplicação Principal

Slide 22

Slide 22 text

Engine X Engine Y Engine Z Engine … Banco de dados Aplicação Principal

Slide 23

Slide 23 text

Por que usar Rails Engines?

Slide 24

Slide 24 text

Facilmente montáveis

Slide 25

Slide 25 text

1 YourApp::Application.routes.draw do 2 mount EngineX::Engine => '/engine_x' 3 end 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NORMAL  ⎇ masterɆ  routes.rb

Slide 26

Slide 26 text

Arquitetura familiar

Slide 27

Slide 27 text

. ├── app ├── config └── engines └── engineX ├── app │ ├── models │ ├── views │ ├── controllers │ └── helpers ├── config │ └── routes.rb ├── Gemfile └── engine_x.gemspec

Slide 28

Slide 28 text

Reforça responsabilidade única

Slide 29

Slide 29 text

Rails Engines são DE GRAÇA

Slide 30

Slide 30 text

Por que não micro serviços AGORA?

Slide 31

Slide 31 text

Adie problemas desnecessários para o futuro

Slide 32

Slide 32 text

Identifique pontos de separação cedo

Slide 33

Slide 33 text

Como viram Micro Serviços? Rails Engines

Slide 34

Slide 34 text

Engine X Engine Y Engine Z Engine … Banco de dados Aplicação Principal

Slide 35

Slide 35 text

Engine X Engine Y Engine Z Engine … Banco de dados Aplicação Principal

Slide 36

Slide 36 text

Engine X Engine Y Engine Z Engine … Banco de dados Aplicação Principal Aplicação Z

Slide 37

Slide 37 text

Aplicação Z Engine X Engine Y Engine Z Engine … Banco de dados Aplicação Principal Banco de dados

Slide 38

Slide 38 text

https://github.com/shageman/the_next_big_thing

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Identificação de pontos de separação cedo

Slide 41

Slide 41 text

Identificação de pontos de separação cedo Facilmente montáveis

Slide 42

Slide 42 text

Identificação de pontos de separação cedo Facilmente montáveis Engines são de graça

Slide 43

Slide 43 text

Identificação de pontos de separação cedo Facilmente montáveis Arquitetura da aplicação familiar Engines são de graça

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

Rails Engines Micro Serviços como um caminho para

Slide 46

Slide 46 text

LUCAS ALENCAR RESULTADOS DIGITAIS FULL STACK RUBY ENGINEER [email protected] @LUCASALENCAR RESULTADOS DIGITAIS TEM VAGAS!