Engineering is not all about writing software. It involves designing and building the systems in which the software runs. DevOps Engineers are responsible for creating and maintaining these systems, which we sometimes refer to as deployment environments or just deployments.
At the crypto-currency organization, we rely to the greatest extent possible on automated software deployments. “Automated” means that, to the greatest extent possible, authorized members of the staff who are not themselves DevOps Engineers can safely and securely change the configuration or version of a given deployment with little to no effort on their part and little to no risk of a degradation or loss of service to our consumers.
Software engineering here is divided into teams of 3-5 engineers, a product owner, a program manager, and a DevOps engineer. DevOps engineers are also grouped into teams of their own to share expertise and expose concerns that affect the entire platform. A good DevOps engineer maintains constant communications with both groups.
DevOps Engineers have the following general responsibilities:
- Working with software engineers to design deployments for the products services.
- Using industry-standard automation tools, including Docker, Kubernetes, Amazon Elastic Beanstalk as well as other software and services, to build the deployments such that they can be operated by the software engineers themselves.
- Setting up and maintaining automatic software building and testing.
- Monitoring the performance and cost of production services and recommending improvements.
- Diagnosing issues and failures in deployments and assisting software engineers in repairing them.
- Ensuring that best security practices for the storage and transmission of sensitive company data are strictly followed.