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

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
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Recently uploaded (20)

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...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

AP4R on RubyKaigi2007 (English only)