I will blog here regularly about interesting aspects of ownCloud and the technology behind it. This first entry is about the general architecture and a few of our main design decisions.
The goal:
The goal of ownCloud is to bring the convenience and benefits of cloud services to people without forcing them to use the central infrastructure of a cloud service provider. A lot of companies and individuals prefer to host their infrastructure themselves because they want to control their data, the costs or they want close integration with other parts of their infrastructure. But they also want to have the convenient features of modern cloud solutions. This is what ownCloud provides.
What features are we talking about?
- Accessing your files from all your devices like Desktops, Notebooks, Tablets, Smartphones or others.
- Syncing you files between different devices or locations.
- Sharing some files or directories with other people from inside or outside your organization.
- Automatic backup and versioning of all your data
- Viewing and editing of your files with your native applications or from within a web browser.
- Accessing and syncing your addresses, your calendars, photos, media files, bookmarks and other data from all your devices.
- Integrate with your corporate directory like LDAP or Active Directory
- Hosting all these services on a machine you control.
How does the ownCloud technology work?
It is important that ownCloud can talk to devices and operating systems from all vendors. Because of that we use open protocols and standards as much as possible. For example file access is possible with the WebDAV protocol, calendar and address book sync works with CalDAV and CardDAV, the web interface is using HTML5 and we support other open standards like the Open Collaboration Services or Ampache for media streaming.
Another important requirement for ownCloud is that it has to be as easy as possible to host and operate your personal ownCloud. Because of that we sit on top of the most commonly used web technologies like Apache, PHP, SQL and Linux. So it is super easy to set up your own ownCloud server and integrate it into an existing corporate infrastructure.
It is also critical that ownCloud scales well with the growing requirements of the users. ownCloud can run on a webserver cluster with a standard off-the-shelf load balancer. So high performance is always assured. ownCloud can also mount existing SMB fileservers or SANs. So your ownCloud will never run out of space.
Extensibility is also important for us. Every user or corporation is different. So it is critical for us that every ownCloud user who wants to extend the basic functionality of ownCloud is able to do that. ownCloud supports Apps. Apps are modules, which can be installed on top of an existing ownCloud installation to adapt it to specific needs of the user or to add complete new features. ownCloud has an API and an infrastructure to develop, distribute and install Apps.
This is just a first brief overview about the ownCloud architecture. I will regularly blog about specific technical aspects of ownCloud within the next weeks.