django checklist
Launching a website can be an exciting but nerve-wracking experience. With so many moving parts in the website development process, it’s easy to overlook small details that can significantly impact the user experience. To help you avoid potential issues, we’ve compiled a checklist of things to verify before your site goes live.
Here it is an opinionated production checklist that is tailored to a high-traffic website (100k Requests per day and above).
Django settings
- Django
DEBUG = False
- Django
SESSION_ENGINE = django.contrib.sessions.backends.cached_db
ordjango.contrib.sessions.backends.signed_cookies
- Django
ALLOWED_HOSTS
is set to match your domain - Django
CACHES
should use either memcached or redis backend - Verify Django the value of
settings.DEFAULT_FROM_EMAIL
- Static files are not served by Django
- Avoid
/admin/
for Django admin
Server configuration & checks
- Confirm that you have multiple instances of your web application.
- Verify the output of
manage.py check --deploy
directly on the production server - Error and exception are logged into SENTRY
- UWSGI Harakiri timeout
--harakiri=10
- Check that logger.error(…) and logger.info(…) is sent to your logging pipeline
- Verify that your production dashboard has information about
- Load and balancer request per minute 2XX, 3XX, 4XX, 5XX
- AVG and p99 response time for your web application
- database CPU load and transaction per minute
- Confirm that you have a regular DB backup process that you can restore.
- Confirm that you log the slow database queries.
- Database cluster has at least a master and 1 read replica.
Website verification
- Confirm that your site has
/robots.txt
- Confirm that your site has
/sitemap.xml
- Confirm that your site has
/favicon.ico
- Confirm that your web stack properly sets the
cache-control:
andexpires
headers; this will significantly improve your CDN hit rate - Run an SSL server test
- Run PageSpeed Insight
Each GO Live plan has its own set of constraints, so having a one size fit all strategy is impossible. However, here it is the essential items that I like to integrate every time I build a deployment plan:
- At no point during the launch process I want to do something that would prevent me from not going live.
- A step-by-step guide with every action and who is in charge of executing them The ideal situation is to be in a position where you have the legacy and the new stack running simultaneously under 2 domains:
www.amazingsite.com
andbeta.amazingsite.com
. At this point going live is “just” a DNS switch.
In conclusion, launching a high-traffic website can be a daunting task, but with the GO Live checklist, we hope to ease some of that stress by providing you with a comprehensive list of things to verify before. Remember to check and double-check everything before you launch, and best of luck with your website launch!