What is useful to do? First, make sure that you already follow all DevOps recommendations for commands up to five people. And only after that, proceed to the next steps.
- Make a fully automatic rollout of new versions of the service. Ideally, new versions should be rolled out at the click of a button or without clicking at all – right after making changes to a stable code branch. This should include a complete build cycle of all the components of your system, a full run of all possible tests and, if successful, roll out the new functionality to the server with notices to all employees. This approach is also called CI/CD (Continuous Integration/Continuous Delivery) – continuous delivery of new features automatically from developer to user.
- Configure deep monitoring of all aspects of iron, services and your product behavior. Servers must be stable, there must be enough memory, processors and disks everywhere. Services must be available and respond at a given time. For example, the response time of a web server should not exceed some reasonable threshold (let’s say for a web page it is 0.5 seconds). The application itself should report in detail on all important parameters of its work and on user behavior in the system. It should already include parameters such as the number of sent letters, database queries, breakdown of user activity by minutes and much more. It is necessary to properly understand the storage and analytics processing systems – Prometheus, Grafana, which, again, can be deployed in the cloud. Metrics of system activity allow you to see the real picture of your system usage by users, and this is much more informative and true than any interviews and tests with focus groups.
- Automate and/or simplify disaster recovery. This applies to deployment of backups, processing of server failures in a cluster or downfall of communication channels.
- More backups! Make backups versioned. For example, keep a full copy of the database not only for a week, but also the entire history of backups for, say, the last 2 years. Storage more information – not only the database, but all user files and the full history of all servers. All this looks redundant and cumbersome, but these measures will pay off after the first critical failure.
- Automate the management of server configurations. It is no longer enough to store configurations – you need to be able to lift a new server in minutes (or even seconds) and include it in a cluster of existing machines. Here already become mandatory Salt, Ansible, operating system images and other automation methods.
- Cover all important features of the product with a full set of tests. It is not necessary to cover all code unit-tests, but, for example, it is worth to cover all significant API calls with functional tests. Automatic testing reduces the cost of finding and fixing bugs in your services – you will know about the breakage immediately, even at the development stages. And the number of bugs in software code inevitably increases as the number of lines of code and the number of people who write this code increases.
Who should do it? The best option is to hire a qualified DevOps engineer who is familiar with all major tools and principles of DevOps philosophy. Modern devops services will help you to create a more successful project and involve modern developments in it. If you want to achieve great results with your business and bring it to a new level, you need to use the latest methodologies. This will allow you to optimize the internal processes in your company and get all that will matter in your situation.