Desktop-based product or Cloud-based product? When developing a new product it is always a central question and now with more and more traditional desktop products are moving to the cloud it makes a lot of sense to give this question serious consideration. This article tries to go into details of various aspects that one has to weigh while making this decision.
When we trace the origins of the Computer-Aided Design system (CAD) back in the middle of the 20th century, a mainframe was supposed to be the hardware. The software was primarily built by large corporations that could afford to operate mainframes and develop their CAD.
With time, the mainframe was supplanted by minicomputers, and CAD became commercially available with a much affordable price tag. Later on, evolution in hardware brought about the microcomputer. Personal Computers and Unix workstations grew in popularity with companies and independent vendors, professionals alike. A remarkable aspect was that CAD systems could ride upon the local processing power of the PC without the need for a centralized server.
All data storage was done centrally in the case of mainframes and minicomputers. An operator could log on and access data from any terminal. On the contrary, everything was managed locally in case of microcomputers hence the data was difficult to access unless one had his dedicated PC. To counter this issue, dedicated corporations introduced client/server architectures to facilitate local processing and centralized data storage.
Nowadays, companies either manage their hardware and software on their premises, or offload everything to the cloud, or maybe somewhere in between. The new nomenclature was introduced to make distinctions: either “on-premises” (also called as “on-premise” and “on-prem”) or for true cloud-native solutions, it is “Software-as-a-Service” (SaaS).
There are many other hybrid solutions, but this article solely focuses on these two aspects.
For many design decisions, the most important thing is to know the requirements. In the end, we need to solve a given problem as efficiently as possible. One of the most debated topics in the world of Product development is: Whether to go for a desktop or a web-based solution for New Product Development.
Now let’s look at the most common non-functional requirements, which play a role in the design choice between desktop and web:
- Deployment aka Set-up effort: Deployment refers to how easy and fast one can set-up the required tooling and the runtime for executing a system. Usually this is mainly referring to the developer tooling and its runtime(s) since it needs to be repeated for every developer.
- Portability: This refers to how difficult is it to port a tool to another platform/hardware. The typical case is accessing all development resources from any platform, e.g. also on your mobile device.
- Performance and responsiveness: Performance and responsiveness refer to how a tool performs and its responsiveness to users or functionalities.
- Usability: Usability refers to the level to which a software can be used by specified users to achieve specific project goals with accuracy, effectiveness, efficiency, and satisfaction.
- Online Data Storage: Data storage for a Cloud-based app is typically done on cloud-based servers. It makes it very easy for the users to access this data from anywhere using any device.
- Collaboration: A cloud-based product is more suitable for collaborative development.
- Cost: Cost is probably one of the most important criteria to consider. The cost takes to form an Integrated Development Environment (IDE), tooling, extension, or the required development runtime.
Let us understand these in some detail now.
Deployment is probably the most prominent advantage that is advertised for web-based solutions. The intention is to simply log into a system via a browser and start coding without installing anything specific. Further, you do not need to install any updates anymore, as they are applied centrally.
The first interesting aspect of this is how much time you can save with improving the installability. This is connected to the number of developers that you have on-board to use the tooling and the number of people who are occasionally using those tools. Further, it plays a role in how long a developer would use the tool after installation, the shorter the usage the more significant the set-up time would be.
One of the important aspects related to installability that needs consideration is updatability. While of course an update to the tooling is hopefully not the same as installing it from scratch, most considerations we had for the installability should be applied for the update case as well.
Installability is one of the major advantages of a web-based solution. However, it will only provide a significant advantage. Therefore, it is worth it to spend some time on defining the core users and define the importance of installability for them. In a nutshell, installability pays off most in environments, where a lot of people need to and can be on-boarded very fast, and if they do not work continuously on a project.
Portability is the second most advantage of a cloud-based solution over a desktop-based. Portability is considered as the ability to access the tool from anywhere on any device. It facilitates access to tooling and runtime through any device with a browser. As a result, you can ideally fulfill your development use case at any location, even from a mobile device.
A disadvantage of a pure cloud-based solution is that they often rely on a constant internet connection. While this issue becomes less and less relevant, at least it must be considered. Some cloud-solutions already provide a good work-around, e.g. the offline mode of Google Mail.
Performance is a very interesting requirement to consider. In contrast to deployment and portability, there is no clear winner between desktop-based and cloud-based tooling. One can find valid arguments for both to be superb performers.
The major reason for this tie is the fact that we have to consider the specific use case when talking about performance. While writing code, engineers need fast navigation, key bindings, and coding features. Although IDEs have caught up a lot in recent years, a desktop tool is typically more performant for those local use cases. However, in cases such as compiling, a powerful cloud-instance can certainly compile a project faster than a typical laptop.
Usability also doesn’t have a clear winner in the comparison between desktop-based to cloud-based IDEs. While advocates of both platforms would claim a clear advantage, this is a matter of personal taste. Nowadays, web technologies have become very powerful and efficient in terms of styling, look, and feel. Hence, one can achieve any desired visualization as per likeness.
Native desktop applications have still some advantages in usability. For example, by supporting native features such as application menus, tray icons, etc.
5. Online Data Storage
Cloud-based products typically offer cloud-based data storage functionality. This makes it easier for users to access their data from anywhere in the world often using multiple or different devices. Another advantage of online data storage is automatic backup, the user does not have to even think about backing up the data. Online data storage also makes it easy for users to share data (especially large data) very easily with colleagues or business partners very easily and effectively by sharing just a link.
6. Collaborative Development
Cloud-based products make it a lot easy for multiple users to work on a particular project. The cloud-based data storage makes it easy for users in different geographies to work as if they are working from a single office. So for products where collaboration is a very critical cloud-based product makes a lot of sense.
Cost remains an important constraint for many projects. Usually, cloud-based solutions add some complexity to the architecture due to the required encapsulation of the client and server. Of course, you want to have encapsulation of components in a desktop-based tool, too. However, you typically do not have to deal with the fact that components are deployed in a distributed environment. The dimension of cost vs. features is especially difficult because one cannot know exactly what kind of features might be allocated with a tool in the mid-term future.
The article tried to cover the most important considerations when deciding between a cloud or web-based solution and a desktop tool. There are for sure many more things to consider. However, what all dimensions have in common is that it is most important to think about the users, their use cases, and the frequency of those. Based on these criteria, you can evaluate the benefits of supporting them on the web or the desktop. This is especially true, if you already have an existing tool and are considering a migration. In this case, there must be clear advantages to justifying the cost. Ultimately, it will seldom be possible to make a perfect decision.