SlideShare ist ein Scribd-Unternehmen logo
1 von 107
The WebCo Way:
O que fazemos &
Como fazemos




Manoel Lemos            [CTO & Founder]




Campus Party 2009 - Desenvolvimento
São Paulo, SP, Brasil
Acompanhe e participe



  #cparty
http://live.blogblogs.com.br/
We’re 40 people
today!
BlogBlogs Status
Business Numbers     Traffic Numbers
 115.000 users        7.5M PageViews / month
 200.000 blogs        3.5M Uniques / month
 2.500.000 posts      Top 5000 Alexa Global
 250 users / day      Top 120 Alexa Brasil
 150 blogs / day      50M Widget
                      Impressions / month
 7.000 posts / day
Scaling is a process
complicated and painful!
Its impossible to predict with accuracy
There are hidden bottlenecks
Sometimes you need to step back
Sometimes you need to re-factor everything
There are no “silver-bullets”
Complexity will grow with you
Growth never happens in a
single dimension
Traffic : more users, more transactions, more downloads...
Size : database, memory, bandwidth...
Complexity : algorithms, architecture, infrastructure...
Organization : team, communication, processes...
Business : models, partners, suppliers...
Mostly the issues grow faster than linearly!!!
Today
 1.7MM
daily impr.
httpd
mongrel




mysql
httpd
mongrel
mongrel
mongrel


mysql
httpd
 mongrel
 mongrel
 mongrel
memcached
  mysql
httpd
 mongrel
 mongrel
 mongrel
memcached
  mysql
httpd
 mongrel
 mongrel
 mongrel
memcached
  mysql
load balancing



  httpd                 httpd
 mongrel               mongrel
 mongrel               mongrel
 mongrel               mongrel
memcached             memcached
  mysql
load balancing



  httpd       httpd            httpd
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
memcached   memcached        memcached
                mysql
load balancing



  httpd       httpd            httpd
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
memcached   memcached        memcached




                mysql
load balancing



  httpd       httpd            httpd
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
memcached   memcached        memcached




                mysql
load balancing



  httpd       httpd            httpd
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
 mongrel     mongrel          mongrel
memcached   memcached        memcached




                mysql
load balancing



  httpd         httpd          httpd
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel


memcached   memcached        memcached



                mysql
load balancing



  httpd         httpd          httpd
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
memcached   memcached        memcached



                mysql
load balancing



  httpd         httpd          httpd
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
memcached   memcached        memcached



                mysql
load balancing



  httpd         httpd          httpd
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
 mongrel       mongrel        mongrel
memcached   memcached        memcached



                mysql
load balancing 1 (web)



  httpd            httpd               httpd
 mongrel          mongrel             mongrel
 mongrel          mongrel             mongrel
 mongrel          mongrel             mongrel
 mongrel          mongrel             mongrel
memcached       memcached            memcached



                    mysql
load balancing 1 (web)                                   load balancing 2 (widgets)



  httpd            httpd               httpd               httpd              httpd                 httpd
 mongrel          mongrel             mongrel             mongrel            mongrel               mongrel
 mongrel          mongrel             mongrel             mongrel            mongrel               mongrel
 mongrel          mongrel             mongrel             mongrel            mongrel               mongrel
 mongrel          mongrel             mongrel             mongrel            mongrel               mongrel
memcached       memcached            memcached           memcached         memcached              memcached



                                                 mysql
load balancing 1 (web)                                         load balancing 2 (widgets)



  httpd            httpd               httpd                      httpd             httpd                 httpd
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
memcached       memcached            memcached              memcached            memcached              memcached



                                                mysql (master)




                                                mysql (slave)
load balancing 1 (web)                                         load balancing 2 (widgets)



  httpd            httpd               httpd                      httpd             httpd                 httpd
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
memcached       memcached            memcached              memcached            memcached              memcached



                    mysql                       mysql (master)




                                                mysql (slave)
load balancing 1 (web)                                         load balancing 2 (widgets)



  httpd            httpd               httpd                      httpd             httpd                 httpd
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
memcached       memcached            memcached              memcached            memcached              memcached



                    mysql                       mysql (master)




                                                mysql (slave)
load balancing 1 (web)                                         load balancing 2 (widgets)



  httpd            httpd               httpd                      httpd             httpd                 httpd
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
 mongrel          mongrel             mongrel                    mongrel           mongrel               mongrel
memcached       memcached            memcached              memcached            memcached              memcached



                    mysql                       mysql (master)




                                                mysql (slave)
load balancing 1 (web)                                        load balancing 2 (widgets)



  httpd            httpd              httpd                      httpd             httpd                httpd
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel




                    mysql                      mysql (master)




                                               mysql (slave)




memcached       memcached




memcached       memcached
load balancing 1 (web)                                        load balancing 2 (widgets)



  httpd            httpd              httpd                      httpd             httpd                httpd
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel




                    mysql                      mysql (master)




                                               mysql (slave)




memcached       memcached




memcached       memcached
load balancing 1 (web)                                        load balancing 2 (widgets)



  httpd            httpd              httpd                      httpd             httpd                httpd
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel




                    mysql                      mysql (master)




                                               mysql (slave)




memcached       memcached            Robot                      Robot




memcached       memcached            Robot                      Robot
load balancing 1 (web)                                        load balancing 2 (widgets)



  httpd            httpd              httpd                      httpd             httpd                httpd
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel              mongrel




                    mysql                      mysql (master)




                                               mysql (slave)




                                                                                   Indexer              Indexer
memcached       memcached            Robot                      Robot
                                                                                  (Search)             (Search)




memcached       memcached            Robot                      Robot
load balancing 1 (web)                                        load balancing 2 (widgets)



  httpd            httpd              httpd                      httpd             httpd                    httpd
 mongrel          mongrel            mongrel                    mongrel           mongrel                  mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel                  mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel                  mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel                  mongrel
 mongrel          mongrel            mongrel                    mongrel           mongrel                  mongrel




                    mysql                      mysql (master)




                                               mysql (slave)




                                                                                   Indexer                  Indexer
memcached       memcached            Robot                      Robot
                                                                                  (Search)                 (Search)




                                                                                   httpd                    httpd
                                                                                  mongrel                  mongrel
                                                                                  mongrel                  mongrel
memcached       memcached            Robot                      Robot
                                                                                  mongrel                  mongrel
                                                                                  mongrel                  mongrel
                                                                                  mongrel                  mongrel



                                                                                        load balancing 3 (API)
load balancing 1 (web)                                          load balancing 2 (widgets)




 mongrels         mongrels           mongrels                    mongrels           mongrels                mongrels




                    mysql                       mysql (master)




                                                mysql (slave)




                                                                                     Indexer                  Indexer
memcached       memcached             Robot                       Robot
                                                                                    (Search)                 (Search)




memcached       memcached             Robot                       Robot             mongrels                mongrels




                                                                                          load balancing 3 (API)
load balancing



mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels




 Robot




 Robot




                                                Indexer
                       memcached   memcached
                                               (Search)

 mysql      mysql
(master)   (master)

                                                Indexer
                       memcached   memcached
                                               (Search)
load balancing



mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels




 Robot




 Robot




                                                Indexer
                       memcached   memcached
                                               (Search)

 mysql      mysql
(master)   (master)

                                                Indexer
                       memcached   memcached
                                               (Search)
load balancing                                            load balancing



mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




 Robot                                                     Robot




 Robot                                                     Robot




                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)

 mysql      mysql                                          mysql      mysql
(master)   (master)                                       (master)   (master)

                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)
load balancing                                            load balancing



mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




 Robot                                                     Robot




 Robot                                                     Robot




                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)

 mysql      mysql                                          mysql      mysql
(master)   (master)                                       (master)   (master)

                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)
load balancing                                            load balancing



mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




 Eureca!! Ideas...
mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels


  Single Sign On
Shared Resources
 Robot                                                     Robot




Integrated Search
    and more...
 Robot                                                     Robot




                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)

 mysql      mysql                                          mysql      mysql
(master)   (master)                                       (master)   (master)

                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)
load balancing                                            load balancing



mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




 Robot                                                     Robot




 Robot                                                     Robot




                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)

 mysql      mysql                                          mysql      mysql
(master)   (master)                                       (master)   (master)

                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)
load balancing                                            load balancing



mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels               mongrels   mongrels     mongrels   mongrels




                                                               #howto ?
 Robot                                                     Robot




 Robot                                                     Robot




                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)

 mysql      mysql                                          mysql      mysql
(master)   (master)                                       (master)   (master)

                                                Indexer                                                   Indexer
                       memcached   memcached                                     memcached   memcached
                                               (Search)                                                  (Search)
load balancing                                load balancing



mongrels   mongrels     mongrels    sinatra   mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels   mongrels   mongrels     mongrels   mongrels
load balancing                                                         load balancing



mongrels   mongrels     mongrels    sinatra                            mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels                            mongrels   mongrels     mongrels   mongrels




                                                                                                Indexer    Indexer
                                                                        Robot      Robot
                                   memcached   memcached   memcached
                                                                                               (Search)   (Search)

 mysql     mysql        mysql
(master)   (slave)      (slave)

                                                                                                Indexer    Indexer
                                                                        Robot      Robot
                                   memcached   memcached   memcached
                                                                                               (Search)   (Search)
load balancing                                                         load balancing



mongrels   mongrels     mongrels    sinatra                            mongrels   mongrels     mongrels   mongrels




mongrels   mongrels     mongrels   mongrels                            mongrels   mongrels     mongrels   mongrels




                                                                                   ActiveDNA (REST)



                                                                                                Indexer    Indexer
                                                                        Robot      Robot
                                   memcached   memcached   memcached
                                                                                               (Search)   (Search)

 mysql     mysql        mysql
(master)   (slave)      (slave)

                                                                                                Indexer    Indexer
                                                                        Robot      Robot
                                   memcached   memcached   memcached
                                                                                               (Search)   (Search)
load balancing                                                         load balancing



 mongrels     mongrels     mongrels    sinatra                            mongrels   mongrels     mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                            mongrels   mongrels     mongrels   mongrels




                                                    ActiveDNA (REST)


   DNA
Credentials
  (PHP)




                                                                                      ActiveDNA (REST)



                                                                                                   Indexer    Indexer
                                                                           Robot      Robot
                                      memcached   memcached   memcached
                                                                                                  (Search)   (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                   Indexer    Indexer
                                                                           Robot      Robot
                                      memcached   memcached   memcached
                                                                                                  (Search)   (Search)
load balancing                                                         load balancing



 mongrels     mongrels     mongrels    sinatra                            mongrels   mongrels     mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                            mongrels   mongrels     mongrels   mongrels




                                                    ActiveDNA (REST)


   DNA          DNA
Credentials    Profile
  (PHP)        (PHP)




                                                                                      ActiveDNA (REST)



                                                                                                   Indexer    Indexer
                                                                           Robot      Robot
                                      memcached   memcached   memcached
                                                                                                  (Search)   (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                   Indexer    Indexer
                                                                           Robot      Robot
                                      memcached   memcached   memcached
                                                                                                  (Search)   (Search)
load balancing                                                         load balancing



 mongrels     mongrels     mongrels    sinatra                            mongrels   mongrels     mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                            mongrels   mongrels     mongrels   mongrels




                                                    ActiveDNA (REST)


   DNA          DNA          DNA
Credentials    Profile      Avatars
  (PHP)        (PHP)        (PHP)




                                                                                      ActiveDNA (REST)



                                                                                                   Indexer    Indexer
                                                                           Robot      Robot
                                      memcached   memcached   memcached
                                                                                                  (Search)   (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                   Indexer    Indexer
                                                                           Robot      Robot
                                      memcached   memcached   memcached
                                                                                                  (Search)   (Search)
load balancing                                                           load balancing



 mongrels     mongrels     mongrels    sinatra                              mongrels   mongrels     mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                              mongrels   mongrels     mongrels   mongrels




                                                     ActiveDNA (REST)


   DNA          DNA          DNA         DNA         DNA
Credentials    Profile      Avatars     Scoring    SocialGraph
  (PHP)        (PHP)        (PHP)       (C++)      (Python)




                                                                                        ActiveDNA (REST)



                                                                                                     Indexer    Indexer
                                                                             Robot      Robot
                                      memcached   memcached     memcached
                                                                                                    (Search)   (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                     Indexer    Indexer
                                                                             Robot      Robot
                                      memcached   memcached     memcached
                                                                                                    (Search)   (Search)
load balancing                                                             load balancing



 mongrels     mongrels     mongrels    sinatra                              mongrels    mongrels      mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                              mongrels    mongrels      mongrels   mongrels




                                                     ActiveDNA (REST)


   DNA          DNA          DNA         DNA         DNA           DNA         DNA         DNA          DNA         DNA
Credentials    Profile      Avatars     Scoring    SocialGraph   Messaging   Messaging   Messaging    Messaging   Messaging
  (PHP)        (PHP)        (PHP)       (C++)      (Python)      (Erlang)    (Erlang)    (Erlang)     (Erlang)    (Erlang)




                                                                                          ActiveDNA (REST)



                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)
load balancing                                                             load balancing



 mongrels     mongrels     mongrels    sinatra                              mongrels    mongrels      mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                              mongrels    mongrels      mongrels   mongrels




                                                     ActiveDNA (REST)

                                                       load balancing


   DNA          DNA          DNA         DNA         DNA           DNA         DNA         DNA          DNA         DNA
Credentials    Profile      Avatars     Scoring    SocialGraph   Messaging   Messaging   Messaging    Messaging   Messaging
  (PHP)        (PHP)        (PHP)       (C++)      (Python)      (Erlang)    (Erlang)    (Erlang)     (Erlang)    (Erlang)




                                                                                          ActiveDNA (REST)

                                                                                            load balancing



                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)
load balancing                                                             load balancing



 mongrels     mongrels     mongrels    sinatra                              mongrels    mongrels      mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                              mongrels    mongrels      mongrels   mongrels




                                                     ActiveDNA (REST)

                                                       load balancing


   DNA          DNA          DNA         DNA         DNA           DNA         DNA         DNA          DNA         DNA
Credentials    Profile      Avatars     Scoring    SocialGraph   Messaging   Messaging   Messaging    Messaging   Messaging
  (PHP)        (PHP)        (PHP)       (C++)      (Python)      (Erlang)    (Erlang)    (Erlang)     (Erlang)    (Erlang)




                                                                                          ActiveDNA (REST)

                                                                                            load balancing



                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)
load balancing                                                             load balancing



 mongrels     mongrels     mongrels    sinatra                              mongrels    mongrels      mongrels   mongrels




 mongrels     mongrels     mongrels   mongrels                              mongrels    mongrels      mongrels   mongrels




                                                     ActiveDNA (REST)

                                                       load balancing


   DNA          DNA          DNA         DNA         DNA           DNA         DNA         DNA          DNA         DNA
Credentials    Profile      Avatars     Scoring    SocialGraph   Messaging   Messaging   Messaging    Messaging   Messaging
  (PHP)        (PHP)        (PHP)       (C++)      (Python)      (Erlang)    (Erlang)    (Erlang)     (Erlang)    (Erlang)




                                                                                          ActiveDNA (REST)

                                                                                            load balancing



                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)

  mysql       mysql        mysql
 (master)     (slave)      (slave)

                                                                                                       Indexer     Indexer
                                                                             Robot       Robot
                                      memcached   memcached     memcached
                                                                                                      (Search)    (Search)
load balancing                                                             load balancing



 mongrels     mongrels      mongrels    sinatra                              mongrels    mongrels      mongrels   mongrels




              humm...
 mongrels     mongrels      mongrels   mongrels                              mongrels    mongrels      mongrels   mongrels




               PHP...                                 ActiveDNA (REST)


               WTF??!!                                  load balancing


    DNA         DNA           DNA         DNA         DNA           DNA         DNA         DNA          DNA         DNA
Credentials    Profile       Avatars     Scoring    SocialGraph   Messaging   Messaging   Messaging    Messaging   Messaging
Credentials
   (PHP)       (PHP)         (PHP)       (C++)      (Python)      (Erlang)    (Erlang)    (Erlang)     (Erlang)    (Erlang)
  (PHP)




                                                                                           ActiveDNA (REST)

                                                                                             load balancing



                                                                                                        Indexer     Indexer
                                                                              Robot       Robot
                                       memcached   memcached     memcached
                                                                                                       (Search)    (Search)

  mysql        mysql        mysql
 (master)      (slave)      (slave)

                                                                                                        Indexer     Indexer
                                                                              Robot       Robot
                                       memcached   memcached     memcached
                                                                                                       (Search)    (Search)
load balancing                                                             load balancing



 mongrels     mongrels      mongrels    sinatra                              mongrels    mongrels      mongrels   mongrels




              humm...
 mongrels     mongrels      mongrels   mongrels                              mongrels    mongrels      mongrels   mongrels




               PHP...                                 ActiveDNA (REST)


               WTF??!!                                  load balancing


   DNA          DNA           DNA         DNA         DNA           DNA         DNA         DNA          DNA         DNA
Credentials    Profile       Avatars     Scoring    SocialGraph   Messaging   Messaging   Messaging    Messaging   Messaging
  (PHP)        (PHP)         (PHP)       (C++)      (Python)      (Erlang)    (Erlang)    (Erlang)     (Erlang)    (Erlang)




                                                                                           ActiveDNA (REST)

                                                                                             load balancing



                                                                                                        Indexer     Indexer
                                                                              Robot       Robot
                                       memcached   memcached     memcached
                                                                                                       (Search)    (Search)

  mysql        mysql        mysql
 (master)      (slave)      (slave)

                                                                                                        Indexer     Indexer
                                                                              Robot       Robot
                                       memcached   memcached     memcached
                                                                                                       (Search)    (Search)
Active DNA
The problem : time-to-market & development time
The solution : ready-for-use SWAT DNA components
The layer : Active DNA, a lightweight, RESTful, SWAT
DNA client API translating REST calls into fully realized
Ruby objects
Pros
  Complete abstraction of the component’s complexity.
  It’s just Ruby, very small learning curve for devs.
Active DNA
             Application




             REST API
       SWAT DNA Component
Active DNA
             Application




             REST API
       SWAT DNA Component
Active DNA
             Application




             REST Client


              REST API
       SWAT DNA Component
Active DNA
                   Application




    Query Runner
                   REST Client


                    REST API
           SWAT DNA Component
Active DNA
                   Application




    Query Runner                 Query Translator
                   REST Client


                    REST API
           SWAT DNA Component
Active DNA
                   Application


              Component Layer
    Query Runner                 Query Translator
                   REST Client


                    REST API
           SWAT DNA Component
class ActiveDNA::ProfileEntry < ActiveDNA::Base

  uses :profile

  key :key, :suffix => :entry

  depends_on :profile_id

  attributes :type, :group, :level, :value => :json, :is_unique => :boolean

  validates_presence_of :value, :message => quot;The value must be informedquot;
  validates_presence_of :profile_id, :message => quot;Profile must be informedquot;
  validates_presence_of :group, :message => quot;The group must be informedquot;

  validates_inclusion_of :type,
    :in => %w(boolean email float general guid integer url),
    :message => quot;The type must be informedquot;

end
class RegistrationController < ApplicationController

  def create_credential(profile_id)

      returning credential = ActiveDNA::Credential.new do

      credential.credential_identifier = self.identifier
      credential.credential_type = self.identifier_type ||
IDENTIFIER_TYPE_EMAIL
      credential.credential_status = quot;enabledquot;
      credential.user_id = Profile.find(:first, :conditions => { :profile_id
=> profile_id }).user_id
      credential.password = self.password if self.identifier_type ==
IDENTIFIER_TYPE_EMAIL
      credential.save!

      end

  end

end
Technical Learnings
GIT
  Distributed version control that works
  No branches on SVN to dozens of branches on Git
  Fine-grained control of revisions
  Fewer conflicts
  A branch per story
Technical Learnings
Technical Learnings
Multiple Environments
  Local ➙ Sandbox
  Integration (QA)
  Staging ➙ Production
  All referenced in Git branches
  ~$ sudo cap deploy
Technical Learnings


master

rc

stable
Technical Learnings
story-1
  king
                 local
master

rc

stable
Technical Learnings
story-1   story-2
  king     slave
                    local   sandbox
master

rc

stable
Technical Learnings
story-1   story-2
  king     slave
                    local   sandbox
master
                                qa
rc

stable
Technical Learnings
story-1   story-2
  king     slave
                    local    sandbox
master
                                   qa
rc
                               staging
stable                      production
Test all the f**king time!!!

 TDD/BDD is a muscle, you need to exercise it
 Without coverage, there is no understanding
 Knowledge socialization
 Continuous integration
Continuous Integration

 Dedicated integration environment with automated
 integration and tests execution with the most up to
 dated code base.
 Automated Reporting
   Test Cases Results
   Tests Coverage
Tests, tests & more tests
Tests, tests & more tests
Tests, tests & more tests
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration
Looking Forward
Queues are the new black : starling & others
Asynchronous is the newer black : workling & others
Erlang + Cloud = massive continuous computing space
Distributed objects : Distributed search
Predictive caching
Algorithms & Computer Science : latent semantics,
vector space model, etc
Three Lines on Scrum

Fastest way to go to nowhere
         Scrum without a present Product Owner
Slowest way to go to somewhere
         Scrum without a dedicated Scrum Master
Embrace it fully with the best team.
Valeu!!!             ;-)
 mlemos@webcointernet.com



  http://brasigo.com.br/
    http://blog.brasigo.com.br/

http://blogblogs.com.br/
  http://blog.blogblogs.com.br/
Estamos contratando novos Jedis:

       Envie seu CV para
   vagas@blogblogs.com.br

    ou deixe seus dados no
    Lounge da Abril Digital

Weitere ähnliche Inhalte

Andere mochten auch

Curso Abril de Jornalismo 2010 : Manoel Lemos
Curso Abril de Jornalismo 2010 : Manoel LemosCurso Abril de Jornalismo 2010 : Manoel Lemos
Curso Abril de Jornalismo 2010 : Manoel LemosManoel Lemos
 
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsTendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsManoel Lemos
 
Perspectives from a Publisher - Digital Migration: the good, the bad & the new
Perspectives from a Publisher - Digital Migration: the good, the bad & the newPerspectives from a Publisher - Digital Migration: the good, the bad & the new
Perspectives from a Publisher - Digital Migration: the good, the bad & the newManoel Lemos
 
Product Ownership @ RD Summit 2015
Product Ownership @ RD Summit 2015Product Ownership @ RD Summit 2015
Product Ownership @ RD Summit 2015Manoel Lemos
 
A importância dos blogs para as empresas
A importância dos blogs para as empresasA importância dos blogs para as empresas
A importância dos blogs para as empresasManoel Lemos
 
Planificación de secuencia didáctica pasos
Planificación de secuencia didáctica   pasosPlanificación de secuencia didáctica   pasos
Planificación de secuencia didáctica pasosmamevarela
 
OAuth 2.0 Integration Patterns with XACML
OAuth 2.0 Integration Patterns with XACMLOAuth 2.0 Integration Patterns with XACML
OAuth 2.0 Integration Patterns with XACMLPrabath Siriwardena
 
The State of The Maker Movement in Brazil - SXSW 2015
The State of The Maker Movement in Brazil - SXSW 2015The State of The Maker Movement in Brazil - SXSW 2015
The State of The Maker Movement in Brazil - SXSW 2015Manoel Lemos
 
El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...
El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...
El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...Angel Alfredo Larios Canto
 

Andere mochten auch (12)

Curso Abril de Jornalismo 2010 : Manoel Lemos
Curso Abril de Jornalismo 2010 : Manoel LemosCurso Abril de Jornalismo 2010 : Manoel Lemos
Curso Abril de Jornalismo 2010 : Manoel Lemos
 
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao factsTendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
Tendências em Aplicações Sociais : ResultsOn Day 2009 - inclui #apagao facts
 
Test Slideshare 2
Test Slideshare 2Test Slideshare 2
Test Slideshare 2
 
Security in the Cloud
Security in the CloudSecurity in the Cloud
Security in the Cloud
 
Perspectives from a Publisher - Digital Migration: the good, the bad & the new
Perspectives from a Publisher - Digital Migration: the good, the bad & the newPerspectives from a Publisher - Digital Migration: the good, the bad & the new
Perspectives from a Publisher - Digital Migration: the good, the bad & the new
 
Product Ownership @ RD Summit 2015
Product Ownership @ RD Summit 2015Product Ownership @ RD Summit 2015
Product Ownership @ RD Summit 2015
 
A importância dos blogs para as empresas
A importância dos blogs para as empresasA importância dos blogs para as empresas
A importância dos blogs para as empresas
 
Planificación de secuencia didáctica pasos
Planificación de secuencia didáctica   pasosPlanificación de secuencia didáctica   pasos
Planificación de secuencia didáctica pasos
 
OAuth 2.0 Integration Patterns with XACML
OAuth 2.0 Integration Patterns with XACMLOAuth 2.0 Integration Patterns with XACML
OAuth 2.0 Integration Patterns with XACML
 
The State of The Maker Movement in Brazil - SXSW 2015
The State of The Maker Movement in Brazil - SXSW 2015The State of The Maker Movement in Brazil - SXSW 2015
The State of The Maker Movement in Brazil - SXSW 2015
 
WSO2 Identity Server
WSO2 Identity ServerWSO2 Identity Server
WSO2 Identity Server
 
El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...
El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...
El metabolismo de la fructosa y la galactosa. vías de ingreso de estos sustra...
 

Mehr von Manoel Lemos

Venture Capital & Empreendedorismo
Venture Capital & EmpreendedorismoVenture Capital & Empreendedorismo
Venture Capital & EmpreendedorismoManoel Lemos
 
Empreendedorismo Maker 2015 - By Fazedores
Empreendedorismo Maker 2015 - By FazedoresEmpreendedorismo Maker 2015 - By Fazedores
Empreendedorismo Maker 2015 - By FazedoresManoel Lemos
 
Aventuras com Open Hardware e Internet das Coisas - 7Masters iMasters
Aventuras com Open Hardware e Internet das Coisas - 7Masters iMastersAventuras com Open Hardware e Internet das Coisas - 7Masters iMasters
Aventuras com Open Hardware e Internet das Coisas - 7Masters iMastersManoel Lemos
 
Tecnologia, Mudanças e Oportunidades - DEMO Maceió
Tecnologia, Mudanças e Oportunidades - DEMO MaceióTecnologia, Mudanças e Oportunidades - DEMO Maceió
Tecnologia, Mudanças e Oportunidades - DEMO MaceióManoel Lemos
 
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...Manoel Lemos
 
Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...
Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...
Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...Manoel Lemos
 
Startup Yourself : iMasters InterCon 2008 / FF08
Startup Yourself : iMasters InterCon 2008 / FF08Startup Yourself : iMasters InterCon 2008 / FF08
Startup Yourself : iMasters InterCon 2008 / FF08Manoel Lemos
 
Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...
Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...
Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...Manoel Lemos
 

Mehr von Manoel Lemos (8)

Venture Capital & Empreendedorismo
Venture Capital & EmpreendedorismoVenture Capital & Empreendedorismo
Venture Capital & Empreendedorismo
 
Empreendedorismo Maker 2015 - By Fazedores
Empreendedorismo Maker 2015 - By FazedoresEmpreendedorismo Maker 2015 - By Fazedores
Empreendedorismo Maker 2015 - By Fazedores
 
Aventuras com Open Hardware e Internet das Coisas - 7Masters iMasters
Aventuras com Open Hardware e Internet das Coisas - 7Masters iMastersAventuras com Open Hardware e Internet das Coisas - 7Masters iMasters
Aventuras com Open Hardware e Internet das Coisas - 7Masters iMasters
 
Tecnologia, Mudanças e Oportunidades - DEMO Maceió
Tecnologia, Mudanças e Oportunidades - DEMO MaceióTecnologia, Mudanças e Oportunidades - DEMO Maceió
Tecnologia, Mudanças e Oportunidades - DEMO Maceió
 
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
Arduino Day 2014 - Construindo um Medidor de Consumo de Energia Conectado à N...
 
Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...
Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...
Open Hardware na Prática - Construindo um Medidor de Consumo de Energia Conec...
 
Startup Yourself : iMasters InterCon 2008 / FF08
Startup Yourself : iMasters InterCon 2008 / FF08Startup Yourself : iMasters InterCon 2008 / FF08
Startup Yourself : iMasters InterCon 2008 / FF08
 
Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...
Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...
Armas de Ruptura em Massa : Entendendo o fenômeno da Web 2.0 e das Mídias Soc...
 

Kürzlich hochgeladen

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
[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
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech 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
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
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
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 

Kürzlich hochgeladen (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
[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
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech 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
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
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...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 

WebCo Way CParty 2009

  • 1. The WebCo Way: O que fazemos & Como fazemos Manoel Lemos [CTO & Founder] Campus Party 2009 - Desenvolvimento São Paulo, SP, Brasil
  • 2. Acompanhe e participe #cparty http://live.blogblogs.com.br/
  • 3.
  • 5. BlogBlogs Status Business Numbers Traffic Numbers 115.000 users 7.5M PageViews / month 200.000 blogs 3.5M Uniques / month 2.500.000 posts Top 5000 Alexa Global 250 users / day Top 120 Alexa Brasil 150 blogs / day 50M Widget Impressions / month 7.000 posts / day
  • 6. Scaling is a process complicated and painful! Its impossible to predict with accuracy There are hidden bottlenecks Sometimes you need to step back Sometimes you need to re-factor everything There are no “silver-bullets” Complexity will grow with you
  • 7. Growth never happens in a single dimension Traffic : more users, more transactions, more downloads... Size : database, memory, bandwidth... Complexity : algorithms, architecture, infrastructure... Organization : team, communication, processes... Business : models, partners, suppliers... Mostly the issues grow faster than linearly!!!
  • 8.
  • 9.
  • 10.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 22. httpd mongrel mongrel mongrel memcached mysql
  • 23. httpd mongrel mongrel mongrel memcached mysql
  • 24. httpd mongrel mongrel mongrel memcached mysql
  • 25. load balancing httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached mysql
  • 26. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 27. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 28. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 29. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 30. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 31. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 32. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 33. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 34. load balancing 1 (web) httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  • 35. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql
  • 36. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql (master) mysql (slave)
  • 37. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql mysql (master) mysql (slave)
  • 38. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql mysql (master) mysql (slave)
  • 39. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached memcached memcached memcached mysql mysql (master) mysql (slave)
  • 40. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) memcached memcached memcached memcached
  • 41. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) memcached memcached memcached memcached
  • 42. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) memcached memcached Robot Robot memcached memcached Robot Robot
  • 43. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) Indexer Indexer memcached memcached Robot Robot (Search) (Search) memcached memcached Robot Robot
  • 44. load balancing 1 (web) load balancing 2 (widgets) httpd httpd httpd httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mysql mysql (master) mysql (slave) Indexer Indexer memcached memcached Robot Robot (Search) (Search) httpd httpd mongrel mongrel mongrel mongrel memcached memcached Robot Robot mongrel mongrel mongrel mongrel mongrel mongrel load balancing 3 (API)
  • 45. load balancing 1 (web) load balancing 2 (widgets) mongrels mongrels mongrels mongrels mongrels mongrels mysql mysql (master) mysql (slave) Indexer Indexer memcached memcached Robot Robot (Search) (Search) memcached memcached Robot Robot mongrels mongrels load balancing 3 (API)
  • 46. load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Indexer memcached memcached (Search) mysql mysql (master) (master) Indexer memcached memcached (Search)
  • 47. load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Indexer memcached memcached (Search) mysql mysql (master) (master) Indexer memcached memcached (Search)
  • 48. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
  • 49. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
  • 50. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Eureca!! Ideas... mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Single Sign On Shared Resources Robot Robot Integrated Search and more... Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
  • 51. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
  • 52. load balancing load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels #howto ? Robot Robot Robot Robot Indexer Indexer memcached memcached memcached memcached (Search) (Search) mysql mysql mysql mysql (master) (master) (master) (master) Indexer Indexer memcached memcached memcached memcached (Search) (Search)
  • 53. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels
  • 54. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 55. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 56. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA Credentials (PHP) ActiveDNA (REST) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 57. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA Credentials Profile (PHP) (PHP) ActiveDNA (REST) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 58. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA DNA Credentials Profile Avatars (PHP) (PHP) (PHP) ActiveDNA (REST) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 59. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph (PHP) (PHP) (PHP) (C++) (Python) ActiveDNA (REST) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 60. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 61. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 62. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 63. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels ActiveDNA (REST) load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 64. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels humm... mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels PHP... ActiveDNA (REST) WTF??!! load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging Credentials (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) (PHP) ActiveDNA (REST) load balancing Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 65. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels humm... mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels PHP... ActiveDNA (REST) WTF??!! load balancing DNA DNA DNA DNA DNA DNA DNA DNA DNA DNA Credentials Profile Avatars Scoring SocialGraph Messaging Messaging Messaging Messaging Messaging (PHP) (PHP) (PHP) (C++) (Python) (Erlang) (Erlang) (Erlang) (Erlang) (Erlang) ActiveDNA (REST) load balancing Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search) mysql mysql mysql (master) (slave) (slave) Indexer Indexer Robot Robot memcached memcached memcached (Search) (Search)
  • 66. Active DNA The problem : time-to-market & development time The solution : ready-for-use SWAT DNA components The layer : Active DNA, a lightweight, RESTful, SWAT DNA client API translating REST calls into fully realized Ruby objects Pros Complete abstraction of the component’s complexity. It’s just Ruby, very small learning curve for devs.
  • 67. Active DNA Application REST API SWAT DNA Component
  • 68. Active DNA Application REST API SWAT DNA Component
  • 69. Active DNA Application REST Client REST API SWAT DNA Component
  • 70. Active DNA Application Query Runner REST Client REST API SWAT DNA Component
  • 71. Active DNA Application Query Runner Query Translator REST Client REST API SWAT DNA Component
  • 72. Active DNA Application Component Layer Query Runner Query Translator REST Client REST API SWAT DNA Component
  • 73. class ActiveDNA::ProfileEntry < ActiveDNA::Base uses :profile key :key, :suffix => :entry depends_on :profile_id attributes :type, :group, :level, :value => :json, :is_unique => :boolean validates_presence_of :value, :message => quot;The value must be informedquot; validates_presence_of :profile_id, :message => quot;Profile must be informedquot; validates_presence_of :group, :message => quot;The group must be informedquot; validates_inclusion_of :type, :in => %w(boolean email float general guid integer url), :message => quot;The type must be informedquot; end
  • 74. class RegistrationController < ApplicationController def create_credential(profile_id) returning credential = ActiveDNA::Credential.new do credential.credential_identifier = self.identifier credential.credential_type = self.identifier_type || IDENTIFIER_TYPE_EMAIL credential.credential_status = quot;enabledquot; credential.user_id = Profile.find(:first, :conditions => { :profile_id => profile_id }).user_id credential.password = self.password if self.identifier_type == IDENTIFIER_TYPE_EMAIL credential.save! end end end
  • 75. Technical Learnings GIT Distributed version control that works No branches on SVN to dozens of branches on Git Fine-grained control of revisions Fewer conflicts A branch per story
  • 77. Technical Learnings Multiple Environments Local ➙ Sandbox Integration (QA) Staging ➙ Production All referenced in Git branches ~$ sudo cap deploy
  • 79. Technical Learnings story-1 king local master rc stable
  • 80. Technical Learnings story-1 story-2 king slave local sandbox master rc stable
  • 81. Technical Learnings story-1 story-2 king slave local sandbox master qa rc stable
  • 82. Technical Learnings story-1 story-2 king slave local sandbox master qa rc staging stable production
  • 83. Test all the f**king time!!! TDD/BDD is a muscle, you need to exercise it Without coverage, there is no understanding Knowledge socialization Continuous integration
  • 84. Continuous Integration Dedicated integration environment with automated integration and tests execution with the most up to dated code base. Automated Reporting Test Cases Results Tests Coverage
  • 85. Tests, tests & more tests
  • 86. Tests, tests & more tests
  • 87. Tests, tests & more tests
  • 104. Looking Forward Queues are the new black : starling & others Asynchronous is the newer black : workling & others Erlang + Cloud = massive continuous computing space Distributed objects : Distributed search Predictive caching Algorithms & Computer Science : latent semantics, vector space model, etc
  • 105. Three Lines on Scrum Fastest way to go to nowhere Scrum without a present Product Owner Slowest way to go to somewhere Scrum without a dedicated Scrum Master Embrace it fully with the best team.
  • 106. Valeu!!! ;-) mlemos@webcointernet.com http://brasigo.com.br/ http://blog.brasigo.com.br/ http://blogblogs.com.br/ http://blog.blogblogs.com.br/
  • 107. Estamos contratando novos Jedis: Envie seu CV para vagas@blogblogs.com.br ou deixe seus dados no Lounge da Abril Digital

Hinweis der Redaktion

  1. Quase 800 mil impress&#xF5;es em um &#xFA;nico dia!!!