Hey guys, I'm about to embark on a reasonably ambitious Django project that might need to be maintained for some time into the future. I'm interested in making the best choices *now* to minimize future pain.
So I'm interested in peoples' experiences and maybe even regrets. What
sort of things do you wish you had decided in early stages that would
have made your life a lot easier?
Some thoughts I'm already having:
- Components: Django, apache, mod-wsgi, memcached, postgres
- My intent is to keep it as horizontally scalable as possible -- I want
to make it easy to simply throw more servers at the system when load
gets high.
- I might need a distributed task queue -- I haven't used one before
myself but I've heard about celery, any suggestions?
- It's a fairly tightly integrated system so I'll keep a central
TEMPLATES and STATIC folder, rather than wanting them per-app.
- test-driven development and an integration test suite are project
requirements. I've used Selenium in the past, but since I'm starting
fresh should I use a newer technology, like PhantomJS? What about for
the test suite? nose?
- Deciding on how I want to do deployment might be the decision with the
most obvious long-term consequences. I've used setup.py and buildout in
the past, my sysadmin team would far prefer everything comes in nicely
packaged .debs, there's a lot of options, and all of them are fiddly. I
would really appreciate people's thoughts on this.
- Writing future-proof code: I will be writing in Python 2.7, but I want
to remain as future-compatible to Python 3 as possible. How do I go
about achieving this? Some combination of using "from future import
[whatever]" and a compatibility library like 'six'? I've only heard of
'six', I'm yet to use it. The simple fact is that Python 3 is the
'future', but it's not the 'present', at least until Django and 3rd
party libraries are all ready for it.
If you have an opinion on any or many of the above, don't be afraid to
shout out! It might be an interesting discussion.
Cheers!
Tom
--
Tom Eastman // Catalyst IT Ltd. // +64 4 803 2432
signature.asc
Description: OpenPGP digital signature

