Solved

How to update our application on an autoscaling EC2 stack

Posted on 2014-02-28
4
718 Views
Last Modified: 2014-11-12
Hi,

We have a particularly unique situation so I will try to be as clear as I can be.

Background information:
We are a SaaS business that currently runs a LAMP stack application on amazon EC2. We have no autoscaling and we plan to move to it in the very near future. Our deployment processes are moving towards agile development but we're not quite there yet. We run subversion as our version control system from which we manage multiple versions of our code at the same time.

End Goal:
We want to move to autoscaling using Amazon's Autoscaling infrastructure with CloudFormation for our web servers only at the moment. We're currently stuck on coming up with a method to perform updates to our code base all at the same time, whenever we want. The key here is that the update needs to be performed at the same time across all servers (we can allow for a small delay between updates of each server <1 min). I know that Amazon cloud formation can perform updates to the stack, but from what I have read the servers will update on their own time within a 15 minute period. This is of course not feasible as we don't want our clients on different versions of a particular code base.

We've thought about using a custom script on a permanent server that will push commands to update the code base on each server (by forking a process to each instance in the autoscaling group) but don't know if that's the best route. We're also trying to avoid having to re-bake the AMI used in the launch config to have new code in it.

The Question:
Does anyone know a method that works for them for updating the codebase on autoscaling servers that doesn't require building a new AMI for each release?

Thanks very much for your help!
0
Comment
Question by:alon_sabi
  • 2
  • 2
4 Comments
 
LVL 33

Expert Comment

by:shalomc
ID: 39898462
The key is using your own application configuration management tools.
CloudFormation deals only with infrastructure, and has a hook to bootstrap configuration scripts.
Choose either Chef or Puppet as your tool.
CloudFormation will start a base AMI with latest patches and a Puppet client.
The Puppet client will pull the application from SVN.

When there is an application change, the Puppet master will push application changes on demand to all servers.
0
 

Author Comment

by:alon_sabi
ID: 39904389
Your answer is actually very insightful. I was unaware puppet uses a pub/sub method for delivering update commands to servers. I don't think puppet is exactly good for us at the moment as we're still fairly small company, but it got me looking into it.

I'm more inclined to use an amazon service like SNS and SQS for this over puppet's ActiveMQ implementation.

What're your thoughts about this?
0
 
LVL 33

Accepted Solution

by:
shalomc earned 500 total points
ID: 39907109
So you want to create your own configuration management clients and c&c.
I am not a fan of reinventing stuff unlesd it really makes sense, and I am not convinced that it does in your case.
If you feel that puppet is too big for you, why dont you try Amazon Opsworks? Its even mostly free...
0
 

Author Comment

by:alon_sabi
ID: 39907141
Thanks, I'll check out OpsWorks. I'll be honest I didn't even think to consider it.

Thanks again :)
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
Both in life and business – not all partnerships are created equal. Spend 30 short minutes with us to learn:   • Key questions to ask when considering a partnership to accelerate your business into the cloud • Pitfalls and mistakes other partners…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question