I am working on scoping out a new project that will use microservices. There have been various posts recently that have touched on this topic but I'd like to have real discussion on the pros and cons of the various technologies that exist to deal with building, orchestrating, developing, and deploying decoupled services in a mircoservice architecture.<p>We have been looking into Docker as that seems to have a lot of hype but there have been concerns there. We've also talked about using salt with a combination of vm's or native lxc or rkt (rocket).<p>There seems to be lots of material talking about what mircoservices are and how they should be architected on a high-level but not as much about the actual implementation.<p>The project includes a realtime content component as well as several persistent less dynamic services.<p>Thanks!
Starting with "microservices" is a mistake IMO. Start with a monolith because you'll get to market much faster in almost every case. When(if) you run into scale problems then consider breaking off pieces into separate services.<p>Why would you want to introduce network overhead and sockets into your system if you don't have to?
Why will the new project use microservices? What features of the problem domain point toward that pattern? How will microservices' tendency toward stable/static API's improve maintainability? If the services are essentially commodities, can they just be outsourced?