Web2 vs. Web3

Web3 brings a significant change in the way we develop software compared to the traditional software engineering, also know as Web2. Web3 is a new paradigm for software development. In this article, We will explore the changes in the technology stack between these two worlds.

Decentralize apps architecture

Decentralized apps go beyond blockchain. A complete stack of new technologies is available for us to use in developing dapps. We can compare it with the traditional software development to understand the significant transformation and knowledge required to build these types of applications.

Web2 (apps)Web3 (dapps)
Front-endAngular, React, Vue, etc.Angular, React, Vue, etc.
BackendREST API (Python, NodeJS, PHP, etc.)Smart Contracts (Rust, Solidity, C/C++, other)
ProtocolsHTTP, HTTPSJSON RPC
ClientsFetch, Axios, etc.@solana/web3.js, Ether.js, other
CloudAWS, Azure, etc.Solana, Ethereum, other
DatabaseMySQL, MongoDB, etc.Blockchain, IPFS, Arweave, other
AuthenticationUser/Pass, OAuth, etc.Wallets (Phantom, Metamask, etc.)
RepositoriesPublic/PrivatePublic on GitHub

Let’s take a look at the changes in the tech stack one by one:

Front-end: Probably, the only factor we can observe that does not change is the front-end technologies that are used. Angular, React, Vue or other Javascript-based frameworks to develop graphical interfaces are still the choice. React has a wide predominance on dapps development. Despite Angular and Vue being used to a lesser extent, they are still a good option.

Backend: In the backend, changes begin. The typical APIs we know, and we usually develop with Python, NodeJS, Java or other language, they turn into *smart contracts developed with Rust, Solidity or C/C++**, depending on the specific blockchain we are working.

Protocols and Clients: The communication protocol between front-end and backend also changes. HTTP is no longer used, instead, JSON RPC becomes the standard. The dependencies or clients we use also differ. While in the Web2 paradigm, we use any HTTP client, now we use JSON RPC clients. It does not stop being transparent for developers, clients make all the work, and we still work with asynchronous processes and event to which to respond.

It is important to understand that communication protocols are different. Not being HTTP, we will not have the standard codes 2xx, 3xx, 4xx, 5xx. Each blockchain has its own protocol to give positive or negative responses to the client, their own standards.

Cloud: Servers where we deploy our apps such as AWS, Google Cloud Platform, Azure or any other preference, no longer exist. Smart contracts are deployed directly on the blockchain in a decentralize way.

DDBB: The persistence of information is also a task of the blockchain we are using. It is possible to use other type of decentralize services like IPFS to deploy a front-end or as a file system to host an image bank.

Auth: Finally, authentication methods. With a combination of user and password we enter to any app we want to use, or it is possible to implement a protocol like OAuth 2.0 to authenticate through our Google or GitHub account. Wallets become our only and main mechanism to identify ourselves and secure our data.

Repositories: That the source code of a decentralized application is in an open source repository, it is also an important thing to consider to decentralize an app and build trust in the project. A smart contract whose repository is private, it could not be well seen at all.

Measuring the Degree of decentralization in a project

The stack explained above has a 100% decentralize orientation. But rarely we will need this approach, really. A front-end may be communicating with a blockchain, but this will still be deployed in Vercel in a centralized way. Or consume part of the information from a smart contract, and another part from an API developed with NodeJS that uses a MongoDB database and deployed on AWS.

A project like this is also a valid approach. Not all decentralized apps follow a 100% decentralized model. The work of a Web3 engineer is to take decisions about which parts to decentralize and which part not. Understanding these new technologies will give you the tools to achieve it.

An example of a project that needs complete decentralization could be a DeFi platform or similar use case with a responsibility related to the flow and care of its users’ money.

Reasons to be a Web3 developer

Blockchain is a new paradigm to develop software. It adds a new layer of technologies above existing Web2. It is crucial to have knowledge and experience in traditional software development to build in blockchain.

The big change for Web3 is allowing users to be owners of their data. Something totally controversial in Web2 projects where we cannot control who accesses the data what belongs to us on social networks or each app we use.

Learning these technologies will make you in another type of professional in the software industry. A professional profile highly demanded and with the knowledge to solve use cases that only this paradigm allows such as DeFi, Tokenization, NFTs, and so on.

Blockchain has absorbed a portion of the talent of senior developers. Lots of them have migrated and reoriented their professional profile towards these technologies. It is not an easy decision, it is a path that requires a high level of frustration tolerance, not understanding why things don’t work. With traditional technologies, all is documented, and all problems are in Google. In blockchain, it is usually not so easy.

Despite blockchain world has a little more than one decade, yet we are in an early time to adopt and learn these technologies. As if it were the internet at the end of the ’90s.

Lots of people every day start to enter to the blockchain world, in general, with economic interests due to the value of the crypto. As developers, we have the possibility not only to be crypto users, but also be creators of these decentralize services of tomorrow.

Conclusion

Now you have an overview of the differences between Web2 and Web3 as well as a comprehension deeper of decentralization and what a Web3 developer does.

Being a developer of this type is an exiting and gratifying challenge. You will join a small group of professionals trained in the use of these revolutionary technologies. Only a small percentage of programmers in the world, about 1 o 2%, have the technical knowledge related to blockchain, and they are able to build NFT portals, wallets, or decentralize systems.

After exploring the key concepts and understanding what are you becoming, the question you have to answer is: Am I ready to take my career into Web3 industry?

Web3 world offers unprecedented opportunities to innovate and build apps that challenge the limits of traditional web. As a web3 developer, you will be able to build decentralized solutions, opening new paths in the technological horizon.