Recloud
Redoing the cloud
Author(s): Aravind S
Contributors: Notion AI Assist
Published: January 02, 2023
Version: 1.2.1
Background
In the 21st century, computer software has become an integral part of the lives of humans. It has given us the ability to automate mundane tasks, communicate or collaborate with anyone in the world, and even help us diagnose illnesses. Computer software has made it possible for us to streamline many aspects of our lives and to create a more efficient and productive society.
The recent past has seen an extraordinary increase in the number of devices we use. The proliferation of smartphones, tablets, and other connected devices has made it possible for us to be constantly connected, no matter where we are. This has led to an explosion in the number of applications and services that we can access from our devices. From streaming services to online shopping, it seems like there is an app for almost anything we need. One key element that has contributed significantly to this explosion of software services is cloud computing. By allowing data and applications to be stored and accessed remotely, cloud computing has enabled developers to create services that can be accessed from anywhere with an internet connection. With cloud computing, users can access their data and applications from any device, without the need for local storage or processing power. This has made it possible for companies to offer new services that are faster, more reliable, and more convenient than ever before. Additionally, cloud computing has enabled developers to create software more quickly, with fewer resources, allowing for faster updates and more powerful features.
Problem statement
The rise of cloud-based software has resulted in an increasing amount of data being stored on servers owned by the software companies. Applications provided by the software companies also reside somewhere on the cloud and transfer application code and data when needed following HTTP protocol to the user. This current flow has certain problems that can be addressed with a novel solution presented in this paper. Some of the problems with the current software architecture include:
Security: Users or organizations may not be aware of the security measures that are in place to protect their data, leaving them vulnerable to data breaches or other malicious activities on the software provider's server. It is especially challenging for small developers to ensure the security of their applications due to the high cost of implementing robust security measures.
Data privacy and usage: Data is the hottest selling commodity in today's market, and many companies are taking advantage of this by selling user data to advertisers. In most of the cases, users have very less control over their data and its usage. This can have a significant impact on how software is being designed to maximize data mining and attention-seeking.
Data duplication and network usage: Another problem with the existing centralized cloud model is that users are often paying for multiple subscription fees for data storage, duplicated across different software providers. This can become unnecessarily costly and wasteful for users. Also, as software applications are hosted on regional servers catering many users at a given time, the average distance a piece of information travels on computer network is very high. This can lead to slower performance and increased latency, which can be particularly problematic for applications that require real-time interactions or high-bandwidth data transfers.
Developer productivity: One of the major challenges for independent developers is the cost of hosting their software applications and services on a server. This can be expensive and time-consuming, as developers must pay for server space, as well as the cost of data storage and transfer, and security measures. Additionally, developers often have to either rely on another service or develop their own implementation for authentication and identity management of users. This will also add time and costs, and can be unproductive especially for smaller development teams.
Solution
The solution proposed in this paper to address the mentioned problems involves the use of serverless technology, in combination with infrastructure as code such as Pulumi open source project, and edge computing. This methodology allow users or organisations to install web applications and services directly on their own personal cloud, rather than having to rely on servers owned by software companies.
Redoing the cloud
In the early days of software, users consumed software by installing it on their computers. This meant that application and user data was both in control of the user, as it was stored locally on their own device.
With the need to sync data between multiple devices and the ability to access applications using a web browser from anywhere in the world, software providers quickly made the move to cloud computing. This allowed for users to store their data in a secure and centralized location, accessible from any device, at any time. However, this also meant that users had limited control over their data, as it was stored on servers owned by the software companies. This lack of control left users vulnerable to security threats and data breaches, as well as the potential for their data to be sold to advertisers. In addition, this centralized cloud model often resulted in multiple subscription fees for the same data, making it costly and wasteful for users.
With the Recloud methodology, users can install software directly on their own personal cloud, allowing them to regain control over their data and reducing duplication of data across multiple providers, cutting down on multiple subscription costs. This not only gives users more control over their data and who can access it, but also provides them with the ability to keep their data secure and protected from malicious attacks. Additionally, developers can also benefit from this approach, as they can quickly and easily create, deploy, and maintain their software applications without having to worry about server costs.
User flow and implementation
When user visits software provider's website and prompts to sign up, user will enter their recloud login URL / recloud id. For example:
id.john.com
The software provider redirects the user to the recloud id.
User enters their credentials. Recloud provider performs authentication, checks user's access grants against the software provider and redirects to the software provider with access token or a prompt to user to grant access as per OAuth specification.
Once the user is authenticated, software provider can choose to provide a trail version of the software served from their own server or let the user install the software on their own recloud.
If the user chooses to install the software on their recloud, software provider redirects to recloud installation URL identified from access token.
Recloud provider checks access grant to install software and performs authorization if required.
Recloud provider installs software on user's cloud by running a background job to fetch the software from software provider's public repository URL or recloud public registry /store and run the code to create cloud resources required and deploy the application.
Conclusions
This methodology not only gives users or organizations more control over their data, but also provides them with the ability to control who can access it and how it is used. Users can be confident that their data is securely stored on their own cloud and is not being sold to advertisers. On the other hand, organizations can install the software they use produced by their software vendors directly from within their network. This can be very useful in scenarios where there is no regular need to connect to public internet like medical devices, critical infrastructure peripherals etc, enhancing security significantly.
Furthermore, this architecture can leverage edge to reduce network usage and latency significantly. It can even bring it down to zero in cases of a on-prem or home servers. Independent developers can quickly and easily create, deploy, and maintain their software applications, without having to worry about server costs. This methodology also can reduce resource use like databases by using embedded databases like SQLite alongside the application code.
Limitations
Despite the numerous advantages of this methodology, there are some limitations that should be noted.
Developers are restricted to write or migrate applications using databases and backend technology that supports serverless methodology.
Existing application providers using non serverless architectures has to rewrite their code to support recloud users.
Software applications that use public data instead of user's own data like Twitter, News outlets, Netflix cannot be installed on user's cloud. However, streaming platforms like Netflix can leverage recloud as a middle cached layer to enhance performance.
Integrating with external service providers in the applications that has dependency on external APIs for their data or functionality can become challenging until the service providers support recloud.
In order for dynamic client registration and installation of recloud methodology to work, the software should be open source or the code should be available on a publicly accessible repository.
References
End Notes:
This paper is highly inspired from Solid project initiated by Tim Berners Lee.
Last updated