Biography

Neal is Director, Software Architect, and Meme Wrangler
at ThoughtWorks, a software company and a community of
passionate, purpose-led individuals, who thinks disruptively to
deliver technology to address the toughest challenges, all while
seeking to revolutionize the IT industry and create positive social
change. He is an internationally recognized expert on software
development and delivery, especially in the intersection of agile
engineering techniques and software architecture. Neal has authored
magazine articles, seven books (and counting), dozens of video
presentations, and spoken at hundreds of developers conferences
worldwide. His topics include software architecture, continuous
delivery, functional programming, cutting edge software innovations, and includes a business-focused book and video on improving technical presentations. Check out his web site at nealford.com.

Comparing Service Based Architectures

Microservice architectures are quite popular, described as “SOA done correctly”. But what are the real differences between Service Oriented, Service Based, and *Micro*service architectural styles? And what about middle ground between the shared everything of SOA versus shared nothing of microservices? This talk explores the similarities and differences between various service-oriented architectural styles. I describe the characteristics of SOA, microservices, and hybrid service-based architectures, along with decision criteria to choose between them. I also discuss specific engineering practices, orchestration styles, reuse strategies, and migrating between architectural styles (e.g., from monolithic applications to service-based or microservice). No one architecture can solve every problem, and many projects take on more complexity than necessary by choosing the wrong paradigm. This talk equips attendees with the knowledge and context to choose the architecture that best fits their needs.

Evolutionary Software Architectures

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 capabilites, 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.

Continuous Delivery for Architects

This multi-disciplinary session takes a deep dive into
the confluence of topics required to fully understand the intersection
of Continuous Delivery and architecture, including evolutionary
architecture and emergent design, with an emphasis on how
architectural decisions affect the ease in changing and evolving your
code, the role of metrics to understand code, how Domain Driven
Design’s Bounded Context reifies in architecture, how to reduce
intra-component/service coupling, and other techniques.

Continuous Delivery is a process for automating the production
readiness of your application every time a change occurs – to code,
infrastructure, or configuration. In the Continuous Delivery world,
rather than hone skills at predicting the future via Big Design Up
Front, Continuous Delivery emphasizes techniques for understanding
and changing code with less cost during the process. Some architectures
and engineering practices yield better designs for this
environment. This multi-disciplinary session takes a deep dive into
the confluence of topics required to fully understand the intersection
of Continuous Delivery and architecture, including evolutionary
architecture and emergent design, with an emphasis on how
architectural decisions affect the ease in changing and evolving your
code, the role of metrics to understand code, how Domain Driven
Design’s Bounded Context reifies in architecture, how to reduce
intra-component/service coupling, and other techniques.