Microsoft Aims to Bring DevOps Discipline to Web3

While Web3 has been overtaken in the tech news flow by the rise of decentralized social media, the long-running effort to strengthen dApp infrastructure continues. Somewhat surprisingly, Microsoft has now joined the Web3 revolution, albeit in a low-profile way. Donovan Brown, a partner program manager on the Azure incubation team at Microsoft, told The New Stack that he wants to bring DevOps discipline to Web3, in order to help the fledgling industry scale.
By using Azure Pipelines for his DevOps pipeline and GitHub to store his source code, Brown has been conducting a series of Web3 experiments and documenting the results on Medium. In a Zoom call, we discussed the progress he’s made so far — and why Microsoft is interested in blockchain technology.
So first off, why is Microsoft interested in blockchain applications — aka Web3 — given the criticism that the crypto industry has received from many in the developer community?
The Azure Incubations Team, Brown replied, is a part of Microsoft “that’s looking to the future and what developers [will] need — what challenges are they going to have to solve in the future?”
Since Web3 has become a trend in internet technology, he said, the team decided to look more closely at it “and figure out what this thing is.”
Lots of Dev, But Not Much Ops
Brown described himself as having “a really deep DevOps background” and what he discovered when he looked into Web3 was a lack of Ops rigor.
“What I noticed when I was looking into the community and poking around was, you’re telling me how to write smart contracts, but we’re all deploying them right off of our machines onto mainnet — like, where’s the pipeline? Where’s the Dev, QA and Prod? Where’s that protection that I’ve come to expect when I’m deploying software? I realized that it wasn’t out there.”
What’s more, he saw that this was an even bigger problem in Web3 than for a Web 2.0 application, because blockchains are far less forgiving of errors.
“It’s permanent — that failure will follow you around forever, because there’s no way of getting that failure off the blockchain. So it’s like, how are they not implementing DevOps best practices?”
He reached out to the Web3 community via Twitter and said he received a positive response — they welcomed his input and asked how he would implement DevOps into Web3. So Brown started using Truffle, which is a “suite of tools for smart contract development” owned by ConsenSys, and wrote a test React application.
His goal, he told me, was to get the app to “play nicely in a CI/CD pipeline, and use all the tools that we have at Microsoft at our disposal.”
Microsoft, Brown noted, has “a partnership that we’re building with ConsenSys,” a well-known Ethereum software company. (Microsoft became an investor in ConsenSys in March.)
Azure to the Rescue
What technologies did Brown use for the dApp experiments, other than React?
“We used Azure Static Web Apps,” he replied, “which is almost purposely built for hosting a dApp, because a dApp is just a SPA [single-page application] frontend, using JavaScript to talk to your smart contracts on-chain. Well, Static Web Apps is literally designed to host that. It’s like wow, this is a perfect fit.”
However, implementing the DevOps part was more difficult. Brown found that when deploying the SPA to a blockchain, “the API scribbles in the address of each of the [smart] contract deployments in the bottom of the JSON.” This was unacceptable, because it meant he had to “repackage my entire front end” in order to move from a testnet to the mainnet.
“Well, in DevOps,” he said, “that’s a bad thing.”
“You never build over and over again,” he continued, “You build once and you deploy the same binaries over and over again. So I had to go in and figure out, how are these templates being written? And luckily, because Azure Static Web Apps gives you Azure functions for free, I was able to write an API that would then query and find the addresses for me, and then inject the addresses into my SPA. So now, I’m able to package my SPA one time and deploy it over and over again using Azure DevOps or GitHub Actions.”
As for deployment, he explained in the first post of his Medium series that the “Dev environment will deploy the application to a personal Ethereum blockchain using Ganache running in a container” and then “QA will deploy to the Rinkeby testnet and finally Prod will deploy to Ethereum mainnet.”
He added during our conversation that the container he used was via Azure Container Instances — “another feature from Azure that just we already had.”
According to Brown, using the above process gives Web3 developers the validation needed for a safe deployment to mainnet.
“We’re running the unit test, we’re able to get your acceptance testing done, we’re able to have this normal DevOps experience even though we’re actually using blockchain as the technology.”
Is Azure Replacing Another ConsenSys Product?
One thing Brown mentioned pricked up my ears. He said that Microsoft’s partner in Web3, ConsenSys, is “moving a lot of their Infura networks over to Azure.”
Like Truffle, Infura is owned by ConsenSys. Back in April, I interviewed Infura’s co-founder, E.G. Galano, about how it complemented Truffle. The latter is how a developer creates an app, so it is basically an IDE. But I found Infura more difficult to grok.
Galano had explained that Infura is “like the continuous running service that’s used, initially by the development team, to deploy their application, and then for users to interact with the application.” He’d likened it to a web hosting service, only it didn’t host files — instead it used APIs to point to the actual data sources, on a blockchain or in a decentralized storage solution like IPFS. Even now, typing that out again, I am confused about what Infura is.
I inferred from Brown’s comment that a solution like Infura might not be robust enough in terms of normal DevOps procedures. If so, that’s an indication that some Web3 infrastructure could well be usurped, in time, by traditional software companies (Microsoft, in this case). We’ll have to wait and see how ConsenSys handles this going forward, and what becomes of Infura. Update: Microsoft emailed after publication to request this clarification: “Donovan wasn’t implying Infura wasn’t robust enough for normal DevOps procedures and views Infura as a required step for dApp development.”
Brown added that Microsoft will also partner with ConsenSys “on the developer experience.” He said the two companies are “figuring out how to leverage the ecosystem that Microsoft already provides for all developers, in a way [ConsenSys] can leverage for Web3 developers.”
Microsoft’s Web3 Explorations
A final note that Microsoft is also working with other Web3 partners, mainly through its venture fund M12. One example is a decentralized data platform called Space and Time, which plans to integrate with Microsoft Azure.
While this is all at an experimental stage, I have no doubt that the Web3 industry will benefit from the technology heft of Microsoft and its highly-scaled Azure stack.