Faster Networks + Cheaper Messages => Microservices => Functions => Edge - High Scalability -
Olden Days
- 10 or so years ago
- Mostly 1 gbps network.
- State of the art was a monolithic Java application connected to a big relational database.
- Systems were decomposed using Web Services that exchange XML messages.
- Sending XML over a slow network had high overhead. Just parsing XML is slow.
- Since web services were slow the resulting architecture featured large servers with a relatively low number of messages exchanged between them.
- The slowness of the system meant a request couldn’t hit more than two or three services before returning a reply, so it was difficult to decompose a monolith into smaller services.
Now
- Network is 25 gbps.
- Messages are Avro, gRPC, etc, which are 100x more efficient than XML.
- Combining the faster network with better message formats means we’re 100x to 1000x more efficient at sending messages between servers. (Historical note: we’ve always had cheap messaging on Unix, people just forgot that when they went insane with XML.)
- Now it’s possible to break an architecture up into many smaller services because it’s possible to make 100 microservices calls and return a reply within latency bounds.
- Microservices became possible because of a technology change. A system could be broken up into smaller services where every service has a single responsibility.
- Now it’s possible to a go a step further by breaking up microservices into the separate functions making up those services.
- We can afford to connect all these functions together because messaging has become cheaper.