Towards cloud native

Last year I wrote extensively about Domain Driven Design. This was driven by a desire to make programs that delivered the most value possible. On the whole this was a great success. In several cases allowing me to solve problems with much less code than before.

In 2016, The most outstanding issue is making my applications cloud native. We all know about Docker and it's place in the immutable infrastructure movement. The elephant in the room seams to be storing state in this new model. Therefore my next goal is to understand and exploit distributed data storage.

I have been a fan of Elixir/Erlang for a while now and been experimenting with them as much as possible in my free time. This has been a great platform to learn about distributed programming, as well as being hugly rewarding. The erlang process model is a really well thought through way to tackle concurrent programming. I would recommend Designing for Scalability with Erlang/OTP for anyone wanting to see the extent of what is possible here.

However to really understand distributed data storage requires a solid appreciation of the theory. It will also require a much greater understanding of infrastructure considerations than just knowing how to use Heroku. Vagrant is an interesting technology but as containers come to promenance over virtual machines learning about kuberneties and docker seams important. Or maybe not, I have no idea if containers are required if one understands erlangs releases properly.

Where is the most relevant work in this area being done at the moment? Currently I am looking at IPFS, LASP and hood.ie, but I am sure I have missed some. If anyone else is tackling this problem it would be great to hear about it. For everyone else interested in the theory and execution of distributed data storage stay posted.