Microservices are the buzzword of recent years.
Some see microservices as a resurrection of SOA. Others see a revolution in software design. Yet others see the hype around microservices as opportunity to rethink software design and architecture to not fall into the same traps we did in the past.
To seed discussions, we will sample the space with four high-profile talks covering topics ranging from evolutionary architecture to a call for simplicity in software design.
For many years, software architecture was described as the “parts that are hard to change later”. But software architecture is the balancing of capabilities versus constraints. If build changeability one of your prime capabilities, evolutionary change becomes easier. The microservice architectural style is quite popular, but it is only one in a family of evolutionary architectures.
This session defines the characteristics this family of architectural styles, along with engineering and DevOps practices necessary for implementation. I cover the principles behind evolutionary architectures, the practices needed for success, how organization and team structure affects these architectures, and specific engineer practices that facilitate evolutionary architectures. I also discuss migration strategies from common existing architectural types towards move evolutionary architectures.
Neal is Director, Software Architect, and Meme Wrangler at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery. Before joining ThoughtWorks, Neal was the Chief Technology Officer at The DSW Group, Ltd., a nationally recognized training and development firm.
Neal has a degree in Computer Science from Georgia State University specializing in languages and compilers and a minor in mathematics specializing in statistical analysis. He is also the designer and developer of applications, instructional materials, magazine articles, and video presentations. He is also the author of 6 books, including the most recent Presentation Patterns and Functional Thinking.
Neal is an internationally acclaimed speaker, having spoken at over 300 developer conferences worldwide, delivering more than 2000 presentations. If you have an insatiable curiosity about Neal, visit his web site at nealford.com. He welcomes feedback and can be reached at firstname.lastname@example.org.
Microservices: Taking the tech world by storm?
If you pay any attention to software technology trends at all, there is no way you can have missed the “microservices” architecture approach, which seems to be the cure to every problem anyone ever had. Let’s take a closer look at this approach, discuss what works and what doesn’t, what’s different from other approaches that were sold to us in the past, and how to connect the whole thing to other emerging trends in organization and technology, such as Continuous Delivery (CD) and Software-defined Anything (SDx).
Stefan Tilkov is a co-founder and principal consultant at innoQ, a technology consulting company with offices in Germany and Switzerland. He has been involved in the design of large-scale, distributed systems for more than two decades, using a variety of technologies and tools. He has authored numerous articles and a book (“REST und HTTP”, German), and is a frequent speaker at conferences around the world.
His current technical interests include large-scale software development, software architecture, distributed systems (with a focus on REST), and functional programming.
Stefan is a founding member of iSAQB, a member of the OBJEKTspektrum Fachbeirat, author of a lot of articles, and a frequent speaker at conferences in Germany and abroad. He also used to be lead SOA editor at the InfoQonline community site.
Your User is the Canary – Practices of and Obstacles to Conducting Experiments in Production
In the wake of the hype surrounding DevOps, microservice-based systems, and continuous deployment, many industry leaders have turned to various live experimentation practices to augment their traditional quality assurance. These include, but are not limited to, canary releases, dark launches, or A/B tests. A unifying theme is that all these practices replace decision making (about scalability, about which features users want, etc.) based on “the opinion of the highest-paid person in the room” with statistically rigorous data science – or at least so the theory goes.
In this talk I present results from a recent study we have conducted at University of Zurich and University of Vienna. I will discuss who is using live experiments and for which features, as well as who isn’t – and what is holding them back. Further, I will introduce Bifrost, an experimental middleware for scripting multi-phase live experiments. I will close the talk with an outlook on open issues in live experimentation, and explore how live experimentation forces us researchers to re-think some established conventions that we have grown accustomed to.
Dr. Philipp Leitner is a Senior Research Associate at the Software Architecture and Evolution Lab in the University of Zurich. Philipp holds a PhD degree in business informatics from Vienna University of Technology, works to understand how and why software developers use cloud systems, and to support them with better methods, techniques, and tools for cloud development, deployment and debugging. Philipp has published close to 80 peer-reviewed publications in leading conferences and journals of systems and software engineering, including USENIX Middleware, ESEC/FSE, and ACM TOIT. He is an academic editor of the O’Reilly sponsored open source journal PeerJ Computer Science, sits on the editorial board of the EAI Endorsed Transactions on Smart Cities, and is a member of the Management Committee of the ICT COST Action on Autonomous Control for a Reliable Internet of Services. Philipp can be reached via email (leitner AT ifi.uzh.ch) or via Twitter at @xLeitix.
Small Is Beautiful
Systems get bigger, technologies reach further, practices mature, advice changes… or at least some of it does. Some guidance remains unaffected by the passing of paradigms, the evolution of technology or the scaling of development: break your software into small, cohesive parts defined by clear interfaces and sound implementations, all the while striving for simplicity. The excuses for not doing so are as predictable as they are problematic. But if you want to create legacy code, make sure code is arbitrarily partitioned into large, incoherent parts characterised by unwieldy interfaces and incomprehensible implementations.
While there are many definitions of what a legacy system is, common to almost all perceptions of a legacy system is the concept of size — specifically, lots of it. The phrase ‘small legacy system’ can be considered an oxymoron. This talk sets out to re-assess and reassert the importance of thinking and implementing small as an essential property of software systems — yes, even the large ones.
Kevlin Henney is an independent consultant, speaker, writer and trainer. His software development interests are in patterns, programming, practice and process.
He is been a columnist for various magazines and websites. He is a co-author of A Pattern Language for Distributed Computing and On Patterns and Pattern Languages, two volumes in the Pattern-Oriented Software Architecture series, and editor of 97 Things Every Programmer Should Know.
He also writes short fiction, with a particular emphasis on flash fiction. and helps organise the BristolFlash events for National Flash Fiction Day and the Bristol Festival of Literature.