Speaking of CI and deployment -- Does anybody know of an open source implementation of the idea described in this blog post? Maybe somebody has one and could open-source it?

http://googletesting.blogspot.co.uk/2011/06/testing-at-speed-and-scale-of-google.html


We're not all google, but overkill nicely implemented is sometimes just convenient and powerful.

In fact, contrary to what you might expect, I think some environments where development is smaller scale need this more than some "big product" development does: for example, companies that might do web app development for multiple clients, where you have a fair amount of code you reuse and multiple pieces of work going on at the same time. In that situation -- unlike a big monolithic product -- you might want to keep some flexibility about which versions of code projects work together so that old apps can easily take advantage of new code when needed. This seems like a good way to test that your dependency declarations correspond to reality, and of course to detect that a change to code project A has broken code project B earlier rather than later (even though production is pinned to old releases, you probably want to find out about the breakage early because it might get picked up later on in production).

VMs and deployment remind me of this because I think I recall a certain ex-colleague, as part of a scheme like this, wanting to build VMs to check whether system build inputs have changed. Something like that...

Also, one "overkill" use I have in mind involves testing against fakes, when your application depends on some "heavy" systems that are slow and flaky to build and run -- probably built as a VM or a set of VMS. The tests for the heavy system would depend on both the real system and the fake, and tests of applications would depend on the fake. When the real system changes, the VMs get rebuilt and both the fake and the real thing automatically get retested. If any of those tests fail and somebody fixes the fake to match reality, the application tests get automatically re-run against the fixed fake.


John

On Wed, 15 May 2013, Stestagg wrote:

To add a slightly different angle to this, whatever deployment solution you
use, make sure it is fully automated, and then hook it into you CI system.

Deployment, disaster recovery etc. are made so much simpler if you're
thinking about it from the start rather than just before release.  One way
to enforce this is to start running the process regularly.

My personal preference for this is to use snapshotted virtualbox VMs to
deploy the service/app to a clean OS install, and the run the tests, after
every commit (or on a schedule).  This way, you always know what
dependencies you need, and you're forced to make things as seamless as
possible.

The same goes for testing upgrades.  Set up a VM with version X and set up
a job to:  Upgrade > Test > Check > Rollback regularly.

Thanks

Steve




On Wed, May 15, 2013 at 12:19 PM, Muhammad Rahman <
muhammad.rah...@tangentlabs.co.uk> wrote:

 Hi Harry,

I would use salt(http://docs.saltstack.com/index.html) for provisioning
and keep the python specific package to fabric to deploy using pip.

Even though salt is able to deploy pip requirements but I think this
separation is important.

Mustafiz.


On 15/05/2013 11:34, George Hickman wrote:

 Hi Harry,

 I use two methods for deployment - Heroku and Ubuntu VPSs.

 Heroku is really simple to get going but gets expensive if you want to
run a serious production app. However it's probably what I'd recommend for
beginners since so much is done for you and they have first class python
support.

 For VPS deploys I use Nginx, Daemontools (for the envdir package),
Supervisor, Gunicorn and Postgres (with Django). I usually deploy this
setup with a mixture of Salt to build the VPS and Fabric to deploy the code.

 George


On Wed, May 15, 2013 at 10:57 AM, Harry Percival <harry.perci...@gmail.com
wrote:

 Dear UK Python chums,

 some of you probably know I'm writing a book about TDD for O'Reilly.
I'm looking for some help with the (first) chapter on deployment.

http://www.obeythetestinggoat.com/what-to-say-about-deployment.html

 What do you use for deployment?  Do you have any kind of automated
scripts? How do you manage virtualenvs, the database, apache/uwsgi
config... What do you think might work as a sort of "best practice lite"
for a simple site for beginners?  (django, sqlite database, static files)

--
------------------------------
Harry J.W. Percival
------------------------------
Twitter: @hjwp
Mobile:  +44 (0) 78877 02511 <%2B44%20%280%29%2078877%2002511>
Skype:         harry.percival

_______________________________________________
python-uk mailing list
python-uk@python.org
http://mail.python.org/mailman/listinfo/python-uk




_______________________________________________
python-uk mailing 
listpython-uk@python.orghttp://mail.python.org/mailman/listinfo/python-uk


--

Muhammad Rahman
Developer

Tangent Labs
84 - 86 Great Portland Street
London, W1W 7NR

T:  +44 (0)207 462 6150 (Office)
F:  +44 (0)207 462 6111
W:  www.tangentlabs.co.uk


_______________________________________________
python-uk mailing list
python-uk@python.org
http://mail.python.org/mailman/listinfo/python-uk



_______________________________________________
python-uk mailing list
python-uk@python.org
http://mail.python.org/mailman/listinfo/python-uk

Reply via email to