The story of how we built DevOps practices for a company that focuses on mobile development.
The main approaches that were built in the company:
Version Control. Just as the drama starts with a hanger, so DevOps starts with code, namely the right branch and merge strategy. Of course, everybody now works with git by default, but not everybody understands how to make the code base as convenient as possible, and in case of problems you did not have to see the "resolve conflicts" button for a couple of days.
Management. Build the correct process of task definition and notification of affected commands. If you have the "Setup DevOps for team" ticket, you absolutely do not know what is going on in your team. CI/CD. Everybody also knows about it, but few people "cook" it correctly. We have built our Pipeline, so that for all the operations in the company (deploy, rollback, test, test env rollout) you just need to start a commit and get an approval.
Infrastructure as Code, Configuration Management. If your infrastructure is not described in code, then you have no control over it. With any change, you have a huge time loss to change the settings of all affected resources. That's why we describe almost everything in the code.
Testing. If possible, your tests should be reproducible and automated. We have helped to optimize the infrastructure for this as well.
The tools we have used:
GitHub for storing code and building branch strategy
Jenkins for CI/CD process creation and testing
Terraform for creating and managing resources from code
Ansible for resource configuration
AWS as a cloud
Selenium for testing
docker-compose - for local work with stack
Note: of course, you can and should build processes only when they are necessary. But the complex approach to building DevOps practices releases a huge amount of resources (both temporary and monetary), which can be used for other purposes.