Quick question; how many places do you have to look to get a FULL view of your microservice? Git for the source code / README? Confluence for business documents? What about Jenkins for current build state? When was it last deployed? What's its current status in prod?
I did a count, and got around 6 different places to view. That's kinda a lot. For a single service.
Over the last few months I've been to be a fair number of devops style conferences, such as Pipeline Conf and JAX Devops, where people share their stories around Continuous Delivery and Integration. This has been awesome, and I've learned so much from so many people.
I was listening to talk about how X company made it from large big bang releases to continuous delivery, and how they had documentation for Operations to understand how to deal with their Microservices outside of normal work hours, in case something went wrong. This got me thinking of the question at the start, and also made me think; "if I had to give my microservice to someone totally new, where would they find info such as which services relied on it, and when was it last release". If only there was some format that everyone just... gets.
Then it hit me; Facebook.
Ok, hear me out on this. Pretty much everyone has Facebook, or has at least used it (I know that's quite a big assumption, but let's roll with it). It's got a UI that everyone knows roughly how to use. When you browse a profile, we EXPECT there to be photos, posts, and a bio. All of this maps rather well to microservices.
Think about it; a microservice has a README (a bio), it has consuming and/or providing services (friends), it has business documents (posts/blogs), it has things happening in its own little world such as deployments and builds and events (its wall), and some have service discovery (check-ins!). Whenever a service does something, it should be post to its own wall. It builds â that's a post. It deploys â that's a post. It dies in production â that's a post, and tags services that consume from it.
Suddenly, you've got this entire interaction network happening. And a pretty great view into what is going on within your whole platform, in an understandable way.
Last week, we had a hackathon at work, and I gathered a few devs together to see if we could create a proof of concept. Amazingly it worked. It made a whole lot of sense. It wasn't feature complete however, but suddenly we had this hub where people could see the status of their build, their last deployment (and by who), who last committed and when. We also managed to import the README's for each project, and a "friend" box which contained a services consuming and providing applications. We got some pretty great feedback, most around how easy it was to see what was going on with different applications.
I guess, what I'm aiming for is something that people enjoy using, while also creating a standardised UI that anyone can use. I think it's about bring documentation and metrics into a format that isn't all funky graphs, or nested trees hidden on some website. But instead a consistent format that anyone can access and use.
Anyway, that was my random idea. It's something I'm quite excited about, and if you'd like to know more please contact me!