SlideShare ist ein Scribd-Unternehmen logo
1 von 172
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Messaging With Apache ActiveMQ
Messaging With Apache ActiveMQMessaging With Apache ActiveMQ
Messaging With Apache ActiveMQ
Bruce Snyder
 
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
PerconaPerformance
 
Rails infrastructure
Rails infrastructureRails infrastructure
Rails infrastructure
qureshiomar
 
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
Elena Nanos
 

Was ist angesagt? (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
 

Ähnlich wie AP4R on RubyKaigi2007 (English only)

Ähnlich wie 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
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
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...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

AP4R on RubyKaigi2007 (English only)