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

Springest One

Springest One

Proposal for Springest One.

http://www.springest.com

W.R. de Vos

April 03, 2012
Tweet

More Decks by W.R. de Vos

Other Decks in Technology

Transcript

  1. CURRENT ISSUES CakePHP’s Initial Request Time too high JS makes

    DOM rendering too slow API external requests slows things down SPEED 150 ms 200 ms 2 x 120 ms = 240 ms _____________ + 590 ms Tuesday, April 3, 12
  2. CURRENT ISSUES Dependencies in multiple codebases Test code coverage low

    Complicated cache configuration MAINTAINABILITY Frontend API Admin Varnish Memcache Beanstalk Solr Workers Tuesday, April 3, 12
  3. CURRENT ISSUES No error reporting on delayed jobs CSS &

    JS cluttered and obsolete Lack of monitoring & diagnostics MAINTAINABILITY Frontend API Admin Varnish Memcache Beanstalk Solr Workers Tuesday, April 3, 12
  4. CURRENT ISSUES Complicated workflow Complicated set-up for new devs Deployments

    are tedious Scaling is difficult SCALABILITY Feature API Frontend Admin Dependencies Tuesday, April 3, 12
  5. CURRENT ISSUES Structural changes hard to implement Dependency troubles testing

    Caching is hard SCALABILITY Feature API Frontend Admin Dependencies Tuesday, April 3, 12
  6. IMPROVEMENTS Maintainable Improves workflow DRY code Testable Integrated services ONE

    CODEBASE 8% 45% 47% Maintainability Testing Other Bug breakdown Tuesday, April 3, 12
  7. IMPROVEMENTS Testable Simple No trivial separation Use the same data

    across multiple sites ONE DATABASE Everything in one place! Tuesday, April 3, 12
  8. IMPROVEMENTS Maintainable Improves workflow DRY code Should have: large community,

    innovation ONE LANGUAGE “Language shapes the way we think, and determines what we can think about.” - Benjamin Lee Whorf Tuesday, April 3, 12
  9. IMPROVEMENTS Multiple cache systems is confusing Design for speed Cache

    everything Cache key guidelines Control cache from the code ONE CACHE Varnish Memcache Tuesday, April 3, 12
  10. IMPROVEMENTS Multiple cache systems is confusing Design for speed Cache

    everything Cache key guidelines Control cache from the code ONE CACHE Varnish Memcache Tuesday, April 3, 12
  11. IMPROVEMENTS TDD from the ground up Gives us back our

    power Less bugs Easier testing Higher velocity TEST-DRIVEN “We are more agile than we can afford.” - Ruben Timmerman Tuesday, April 3, 12
  12. IMPROVEMENTS Documentation is clarity Results in short, focused methods DOCUMENTED

    “Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing..” - Dick Brandon (?) Tuesday, April 3, 12
  13. IMPROVEMENTS Graph everything Use Exceptions Log errors Log events REPORTS

    0 23 45 68 90 12:00 13:00 14:00 15:00 Conversions & Exceptions Conversions Exceptions Tuesday, April 3, 12
  14. IMPROVEMENTS Speed up front-end responsiveness Mission critical stuff Monitor jobs

    Re-run failed jobs DELAYED JOBS Tuesday, April 3, 12
  15. IMPROVEMENTS Should be really easy Should be really fast Everything

    under one button Servers should do after-deploy stuff DEPLOYS “In devops you can able choose of have sinking feeling in stomach before, during or after deploy to production..” - Devops Borat (Twitter) Tuesday, April 3, 12
  16. IMPROVEMENTS App servers should only serve the app Scaling should

    be easy Maintenance through deploy scripts DEDICATED When a node goes bad, throw it out and spin up a new one. Tuesday, April 3, 12
  17. IMPROVEMENTS No more obsolete CSS Easy packaging of JS Easy

    compilation Speed things up ASSET PIPELINE Tuesday, April 3, 12
  18. PROPOSED SET-UP Readable code Large open-source community Familiar RUBY “Ruby

    is designed to make programmers happy.” - Yukihiro Matsumoto Tuesday, April 3, 12
  19. PROPOSED SET-UP Flexible Easy to maintain and deploy Highly testable

    Scalable RAILS “Webdevelopment that doesn’t hurt.” - rubyonrails.org Tuesday, April 3, 12
  20. PROPOSED SET-UP Light-weight Mountable as services in Rails It’s Ruby

    like the rest of it SINATRA “You gotta love livin', baby, 'cause dyin' is a pain in the ass.” - Frank Sinatra Tuesday, April 3, 12
  21. PROPOSED SET-UP Delayed jobs Has a UI Can retry failed

    jobs Can monitor workers RESQUE Tuesday, April 3, 12
  22. PROPOSED SET-UP Fast One master, many forks No ports, just

    one socket Easy reloads UNICORN Tuesday, April 3, 12
  23. “The single worst strategic mistake a software company can make

    is rewriting their code from scratch.” - Joel Spolsky HOW TO DO IT Tuesday, April 3, 12
  24. NOT A REWRITE Just Move Stuff Around Read And Learn

    From “Old” Code Test Everything: TDD & BDD Document Everything Create Shippable Milestones Do Not Introduce New Bugs Tuesday, April 3, 12
  25. PHASE 0 No large projects Small features and bug fixes

    will be done by a small team FREEZE Tuesday, April 3, 12
  26. PHASE 1 Merge Nightly Syncs For Admin Leave Wordpress As

    It Is DATABASE Tuesday, April 3, 12
  27. PHASE 2 Search and subject pages Training pages Provider pages

    Category pages Homepage Landing pages CORE Tuesday, April 3, 12
  28. PHASE 5 Articles and Q&A Weblog About pages CONTENT Do

    we still need Wordpress? Tuesday, April 3, 12