Beyond the Technology of Microservices
It was once again a privilege to present at the annual ‘muCon 2015‘ microservices conference held in London (at the shiny new Skillsmatter CodeNode venue). Based on feedback fro talks I gave earlier in the year, I presented a completely new version of my ‘The Business Behind Microservices‘ talk, which focuses on the organisational and people side of implementing a microservice-based application.
Uncovering better ways of developing software…
Riffing of the Agile Manifesto, I opened the talk by discussing how OpenCredo has been discovering better ways to develop software over the past few years. Much of our learnings have either contributed to, or come out of, lessons learned from the microservice community. Whether you start with services and reverse-engineer the organisation and culture (the so-called ‘Inverse Conway Manoeuvre‘), or start with organisational structure and KPIs, and allow a microservice architecture to emerge, the lessons are quite similar.
Broadly speaking these lessons learned can be divided into categories focusing on organisational, architectural and operational issues.
Obviously we have to discuss Conway’s Law here (you are playing microservices Bingo, right?), but the issues and learning go much deeper here. In particular, when working on microservice transformations at OpenCredo, we have seen issues around portfolio planning at a business-level. The ‘#NoProjects‘ movement has some great things to say about this, as many organisations are moving from a project-based way or working to a ‘product’-based approach.
I also talked about ‘Divided Companies’ and ‘Connected Companies’, from David Gray’s excellent ‘The Connected Company‘ book, and the impact these organisational stereotypes have on a microservice transformation. Finally, I pointed people in the direction of the ever-informative ‘Bits or pieces‘ blog by Simon Wardley, which offers a goldmine of information around strategic analysis, mapping and gameplay. Seriously, if you haven’t read his blog I suggest you head over to the website now!
For me, the modern-day approach to software architecture is less about ivory towers and boxes and arrows, and more about technical leadership, communication and shared understanding, and risk management. I take a lot of my cues from people like Simon Brown and Pat Kua, and I attempted to impart some of their wisdom (mixed with a little of my own) into the talk.
My key message with the organisational impact of operations and microservices was simply ‘automate everything, except the people’. Computers are good are automating tasks that are laborious, fiddly and dull. In my work as a consultant I have seen so much value in automating daily development tasks, much of QA/testing (with the exclusion of the highly-valuable exploratory test phase), and also much of operations. Tasks that can’t be effectively automated (or you are still learning how to automate) should be well-defined, regularly practiced, and conducted with empathy – empathy for the system, your users and your colleagues.
Change management and transformation is essential
The final section of the talk discussed the importance of change management, and the role of transformation as a process. This is something we are seeing more and more of in OpenCredo, and we often work closely with our clients to ensure the initiatives that we start within a company (such as agile, DevOps or microservice implementations) continue to flourish when we finish the engagement and our corresponding part of the transformation process.
I concluded the talk by suggesting that with any new transformational technology or process, we must think holistically. If the introduction of a microservice-based implementation approach is to work, we must look at the organisational, architectural and operational issues, or else we are in danger of simply ‘cargo-culting‘.
Session video and slides
Thanks to Skillsmatter for recording the session (please click the image below to visit the Skillsmatter website):
The slides are hosted on my SlideShare account: