SlideShare a Scribd company logo
1 of 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

More Related Content

Viewers also liked

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
 

Viewers also liked (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...
 

More from 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
 

More from 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...
 

Recently uploaded

2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024Lorenzo Miniero
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxFIDO Alliance
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessUXDXConf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024Stephen Perrenod
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingScyllaDB
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandIES VE
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?Paolo Missier
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideStefan Dietze
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPTiSEO AI
 

Recently uploaded (20)

2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 

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

Editor's Notes

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