4 ms·
Does anyone have experience with using the microservices style for development, but deploying them bundled into a larger unit (e.g., a single Docker image or v
by ljosa 12y ago
Does anyone have experience with using the microservices style for development, but deploying them bundled into a larger unit (e.g., a single Docker image or virtual machine)?
- hartror 12y agoWhy would you do this? It throws out one of the major advantages micro-services have over monoliths, that of fine grained small deployments.
- noelwelsh 12y agoPerformance. The network is the slowest part of most applications.
- JoachimSchipper 12y agoIt's true that a datacenter network is slower than RAM, of course, but if you're already dealing with internet latencies, an extra roundtrip within the data center is hard to even measure - see "Latency numbers every programmer should know", http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html http://www.eecs.berkeley.edu/~rcs/research/interactive_laten.... (I really don't like this fact, aesthetically, but it's usually good business to acknowledge it.)
- hartror 12y agoExactly what I would have linked to.
- pkroll 12y agoThat's excellent, though I like the take Coding Horror lists from a Brendan Gregg book. http://blog.codinghorror.com/the-infinite-space-between-words/ http://blog.codinghorror.com/the-infinite-space-between-word...
- noelwelsh 12y agoSure, for most people it isn't an issue. But sometimes it is. E.g. if you're hosting some kind of product that collects or inserts data into customer's websites. If you are really aggressive about performance you'll have data centers within 100-200ms of all your customers. If you do this, and you buy into the microservices, it doesn't take many inter-service calls to exceed the network latency. On the TechEmpower benchmarks most frameworks struggle to return a static bit of JSON in <50ms. Now imagine 10 services communicating to fulfill a request...
- dsboulder 12y agoCloud Foundry is implemented as a bunch of microservice components (authentication, public API, notifications, logging, metrics) that are deployed together using BOSH. Deployment becomes the big issue with microservices, and something like CF or BOSH allows you to quickly deploy a bunch of VMs, containers, or apps that represent your whole system. There's still advantages to separating things out, even if you often run them all together on the same machine or container.