SlideShare una empresa de Scribd logo
1 de 160
MULTITENANCY EM RAILS
cortando custos e aumentando capacidade
RICARDO BERNARDELLI

         @rbernardelli

  http://github.com/bernardelli

     http://rbernardelli.com
FERNANDO HAMASAKI

          @prodis

  http://github.com/prodis

    http://prodis.blog.br
MULTITENANCY EM RAILS
cortando custos e aumentando capacidade
MULTITENANCY EM RAILS
cortando custos e aumentando capacidade
O QUE É MULTITENANCY?
COM O QUE SE PREOCUPAR?
COM O QUE SE PREOCUPAR?

      separação de dados
COM O QUE SE PREOCUPAR?

      separação de dados
        customização
COM O QUE SE PREOCUPAR?

      separação de dados
        customização
        escalabilidade
ABORDAGENS
ABORDAGENS
uma instância e uma base de dados
ABORDAGENS
     uma instância e uma base de dados


• facilidade para novo tenant
ABORDAGENS
     uma instância e uma base de dados


• facilidade para novo tenant
• deploy simples
ABORDAGENS
     uma instância e uma base de dados


• facilidade para novo tenant
• deploy simples
• arquivos centralizados
ABORDAGENS
     uma instância e uma base de dados


• facilidade para novo tenant
• deploy simples
• arquivos centralizados
• fácil gerenciamento dos dados compartilhados
ABORDAGENS
     uma instância e uma base de dados


• facilidade para novo tenant
• deploy simples
• arquivos centralizados
• fácil gerenciamento dos dados compartilhados
• interferências na performance
ABORDAGENS
ABORDAGENS
uma instância com vários schemas
ABORDAGENS
      uma instância com vários schemas


• facilidade de customização
ABORDAGENS
     uma instância com vários schemas


• facilidade de customização
• gerenciamento das migrations
ABORDAGENS
     uma instância com vários schemas


• facilidade de customização
• gerenciamento das migrations
• dificuldade no gerenciamento dos schemas
ABORDAGENS
     uma instância com vários schemas


• facilidade de customização
• gerenciamento das migrations
• dificuldade no gerenciamento dos schemas
• postgresql, oracle
ABORDAGENS
ABORDAGENS
uma instância com bases separadas
ABORDAGENS
     uma instância com bases separadas


• separação total de dados
ABORDAGENS
     uma instância com bases separadas


• separação total de dados
• dificuldades no gerenciamento das bases
ABORDAGENS
ABORDAGENS
várias instâncias com várias bases
ABORDAGENS
      várias instâncias com várias bases

• separação total de dados
ABORDAGENS
       várias instâncias com várias bases

• separação total de dados
• escalabilidade de um único tenant
ABORDAGENS
      várias instâncias com várias bases

• separação total de dados
• escalabilidade de um único tenant
• dificuldade no gerenciamento das bases
ABORDAGENS
      várias instâncias com várias bases

• separação total de dados
• escalabilidade de um único tenant
• dificuldade no gerenciamento das bases
• dificuldade de deploys
ABORDAGENS
      várias instâncias com várias bases

• separação total de dados
• escalabilidade de um único tenant
• dificuldade no gerenciamento das bases
• dificuldade de deploys
• alto custo de infra
ABORDAGENS
      várias instâncias com várias bases

• separação total de dados
• escalabilidade de um único tenant
• dificuldade no gerenciamento das bases
• dificuldade de deploys
• alto custo de infra
               (multi-instância)
EXEMPLOS PARA RAILS
EXEMPLOS PARA RAILS

• multitenant (https://github.com/wireframe/multitenant)
EXEMPLOS PARA RAILS

• multitenant (https://github.com/wireframe/multitenant)
• acts_as_tenant (https://github.com/ErwinM/acts_as_tenant)
EXEMPLOS PARA RAILS

• multitenant (https://github.com/wireframe/multitenant)
• acts_as_tenant (https://github.com/ErwinM/acts_as_tenant)
• devise + inherited_resources
EXEMPLOS PARA RAILS

• multitenant (https://github.com/wireframe/multitenant)
• acts_as_tenant (https://github.com/ErwinM/acts_as_tenant)
• devise + inherited_resources
• ...
MULTITENANCY EM RAILS
cortando custos e aumentando capacidade
MULTITENANCY EM RAILS
cortando custos e aumentando capacidade
MULTITENANCY EM RAILS
cortando custos e aumentando capacidade

         (ou como nós fizemos)
HISTÓRICO
loja pronta (antigo e-commerce Locaweb)
HISTÓRICO


equipe inicial sem experiência
      em ruby on rails
FATORES EXTERNOS
FATORES EXTERNOS


    time to market
FATORES EXTERNOS


    time to market
       pressão
DECISÕES
DECISÕES


aplicação do zero?
DECISÕES


           aplicação do zero?
utilizar solução já existente open-source?
DECISÕES




* http://2.bp.blogspot.com/_wWmWqyCEKEs/TA_SiflDXsI/AAAAAAAADlc/TOg9IwXGZfQ/s400/spree.png
DECISÕES




* http://2.bp.blogspot.com/_wWmWqyCEKEs/TA_SiflDXsI/AAAAAAAADlc/TOg9IwXGZfQ/s400/spree.png
COMO VAMOS ATENDER
  VÁRIOS CLIENTES ?
IDÉIAS
IDÉIAS
CLOUD ?




* http://jodsonfritz.files.wordpress.com/2011/03/illustratie-illustration_cloud-computing-lek-leak-wolken1-450x299.jpg
CLOUD ?




* http://jodsonfritz.files.wordpress.com/2011/03/illustratie-illustration_cloud-computing-lek-leak-wolken1-450x299.jpg
?
MULTI-INSTÂNCIA
PRIMEIRO SERVIDOR
       16 cpus
      18 gb ram

  apache + passenger
        mysql
    arquivos locais
PRIMEIRA ARQUITETURA
PRIMEIRA ARQUITETURA
MAGIC NUMBER
MAGIC NUMBER


   600
MAGIC NUMBER


   600
MAGIC NUMBER


     600
não aguentou 400!
O QUE FAZER AGORA?
12
DIFICULDADES
DIFICULDADES
    deploy
DIFICULDADES
    deploy
   migrations
DIFICULDADES
              deploy
            migrations
um tenant afetando tenants vizinhos
DIFICULDADES
                deploy
              migrations
  um tenant afetando tenants vizinhos
tenant com muitos arquivos distribuídos
DIFICULDADES
                deploy
              migrations
  um tenant afetando tenants vizinhos
tenant com muitos arquivos distribuídos
             manutenção
ALTA DISPONIBILIDADE




   * http://thatcrazytattooedbaldbroad.files.wordpress.com/2011/07/finger-pointing1.jpg
PRECISAMOS DE UMA NOVA
      ARQUITETURA
VANTAGENS A NOSSO FAVOR
VANTAGENS A NOSSO FAVOR


        rails usa rack
VANTAGENS A NOSSO FAVOR


         rails usa rack
     domínios centralizados
DESVANTAGENS
DESVANTAGENS


  bases separadas
DESVANTAGENS


    bases separadas
tenants descentralizados
BRAINSTORM
BRAINSTORM


trocar a conexão do banco
MAS, PODE ISSO ?




        * http://fjblogger.com/triboaser/files/2011/06/duvida.jpg
PROVA DE CONCEITO
RACK MIDDLEWARE
RACK MIDDLEWARE


config.middleware.use MultiTenant::Middleware
RACK MIDDLEWARE
def call(env)
  begin
    tenant = map.get_tenant(:address => address(env))

    return respond_302 unless tenant
    return respond_403 if tenant.suspended?

    tenant.current!

    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  rescue Exception => ex
    @logger.error ex.message + "n" + ex.backtrace.join("n")
    respond_500
  end
end
RACK MIDDLEWARE
def call(env)
  begin
    tenant = map.get_tenant(:address => address(env))

    return respond_302 unless tenant
    return respond_403 if tenant.suspended?

    tenant.current!

    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  rescue Exception => ex
    @logger.error ex.message + "n" + ex.backtrace.join("n")
    respond_500
  end
end
RACK MIDDLEWARE

module MultiTenant
  class TenantAddressMap
    ...

   def get_tenant(options = {})
     tenant_hash = @manager.get_tenant(options[:address])

     tenant_hash ? Tenant.new(tenant_hash) : nil
   end

    ...
  end
end
RACK MIDDLEWARE
def call(env)
  begin
    tenant = map.get_tenant(:address => address(env))

    return respond_302 unless tenant
    return respond_403 if tenant.suspended?

    tenant.current!

    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  rescue Exception => ex
    @logger.error ex.message + "n" + ex.backtrace.join("n")
    respond_500
  end
end
RACK MIDDLEWARE
def call(env)
  begin
    tenant = map.get_tenant(:address => address(env))

    return respond_302 unless tenant
    return respond_403 if tenant.suspended?

    tenant.current!

    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  rescue Exception => ex
    @logger.error ex.message + "n" + ex.backtrace.join("n")
    respond_500
  end
end
RACK MIDDLEWARE

module MultiTenant
  class Tenant
    ...

   def current!
     database_switcher.switch!(self)
     log_switcher.switch!(self)
     assets_switcher.switch!(self)
   end

    ...
  end
end
RACK MIDDLEWARE

module MultiTenant
  class Tenant
    ...

   def current!
     database_switcher.switch!(self)
     log_switcher.switch!(self)
     assets_switcher.switch!(self)
   end

    ...
  end
end
RACK MIDDLEWARE

module MultiTenant
  class DatabaseSwitcher
    ...

    def switch!(tenant)
      if ActiveRecord::Base.connection.current_database !=
tenant.config['database']
        ActiveRecord::Base.establish_connection(tenant.config)
      end
    end

    ...
  end
end
RACK MIDDLEWARE
def call(env)
  begin
    tenant = map.get_tenant(:address => address(env))

    return respond_302 unless tenant
    return respond_403 if tenant.suspended?

    tenant.current!

    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  rescue Exception => ex
    @logger.error ex.message + "n" + ex.backtrace.join("n")
    respond_500
  end
end
RACK MIDDLEWARE
def call(env)
  begin
    tenant = map.get_tenant(:address => address(env))

    return respond_302 unless tenant
    return respond_403 if tenant.suspended?

    tenant.current!

    @status, @headers, @response = @app.call(env)
    [@status, @headers, @response]
  rescue Exception => ex
    @logger.error ex.message + "n" + ex.backtrace.join("n")
    respond_500
  end
end
ESCALA ?
TESTES DE DESEMPENHO
     o que utilizamos:
TESTES DE DESEMPENHO
        o que utilizamos:


  máquina idêntica de produção
TESTES DE DESEMPENHO
        o que utilizamos:


  máquina idêntica de produção
    jmeter para fazer a carga
TESTES DE DESEMPENHO
TESTES DE DESEMPENHO

$ request-log-analyzer all-production.log
TESTES DE DESEMPENHO

   $ request-log-analyzer all-production.log

TaxonsController#show.html [GET]      71297 hits   25.9%

ProductsController#index.html [GET]   68717 hits   25.0%

ProductsController#show.html [GET]    64132 hits   23.3%
RESULTADOS
RESULTADOS
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
RESULTADOS

                   antes      depois

                               sem
instância/tenant    2
                           preocupações

     req/s           ?         300

consumo total
                   toda       estável
 de memória
E DEPOIS DO TESTE ?
METAS
METAS

ser fácil de escalar
METAS

ser fácil de escalar
  reduzir custos
METAS

ser fácil de escalar
  reduzir custos
alta disponibilidade
EXTRAÇÃO DE BASES
EXTRAÇÃO DE ARQUIVOS
NOVA ARQUITETURA
SERVIDOR

  16 cpus
 18 gb ram
SERVIDOR

                16 cpus
               18 gb ram



baixo consumo de memória e processamento
CLOUD ?




* http://jodsonfritz.files.wordpress.com/2011/03/illustratie-illustration_cloud-computing-lek-leak-wolken1-450x299.jpg
CLOUD ?




* http://jodsonfritz.files.wordpress.com/2011/03/illustratie-illustration_cloud-computing-lek-leak-wolken1-450x299.jpg
SERVIDOR
SERVIDOR


  8 cpus
SERVIDOR


  8 cpus

 10 gb ram
PROPAGANDA
PROPAGANDA
PROPAGANDA


crescimento em 5x a quantidade de tenants
COMO ESCALAR AINDA MAIS?
BALANCEADOR DE CARGA
BALANCEADOR DE CARGA



   Linux Virtual Server (LVS)
NOVA ARQUITETURA
NOVA ARQUITETURA
O QUE ESTÁ POR VIR
O QUE ESTÁ POR VIR


número de banco de dados crescendo
O QUE ESTÁ POR VIR


número de banco de dados crescendo
       logs estão distribuídos
CONCLUSÕES
CONCLUSÕES

tenha números concretos
CONCLUSÕES

  tenha números concretos
experimente, teste se funciona
CONCLUSÕES

       tenha números concretos
    experimente, teste se funciona
tenha solução ideal para o seu problema
CONCLUSÕES

       tenha números concretos
    experimente, teste se funciona
tenha solução ideal para o seu problema
     execute em pequenos passos
OBRIGADO !
PERGUNTAS ?
Ricardo Bernardelli   Fernando Hamasaki
   @rbernardelli           @prodis


             WebStore
   http://www.locaweb.com.br/Loja
REFERÊNCIAS
http://www.tectura.com.br/topics/abordagens_de_multitenant
http://msdn.microsoft.com/en-us/library/aa479086.aspx

imagem fail: http://hidefgames.com.br/wp-content/uploads/2011/04/failed1.gif

imagem approved: http://3.bp.blogspot.com/-fKxVGdl1KMo/TcdEdjCMuMI/
AAAAAAAABQM/FFJOzalJ7EU/s1600/approved-stamp-hi.png

Más contenido relacionado

Destacado

O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Multi-tenancy in Java
Multi-tenancy in JavaMulti-tenancy in Java
Multi-tenancy in Javaseges
 
Multi Tenancy With Python and Django
Multi Tenancy With Python and DjangoMulti Tenancy With Python and Django
Multi Tenancy With Python and Djangoscottcrespo
 
Multi-tenancy: Winning formula for a PaaS
Multi-tenancy: Winning formula for a PaaSMulti-tenancy: Winning formula for a PaaS
Multi-tenancy: Winning formula for a PaaSSrinath Perera
 
E-commerce product classification with deep learning
E-commerce product classification with deep learning E-commerce product classification with deep learning
E-commerce product classification with deep learning Christopher Bonnett Ph.D
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EERodrigo Cândido da Silva
 
Multi-tenancy with Rails
Multi-tenancy with RailsMulti-tenancy with Rails
Multi-tenancy with RailsPaul Gallagher
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018André Luiz Forchesatto
 
Saa s multitenant database architecture
Saa s multitenant database architectureSaa s multitenant database architecture
Saa s multitenant database architecturemmubashirkhan
 
Understanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce PlatformUnderstanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce PlatformSalesforce Developers
 

Destacado (10)

O framework spring
O framework springO framework spring
O framework spring
 
Multi-tenancy in Java
Multi-tenancy in JavaMulti-tenancy in Java
Multi-tenancy in Java
 
Multi Tenancy With Python and Django
Multi Tenancy With Python and DjangoMulti Tenancy With Python and Django
Multi Tenancy With Python and Django
 
Multi-tenancy: Winning formula for a PaaS
Multi-tenancy: Winning formula for a PaaSMulti-tenancy: Winning formula for a PaaS
Multi-tenancy: Winning formula for a PaaS
 
E-commerce product classification with deep learning
E-commerce product classification with deep learning E-commerce product classification with deep learning
E-commerce product classification with deep learning
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
 
Multi-tenancy with Rails
Multi-tenancy with RailsMulti-tenancy with Rails
Multi-tenancy with Rails
 
Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018Spring Security e Spring Boot Aula - 2018
Spring Security e Spring Boot Aula - 2018
 
Saa s multitenant database architecture
Saa s multitenant database architectureSaa s multitenant database architecture
Saa s multitenant database architecture
 
Understanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce PlatformUnderstanding Multitenancy and the Architecture of the Salesforce Platform
Understanding Multitenancy and the Architecture of the Salesforce Platform
 

Similar a Multitenancy

DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)Caio Candido
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRAmazon Web Services LATAM
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Docker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalarDocker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalargustavomtborges
 
Armazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebsArmazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebsAmazon Web Services LATAM
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Ricardo Ferreira
 
Evento CA ArcServe D2D on Demand
Evento CA ArcServe D2D on DemandEvento CA ArcServe D2D on Demand
Evento CA ArcServe D2D on DemandAllen Informática
 
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Ricardo Ferreira Costa
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Amazon Web Services LATAM
 

Similar a Multitenancy (20)

DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
Road to serverless
Road to serverlessRoad to serverless
Road to serverless
 
DevTalk 08/2019
DevTalk 08/2019DevTalk 08/2019
DevTalk 08/2019
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
Docker.io:
Docker.io: Docker.io:
Docker.io:
 
Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Docker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalarDocker Swarm - Sua aplicação pronta para escalar
Docker Swarm - Sua aplicação pronta para escalar
 
Armazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebsArmazenamento+de+alta+disponibilidade+com+amazon+ebs
Armazenamento+de+alta+disponibilidade+com+amazon+ebs
 
ArcServe - UDP
ArcServe - UDPArcServe - UDP
ArcServe - UDP
 
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
Blueprints & Patterns de Arquitetura para Sistemas que Escalam Linearmente (p...
 
Evento CA ArcServe D2D on Demand
Evento CA ArcServe D2D on DemandEvento CA ArcServe D2D on Demand
Evento CA ArcServe D2D on Demand
 
Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...Serverless Containers - execute instâncias de containers do Azure sob demanda...
Serverless Containers - execute instâncias de containers do Azure sob demanda...
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Overview Azure
Overview AzureOverview Azure
Overview Azure
 
Azure Overview
Azure OverviewAzure Overview
Azure Overview
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
 

Último

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Multitenancy