Full-stack software engineer working from Codebridge in Claremont, Cape Town. I have been building commercial web applications professionally since 2003. I have a degree in Electronic Engineering and am currently involved with iFix and MyNames.

Accepted Talks:

Deploying Highly-Available Architecture with a Pinch of Salt

This is the story of a .NET guy's Python development journey to deploy a medium-sized system to AWS using bleeding edge deployment tools and trying to design for high-availability.

MyNames is a bulk .CO.ZA domain management system designed to be eventually consistent in managing domain name registrations and renewals via a rate-limited external service. We use TeamCity for continuous integration and testing, and Saltstack for deployment.

Saltstack is a Python-based client/server deployment system akin to Chef that targets and deploys our various worker roles via ZeroMQ to a small fleet of EC2 instances.

I will detail the architectural problems we are solving when dealing with a bottle-necked external service and give an overview of Saltstack.

The MyNames Stack

AWS:

  • EC2 workers running Ubuntu 12.04 LTS
  • Route53 for customers' DNS
  • ELB for load balancing API requests
  • SQS for queuing synchronisation tasks
  • RDS for really expensive MySQL database hosting

Python

  • Twisted Web for RESTful API calls
  • Flask for more RESTful API calls
  • SQLAlchemy as an ORM, based on Hibernate
  • Alembic for database migrations

Deployment:

  • TeamCity for automated continuous integration and testing
  • Saltstack for command-and-control targeting and deployment
  • Nginx for serving static front-end HTML

Front-End:

  • CoffeeScript compiles down to JS
  • AngularJS as front-end framework
  • Restangular to talk to our API
  • Bootstrap 3 for CSS structure




PyConZA brought to you by Praekelt Foundation