WebCo Way CParty 2009

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

  • + blogomoura Jose Moura 10 months ago
    Scalabilidade, complexidade, organização, competências, pessoas.
    A chave para todo este sucesso.
    Manoel Lemos, parabéns pelos produtos e pela equipe.
    Saúde, paz e mais sucesso ainda!
    Abraços,
    Moura
Post a comment
Embed Video
Edit your comment Cancel

Notes on slide 1































Quase 800 mil impresses em um nico dia!!!



































































































































7 Favorites

WebCo Way CParty 2009 - Presentation Transcript

  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. We’re 40 people today!
  4. 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
  5. 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
  6. 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!!!
  7. Today 1.7MM daily impr.
  8. httpd mongrel mysql
  9. httpd mongrel mongrel mongrel mysql
  10. httpd mongrel mongrel mongrel memcached mysql
  11. httpd mongrel mongrel mongrel memcached mysql
  12. httpd mongrel mongrel mongrel memcached mysql
  13. load balancing httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached mysql
  14. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  15. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  16. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  17. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  18. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  19. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  20. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  21. load balancing httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  22. load balancing 1 (web) httpd httpd httpd mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel mongrel memcached memcached memcached mysql
  23. 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
  24. 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)
  25. 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)
  26. 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)
  27. 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)
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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)
  33. 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)
  34. load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Indexer memcached memcached (Search) mysql mysql (master) (master) Indexer memcached memcached (Search)
  35. load balancing mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels Robot Robot Indexer memcached memcached (Search) mysql mysql (master) (master) Indexer memcached memcached (Search)
  36. 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)
  37. 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)
  38. 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)
  39. 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)
  40. 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)
  41. load balancing load balancing mongrels mongrels mongrels sinatra mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels mongrels
  42. 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)
  43. 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)
  44. 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)
  45. 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)
  46. 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)
  47. 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)
  48. 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)
  49. 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)
  50. 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)
  51. 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)
  52. 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)
  53. 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)
  54. 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.
  55. Active DNA Application REST API SWAT DNA Component
  56. Active DNA Application REST API SWAT DNA Component
  57. Active DNA Application REST Client REST API SWAT DNA Component
  58. Active DNA Application Query Runner REST Client REST API SWAT DNA Component
  59. Active DNA Application Query Runner Query Translator REST Client REST API SWAT DNA Component
  60. Active DNA Application Component Layer Query Runner Query Translator REST Client REST API SWAT DNA Component
  61. 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 => \"The value must be informed\" validates_presence_of :profile_id, :message => \"Profile must be informed\" validates_presence_of :group, :message => \"The group must be informed\" validates_inclusion_of :type, :in => %w(boolean email float general guid integer url), :message => \"The type must be informed\" end
  62. 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 = \"enabled\" 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
  63. 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
  64. Technical Learnings
  65. Technical Learnings Multiple Environments Local ➙ Sandbox Integration (QA) Staging ➙ Production All referenced in Git branches ~$ sudo cap deploy
  66. Technical Learnings master rc stable
  67. Technical Learnings story-1 king local master rc stable
  68. Technical Learnings story-1 story-2 king slave local sandbox master rc stable
  69. Technical Learnings story-1 story-2 king slave local sandbox master qa rc stable
  70. Technical Learnings story-1 story-2 king slave local sandbox master qa rc staging stable production
  71. 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
  72. 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
  73. Tests, tests & more tests
  74. Tests, tests & more tests
  75. Tests, tests & more tests
  76. Continuous Integration
  77. Continuous Integration
  78. Continuous Integration
  79. Continuous Integration
  80. Continuous Integration
  81. Continuous Integration
  82. Continuous Integration
  83. Continuous Integration
  84. Continuous Integration
  85. Continuous Integration
  86. Continuous Integration
  87. Continuous Integration
  88. Continuous Integration
  89. Continuous Integration
  90. Continuous Integration
  91. Continuous Integration
  92. 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
  93. 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.
  94. Valeu!!! ;-) mlemos@webcointernet.com http://brasigo.com.br/ http://blog.brasigo.com.br/ http://blogblogs.com.br/ http://blog.blogblogs.com.br/
  95. Estamos contratando novos Jedis: Envie seu CV para vagas@blogblogs.com.br ou deixe seus dados no Lounge da Abril Digital

+ Manoel LemosManoel Lemos, 10 months ago

custom

1593 views, 7 favs, 3 embeds more stats

Palestra sobre o jeito WebCo de fazer software. Apr more

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 1593
    • 1415 on SlideShare
    • 178 from embeds
  • Comments 1
  • Favorites 7
  • Downloads 48
Most viewed embeds
  • 176 views on http://manoellemos.com
  • 1 views on http://www.netvibes.com
  • 1 views on http://192.168.10.100

more

All embeds
  • 176 views on http://manoellemos.com
  • 1 views on http://www.netvibes.com
  • 1 views on http://192.168.10.100

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories