Notes from the a16z podcast: All about micro-services
Adrian Cockroft, previously Cloud Architect at Netflix, talking about Netflix transitioning to micro-services —
The other transition was from a single centralised database. We had this enormous oracle machine with a really complicated schema, to a distributed NoSQL database, in the end based on lots of different Cassandra clusters. This was probably the hardest transition to get all the SQL code and transactional stuff out of the system. Breaking apart the database is probably the hardest thing to do, and then splitting chunks of code off it is also difficult if you’re trying to pick apart a monolith. And it turns out that if you don’t break apart your database backend, you just create lots of services that talk to it, you’ve actually created what’s called a distributed monolith. This has all the same fragility of a monolith and you can’t update things independently because you’re tied by the database.
On micro-services team structure —
You have the product management and operations aspects within each [micro-services] team.
On security —
When you have a monolithic app, everything is in there. If it gets broken into, you have all access.
On why supporting systems need to adapt to new micro-services reality —
Charging used to be 3 years worth of machines, then it became that you can rent a VM by the hour, and then with lightweight containers you’re paying by the 100 milliseconds. It’s perfectly reasonable to rent for half a second. Which means that the setup time to create that half second worth of machine needs to be radically less than half a second. And the time taken to bill for it needs to be radically less than half a second. If you remember the story of SMS, the SMS record is 140 characters, but it’s billing record is much bigger than that, it’s more like a 1 Kilobyte. So if actually take a telco, and take out all the billing records, it would cost a tenth of the amount to run. So you get this effect that the overhead of doing the thing is vastly more than the thing you’re trying to do.