Upload
vadim-jelezniakov
View
1.668
Download
0
Embed Size (px)
DESCRIPTION
The community platform at The New York Times is a PHP-based, multi-tiered application that utilizes MySQL, Apache and Memcached. It was originally hosted on our own internal servers. We recently moved the platform to the cloud in order to increase its flexibility and to better handle high-load events (like links from the Yahoo home page). Moving an existing application to the cloud presented both organizational and technical challenges. We discuss our adventures in the cloud so far. Topics will include cloud management, auto-scaling and deployment on the cloud.
Citation preview
Moving to the Cloudwith NYTimes.com
Ben GerstVadim Jelezniakov
OSCON 2010
Friday, August 13, 2010
Vanilla AWS - Do Everything Yourself
Choose / Build Images
‘Slice’ Your Resources
Store Meta Data
Define Process
etc.
Friday, August 13, 2010
Great For Start-Ups
Nothing to Lose,Everything to Gain
Friday, August 13, 2010
Difficult forGrown-Ups
Friday, August 13, 2010
Difficult forGrown-Ups
Like a 150 y.o.Newspaper with a14 y.o. Web Site
and a 3 y.o. buildingthat the guy on the right
climbed in 2008
Friday, August 13, 2010
But First...Why Move?
Ben talks aboutCommunity
Calls at 6PM on Fridayand Beer
Friday, August 13, 2010
What is UGC @nytimes?
Friday, August 13, 2010
Comments on Articles and Blogs
Friday, August 13, 2010
Rate and Review for Movies, Theater, Dining and Travel
Friday, August 13, 2010
once upon a time...
Friday, August 13, 2010
Friday, August 13, 2010
hmm...
• need to be able to scale quickly on demand
•we don’t like calls from systems at 6pm on Fridays
Friday, August 13, 2010
buy more hardware
You've been down there, Neo. You already know that road. You know exactly where it ends.
Friday, August 13, 2010
move to the cloud
Friday, August 13, 2010
traffic spikes - add capacity
Friday, August 13, 2010
traffic spikes - add capacity
Friday, August 13, 2010
nytimes.com community architecture circa. 2007
Friday, August 13, 2010
ugc architecture
Friday, August 13, 2010
gap analysis
• load balancing?
• how do we manage communication between instances? what about talking back to the datacenter?
• how do we scale up and back?
• how do we secure the instances?
Friday, August 13, 2010
nginx
• elastic ip points to nginx which handles all of our traffic
• nginx has the rules which determine where to send requests
Friday, August 13, 2010
communication & scaling
• host files
• monit
Friday, August 13, 2010
security groups
cmty-fe cmty-apicmty-cache
cmty-mysql
cmty
production
Friday, August 13, 2010
monitoring
Friday, August 13, 2010
development instances!
Friday, August 13, 2010
Grown-Ups:Existing Organization
Software Developers
QA Specialists
Management
Infrastructure Engineers
System Administrators
Friday, August 13, 2010
Grown-Ups:Existing Process
Development
QA
Staging
Production
Security / Compliance
Friday, August 13, 2010
Grown-Ups:Existing
Infrastructure
Authentication
Source Control
Monitoring
Network Security
Friday, August 13, 2010
No Auth Hooks
No Slices (Subaccounts)*
No Monitoring Hooks
Expensive*
Other Cloud Managers
Friday, August 13, 2010
NimbulLight Cloud Managerhttp://github.com/nimbul/nimbul
CloudSourceSimple SVN Deploymenthttp://github.com/nimbul/cloudsourcebased on ServerMattic developed by WordPress
EmissaryFast AMQP Messaginghttp://github.com/nimbul/emissary
Friday, August 13, 2010
Nimbul
Meta Data Store
Configuration Management
Access Control
Publishers
Sane Auto-Scaling UI
F2WW
Friday, August 13, 2010
Nimbul Cloud
Providers( EC2 )
Provider Accounts( Dev, Staging, Production )
Clusters (“Slices”)( UGC Staging, WWW Production )
Server Profiles( UGC FrontEnd, UGC MySQL Master )
Instances
Friday, August 13, 2010
Nimbul Users
Nimbul Admins( Full Access, can’t read keys )
Provider Account Admins( Control Users, Resources, Env Vars, Startup Scripts, etc )
Cluster (“Slice”) Admins( Control Users, Resources, Env Vars, Startup Scripts, etc )
SSH Users( Can be granted SSH access to any running instance )
Before Nimbul
After Nimbul
Friday, August 13, 2010
Extending Existing Infrastructureto the Cloud
Friday, August 13, 2010
Friday, August 13, 2010
Friday, August 13, 2010
Friday, August 13, 2010
Friday, August 13, 2010
Friday, August 13, 2010
Friday, August 13, 2010
Friday, August 13, 2010
CloudSourceSVN + bash
Role in SVN: files/ etc/ my.cnf <svn:external opt/nyt/app> scripts/ install.sh
Deploy: role.sh apply role1,role2,role3
Update: role.sh update role
Friday, August 13, 2010
Friday, August 13, 2010
NimbulLight Cloud Managerhttp://github.com/nimbul/nimbul
CloudSourceSimple SVN Deploymenthttp://github.com/nimbul/cloudsourcebased on ServerMattic developed by WordPress
EmissaryFast AMQP Messaginghttp://github.com/nimbul/emissary
Friday, August 13, 2010