If you use Node, you’ve probably been following this week’s story between Azer Koçulu, Kik and npm.<p>A brief rundown: Azer made an npm module called …
How many design considerations are there in an almost trivial method? Let’s look at two of them. Consider this code:<p>If you’ve been studying OO design …
<i>If you take the SOLID principles to their extremes, you arrive at something that makes Functional Programming look quite attractive.</i><p>You may have seen …
Thursday, March 17, 2016<p>Mark Russinovich CTO, Microsoft Azure<p>We are in the midst of an application development and IT system management revolution …

This is how my System Preferences look. You can’t resize this window. I would understand that if every icon fit perfectly in the window, but the 4th category…
Why is it two rows? They are all Apple preferences, and the only thing extra is Profiles, which I believe every developer would have.
Why can’t I just make the window a bit wider so that every category is one row again?
CommentsWhenever you make a change to your codebase, there’s always going to be a risk that you’re about to break something.<p>No one likes downtime, no one …
This article is about bringing up an idea and an implementation of how microservices should be built. DoveCôte is a platform-as-a-service for building, maintaining, deploying and monitoring microservices applications in the cloud.
Check out https://dove-cote.co for a test-ride. Tweet to us at @DoveCote_PaaS and join our #slack community if you are interested.
Read this great post by Ustun Ozgur on how we built DoveCôte.
The development world is on fire with microservices. It’s all the rage, and the hype. Companies of the past are re-branding to include microservices in their names, and strive to make sure that their solution is compatible with microservices—not only that but that their solution also makes microservices even better!
Unfortunately, the hype is so intense that even a standard web server can market itself as a microservices solution. There are a bunch of immense problems that need to be tackled, though, and these solutions are simply incapable of solving them.
Unfortunately, most tools solve only one or two of these problems for you, and building a solid architecture is mind-boggling at best.
We tend to disagree. We think there should exist a better way of doing microservices, and we built a solution to showcase what we think it should look like.
Here’s a 5-minute video to get started:
Disclaimer: DoveCôte is built as an entrant in Koding Hackathon 2016. All the work you see is developed in only 48 hours. It is a proof-of-concept implementation to demonstrate a much bigger vision. Therefore it has a lot of rough edges. Some of the features mentioned in this article are not implemented yet.
Currently, the best bet on serverless architectures is AWS Lambda. It’s a service that lets you upload your services as zip files (yes…) and AWS schedules and runs them in the cloud. The problem with Lambda is it’s simply developer-hostile. Vendor lock-in is a huge problem, and testing and deploying your functions is another, huge-r problem.
DoveCôte has 2 main interfaces. One is the design tab, and the other is the monitor tab. In the designer, you simply drag and drop services and components onto the canvas. Most of the code and all the hustle of configuration is handled automatically, so you just have to type what your function does, in an event-driven fashion.
Here’s an example of a service that adds two numbers:
module.exports = function(additionResponder) {
additionResponder.on('add', function(req, callback) {
callback(req.firstNumber + req.secondNumber);
});
};That’s it. DoveCôte deploys this as a public endpoint for you, so it’s instantly available to the internet. The additionResponder here is a box you drag-and-drop in the editor, and it’s automatically injected into your function.
The beauty of this design is that it lets you require any Node.js library. You could require mongoose and use a MongoDB database on the other end of the world. You could require mqtt and delve deep into the world of IoT. What tools you are going to use in your services are entirely up to you, and you are not vendor-locked-in in any way.
Behind the scenes, DoveCôte makes use of the excellent library cote for interoperability, service discovery and communication among your services.
Drag-and-drop your services and components, wire them together with virtual pipes and you are done.

Once you are satisfied with your code, a single click deploys your application to the cloud and gives you a public endpoint, as well as documentation and sample code generated to test your services. Copy/paste the samples into the browser’s console and instantly test if your services work.
The good thing is, although it all looks like magic, it’s just intelligent design. The mechanism behind DoveCôte is so simple and idempotent, it can run on your local machine by just including a small bootstrap module in your code. Design in the frontend and download your code and run it locally. Or develop locally and just upload your code with a single command to see it in the designer. It works both ways. Locally, your services run on your machine. When deployed they run in… why should you care? It just works. But if you wonder, DoveCôte runs your services in isolated Docker containers, so that they can be deployed on any server and are guaranteed to work wherever they are. You can even throw in your own pool of machines.
Visualizing communication among the services are extremely important in microservices. Often you will find that a single request goes through 5–8 services in order to be answered. Therefore it’s essential that you see which service is connected to another. The monitor tab gives you a visual overview of your services, their connections, and a log of all of your services combined in an intuitive interface.
These two interfaces solve the problem of designing, visualizing, orchestration and monitoring of your services. Service discovery is automatic. Deployment is also automatic, so the only thing left to you is to enjoy your set up.
There is an undeniably huge potential for microservices. Unfortunately, there are no flexible solutions on the market yet. DoveCôte provides a vision for building effortless, serverless, zero-configuration microservices at the expense of nothing.
Developers and sysadmins, you have nothing to lose but your chains.
Spread the word, and help the microservices revolution begin.
Check out https://dove-cote.co for a test-ride. Tweet to us at @DoveCote_PaaS and join our #slack community if you are interested.
CommentsMany people underestimate the importance of <b>Software Architecture</b> and some people just don’t know what is it. Even though Software Architecture may …
I’m a full time developer. Most of my work is developing web sites full-stack. Sometimes I write backend servers in Python or Ruby, sometimes I work …