Just Do It! Building and running high volume applications in the cloud Charles Teague CEO, FitNow, Inc.
What is Lose It? Free mobile application, website Calorie tracking Peer support using social networking Lose It! by the numbers 7+ million downloads 1m+ Loseit.com users 15,000 requests per minute, 24x7 load 4 people working full time at Lose It! Helped users lose more than 5.5 million pounds since 2009
What does that have to do with the cloud?! Lose It! started as a local only mobile application Need for additional capabilities drove need for web service Client -> web sync support Social features Web version of Lose It! Unpredictable initial demand and usage growth made it difficult to estimate scale Millions of users made high volume likely As a startup, our team is small
Our challenge was to build and run a service that supports millions of users with very limited resources…
How can we do this? Use the cloud and platform as a service to make development, deployment, and operation of our service faster and easier.* LEVERAGE
Leverage the cloud Low startup cost Ability to scale in response to anticipated demand Efficiently onboard new services and capabilities Choose deep, best of breed services that represent significantly more technology and expertise than we’d be able to create ourselves. Use of cloud eliminates need for us to focus on deployment, management, and administration of compute, disk, and other lower level infrastructure
Leverage Platform as a Service Low operational overhead Simplified deployment No dedicated operations engineer Spin up and down development, test, and preproduction environments quickly and easily PAAS eliminates the need for us to focus on deployment, management, and administration of our application container, data container, and other higher level infrastructure
The result? We spend most of our calories worrying about delivering the most compelling and effective consumer experience Our time, effort, and opportunity isn’t spent on simply running the infrastructure required to support our users But we’re still up 3 nines An average request to our server is fulfilled in under 250ms Our laser focus translates into a superior customer experience for our users LASER FOCUS
What technology? Java / Tomcat Compiler checked High performance Native GWT Support MySQL Relational Proven Use both InnoDB / MyISAM Web – Google Web Toolkit Compiler checked Encodes best practices from Google Mobile – native and GWT/HTML hybrid client
What cloud services? Application Development Development and staging environments Iterative deployment services Build services and continuous deployment  (future) Source code management Issue Tracking
What cloud services? Application Runtime Scalable Java application stack HTTP routing and load-balancing Clustered database services Server hardware and virtualization Network management Data storage devices Email services
What cloud services? Application Monitoring / Operations Application performance monitoring Uptime tracking and alerting Application and database recovery Umbrella support - someone to call!
Architecture
The Myth of the Cloud / Black Box Infrastructure and platform as a service is a *great* abstraction Your application has its own characteristics The infrastructure itself has particular characteristics There is no single cloud configuration that represents a well tuned, reliable, and high performance solution for every profile of application
Real World EC2 Persistent disk I/O (EBS) performance not great Also can be more variable than you’d expect Ripples into data performance, esp. for disk intensive work like transactional writes (InnoDB) Hardware itself is not configurable Can’t add a battery backed up disk write cache for performance Pay attention to EC2 instance sizes Remember that a small instance is really a very slow computer And depending upon instance sizes, you will be sharing physical resources with other applications.
Real world advice For MySQL, use big instances with huge RAM. Configure big caches to protect you from slow I/O Protect your database with application caches (even simple simple Hashmaps) Design application / data storage to support sharding Make sure app server tier is cluster safe Use queuing to decouple work from main application
More Challenges The cloud and PAAS does provide incredible leverage, but some things are actually a pain in this environment. Scheduled jobs Logging /Server diagnostics / error reporting Full text search implementations Server coordination Portability File Storage
Wrap up The cloud gives small teams unprecedented leverage to build and deploy applications But it’s no silver bullet Application architecture may be even more important to achieving scale on the cloud Beware the myth of the cloud/blackbox Get real about the platform that you’re deploying Leverage platform as a service to gain leverage

Just do it!

  • 1.
    Just Do It!Building and running high volume applications in the cloud Charles Teague CEO, FitNow, Inc.
  • 2.
    What is LoseIt? Free mobile application, website Calorie tracking Peer support using social networking Lose It! by the numbers 7+ million downloads 1m+ Loseit.com users 15,000 requests per minute, 24x7 load 4 people working full time at Lose It! Helped users lose more than 5.5 million pounds since 2009
  • 3.
    What does thathave to do with the cloud?! Lose It! started as a local only mobile application Need for additional capabilities drove need for web service Client -> web sync support Social features Web version of Lose It! Unpredictable initial demand and usage growth made it difficult to estimate scale Millions of users made high volume likely As a startup, our team is small
  • 4.
    Our challenge wasto build and run a service that supports millions of users with very limited resources…
  • 5.
    How can wedo this? Use the cloud and platform as a service to make development, deployment, and operation of our service faster and easier.* LEVERAGE
  • 6.
    Leverage the cloudLow startup cost Ability to scale in response to anticipated demand Efficiently onboard new services and capabilities Choose deep, best of breed services that represent significantly more technology and expertise than we’d be able to create ourselves. Use of cloud eliminates need for us to focus on deployment, management, and administration of compute, disk, and other lower level infrastructure
  • 7.
    Leverage Platform asa Service Low operational overhead Simplified deployment No dedicated operations engineer Spin up and down development, test, and preproduction environments quickly and easily PAAS eliminates the need for us to focus on deployment, management, and administration of our application container, data container, and other higher level infrastructure
  • 8.
    The result? Wespend most of our calories worrying about delivering the most compelling and effective consumer experience Our time, effort, and opportunity isn’t spent on simply running the infrastructure required to support our users But we’re still up 3 nines An average request to our server is fulfilled in under 250ms Our laser focus translates into a superior customer experience for our users LASER FOCUS
  • 9.
    What technology? Java/ Tomcat Compiler checked High performance Native GWT Support MySQL Relational Proven Use both InnoDB / MyISAM Web – Google Web Toolkit Compiler checked Encodes best practices from Google Mobile – native and GWT/HTML hybrid client
  • 10.
    What cloud services?Application Development Development and staging environments Iterative deployment services Build services and continuous deployment (future) Source code management Issue Tracking
  • 11.
    What cloud services?Application Runtime Scalable Java application stack HTTP routing and load-balancing Clustered database services Server hardware and virtualization Network management Data storage devices Email services
  • 12.
    What cloud services?Application Monitoring / Operations Application performance monitoring Uptime tracking and alerting Application and database recovery Umbrella support - someone to call!
  • 13.
  • 14.
    The Myth ofthe Cloud / Black Box Infrastructure and platform as a service is a *great* abstraction Your application has its own characteristics The infrastructure itself has particular characteristics There is no single cloud configuration that represents a well tuned, reliable, and high performance solution for every profile of application
  • 15.
    Real World EC2Persistent disk I/O (EBS) performance not great Also can be more variable than you’d expect Ripples into data performance, esp. for disk intensive work like transactional writes (InnoDB) Hardware itself is not configurable Can’t add a battery backed up disk write cache for performance Pay attention to EC2 instance sizes Remember that a small instance is really a very slow computer And depending upon instance sizes, you will be sharing physical resources with other applications.
  • 16.
    Real world adviceFor MySQL, use big instances with huge RAM. Configure big caches to protect you from slow I/O Protect your database with application caches (even simple simple Hashmaps) Design application / data storage to support sharding Make sure app server tier is cluster safe Use queuing to decouple work from main application
  • 17.
    More Challenges Thecloud and PAAS does provide incredible leverage, but some things are actually a pain in this environment. Scheduled jobs Logging /Server diagnostics / error reporting Full text search implementations Server coordination Portability File Storage
  • 18.
    Wrap up Thecloud gives small teams unprecedented leverage to build and deploy applications But it’s no silver bullet Application architecture may be even more important to achieving scale on the cloud Beware the myth of the cloud/blackbox Get real about the platform that you’re deploying Leverage platform as a service to gain leverage

Editor's Notes

  • #3 Consolidate this not to be a time, but to just summarize Include screen shot of android version Also need volume details 15,000 rpms 24x7 Load 1+m users of Loseit.com Small team (4 people)
  • #8 2 extreme approaches to a quality web service Reduce the probability of a defect in production to nearly zero Reduce the cost of fixing a defect in production to nearly zero
  • #15 - Keep in mind that if you choose a tailored black box, your application architecture will risk being bound up /designed for that type of black box, making portability challenging.
  • #16 Your application architecture should be designed anticipating these needs. It will be much harder to ‘bail out’ a poorly architected application…
  • #17 For MySQL, use big instances with huge RAM. Configure big caches to protect you from slow I/O You might think that this will only speed up reads, but it has a huge impact upon write performance Spend time doing standard app & query optimization Design application / data storage to support sharding There is a limit to scaling vertically so be prepared to go horizontal Make sure app server tier is cluster safe Our servers are extremely stateless, making round robin load balancing trivial Use queuing to decouple work from main application Allow you to scale work independently Make sure queue processing servers can be clustered too!
  • #19 Other potential info to include:   What does PaaS lets us do that we couldn’t do before   What features of a PaaS are/were most important to us   What do we wish we could do? Or what will we try to implement next?   What is the true value of a PaaS? What benefits have we received from implementing one?