SlideShare a Scribd company logo
1 of 172
Download to read offline
RubyKaigi 2007




AP4R
Kiwamu Kato & Shun’ichi Shinohara
      Future Architect, Inc.



                 1
• Introduction
• Demo
• Real world examples
• Technical topics
               2
Introduction

     3
Self Introduction

        4
Kiwamu Kato

• Majored in Civil Engineering
• Has Enhanced and maintained
 messaging middleware in company



                5
Kiwamu Kato
• Started Ruby since last year
• Leader of the AP4R team
• http://d.hatena.ne.jp/kiwamu/

                 6
shino
• Programmer, I love coding !
• The language of the year is C   or Haskell




                  7
shino
• Last year, made a debut to
 the OSS world
• http://d.hatena.ne.jp/ita-wasa/

                8
What is AP4R ?

      9
Lightweight

Messaging
      10
What is AP4R ?
• Asynchronous Processing for Ruby
• Loose coupling by messaging


                11
What can we do w/ AP4R ?

• Quicker response to users
• Load distribution


               12
Press release 2006/09/05




     http://itpro.nikkeibp.co.jp/article/NEWS/20060905/247218/
                         13
Key points are ..

        14
Lightweight
    and

  Robust

     15
When is it useful ?


         16
Quicker response
    to users


       17
If NO speedy response is needed,

 execute it later
Before
Client            Server


             A    B   C   D   ...




             19
After
Client   Server Messaging Server



         A   B




                 20
After
Client   Server Messaging Server



         A   B           C   D   ...




                 21
Useful cases
• Logging
• Sending mail
• Creating heavy summary data
• Collaboration with other systems
                22
Moreover,
load distribution


        23
Easy to scale out
Client   Server Messaging Server




                24
Easy to scale out
Client   Server Messaging Servers




                25
Only good things ?


        26
Sounds easy ?


      27
(Maybe) No


    28
If message deliveries
are NOT guaranteed,...


          29
it may lead to

 message lost and
message duplication

            30
In other words...


        31
•You can’t receive the
 goods despite payment !
•   Double withdrawals !

              32
Messages should be
delivered in a reliable way,



             33
No matter what happens
    • Database trouble
    • Network trouble
    • Server down
    • Busy and timeout
    • ... etc
              34
Lightweight
    and

Robust
     35
In Future Architect ...



           36
We use messaging a lot

• Developed own messaging library
• Named “RtFA”


               37
We use messaging a lot

• Pure Java
• Its own protocol, API (≠ JMS)
• Time-proven on various systems

               38
One of illustrative cases
  Mission critical system
in transportation business




      http://japan.internet.com/linuxtoday/20061228/5.html
                    39
PJ summary

• Over 100 million package data per day
• Load distribution and parallel processing
  on 8 nodes of Oracle 10g RAC




                    40
PJ summary

• Approx 100 servers
• Used “RtFA”, an in-house
 middleware



                41
Messaging is important
43
Lightweight

Messaging
       44
http://www.pragmaticprogrammer.com/titles/fr_j2r/



                                                         http://www.oreilly.co.jp/books/9784873113203/
                                                    45
From RtFA to AP4R

• Based on implementation/experiences with Java,
  kept good parts, improved bad parts
• Focus on ease of use        API, configuration




                         46
Lightweight
     and

   Robust
      47
Demo

 48
Outline
• Shopping store application
• Order and payment


                49
Shopping store app.
Client   Rails
                      Order
                         .


                      Payment


                 50
Loose coupling
                        AP4R
Client     Rails               Rails × 3




          Order

                   51
Loose coupling
                        AP4R
Client     Rails               Rails × 3




                           Payment
          Order

                   52
Loose coupling
                        AP4R
Client     Rails               Rails × 3




                           Payment
          Order                   Sleep 1




                   53
Outline
• Use mongrel cluster
• Stress by ab
• Monitor queue retaining status

               54
Real world
 examples

    55
Two examples

• Work With Rails
• Our internal project


                56
Working With Rails


   http://workingwithrails.com/


                57
WWR

• is who’s who for Rails developers
• listed 7,000 people
              from 104 countries



                58
59
WWR

• aggregates feeds from user’s blog
• has scaling problem in fetching
 them slow/stale



                60
WWR solution
• Queue Feeds
• Fetch async’ly

                        quot;Getting Distributed with Ruby on Railsquot;
                               slide #44 (from slideshare)



                   61
WWR solution

• Able to scale
• Flexible to feed types


               62
Internal project



       63
Briefing

• Work sheet management app.
    newly-building in Ruby
•   Labor cost accounting app.
    existing in Java



                    64
Requirements

• Quick and rich UI
• Replicate data between Java and
 Ruby



                65
With AP4R

• Separate loads from UI
• Invoke Java from Ruby async’ly


              66
Separate loads from UI
Client   Server   Messaging   Server




                   67
Separate loads from UI
Client   Server   Messaging   Server




                   67
Separate loads from UI
Client   Server   Messaging   Server




                   67
Separate loads from UI
Client   Server   Messaging     Server



         Create summary data,
         Send mails, etc.



                   68
Async’ly invoke Java
Client   Server   Messaging   Server




                   69
Async’ly invoke Java
Client   Server   Messaging   Server




                   69
Async’ly invoke Java
Client   Server       Messaging        Server



                  data replication, etc.




                        69
Async’ly invoke Java
Client   Server       Messaging        Server



                  data replication, etc.




                        69
Utilize Async! when

• Needless proc. for responce data
• Disjoined transactions are allowable
• External calls (often slow, unstable)


                    70
Technical topics


       71
Two topics here

• API to put messages
 and process flow
• Stored and Forward

              72
API to put messages
 and process flow



         73
ap4r.async_to({specify next},
              {request data}
              [,{more opts}])


    There’s also block style
    c.f. RDoc: http://ap4r.rubyforge.org/doc/


                   74
Class ShopController < ApplicationController

 def order           # synchronous side
   ...
   ap4r.async_to({:action => ‘payment’},
                 {:id => 1})

   redirect_to ...
 end

 def payment         # asynchronous side
   id = params[:id]
   ...
   render :text => “true”
 end

end
                         75
Process flow


     76
User   Apache   Rails   AP4R




                77
User   Apache       Rails         AP4R

            order

                         message put




                    78
User   Apache   Rails              AP4R




                        dispatch
                79
User   Apache    Rails   AP4R




           payment

                 80
Able to separate
sync/async servers



        81
User   Apache   Rails   AP4R




                82
Architecture
                                 AP4R

                                           HTTP

AP4R DRB   druby   DRB
                           reliable-msg
                                           SOAP

                                           XML
                                           -RPC

                         AP4R      MySQL

                     mongrel
           HTTP




                            83
Thanks to
                         DRb
            4%
      10%


                         reliable-msg
20%

                         mongrel
                 66%

                         rails
Stored And Forward



        85
Stored ?
Forward ?



    86
at-least-once
between Producer and Channel




             87
Enterprise Integration Patterns:
     Designing, Building, and
     Deploying Messaging Solutions
      by Gregor Hohpe,Bobby Woolf


     Guaranteed Delivery [122]




88
Typical flow
to create async. messages



            89
start




end



        90
start
        CRUD




end



               90
start
        CRUD

        commit




end



                 90
start
        CRUD

        commit

        message put / commit


end



                 90
start
        CRUD

        commit

        message put / commit


end
                 data

                  90
start
        CRUD

        commit

        message put / commit


end
                 data      messages

                  90
Ensure (some)
  Atomicness
          of
updating database and
  message creation
          91
On updating database

• Error occurs,
• Any following messages
   must NOT be queued


              92
On updating database

• Everything succeeded,
• All following messages
       must be queued


                93
☺
Relief

  94
Lightweight
    and

Robust
     95
Ap4r::Client#transaction
Class ShopController < ApplicationController
  def order             # synchronous side
    ap4r.transaction do
      ...               # CRUD on database

      ap4r.async_to ...
    end

    redirect_to ...
  end
end


                      96
Process flow changes
in queueing sequence


         97
Behind ap4r.transaction

ap4r.transaction do
  ...               # CRUD on database

 ap4r.async_to(...)




end
                        98
Behind ap4r.transaction

ap4r.transaction do
  ...               # CRUD on database


                      Insert into SAF table
 ap4r.async_to(...)




end
                        98
Behind ap4r.transaction

ap4r.transaction do
  ...               # CRUD on database


                      Insert into SAF table
 ap4r.async_to(...)




end                     Commit database



                        98
Behind ap4r.transaction

ap4r.transaction do
  ...               # CRUD on database


                      Insert into SAF table
 ap4r.async_to(...)




end                     Commit database
                        Queue messages


                        98
Behind ap4r.transaction

ap4r.transaction do
  ...               # CRUD on database


                      Insert into SAF table
 ap4r.async_to(...)

                                      Store


end                     Commit database
                        Queue messages


                        98
Behind ap4r.transaction

ap4r.transaction do
  ...               # CRUD on database


                      Insert into SAF table
 ap4r.async_to(...)

                                      Store


end                     Commit database
                        Queue messages
                                   Forward
                        98
Sequence in detail
  Without SAF



        99
start
        CRUD

        commit

        message put / commit


end
                 data          messages

                   100
start
        CRUD

        commit

        message put / commit


end
                 data          messages

                   100
start
        CRUD

        commit

        message put / commit


end
                 data          messages

                   101
start
        CRUD

        commit

        message put / commit


end
                 data          messages

                   101
start
        CRUD

        commit

        message put / commit



                         ☠
end
                 data          messages

                   101
start
        CRUD

        commit

        message put / commit



                         ☠
end
                 data          messages

                   101
start
        CRUD

        commit

        message put / commit



                         ☠
end
                 data          messages

                   101
start
        CRUD

        commit
                                counterchange
        message put / commit


end
                 data          messages

                   102
start
        CRUD

         message put / commit
                                counterchange
        commit


end
                 data       messages

                   103
start
        CRUD

         message put / commit

        commit


end
                 data       messages

                   104
start
        CRUD

         message put / commit

        commit


end
                 data       messages

                   104
start
        CRUD

         message put / commit

        commit


end
                 data       messages

                   105
start
        CRUD

         message put / commit

        commit


end
                 data       messages

                   105
start
        CRUD

         message put / commit

        commit



                         ☠
end
                 data        messages

                   105
start
        CRUD

         message put / commit

        commit



                         ☠
end
                 data        messages

                   105
start
        CRUD

         message put / commit

        commit



                         ☠
end
                 data        messages

                   105
Better Safe than Sorry
   • Database trouble
   • Network trouble
   • Server down
   • busy and timeout
   • ... etc
           106
☺
Embrace every exceptions
          ☠
           107
Sequence in detail
   With SAF



        108
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     109
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     110
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     110
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     111
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     111
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     111
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
                data             messages

                     111
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
                data             messages

                     111
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
                data             messages

                     111
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     112
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     112
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     113
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     113
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
               data              messages
             messages
                     113
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
               data              messages
             messages
                     113
CRUD
start
        SAF create

         commit
          message put / commit
                           Recoverable
        SAF update

                           ☺
end
               data               messages
             messages
                     113
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
               data              messages
             messages
                     113
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
               data              messages
             messages
                     113
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     114
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     114
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
                data             messages

                     115
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update
end
               data              messages
             messages
                     115
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
               data              messages
             messages
                     115
CRUD
start
        SAF create

         commit
          message put / commit

                           Duplicated
        SAF update

                           ☺
end
               data               messages
             messages
                     115
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
               data              messages
             messages
                     115
CRUD
start
        SAF create

         commit
          message put / commit

        SAF update

                           ☺
end
               data              messages
             messages
                     115
Ensure (some)
 Atomicness
of data and messages


         116
at-least-once
between Producer and Channel



             117
Summary


   118
• Messaging with simple API,
 simple configuration.

• Seamless collaboration with
 Rails


              119
• Automatic invocation of
 async proc.

• Guaranteed delivery by SAF

               120
Lightweight
    and

  Robust

     121
Future Plans


     122
Smooth operation ver.0.3.x

☑ Daemonize
☑ URL-rewrite filter
□ DLQ / SAF recovery
□ Protocols: Stomp, HTTP
             123
Monitoring ver.0.4.x

□ Coordinate with Cacti,
  Nagios, etc.
□ Many AP4R processes
□ Interactive management tool
                 124
Step to large scale   ver.0.5.x




□ Dynamic configuration
□ Automatic recovery
□ Long running
            125
Others

□ Security
□ Application testing support
□ Blocking queues

              126
AP4R@RubyForge
• wiki: http://ap4r.rubyforge.org/wiki/wiki.pl?HomePage

• source:    svn co svn://rubyforge.org/var/svn/ap4r



Your patches are welcome! Thank you.




                            127
•   Future Architect logo belong to Future Architect, Inc.
    Japan. All rights reserved.

•   Rails logo are trademarks of David Heinemeier
    Hansson. All rights reserved.

•   The Ruby logo is copyright c 2006, Yukihiro
    Matsumoto. It is released under the terms of the
    Creative Commons Attribution-ShareAlike 2.5 License.




                            128

More Related Content

What's hot

Atril-Déjà Vu Tea mserver 2 general presentation
Atril-Déjà Vu Tea mserver 2   general presentationAtril-Déjà Vu Tea mserver 2   general presentation
Atril-Déjà Vu Tea mserver 2 general presentationcohlmann
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaJiangjie Qin
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQBruce Snyder
 
IBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryIBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryMarkTaylorIBM
 
RabbitMQ vs Apache Kafka Part II Webinar
RabbitMQ vs Apache Kafka Part II WebinarRabbitMQ vs Apache Kafka Part II Webinar
RabbitMQ vs Apache Kafka Part II WebinarErlang Solutions
 
Rabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationRabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationEmre Gündoğdu
 
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - SlidesSeveralnines
 
Using and Benchmarking Galera in different architectures (PLUK 2012)
Using and Benchmarking Galera in different architectures (PLUK 2012)Using and Benchmarking Galera in different architectures (PLUK 2012)
Using and Benchmarking Galera in different architectures (PLUK 2012)Henrik Ingo
 
Messaging With Apache ActiveMQ
Messaging With Apache ActiveMQMessaging With Apache ActiveMQ
Messaging With Apache ActiveMQBruce Snyder
 
Improving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberImproving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberYing Zheng
 
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
High Availability with Galera Cluster - SkySQL Road Show 2013 in BerlinHigh Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
High Availability with Galera Cluster - SkySQL Road Show 2013 in BerlinMariaDB Corporation
 
Galera Multi Master Synchronous My S Q L Replication Clusters
Galera  Multi Master  Synchronous  My S Q L  Replication  ClustersGalera  Multi Master  Synchronous  My S Q L  Replication  Clusters
Galera Multi Master Synchronous My S Q L Replication ClustersPerconaPerformance
 
Rails infrastructure
Rails infrastructureRails infrastructure
Rails infrastructurequreshiomar
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
#lspe: Dynamic Scaling
#lspe: Dynamic Scaling #lspe: Dynamic Scaling
#lspe: Dynamic Scaling steveshah
 
MariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly AvailableMariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly AvailableMariaDB Corporation
 
Best Practice for Achieving High Availability in MariaDB
Best Practice for Achieving High Availability in MariaDBBest Practice for Achieving High Availability in MariaDB
Best Practice for Achieving High Availability in MariaDBMariaDB plc
 
Impact 2009 1783 Achieving Availability With W A Sz User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User ExperienceImpact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783 Achieving Availability With W A Sz User ExperienceElena Nanos
 

What's hot (19)

Atril-Déjà Vu Tea mserver 2 general presentation
Atril-Déjà Vu Tea mserver 2   general presentationAtril-Déjà Vu Tea mserver 2   general presentation
Atril-Déjà Vu Tea mserver 2 general presentation
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache Kafka
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQ
 
IBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster RecoveryIBM MQ - High Availability and Disaster Recovery
IBM MQ - High Availability and Disaster Recovery
 
IBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQIBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQ
 
RabbitMQ vs Apache Kafka Part II Webinar
RabbitMQ vs Apache Kafka Part II WebinarRabbitMQ vs Apache Kafka Part II Webinar
RabbitMQ vs Apache Kafka Part II Webinar
 
Rabbitmq & Kafka Presentation
Rabbitmq & Kafka PresentationRabbitmq & Kafka Presentation
Rabbitmq & Kafka Presentation
 
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
9 DevOps Tips for Going in Production with Galera Cluster for MySQL - Slides
 
Using and Benchmarking Galera in different architectures (PLUK 2012)
Using and Benchmarking Galera in different architectures (PLUK 2012)Using and Benchmarking Galera in different architectures (PLUK 2012)
Using and Benchmarking Galera in different architectures (PLUK 2012)
 
Messaging With Apache ActiveMQ
Messaging With Apache ActiveMQMessaging With Apache ActiveMQ
Messaging With Apache ActiveMQ
 
Improving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberImproving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at Uber
 
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
High Availability with Galera Cluster - SkySQL Road Show 2013 in BerlinHigh Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
High Availability with Galera Cluster - SkySQL Road Show 2013 in Berlin
 
Galera Multi Master Synchronous My S Q L Replication Clusters
Galera  Multi Master  Synchronous  My S Q L  Replication  ClustersGalera  Multi Master  Synchronous  My S Q L  Replication  Clusters
Galera Multi Master Synchronous My S Q L Replication Clusters
 
Rails infrastructure
Rails infrastructureRails infrastructure
Rails infrastructure
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
#lspe: Dynamic Scaling
#lspe: Dynamic Scaling #lspe: Dynamic Scaling
#lspe: Dynamic Scaling
 
MariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly AvailableMariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly Available
 
Best Practice for Achieving High Availability in MariaDB
Best Practice for Achieving High Availability in MariaDBBest Practice for Achieving High Availability in MariaDB
Best Practice for Achieving High Availability in MariaDB
 
Impact 2009 1783 Achieving Availability With W A Sz User Experience
Impact 2009 1783  Achieving  Availability With  W A Sz   User ExperienceImpact 2009 1783  Achieving  Availability With  W A Sz   User Experience
Impact 2009 1783 Achieving Availability With W A Sz User Experience
 

Similar to AP4R on RubyKaigi2007 (English only)

Deployment with Ruby on Rails
Deployment with Ruby on RailsDeployment with Ruby on Rails
Deployment with Ruby on RailsJonathan Weiss
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring RailsJonathan Weiss
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Coursepeter_marklund
 
Virtualization & Network Connectivity
Virtualization & Network Connectivity Virtualization & Network Connectivity
Virtualization & Network Connectivity itplant
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)Arnaud Bouchez
 
Serverless: A love hate relationship
Serverless: A love hate relationshipServerless: A love hate relationship
Serverless: A love hate relationshipJürgen Brüder
 
Akka gRPC quick-guide
Akka gRPC quick-guideAkka gRPC quick-guide
Akka gRPC quick-guideKnoldus Inc.
 
Akka gRPC quick-guide
Akka gRPC quick-guideAkka gRPC quick-guide
Akka gRPC quick-guideKnoldus Inc.
 
Database and Public Endpoints redundancy on Azure
Database and Public Endpoints redundancy on AzureDatabase and Public Endpoints redundancy on Azure
Database and Public Endpoints redundancy on AzureRadu Vunvulea
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE
 
MySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQLMySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQLTed Wennmark
 
Orchestrating Linux Containers while tolerating failures
Orchestrating Linux Containers while tolerating failuresOrchestrating Linux Containers while tolerating failures
Orchestrating Linux Containers while tolerating failuresDocker, Inc.
 
HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...
HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...
HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...Daehyeok Kim
 
9th docker meetup 2016.07.13
9th docker meetup 2016.07.139th docker meetup 2016.07.13
9th docker meetup 2016.07.13Amrita Prasad
 
Getting Distributed (With Ruby On Rails)
Getting Distributed (With Ruby On Rails)Getting Distributed (With Ruby On Rails)
Getting Distributed (With Ruby On Rails)martinbtt
 
Solve it Differently with Reactive Programming
Solve it Differently with Reactive ProgrammingSolve it Differently with Reactive Programming
Solve it Differently with Reactive ProgrammingSupun Dissanayake
 

Similar to AP4R on RubyKaigi2007 (English only) (20)

Deployment with Ruby on Rails
Deployment with Ruby on RailsDeployment with Ruby on Rails
Deployment with Ruby on Rails
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring Rails
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
Virtualization & Network Connectivity
Virtualization & Network Connectivity Virtualization & Network Connectivity
Virtualization & Network Connectivity
 
MySQL Fabric
MySQL FabricMySQL Fabric
MySQL Fabric
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)
 
Serverless: A love hate relationship
Serverless: A love hate relationshipServerless: A love hate relationship
Serverless: A love hate relationship
 
Kafka talk
Kafka talkKafka talk
Kafka talk
 
Akka gRPC quick-guide
Akka gRPC quick-guideAkka gRPC quick-guide
Akka gRPC quick-guide
 
Akka gRPC quick-guide
Akka gRPC quick-guideAkka gRPC quick-guide
Akka gRPC quick-guide
 
Database and Public Endpoints redundancy on Azure
Database and Public Endpoints redundancy on AzureDatabase and Public Endpoints redundancy on Azure
Database and Public Endpoints redundancy on Azure
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
MySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQLMySQL Fabric - High Availability & Automated Sharding for MySQL
MySQL Fabric - High Availability & Automated Sharding for MySQL
 
Orchestrating Linux Containers while tolerating failures
Orchestrating Linux Containers while tolerating failuresOrchestrating Linux Containers while tolerating failures
Orchestrating Linux Containers while tolerating failures
 
HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...
HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...
HyperLoop: Group-Based NIC-Offloading to Accelerate Replicated Transactions i...
 
YARN
YARNYARN
YARN
 
9th docker meetup 2016.07.13
9th docker meetup 2016.07.139th docker meetup 2016.07.13
9th docker meetup 2016.07.13
 
c-quilibrium R forecasting integration
c-quilibrium R forecasting integrationc-quilibrium R forecasting integration
c-quilibrium R forecasting integration
 
Getting Distributed (With Ruby On Rails)
Getting Distributed (With Ruby On Rails)Getting Distributed (With Ruby On Rails)
Getting Distributed (With Ruby On Rails)
 
Solve it Differently with Reactive Programming
Solve it Differently with Reactive ProgrammingSolve it Differently with Reactive Programming
Solve it Differently with Reactive Programming
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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...Martijn de Jong
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Recently uploaded (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

AP4R on RubyKaigi2007 (English only)