Infinite Scale: ownCloud on steroids
ownCloud is a well-known suite of open source collaboration software that provides similar functionality to DropBox, Google Docs, or Microsoft OneDrive.
A new version called ownCloud Infinite Scale (oCIS) was released in 2022. Infinite Scale has been completely re-architected and re-written in the Go language to address the limitations of the Linux-Apache-MySQL-PHP stack that was at the core of ownCloud since its inception.
Re-architecting ownCloud
The Linux-Apache-MySQL-PHP (LAMP) stack has inherent limitations that throttle performance and scalability for applications like ownCloud, so the developers of ownCloud Infinite Scale (oCIS) took a decision to jettison the LAMP stack completely.
PHP, Apache, and MySQL have been replaced by a new three-tier cloud-ready stack: a user interface created with the Vue.js JavaScript framework; a microservices tier written in Golang; and a back-end storage tier that uses the Reva storage interoperability platform.
The architecture has been decoupled by using microservices that communicate asynchronously using a message bus to send events, or listen for events.
As a result, this new version of ownCloud, oCIS, is an order of magnitude faster than its predecessor because:
- It takes advantage of the concurrency features of Go;
- The architecture has been decoupled; and
- The need for a MySQL-compatible database has been eliminated entirely.
Each tier of the new stack is discussed in more detail in the sections that follow.
User interface
The ownCloud browser interface (called ownCloud Web) has been re-written using the Vue.js framework, giving it a new tightly-focused look-and-feel.
The communication between the browser client uses Google Remote Procedure Calls (gRPC) instead of REST over HTTP. The advantages of gRPC are:
- The payload is a compact Protocol Buffer instead of a wordy JSON object;
- The transport protocol is HTTP/2 which decreases latency because requests and responses can be multiplexed on a single underlying TCP connection;
- It provides an end-to-end RPC pipeline from the browser to each of the microservices that are required to respond to the request.
oCIS will still support the DAV interface, so existing desktop and mobile applications that access ownCloud directly via DAV will continue to function as before.
Microservice tier
The core of oCIS consists of various microservices that communicate with each other via gRPC. Each microservice is responsible for handling a single task: scanning for viruses in the background, for example, or authenticating requests using OpenID Connect against an identity provider.
By taking advantage of Golang's concurrency, oCIS is able to run tasks asynchronously in the background. Users don't have to wait for one task to complete before processing the next request.
These microservices have been written using the Go programming language (also known as Golang) for a variety of reasons, which include:
- Golang can be compiled to a native binary executable for any operating system, so there is no code interpreter in the way;
- It is a strongly typed language providing earlier error detection and more optimized code from the compiler;
- It was designed for multicore processors from the outset so concurrency is baked-in and asynchronous programming is simpler;
- Golang has a built-in garbage collector to automate memory management and prevent memory leaks.
oCIS uses Traefik (pronounced 'traffic') to manage the networking between the microservices. It handles load-balancing, SSL termination, and deployment of firewall rules.
This decoupled, modular design makes it easy to develop and deploy custom microservices if they also use gRPC. Traefik will automatically add the new custom microservice to the existing communication mesh without affecting the pre-existing microservices.
Storage tier
The developers of oCIS scrapped the database layer in favour of the Reva framework to manage back-end storage of documents.
Sync and share platforms need a raft of ad hoc APIs to communicate with back-end storage systems, whether local or cloud-based. The intention of the Reva project is to move these various ad hoc APIs into a common, reusable middleware component.
Reva is an open source project that was initially developed by CERN as an interoperability platform written in Go. It uses CS3 APIs and gRPC to manage storage at scale, whether local storage on a POSIX file system, Amazon's S3, or CERN's massively scalable storage service EOS.
So oCIS can run on anything from a Raspberry Pi to a Large Hadron Collider.
General Availability (GA)
Infinite Scale reached beta in May 2022 after more than two years of development that focused on performance, stability and ease of use.
It is now available for production use, so follow the Quick Guide to get started, or fire off a message to us to find out more about ownCloud Infinite Scale and to schedule a demonstration.