Desmystifying the technology behind KoffeePhoto
When starting to think about a photo sharing service, we had several requirements in mind:
- I get all the features I need to organize my photo library easily
- I can access my whole photo library from any connected computer/connected device
- Whenever needed (hard disk failure, switching computer, …) I can easily recover my whole photo library in one click
- Photos are stored in their native resolution, without limit of any kind, period. I don’t need to care about the volume of data stored remotely or whether my data is reduced/compressed and I don’t need to pay anything
Then we looked at the options. They ranged from a computer centric solution to a server centric solution. Let’s check the pros and cons of each option.
- The computer centric solution, a software application program. Running locally on a computer, a software application program offers a true benefit in terms of user experience. Speed, graphics, everything. No doubt about it. But what happens when it comes to sharing and backing up the pictures? You can burn Cds. Easy to share and a practical way to backup. But what about sharing pictures with your aunt living in New Zealand? And will the Cds still work when recovery will be needed? No waranty. Pictures can be sent using email but no more than half a dozen with strong size limitations. The only solution? Going to the web.
- The server centric solution, a web service. By nature, web is distributed and tends to be everywhere. Sounds like a perfect media to share pictures. Perfect, if not looking at the costs. Always available online storage gets very expensive as storage requirements grow. Not to mention online photo editing. So, what else?
- A peer-to-peer based solution. The power of distributed servers has been made popular with numerous applications such as Kazaa or eDonkey. While unfortunately widely used for illegal download, this architecture has proven its power as long as the source was available from several nodes. On the other hand, this technology clearly has its limits with few in not one server is involved.
As always, the ideal solution is the combination of the good sides of all options. What would be the ideal solution? Powerful management, reliable backup, efficient sharing and, why not? … For free! To achieve this, we’ve set up a two layered solution.
- Storage and sharing is done by a virtual server made up of peer-to-peer connected computers. This virtual server makes sure each file is available at any time. As soon as below the defined threshold of number of available files, replication creates new copies on the peer-to-peer network.
- Management and viewing is done thanks to a desktop application program for optimum interactivity. This desktop client is associated to a local storage agent turning each connected computer on the network into a storage unit of the global virtual server. Upload of high volumes of pictures simply takes place in background. Once uploaded to the virtual server, the pictures will always remain available on the network and there is no need to leave the computer on.
This translates into some technical implementations:
- Peer-to-peer based storage, sharing and synchronization of secure data (pictures)
- A set of encryption and authentification techniques allows to manage privacy, access rights to the pictures, and data integrity
- Blind synchronization ensures proper redundancy of the stored pictures
- Permanent availability of data is managed on a constantly evolving peer-to-peer network structure
With this combination we’ve reached what we think is the perfect match. You may check by yourself by downloading KoffeePhoto from our web site. Thanks to Michael Slater’s post about photo sharing solutions which inspired this post.