By nature social networks grows in storage size exponentially. For a community of just 250,000 people the total size of only the avatars are about 20 Gigabyte. That’s a lot of space but thanks to the services like Amazon S3, Box.net and other cloud storage, it’s a lot cheaper and safer to store users assets (images, videos, documents and etc) somewhere on the cloud rather than storing locally where your server is being hosted.
This approach however imposes a challenge for the third party extension developers. They have to hard-code the storage API they want to target and build their application in a way that works flawlessly only with that storage. On the other hand, this forces the users of the extensions (the people who download the extension to use it on their Joomla installation) to use only the intended storage service by the developer.
We’ve solved this problem in Anahita by introducing the Virtual Storage concept. Developers can use Anahita Virtual Storage library to read/write data without a need to know about the final storage destination.
The storage destination is configured by the admin through the Anahita System Plugin in the Joomla administrative back-end.
There are two ways of writing data using Anahita storage library, publicly or privately. If it’s public then everyone has read access to the data. This is good for static data like avatar and albums images. If it’s private only the application has access to read the data. In both cases the data is only writable by the application.
Soon we are adding the ability for the other developers to implement their own storage system. This is specially useful for the corporate intranets who have in-house distributed storage that’s not accessible from the outside of the network.