running a business in the cloud with aws
DESCRIPTION
Conor O'Neill, CEO of LouderVoice, gave this presentation to the University College Cork SME Cloud Incubator Workshop in March 2012. In it he describes how LouderVoice is 100% hosted EC2 and details pros/cons/alternatives for those thinking of moving to the cloud. LouderVoice is Europe's leading provider of Customer Reviews solutions to SMEs.TRANSCRIPT
Living in the CloudConor O'Neill
CEO LouderVoice & Co-Founder HushVine
Introduction
1. Me2. History of LouderVoice3. Transition to Cloud4. Current Model5. Scaling6. Issues7. Outline of HushVine8. Node.js + MongoDB9. Iaas vs PaaS
10. What's Next?11. Q&A
Me - 20 yrs Technology Management
○ 1990s : S3/Philips, Integral Design○ Telecoms and then Digital TV
○ 2002 : Advanticus○ Digital Convergence
○ 2003 - 2006 : EMC○ Prof Services around SRM
○ 2006-2006 : McAfee○ Localisation
○ 2006 -Now : LouderVoice○ Customer Reviews SaaS
○ 2011-Now : HushVine○ Social TV on a Second Screen
History of LouderVoice
2005 - We should do a startup2006 - Build blog reviews aggregation platform2007 - Expand to non-blogs and Twitter2008 - Build first API for Business Customer2009 - Build Widget-based solution2010 - Move entirely to B2B Model2011 - Scale2012 - Grow via Channel and L10N
What it Looks Like 1
What it Looks Like 2
What it Looks Like 3
LAMP
Linux + Apache + MySQL + PHP/Perl/Python LouderVoice =
NGINX Apache mod_wsgiMySQLPythonDjangoMemcached
LouderVoice Architecture
NGINX Simple Load Balancer
Application Server = Apache
+ Django + Python
Application Server = Apache
+ Django + Python
Application Server = Apache
+ Django + Python
MySQL Solr Search Memcached
Content Distribution Network
Transition to Cloud
Pre-Launch = Simple Shared Hosting2006 - 2007 = Low-end VPS2007 - 2009 = Dedicated Softlayer Servers2009 - Now = 99% Amazon AWS2011 - Now = Some CloudFoundry, Heroku and Nodejitsu
Current AWS Setup
A number of generic small EC2 Instances1.7GB Memory1 Compute Unit
All running Ubuntu 10.04LTS LinuxEBS for all live dataRDS for MySQLCloudfront for CDNS3 for backupElastic IP for easy switchover
LouderVoice on AWS
NGINX on EC2 instance
Application Server on EC2 with Data on
EBS
Application Server on EC2 with Data on
EBS
Application Server on EC2 with Data on
EBS
MySQL on RDS Solr Search on EC2 with Data on EBS
Memcached on EC2 with Data on EBS
All Static Content on Cloudfront
Elastic IP
Backups on S3
How it all Works
Client site with LouderVoice
Code running on one or more of
their web-pages
Data cached using
Memcached for performance
Required content etc retrieved from App
Servers Reviews/Users/etc stored/retrieved from
MySQL
Content searched usingSolr Widget code, CSS, images delivered by Cloudfront CDN for
geographic performance
Client site with LouderVoice
Code running on one or more of
their web-pages
Client site with LouderVoice
Code running on one or more of
their web-pages
Other Services
1. DNSMadeEasy2. AuthSMTP3. Pingdom4. Google Apps for my Domain5. WordPress6. GitHub7. Redmine8. Bit.ly9. Facebook APIs
10. Twitter APIs
Management Tools
1. AWS Console2. Elasticfox3. Cloudberry Explorer4. Digital Mines + Cloud Vertical5. Cloudkick6. Boto7. Putty SSH and CLIs
Scaling
1. Pre-Optimisation is root of all evil2. Think about best/worst case scenario3. But do not build it day 14. Don't re-invent wheel5. Avoid lock-in technologies6. Use Open Source as much as possible7. You probably won't be Facebook8. Scale vs Time vs Skills vs Money9. How fast is fast enough?
Words of Warning
1. Build to your budget not perfection2. Do you have the skills or can you pay for
them?3. It's not cheaper than traditional hosting 4. You get Enterprise Functionality for Small
Biz5. Servers disappear, DBs get corrupted,
backups fail, Amazon has outages. Plan?6. How mission critical is your service/site?7. How much downtime can you accept?
Costs
1. Basic Server costs2. Reserved Instances3. Database, CDN, EIP, Multi-AZ etc etc 4. All those other services5. People cost - who will manage?
Outline of HushVine
1. Original idea a. A power-user filtering Twitter clientb. Show you all the Tweets you want, hide all the noise
2. Target market narrowed to Social TV watching e.g. #xfactor #apprentice
3. Creating unique second screen Social TV Platform for Tablet and Smartphone
4. Initially Twitter, then Facebook 5. Back-end = Cloud6. Front-end = Cross-Platform Mobile
HushVine Outline 2
HushVine Outline 3
HushVine Architecture
HushVine API HushVine Dashboards and Analytics
HushVine Tablet, Mobile and Web Apps. Cross-platform using HTML5+CSS3+JS and FeedHenry (or similar)
Node.js + Express = Filtering and Data Crunching Platform
MongoDB NoSQL Database
Twitter Streaming API delivering realtime sub-set of firehose
Hadoop Non-realtime Data Processing
Node.js and MongoDB
1. Hot Tech2. Node.js
a. Server Side JavaScript b. Uses Google Chrome V8 Enginec. Massive performance d. Widely understood programming language
3. MongoDBa. NoSQLb. Document-based DBc. Massive performance and scalability
4. 3000 X-Factor Tweets per minutea. CPU barely ticking over
IaaS vs PaaS
● IaaS○ Infrastruture as a Service ○ e.g. Amazon AWS, Rackspace○ You design you architecture○ No hand-holding, it's all on you○ Ultimate in flexibility
● PaaS○ Platform as a Service○ e.g. Cloud Foundry, Heroku etc○ You fit within a particular architecture○ Get best-practices built-in○ Reduces your management overheads
CloudFoundry PaaS
● No lock-in, multiple Clouds
● Partnered with FeedHenry
● VMware● Spring, Ruby on
Rails, Ruby and Sinatra, Node.js, Grails
What's Next
1. More automation and tools built-in to AWS2. Look at more automatic scaling3. Re-evaluate cost-benefit of more robustness4. Ever-reducing prices5. Cost Analysis and tuning6. Proper evaluation of Microsoft Azure7. Move some aspects to CloudFoundry8. Small Business friendly Cloud Offerings
Q&A
Questions?