SlideShare a Scribd company logo
1 of 191
Download to read offline
Deployment de Rails
         Fabio Akita
     www.akitaonrails.com
Deployment de Rails
+7000 pessoas no WWR
+7000 pessoas no WWR



      +3 anos
+7000 pessoas no WWR



      +3 anos



 +8M hits no Google
“Rails Escala?”
“Sim, Rails Escala!”
Rails 1.0 em 2005
Rails 1.0 em 2005

    MySQL
Rails 1.0 em 2005

      MySQL

LightTPD + Fast CGI
Database/Storage
Database/Storage

  “Rails Stack”
Database/Storage

      “Rails Stack”

HTTP Server/Load Balancer
Database
MySQL


            PostgreSQL


Oracle/SQL Server/Informix/Sybase ...
MySQL


            PostgreSQL


Oracle/SQL Server/Informix/Sybase ...


           MEMCACHED
Rails App   Database
Rails App   Database
MEMCACHED



Rails App



             Database
MEMCACHED



Rails App



            Database          Slave
class Post < ActiveRecord::Base
end
class Post < ActiveRecord::Base
  acts_as_cached
  after_destroy :expire_cache
end
http://errtheblog.com/posts/57-kickin-ass-w-cachefu
HTTP Servers
Maduro
Apache 2.x
             Mais “pesado”
Maduro
Apache 2.x
             Mais “pesado”


Nginx 0.5       Rápido
Maduro
 Apache 2.x
                Mais “pesado”


 Nginx 0.5         Rápido


                  Rápido
Litespeed 3.x
                 Comercial
FastCGI   Instável
FastCGI   Instável


 SAPI     Rápido
FastCGI       Instável


    SAPI        Rápido

    HTTP
                Estável
Proxy Reverso
FastCGI          Instável


    SAPI           Rápido

    HTTP
                   Estável
Proxy Reverso

  mod_rails     recém-chegado
HTTP
         “Rails Stack”
Server
FCGI


HTTP
                “Rails Stack”
Server
FCGI


HTTP
         SAPI   “Rails Stack”
Server
FCGI


HTTP
         SAPI   “Rails Stack”
Server



         HTTP
“Rails Stack”


         FCGI


HTTP
         SAPI   “Rails Stack”
Server



         HTTP


                “Rails Stack”
Rails Stack
“Rails Stack”
“Rails Stack”




Ruby VM (MRI)
“Rails Stack”


 RubyGems


Ruby VM (MRI)
Ruby on Rails


        “Rails Stack”


       RubyGems


     Ruby VM (MRI)
Ruby on Rails

                 Mongrel
        “Rails Stack”


       RubyGems


     Ruby VM (MRI)
Rails, ActiveSupport, ActiveRecord, ActionPack
Rails, ActiveSupport, ActiveRecord, ActionPack


  ActionMailer, ActiveResource, ActionWS
Rails, ActiveSupport, ActiveRecord, ActionPack


  ActionMailer, ActiveResource, ActionWS


       Capistrano, Net-SSH, Net-SFTP
Rails, ActiveSupport, ActiveRecord, ActionPack


  ActionMailer, ActiveResource, ActionWS


       Capistrano, Net-SSH, Net-SFTP


          Mongrel, Mongrel Cluster
Rails, ActiveSupport, ActiveRecord, ActionPack


  ActionMailer, ActiveResource, ActionWS


       Capistrano, Net-SSH, Net-SFTP


          Mongrel, Mongrel Cluster


     Rmagick, Mini Magick, Image Science
Rails, ActiveSupport, ActiveRecord, ActionPack


  ActionMailer, ActiveResource, ActionWS


       Capistrano, Net-SSH, Net-SFTP


          Mongrel, Mongrel Cluster


     Rmagick, Mini Magick, Image Science


               Rspec, ZenTest
Mongrel   Multi-threaded
Mongrel   Multi-threaded




 Rails    Non-concurrent
Mongrel
Ruby on Rails


  Mongrel
Outras Gems


Ruby on Rails


  Mongrel
Sua Applicação


Outras Gems


Ruby on Rails


   Mongrel
“Rails Stack”
Mongrel Cluster
Mongrel Cluster

Load Balancer
Monit


God
objetos

Ruby VM
objetos



objetos

Ruby VM
GC
     objetos



     objetos

     Ruby VM
objetos
objetos

Ruby VM
Memória
     Livre
não desalocada




   objetos
   objetos

  Ruby VM
Monit



Rails App
Rails App   Monit
Monit



Rails App
Load
Balancer
Rails + Mongrel



           Rails + Mongrel



           Rails + Mongrel
 Load
Balancer
           Rails + Mongrel



           Rails + Mongrel



           Rails + Mongrel
Capistrano
capify .


 cap setup


cap deploy


cap rollback
capify .
set :application, quot;mey_aplicativoquot;
set :repository, quot;git://server.com/projeto.gitquot;
set :deploy_to, quot;/var/www/#{application}quot;

                    cap setup
default_run_options[:pty] = true
set :repository, quot;git@github.com:user/rails-app.gitquot;
set :scm, quot;gitquot;
set :scm_passphrase, quot;p00pquot;
set :user, quot;deployerquot;
                   cap deploy
set :branch, quot;origin/masterquot;
set :deploy_via, :remote_cache
set :git_shallow_clone, 1
set :git_enable_submodules, 1

                  cap rollback
capify .


 cap setup


cap deploy


cap rollback
capify .


 cap setup


cap deploy


cap rollback
capify .


 cap setup


cap deploy


cap rollback
Desktop
SCM
 (Git)




Desktop
SCM
 (Git)




Desktop
SCM
 (Git)




Desktop
SCM
                Staging
 (Git)
          Cap




Desktop
SCM
                Staging
 (Git)
          Cap




Desktop
SCM
                Staging
 (Git)
          Cap




Desktop
SCM
                Staging
 (Git)
          Cap




Desktop     Production
          Cap
SCM
                Staging
 (Git)
          Cap




Desktop     Production
          Cap
SCM
                Staging
 (Git)
          Cap




Desktop     Production
          Cap
SCM
Desktop
          (Git)
SCM
           Desktop
                                      (Git)



  Production     Production     Production      Production
Cap            Cap            Cap             Cap




  Production     Production     Production      Production
Cap            Cap            Cap             Cap
http://capify.org/
Quantos Mongrels?
Apache Bench
  • Blog Demo
  • Post resource
  • (1 query, 20 rows)
Apache Bench
Apache Bench

ab -n 1000 http://127.0.0.1:3000/posts
Apache Bench

ab -n 1000 http://127.0.0.1:3000/posts


              1 conexão
           1000 requisições
Apache Bench

ab -n 5000 -c 10 http://127.0.0.1:3000/posts
Apache Bench

ab -n 5000 -c 10 http://127.0.0.1:3000/posts


                10 conexões
              5000 requisições
Nginx - 3 Mongrels
Nginx - 3 Mongrels

req/s (mean)



    1000
  requests
 1 conexão

    5000
  requests
     10
 conexões
Nginx - 3 Mongrels

req/s (mean) Hello World



    1000
  requests     414.56
 1 conexão

    5000
  requests
               701.88
     10
 conexões
Nginx - 3 Mongrels
                            Posts
req/s (mean) Hello World
                           (puro)


    1000
  requests     414.56      24.44
 1 conexão

    5000
  requests
               701.88      39.31
     10
 conexões
Nginx - 3 Mongrels
                                     Posts
                            Posts
req/s (mean) Hello World            (page
                           (puro)
                                    cache)

    1000
  requests     414.56      24.44    1587.31
 1 conexão

    5000
  requests
               701.88      39.31    2220.24
     10
 conexões
Nginx - 3 Mongrels
                                     Posts     Posts
                            Posts
req/s (mean) Hello World            (page     (action
                           (puro)
                                    cache)    cache)

    1000
  requests     414.56      24.44    1587.31   106.29
 1 conexão

    5000
  requests
               701.88      39.31    2220.24   96.81
     10
 conexões
Memória
Memória

 1 Mongrel,
                ~30 Mb
1 Rails vazio
Memória

 1 Mongrel,
                ~30 Mb
1 Rails vazio

1 Mongrel,
                ~70Mb
1 Mephisto
http://www.scribd.com/doc/97641/
   JHoffmanRailsConfMay2007
Estratégias
Rails Cache (Page/Action/Fragment)
Rails Cache (Page/Action/Fragment)



         MEMCACHED
Rails Cache (Page/Action/Fragment)



         MEMCACHED


     Asynchronous Processes
  (BackgrounDRb, cronjobs, etc)
class PostsController < Application
  def action
    # código lento
  end
end

# http://www.site.com/posts
class PostsController < Application
  def action           PERIGO!
    # código lento
  end
end

# http://www.site.com/posts
class PostsController < Application
  def action
    MiddleMan.new_worker(
      :class => :heavy)
  end
end

class Heavy <
BackgrounDRb::Worker::RailsBase
  def do_work(options)
    # código lento
  end
end
Tempo de Execução




Rails Request
Tempo de Execução




   Rails Request



CACHE
Tempo de Execução




        Rails Request
Tempo de Execução




        Rails Request



                    Async
Tempo de Execução




Rails Request




   Outros
920 pageviews/dia

  ~30 req/s pico

  USD 370/mês
Deployment comum
Cap
Nginx




        Cap
MySQL
Nginx




        Cap
MySQL
Nginx
              Memcached


        Cap
MySQL
Nginx
                    Memcached


        Cap   Git
Desafios
Performance


Green Threads x Native Thread + GIL


       Memory Management


           C Extensions


          Interoperability
Performance


Green Threads x Native Thread + GIL


       Memory Management


           C Extensions


          Interoperability
Performance


Green Threads x Native Thread + GIL


       Memory Management


           C Extensions


          Interoperability
Performance


Green Threads x Native Thread + GIL


       Memory Management


           C Extensions


          Interoperability
Performance


Green Threads x Native Thread + GIL


       Memory Management


           C Extensions


          Interoperability
Instalação
Instalação
aptitude install apache2 apache2­mpm­prefork 
       ruby1.8 dev apache2­prefork­dev


        gem install passenger


./passenger­install­apache2­module


          cd /var/www ; rails .
Instalação
aptitude install apache2 apache2­mpm­prefork 
       ruby1.8 dev apache2­prefork­dev


        gem install passenger


./passenger­install­apache2­module


          cd /var/www ; rails .
Instalação
aptitude install apache2 apache2­mpm­prefork 
       ruby1.8 dev apache2­prefork­dev


        gem install passenger


./passenger­install­apache2­module


          cd /var/www ; rails .
Instalação
aptitude install apache2 apache2­mpm­prefork 
       ruby1.8 dev apache2­prefork­dev


        gem install passenger


./passenger­install­apache2­module


          cd /var/www ; rails .
LoadModule passenger_module /opt/local/lib/ruby/gems/1.8/gems/
  passenger-1.0.1/ext/apache2/mod_passenger.so
RailsSpawnServer /opt/local/lib/ruby/gems/1.8/gems/passenger-1.0.1/bin/
  passenger-spawn-server
RailsRuby /opt/local/bin/ruby

<Directory quot;/Users/akitaonrails/rails/blog/publicquot;>
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Users/akitaonrails/rails/blog/public
</VirtualHost>
Benchmarks
Mongrel   Thin   Passenger
Benchmarks
Mongrel   Thin   Passenger
Obrigado!


www.akitaonrails.com

More Related Content

What's hot

Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Ontico
 

What's hot (20)

Usenix lisa 2011
Usenix lisa 2011Usenix lisa 2011
Usenix lisa 2011
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 Minutes
 
How Flipkart scales PHP
How Flipkart scales PHPHow Flipkart scales PHP
How Flipkart scales PHP
 
Gemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyGemification plan of Standard Library on Ruby
Gemification plan of Standard Library on Ruby
 
Complex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBoxComplex Made Simple: Sleep Better with TorqueBox
Complex Made Simple: Sleep Better with TorqueBox
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and future
 
How to Begin Developing Ruby Core
How to Begin Developing Ruby CoreHow to Begin Developing Ruby Core
How to Begin Developing Ruby Core
 
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
 
Dependency Resolution with Standard Libraries
Dependency Resolution with Standard LibrariesDependency Resolution with Standard Libraries
Dependency Resolution with Standard Libraries
 
Devignition 2011
Devignition 2011Devignition 2011
Devignition 2011
 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
The details of CI/CD environment for Ruby
The details of CI/CD environment for RubyThe details of CI/CD environment for Ruby
The details of CI/CD environment for Ruby
 
Ruby 2.4 Internals
Ruby 2.4 InternalsRuby 2.4 Internals
Ruby 2.4 Internals
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring Rails
 
What is Rack Hijacking API
What is Rack Hijacking APIWhat is Rack Hijacking API
What is Rack Hijacking API
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting
 

Viewers also liked (7)

Encontro de TI - Arteccom
Encontro de TI - ArteccomEncontro de TI - Arteccom
Encontro de TI - Arteccom
 
Campus Party 2010
Campus Party 2010Campus Party 2010
Campus Party 2010
 
Claretiano 2009
Claretiano 2009Claretiano 2009
Claretiano 2009
 
Rails Summit - De Volta Ao Básico
Rails Summit - De Volta Ao BásicoRails Summit - De Volta Ao Básico
Rails Summit - De Volta Ao Básico
 
Aprendendo a Aprender - Alagoas Dev Day
Aprendendo a Aprender - Alagoas Dev DayAprendendo a Aprender - Alagoas Dev Day
Aprendendo a Aprender - Alagoas Dev Day
 
Fisl 10
Fisl 10Fisl 10
Fisl 10
 
Making Rails Really restful
Making Rails Really restfulMaking Rails Really restful
Making Rails Really restful
 

Similar to Fisl - Deployment

Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
Joseph Scott
 
Socket applications
Socket applicationsSocket applications
Socket applications
João Moura
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014
Hiroshi SHIBATA
 
Deploying JRuby Web Applications
Deploying JRuby Web ApplicationsDeploying JRuby Web Applications
Deploying JRuby Web Applications
Joe Kutner
 

Similar to Fisl - Deployment (20)

Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability Options
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options
 
.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
 
Ruby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developerRuby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developer
 
RubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - KeynoteRubyEnRails2007 - Dr Nic Williams - Keynote
RubyEnRails2007 - Dr Nic Williams - Keynote
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.js
 
TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011TorqueBox - Ruby Hoedown 2011
TorqueBox - Ruby Hoedown 2011
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
20140425 ruby conftaiwan2014
20140425 ruby conftaiwan201420140425 ruby conftaiwan2014
20140425 ruby conftaiwan2014
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
Deploying JRuby Web Applications
Deploying JRuby Web ApplicationsDeploying JRuby Web Applications
Deploying JRuby Web Applications
 
Python在豆瓣的应用
Python在豆瓣的应用Python在豆瓣的应用
Python在豆瓣的应用
 
Php assíncrono com_react_php
Php assíncrono com_react_phpPhp assíncrono com_react_php
Php assíncrono com_react_php
 
Everyday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsEveryday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.js
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 
Apache Camel K - Fredericia
Apache Camel K - FredericiaApache Camel K - Fredericia
Apache Camel K - Fredericia
 
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationSouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
 

More from Fabio Akita

More from Fabio Akita (20)

Devconf 2019 - São Carlos
Devconf 2019 - São CarlosDevconf 2019 - São Carlos
Devconf 2019 - São Carlos
 
Meetup Nerdzão - English Talk about Languages
Meetup Nerdzão  - English Talk about LanguagesMeetup Nerdzão  - English Talk about Languages
Meetup Nerdzão - English Talk about Languages
 
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
Desmistificando Blockchains p/ Developers - Criciuma Dev Conf 2018
 
Desmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SPDesmistificando Blockchains - 20o Encontro Locaweb SP
Desmistificando Blockchains - 20o Encontro Locaweb SP
 
Desmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter GoianiaDesmistificando Blockchains - Insiter Goiania
Desmistificando Blockchains - Insiter Goiania
 
Blockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7MastersBlockchain em 7 minutos - 7Masters
Blockchain em 7 minutos - 7Masters
 
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
Elixir  -Tolerância a Falhas para Adultos - GDG CampinasElixir  -Tolerância a Falhas para Adultos - GDG Campinas
Elixir -Tolerância a Falhas para Adultos - GDG Campinas
 
Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017Desmistificando Mitos de Tech Startups - Intercon 2017
Desmistificando Mitos de Tech Startups - Intercon 2017
 
30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby30 Days to Elixir and Crystal and Back to Ruby
30 Days to Elixir and Crystal and Back to Ruby
 
Uma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TIUma Discussão sobre a Carreira de TI
Uma Discussão sobre a Carreira de TI
 
THE CONF - Opening Keynote
THE CONF - Opening KeynoteTHE CONF - Opening Keynote
THE CONF - Opening Keynote
 
A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017A Journey through New Languages - Rancho Dev 2017
A Journey through New Languages - Rancho Dev 2017
 
Desmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - APDesmistificando Mitos de Startups - Sebrae - AP
Desmistificando Mitos de Startups - Sebrae - AP
 
A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017A Journey through New Languages - Guru Sorocaba 2017
A Journey through New Languages - Guru Sorocaba 2017
 
A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017A Journey through New Languages - Insiter 2017
A Journey through New Languages - Insiter 2017
 
A Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech DayA Journey through New Languages - Locaweb Tech Day
A Journey through New Languages - Locaweb Tech Day
 
A Journey through new Languages - Intercon 2016
A Journey through new Languages - Intercon 2016A Journey through new Languages - Intercon 2016
A Journey through new Languages - Intercon 2016
 
Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016Premature Optimization 2.0 - Intercon 2016
Premature Optimization 2.0 - Intercon 2016
 
Conexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização PrematuraConexão Kinghost - Otimização Prematura
Conexão Kinghost - Otimização Prematura
 
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All EvilThe Open Commerce Conference - Premature Optimisation: The Root of All Evil
The Open Commerce Conference - Premature Optimisation: The Root of All Evil
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Fisl - Deployment