Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Internet-scale Applications - The Beginning

Building Internet-scale Applications - The Beginning

Slides of the talk I did at Refresh Colombo September meetup. The talk was mostly a collection of random thoughts about infrastructure and scaling.

Gaveen Prabhasara

October 19, 2011
Tweet

Other Decks in Programming

Transcript

  1. Standing on the Shoulders of Giants If I claim to

    be a wise man, well It surely means that I don't know “ “ - Kansas Carry On Wayward Son
  2. This is a 25 minute talk Which sounds like a

    collection of Random thoughts about Building Internet-scale Systems You probably already know
  3. Internet-scale > Enterprise-scale Facebook, YouTube, Twitter, Gmail, Flikr Eg: Case:

    Facebook 750M+ active users 350M+ daily users 100B+ daily hits 30B+ monthly objects shared 2.5M+ websites integrated 130TB+ daily logs *Sources: http://goo.gl/zT1bL http://goo.gl/cdFPI Case: Akamai 95800+ servers 1000+ networks 70+ countries 15-30% WWW traffic *Source: http://goo.gl/yVmG9
  4. Know Your Trade Learn Acquire domain-specific knowledge Learn how people

    build similar services Learn about Technologies Stay updated RTFM / Use Search Engines ;)
  5. Get Right People Team Find balance in the team Know

    their strengths Nurture them Set a proper environment Don't step on others toes
  6. Go for the Best Solution Architecture & Design Have a

    solid architecture Find a good engineering design Don't over-engineer / over-complicate Avoid architecture degradation
  7. Right Tool for the Right Job Technology You favourite tool

    can't do everything. Face it 'Prejudice against' & 'religious for' isn't good for you Brand names aren't for worshiping Cloud isn't a magical silver bullet This is Spar... the Internet. It's big
  8. Do Things Right Process Use best practices Automate. Automate. Automate.

    Plan for scaling from the start Don't let the process be a burden Little more detail...
  9. Test All the Time or better, do Continuous Integration Little

    more detail... Testing isn't a QA job Let Devs take responsibility XP, TDD, BDD, Cucumber, etc. Don't push untested code Works-in-my-machine doesn't count Process
  10. Fight the Smell, Fight Anti-Patterns Little more detail... Re-factoring is

    good Code smell isn't something to behold Don't let the code age on you Don't let the architecture degrade Bad code is bad code Process
  11. Use Version Control Little more detail... Use a proper VCS

    Git, SVN, Hg, Bzr, etc. Helps automation No version control, no deploying Learn to use a VCS properly Process
  12. Use Configuration Management Little more detail... Infrastructure is Code, therefore

    Automate User a Configuration Management System Puppet, Chef, CFEngine, MCollective, etc. One-off work is (usually) a myth Managed Infra opposed to mucked-about infra DevOps Process
  13. Security isn't a Task Little more detail... You can't apply

    security later Both infra & code needs to be secure “Noboday wants to hack me” is a myth HTTPS isn't a fad # chmod 777 kills puppies SELinux / AppArmor isn't your enemy Process
  14. Scaling starts from the beginning Little more detail... Plan early.

    Start from basics. Balance load & plan for HA Use Caching Do stress / load testing Not every technology scales gracefully Use messaging, async jobs when needed Etc., etc. Process
  15. Monitor & Measure Little more detail... Capture important metrics Measure,

    analyze & improve Monitoring sucks. But still... Home grown a NMS aren't necessarily better Have notification alerting in place Process
  16. Q & A Anybody who wants ISO's of the following

    Linux distros, meet me with USB drives after the session. BackTrack, CentOS, Debian, Fedora, Hanthana, MeeGo, Mint, Ubuntu, Ubuntu Server