Q&A with Russ Miles
Russ Miles is one of the most renowned experts in the field of Microservices.
His name is one of those names that will always be mentioned during a conversation on Microservices.
You’ve certainly seen him in action (including with his electric guitar) many times in Europe as he’s a frequent conference speaker, or you read one of his brilliant blog posts, but… he’s never been to Italy for a public course before! We got this chance to chat with Russ about Microservices, Spring, and software development. Over to you, Geek on a Harley!
Avanscoperta: Hi Russ, nice talking to you!
Russ: Extremely nice to be invited to chat to you and come to Italy!
Avanscoperta: Software developers always have cool stories about how they started being interested into software… what is yours? 🙂
Russ: Ha! Well mine was probably more tragic than cool per se but… My infatuation with software started with a weekend typing in a “make the stick man walk across the screen” program for the Atari 800 XL. I spent two days typing in all this code to finally have it all done and ready to run it… It was at this point that I was directed towards the “Enter” key, as I hadn’t used it at all! I’d entered 100s of lines of code, using spaces to go round to the next line as I had no idea what the “Enter” key was for! I’d broken the keyboard buffer several times over, and my code would never run. It was a beautifully harsh lesson in the pains of software development, and my only excuse was that I was around 8 years old at the time!
Avanscoperta: How has the landscape of software development changed over the last 5 years?
Russ: There’s been a lot of change and, I think, in some very positive directions. Microservices have matured to the point where people are really starting to understand why they might use the style, and what they should be looking to get out of it. If anything, Microservices is starting to become something of a default and the term Cloud Native is coming back to the fore.
My favourite change has been the attitude to what we now call Chaos Engineering. Whereas Microservices will be a worthwhile challenge for some time to come, Chaos Engineering (something I touch on in my course) is really the secret sauce behind how to manage, monitor and evolve these large-scale, complex distributed systems. Although I have my concerns over the name “Chaos Engineering” (we are really doing anything but creating chaos), having the name out there and these techniques becoming mainstream is something to watch over the coming few years.
Avanscoperta: What are the areas where you see the next development happening?
Russ: That would have to be in Chaos Engineering. There will be better and better tools in this space and I think people will now begin to understand how it makes a huge impact when you want to continuously improve a complex, sociotechnical system.
Avanscoperta: You worked with SpringSource prior to the company’s acquisition by VMware, leading the Spring Extensions project and helping international clients to simplify their software by effectively applying the Spring portfolio of projects. What could you tell us about that experience, and in which way did that help shape the path you would have taken afterwards (Microservices)?
Russ: I loved working with SpringSource. Being a consultant when the software you’re consulting on is poor is a nightmare, with Spring that was never the case. However one thing I noticed is that it didn’t seem to matter how well Spring, or even Spring Boot these days, was applied there was still the ever-present threat of building a piece of software that suddenly was in conflict with the changes that needed to be applied to it. I refer to this as the “Elephant in the Standup” and that problem, how to build software and sociotechnical systems that can really embrace change, is what motivated me towards Microservices, Chaos Engineering, and everything I do these days.
Avanscoperta: You’re currently writing a book titled “Antifragile Software – Building Adaptable Software with Microservices” (you can read a preview on LeanPub). What’s the genesis of this book and why are Microservices still so relevant?
Russ: Microservices, when done well, should be an ideal architectural style to support continuous delivery of isolated, low-risk changes to a system. The pressure of change on the system is an example of a stressor. This relates directly back to that challenge I’m most interested in, which is how do we build system that can embrace, or even thrive, on change, and it turns out that a system that is Antifragile is one that can thrive on the stressors it encounters.
Avanscoperta: So… what is antifragility and why does it matter?
Russ: Antifragility is a system property. When a system is able to learn, react and improve based on stresses applied to it (i.e. change, availability, security; these are all stresses on the system that can improve its design). Whereas a fragile system will collapse under stresses, and a robust/resilient system will, at best, ignore those stresses to carry on ticking (at worst it will actively resist those stresses!), and antifragile system will gain from those stresses. When you’re building a large-scale, distributed system (i.e. Microservices) then by definition it will need to be antifragile in order to get the advantages of handling change and other stressors.
Avanscoperta: Microservices, one of the buzzwords we’ve heard so many times during the past years, might still sound like new to some professionals and companies, who look at it with skepticism. What are the most difficult challenges when it comes to implementing this technology? But also, what do they represent to you? 🙂
Russ: There are two main challenges I see today in microservices adoption. Firstly there’s the question of “What microservices should I have?” and to answer that we apply DDD, and particularly Event-Driven DDD, to figure that out.
The second hardest question is how do I run these things in production? For that, you need to take a completely different view than perhaps what you did when running a monolith. When you move from a monolith to a large-scale distributed system you move from relatively simple system to an inherently complex, even chaotic, one, and so you need new tools and thought processes to be successful in running production microservices.
Avanscoperta: Still, one tends to see this kind of slides more and more often as people are getting confused about some topics… what’s your view on this? 😀
Russ: Well there is some relation between these different concepts for sure! Microservices affect how your teams are organised, and so do Bounded Contexts. However I’ve worked on plenty of microservice-based systems that have multiple microservices per bounded context, and I’ve worked on plenty that don’t use Docker at all. On the course, one of the things we demystify first is “What is a Microservice?”.
Avanscoperta: You recently got interested in Chaos Engineering… could you tell us something about it, and how did you get started on this?
Russ: Chaos Engineering is one of the key disciplines you need to be successful running Microservices in production. Chaos Engineering is an empirical, largely scientific, approach to running experiments against your systems to build confidence in them by surfacing and discovering weaknesses. Due to the complex nature of these highly-evolvable systems you cannot apply simple best practices or assume that your system will “just work” in production. Chaos Engineering embraces the natural complexity of the system and gives you a mechanism to close the loop around the legitimate concern of “how do I reason about and improve my Microservices-based system in production?”.
Avanscoperta: Now a bit more about your workshop. Russ will be teaching a 3-day workshop in English titled “Microservices – Deep dive into Building Antifragile Software with Microservices”, which will be held in Milan on 27th, 28th and 29th November this year. This will be the first time ever you come over to the Stivale (aka the Boot) to teach a public course, we’re very excited to see you in action! What shall we expect from this workshop, and who shall attend it?
Russ: If you’re building, or aiming to build, large-scale distributed systems that evolve quickly according to business demands and want to know how to do that successfully, this is what the course is all about. So the course is really for anyone even considering doing Microservices.
Avanscoperta: Your internet persona is “Geek on a Harley”, and you often play the electric guitar during your talks and transformed rock anthems such as “Highway to Hell” by AC/DC or “We won’t get fooled again” by The Who into parodies of the software development’s world (check them out on YouTube, they’re gold!). We’re too curious… what type of music and bands do you like listening to apart from the classics we just mentioned, and how did you get involved into rock/heavy music?
Russ: Ha! Well I’m a huge Pearl Jam fan (more recently, I play “Alive” at the beginning of my talk’s to parody a Microservice trying to run in Production) but I love many, many kinds of music from Classical and Opera through to Rock and Disco. Music is a huge part of my life, and I’m very open to all forms…
Avanscoperta: Thank you very much for your time Russ, it’s been a pleasure talking to you. Would you like to add something?
Russ: Just that I look forward to seeing everyone in Italy! Also that I am planning a road trip next year from LA to GOTO Chicago in April where I’m going to be putting out a video blog of talks I do, people I meet, interesting developers. It’s going to be fun and if you’re interested then my blog is the place to find all the latest information about the tour.
Wanna find out more on how to master Microservices?
The next edition: Microservices workshop with Russ Miles.