4

We are developing a distributed application in Python. Right now, we are about to re-organize some of our system components and deploy them on separate servers, so I'm looking to understand more about deployment for an application such as this. We will have several back-end code servers, several database servers (of different types) and possibly several front-end servers.

My question is this: what / which are good deployment patterns for distributed applications (in Python or in general)? How can I manage pushing code to several servers (whose IP's should be parameterized in the deployment system), static files to several front ends, starting / stopping processes in the servers, etc.? We are looking for possibly an easy-to-use solution, but mostly, something that once set-up will get out of our way and let us deploy as painlessly as possible.

To clarify: we are aware that there is no one standard solution for this particular application, but this question is rather more geared towards a guide of best practices for different types / parts of deployment than a single, unified solution.

Thanks so much! Any suggestions regarding this or other deployment / architecture pointers will be very appreciated.

2
  • Have a look at kwatee. It can do everything you've described and remains lightweight with a nice web interface for configuration and operation. You can also automate deployments with its python utility scripts. Commented Nov 9, 2012 at 7:37
  • @mac You should definitely add this as an answer. Commented Nov 9, 2012 at 20:05

1 Answer 1

2

It all depends on your application.

You can:

  • use Puppet to deploy servers,
  • use Fabric to remotely connect to the servers and execute specific tasks,
  • use pip for distributing Python modules (even non-public ones) and install dependencies,
  • use other tools for specific tasks (such as use boto to work with Amazon Web Services APIs, eg. to start new instance),

It is not always that simple and you will most likely need something customized. Just take a look at your system: it is not so "standard", so do not expect it to be handled in a "standard" way.

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks. More than expecting a "one click supertool" to do all we need to do, what I wanted is pretty much what you provided: What tools are better for different tasks? Again, thanks.
Any chance you could help me compare this approach to what mac mentioned above, Kwatee?
@JuanCarlosCoto: That solution (Kwatee) looks interesting, but rather basic and not very developed. I have never used it before, but judging from their website (very rough, simple, without much content), documentation (same as website), screenshots (very simple concepts), number of questions on StackOverflow (25 compared to 1440 for just Fabric), number of updates on the blog (4 in 2012 so far), I think they are not so widely known, tested and respected solution for deployment. Just see the number of solutions based on Puppet, Fabric, boto etc.- surely you will find more advanced alternatives.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.