For this we would do a simple project where we pick technologies using at least two different programming languages and have them perform different roles in an application and share information across something neutral like ZMQ or Redis.
What’s my persistence mechanism and why you might want to do that.
Should I use MongoDB, Riak, SQLite, MySQL, SOLR/Lucene, or CouchBase to store my data? Maybe the best answer is “all of them”. How to make that work?
Why and when is that a good idea? Lets talk though the design considerations and then do a project that has multiple persistence mechanisms that are well orchestrated to be better than any single system.
How to build a future-proof system using micro-services and a language/platform agnostic messaging bus with something like ZMQ. This would show the process of writing code as a collection of miniature services that communicate over purpose built APIs using ZMQ.
This project would show how you can use such an architecture to seamlessly scale up from a single process to multi-process to multi-machine. Greatest thing about ZMQ is that it enables this in almost any language and on any OS. To expand on the topic, we may want to consider other queues also.
REST + JSON? Custom client libraries? C API? Lots of ways to attack this problem. Lets take an existing app, pick a strategy and then surface an API for end users to consume. Lots of challenges there like authentication, rate limiting, shaping the data, caching and consistency, etc…
There are some great tools out there for making this easier.
Specifically, building a CI/CD system using TeamCity, Jenkins + AWS, or Travis-CI and how to build confidence in your code, tests and process in that environment.