Monday, February 21, 2011

GoStore going OpenSource

This post pretty much signals the end of my software engineering degree: finally! In a couple of weeks, I'll be done with school and will be working full time :) !!!

Anyway, this post isn't really about the end of my degree, but about my end of degree project. My work at Wajam made me discover the world of distributed and scalable systems and I decided to dive into this world by creating my own distributed system. As I like learning new technologies, I decided to create a distributed file system in Go, a new programming language announced by Google at the end of 2009. Go combines the simplicity of a garbage collected language, the speed of a natively compiled language and new concurrency mechanisms. It's not an object-oriented language since it doesn't support inheritance, but it supports polymorphism using interfaces.

Originally, GoStore was only a distributed file system with basic features (read, write, delete, etc.), but as I was programming it, I decided to make its communication core generic. Using this generic core, it's possible to easily create distributed systems in a clustered environment. GoStore uses remote procedure calls (RPC) between each node that can be sent over UDP or TCP, depending on calls payload, and uses a custom binary protocol.

You can browse GoStore code on GitHub, but as the disclaimer says, it's a toy project and really not mature.