5 ms·
I’ve been through a transition with about 60 devs that went DDD plus microservices. A few monotliths ended up as a couple of hundred services, and looking back
by jordanbeiber 7y ago
I’ve been through a transition with about 60 devs that went DDD plus microservices.
A few monotliths ended up as a couple of hundred services, and looking back I feel we got basically all positives.
What other people say about scaling teams is true, but I have a few other points as well:
- personally, I spent 6 months writing tooling for service lifecycle management and setting strict conventions. This was before the microservices decision and I was recruited to do “devops” which gave me a lot of head room. :p
- when talks about microservices surfaced I had to fight for several months to get the lead devs on-board with tooling and conventions.
From the infra/cm/systems management side we’re used to manage many thousands of “configuration items” - devs are usually not, and many underestimate the value of proper automated lifecycle management.
- once everyone was on-board we all used a common language. Big win.
- I could form a “devops” team to help develop the tooling further and the infra platform as well.
- almost all teams worked in mobs - amongst other things it really helped with the ownership part, something that’s absolutely crucial. Well defined domains and accountable mob teams, just awesome!
- quality rose by a mile. Small commits and somewhat robust tooling under the eyes of a mob.
- graph the pains. If outdated versions are a problem - put it on a graph, green, yellow, red. Show services in relation to other services - the application is the sum of all connected services.
I could go on, but the post is getting long! :)
- gtirloni 7y agoThanks for sharing, that's pretty exciting. I think most people don't realize the work they have to put in to make this work (and reap the benefits).
- jordanbeiber 7y agoThanks for reading. The more i write and talk about it, the more I realize that it is about ”externalities”, so to speak. A microservice is just code - one small piece that does one, tightly defined thing. We’ve been doing code always and smaller pieces of is easier to deal with and reason about. The structure around keeping 100s or 1000s of moving pieces in concert is where a lot of the work is shifted. It takes teamwork as well as a common vision and language. The above sentence tangents “culture”.
- DelightOne 7y agoCan you explain what you mean with service lifecycle management in regards to micro services please, or do you have a book on it? I'm currently studying SE and it's the first time it has come up. Thank you :)
- jordanbeiber 7y agoWell - I’ve got a “service management” background, so it’s completely natural to talk in these terms. :) A service have in a way two interfaces - one business (the work it’s doing), and one technical (how it does it; a port publishing an endpoint or whatever). No business process to support, no service to manage. The lifecycle of the technical service will consist of a bunch of actions that will be taken, perpetually, until the sunsetting/decommissioning of the business process. Actions: init, code pushed, deploy, monitor, trace, update, decommissioning etc. You take these actions and put then in a lifecycle circle and you have a nice powerpoint! As much as possible, preferably everything, in this cycle have to be governed by conventions and automations. - Automatic follow-up if a service have no upstream or downstream services for example. Why do we have a dangling service?! - Or, you have a key service tied to an SLA, but upstreams are not matching this? - you have services that have not been touched in a timely maner. - etc... just drop the relevant team an automated slack message with the option to initiate whatever is required to keep the lifecycle churning. With many thousands of assets/ci (configuration items) almost everything have to be automated or you will grind to a stop eventually. If you can couple business process to automated technical service management - big wins!
- snypox 7y agoNever heard about this concept, I really like it.
- jordanbeiber 7y agoTo me, it’s kind of what ”DevOps” should be about, from a technical perspective: Take the best/reasonable parts from ITIL (concepts/principles), mix it with principles from the agile manifesto and the 12-factor app. Automate the lot of it. Doing this in practice gives you dev & ops. It’s quite a journey that is more difficult the bigger you are. It scales though, so start small, prove the concepts, and grow organically.