paint-brush
How Blockchain Technology Can Improve DevOps Practices in Web3by@johnjvester
431 reads
431 reads

How Blockchain Technology Can Improve DevOps Practices in Web3

by John VesterAugust 17th, 2022
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

This article discusses how DevOps practices, tools, processes, and blockchain technologies complement each other to deliver Web3 solutions. Web3 is a hypothetical version of the next generation of the internet, with Web3 powered by blockchain technology. The table below shows how different DevOps phases can work together to contribute to blockchain development, testing, and delivery. Current DevOps tools and practices will help blockchain development using containerization, automation, and short development iterations. The article also discusses how different tools, technologies, and DevOps approaches work together.

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - How Blockchain Technology Can Improve DevOps Practices in Web3
John Vester HackerNoon profile picture


Although in its early stages, Web3 shows promise to deliver the benefits of blockchain and DevOps working together. This article discusses how DevOps practices, processes, tools, and blockchain technologies complement each other to deliver Web3 solutions.


DevOps is an umbrella term encompassing a culture, mindset, development styles, processes, and technologies for software development. DevOps focuses on collaboration, automation, predictable outcomes, shorter delivery cycles, and quicker client feedback to improve the quality of software delivery.


Blockchain is a technology of immutable, distributed ledgers. A blockchain ledger consists of decentralized “blocks” that contain records of events or “transactions” on the ledger’s network. Once a blockchain records a transaction, it can’t be removed or updated. Blockchains can either be centralized or decentralized, though the inherent nature of the blockchain will always be distributed.


However, most blockchain networks are decentralized, meaning they run on nodes in a network rather than central servers. Additionally, decentralized blockchains are permissionless, meaning anyone can access them or participate in their networks.


Web3 is a hypothetical version of the next generation of the internet. Web2 ushered in the age of dynamic user-generated content, wide adoption of eCommerce, and ease of use. Whereas Web3, powered by blockchain technology, brings in a new era of decentralization by transferring the ownership of user data from large players to users themselves. Web3 organizations, such as ConsenSys, deliver new tooling that promises a range of security and productivity benefits when combined with common DevOps practices.


How Do DevOps and Blockchain Complement Each Other

DevOps is a cycle that continuously improves the software delivery chain. Its best practices can enable blockchain technology development through different phases and tooling. Current DevOps tools and practices will help blockchain development using containerization, automation, and short development iterations.


On the other hand, blockchain technology provides a better way to deliver services and data through immutability, security, smart contracts, and so on. In addition, it can lift DevOps delivery to a new level by ensuring quality and eliminating ambiguity.


How DevOps Practices and Tooling Help Blockchain Development

The table below shows how different DevOps phases can work together to contribute to blockchain development, testing, and delivery.

DevOps Phase

Blockchain Development Example

Web3 Tooling Example

Feedback

In this phase, the blockchain application development team receives feedback from clients, internal teams, or even market research of competitors about improving existing features, or adding new features.

Service request monitoring tools like Request Tracker

Development

The development team adds new features, improves existing features, or fixes bugs in their blockchain application. They use different tools, technologies, and platforms for development.

Development environments, frameworks, libraries, repos, and toolsets like: Remix IDE
Solidity
Truffle
Drizzle
Ethlint
Radicle
Ethereum Virtual Machine (EVM)

Testing

Developers perform unit-testing on their newly-developed code. The test team performs system integration testing, performance testing, and so on.

Code testing tools like Ethereum Tester
Ganache
Diligence Fuzzing
hevm

Integration

Once all tests are successful, the team pushes the newly-developed code to the source code repository of the blockchain application. A pull request merges the latest changes to the master branch.

CI tools like:
CircleCI
Jenkins

Build and Deployment

The integration into the master branch triggers a build process. This is when the application is built with all the dependencies and is ready for deployment. Once the build completes, the Continuous Deployment pipeline deploys the application to lower environments like UAT or STAGING. After deployment, a battery of automated tests run on these environments to ensure everything is working as expected. If all automated tests are successful, the pipeline deploys the latest version of the blockchain application to production.

Build automation and CD tools like:
Gradle
Truffle

Monitoring

Observability platforms, log management solutions, and monitoring tools collect logs, metrics, traces, and events from the blockchain application. IT teams use these tools to troubleshoot incidents, and performance problems, investigate security issues, or plan capacity.

Observability technologies like: Infura
BlockScout
Ethernal
Quine

Operations

IT operations teams ensure the blockchain application is running as expected and fulfilling its SLA. They perform necessary maintenance tasks on the infrastructure, apply hotfixes, upgrade software, and so on.

Service management tools like Spiceworks


How Blockchain Can Help DevOps Practices

As an emerging technology, blockchain has come a long way from just cryptocurrencies and the transfer of value to the range of applications that use it now. As the technology matures, it can enhance DevOps and software delivery processes in various ways.


Transparent Delivery with Immutable Ledger

An application can utilize the immutable ledger technology of a blockchain for more transparent and reliable delivery. Each node in the blockchain can contain a complete history of the software’s development process and its dependencies, thus increasing its trustworthiness.


Quality Assurance with Smart Contracts

The arbitrary code of smart contracts only executes under the successful meeting of predetermined conditions. Therefore, smart contracts can be used to regulate the testing and acceptance process. Additionally, such an approach would help in automating compliance and approval processes.


SLAs with Smart Contracts

Software delivery can use smart contracts to encode service level agreements for the application’s consumers. This can remove ambiguity and disagreements on requirements specified in the agreement. Similarly, a distributed ledger can help settle payments and ensure licensing rights.


Security and Auditabilty with Immutable Ledger

While the DevSecOps practice strives to ensure software security, a blockchain requiring authentication enhances this security further by validating the players in the network. Log events can be recorded in an immutable ledger so that researchers can trace any security breach back to an exact point in time.


Also, since blockchain-based code is immutable and all nodes have the entire history of transactions, supply chain security can be maintained and verified by auditing relevant ledgers of any open source or third-party libraries.


Mandatory Documentation

Software documentation can often be non-existent, low-quality, or out-of-date. Similarly, multiple versions of the same documents can often cause ambiguity. Not only can an immutable ledger contain a signed version of the latest documentation, but a smart contract can also be activated right before the software delivery to ensure the fulfillment of specific documentation standards.


The Future of Web3 and DevOps

Web3 will potentially create a new generation of blockchain-based tools, practices, and processes for DevOps. Examples include decentralized, distributed, secure code repositories for open source and business collaboration worldwide. Examples of such code repositories include Radicle, or Ellcrys.


Web3 will also call for specialized programming languages to accommodate blockchain constraints and provide a rich set of libraries. An example of such a programming language is Solidity. Programmers can use development frameworks like Truffle to build and test their applications and run them on the Ethereum Virtual Machines (EVM).


Web2 applications allow verification of a message’s contents, but not necessarily verification of the sender. In blockchain technology, there’s an added security layer of trusted nodes that can verify the sender. Web3 will increase developer trust and security through the immutable ledger and smart contracts, enabling anyone to audit a software’s quality and purpose. Tools like Diligence can audit such smart contracts. Other tools like Quorum Key Manager can help secrets and key management.


Conclusion

DevOps is a widely accepted practice for software delivery. Part of its success is due to adopting cutting-edge technologies as they become available and contribute to their maturity.


Blockchain, also an emerging technology, can benefit greatly from software delivery over the web. Current DevOps tools and practices can help develop applications on top of blockchains, and a more mature blockchain adoption can improve the DevOps practices in return.


Have a really great day!