Nowadays, everything in the DevOps space is associated with a word that ends in ops: GitOps, AIOps, MLOps, DevSecOps, EverythingOps. While this may have already been mentioned elsewhere, I want to write some perspectives on how to apply DevOps processes to blockchains and/or distributed ledger technologies ( DLT ).
For example, just to describe one of these so-called “operations” terms: “GitOps is an operating environment that takes advantage of DevOps best practices used for application development, such as version control, collaboration, compliance, and CI/CD, and applies them to infrastructure automation. Infrastructure as code tools like Terraform immediately come to mind.
ChainOps (from my point of view) should be used to describe DevOps methods performed right in the blockchain space.
In a decentralized world, the main contributor to application development or Dapps (decentralized applications) is the node , a node in DLT (Distributed Ledger Technology) is the minimum infrastructure component capable of running the necessary software to be a functional part of the ledger.
As such, Devops must be responsible for ensuring that each node has the same networking and infrastructure capabilities (eg RAM, CPU, bandwidth) as well as the same software package versions. (For example, bitcoin core versions or DappNode versions)
Automated DevOps workflows should be responsible for delivering and integrating not only core node versions, but also other software required by Dapp .
Finally, DevOps must take care of monitoring, alerting, and essentially measuring KPIs on each node in order to apply settings based on all the data received by the monitoring agents.
From an infrastructure point of view, a blockchain is a chain of nodes that have the same software for computing and connecting with other nodes, from a devops point of view, a decentralized architecture offers certain advantages, since each node or instance is exactly the same as the others. While scalability and high availability are not entirely achievable, partly due to DB synchronization (each node must have the same data) among other reasons.
Probably the best way to start a blockchain Devops (or DLT) workflow is to use Terraform, the terraform code should be responsible for defining the underlying network and the instances that the node software should run on. Terraform also makes it easy to interact with different clouds.
A GitOps workflow must be configured on Github/Gitlab/Bitbucket, etc. to allow CI/CD implementation for Terraform code or modules.
Terraform can also be used to deploy custom instances using e.g. Packer, but this greatly impacts the time it takes to provide functionality to the blockchain and/or nodes. Personally, I prefer Terraform to take over the definition of the shared infrastructure and then write an Ansible playbook to deploy customized software to many nodes at the same time, thus separating infrastructure and network deployment from software deployment.
The only software related part that terraform has to do is “packaging” the customized ami (or base image) with the minimum software needed (if any) to deploy the node software.
In conclusion, ChainOps is a summary of best practices and tools that enable you to implement the infrastructure automation and CI/CD pipelines required to deploy Dapps and Provisioning Nodes on DLT.
Related posts:
- About admins, DevOps, endless confusion and DevOps transformation within the company
- Managing hundreds of servers for a load test: autoscaling, custom monitoring, DevOps culture
- Pure devops: how the concept of “DevOps” emerged and developed. Part 2/2
- GitOps: another buzzword or a breakthrough in automation?