Here are some thoughts about deploying a web service or a web application today, in 2014.
Let’s consider some expectations for the following roles:
- client : he expects the service to be reliable
- provider : he requires ease of deployment, ease of testing & maintenance
Reliability
The 3 top issues are :
- service is not available (network) : we have to continuously check the service is available and fix the issue immediately. It can be a permanent or temporary network availability issue.
- service is slow or is returning errors : errors must be automatically detected, sysadmin must be notified immediately to take action
- service is returning incorrect result : current version of the service must have been validated by a QA team
Ease of deployment
For the service to be easy to deploy:
- deployment is done via a single deploy command
- deployment can made partially
- constant checking is done during deployment
- it’s always possible to come back
- deploy a server farm is as simple as deploying a single server
Ease of testing and no-longer-painful maintenance
Let’s imagine that:
- service execution data are collected and processed in realtime
- execution data is automatically analysed
- servers are automatically switched when necessary
- it’s easy to add new servers when service load is increasing
I’m preparing a serie of article about Mesos / Marathon. This platform, maybe, is a good opportunity to move in this direction.