Engineering the Future of Software
Feb 3–4, 2019: Training
Feb 4–6, 2019: Tutorials & Conference
New York, NY

Speaker slides & video

Presentation slides will be made available after the session has concluded and the speaker has given us the files. Check back if you don't see the file you're looking for—it might be available later! (However, please note some speakers choose not to share their presentations.)

Izar Tarandach (Autodesk)
Threat modeling as a discipline has always enjoyed a special place in development, going from "Why do it?" to "I should do it one of these days" to "We did it and didn't even get a T-shirt." Many competing methodologies, interests, and constraints help make the process more difficult than it needs to be, reducing the results. Izar Tarandach shares the approach Autodesk uses for threat modeling.
Vladik Khononov (Invesus Group)
Vladik Khononov explains how he and his team embraced domain-driven design (DDD) at Plexop, a large-scale marketing system that spans over a dozen different business domains. Join in to learn how DDD allowed the team to manage business complexities, see what worked (and what didn't), and discover where they had to adapt the DDD methodology to fit the company's needs.
Andrew Jenkins (Aspen Mesh)
You're probably skeptical of the hype around service mesh technology. Join Andrew Jenkins to learn how incremental adoption can make a service mesh successful on your terms. You'll learn trade-offs around a few of the top capabilities so you can prioritize what your project adopts today and what you can defer based on your own risk-reward profile.
Seth Dobbs (Bounteous)
As architects, we provide guiding principles as part of our architecture to enable decision making for unforeseen details, but we seldom develop guiding principles for ourselves as leaders and for how we interact with people. Seth Dobbs shares a core set of principles that will help you enable effective interactions with your team and your stakeholders.
A cell-based architecture is a composable unit of architecture that is self-contained. The cell is independently scalable. It’s independently deployable. It’s independently governed. It's part of an ecosystem of cells. Asanka Abeysinghe explains how to use a cell-based architecture to connect architecture, implementation, and deployment by making autonomous development teams.
Vasanth Asokan (Netflix)
So you think you can test your complex distributed application effectively just using your test environment? At Netflix, automated testing of client and server applications runs at scale in production. It has quickly gone from low-volume manual mode to automated continuous and voluminous mode. Vasanth Asokan offers a study of such testing at scale that will inform your overall testing strategy.
Aikaterini Iliakopoulou (The New York Times)
When personalizing for news platforms, you must pay attention to both the audience and the content. Much like most software architecture systems, readers and news content should not be treated as a monolith. Katerina Iliakopoulou details the architecture of a system that facilitates agile personalization on the New York Times’s platforms to accommodate fast A/B testing.
Laurentiu Spilca (Endava)
The link between architecture and how to deploy a software environment is one of the most important factors to creating a highly available, fast, accessible, reliable, and easy-to-change software service. Laurentiu Spilca explores considerations and common pitfalls when delivering your software with Kubernetes.
Jan Kleinert (Red Hat)
Kubernetes scales and manages stateless applications quite easily. Stateful applications can require more work. They can be harder to dynamically manage with data intact and sometimes come with their own notion of clustering. Jan Kleinert offers an overview of Operators—Kubernetes agents that know how to deploy, scale, manage, back up, and even upgrade complex stateful applications.
James Thompson (Cingo Solutions)
Every software system has an architecture. Many are little more than the result of circumstances, rather than deliberate decisions. Helping teams think about software architecture is a key to helping them grow well. James Thompson demonstrates how to assess approaches and make decisions based on what matters to your team and your projects.
Matt Chapman (mPulse Mobile)
Matt Chapman leads a walkthrough of the architecture and open source components that serve Tribune Publishing's content recommendation system, powered by online machine learning at scale. Find out how multiple publications, multiple recommendation algorithms, and one scalable architecture regularly achieve double the performance of the legacy solution.
Paula Paul (ThoughtWorks), Rosemary Wang (ThoughtWorks)
Even if you're not ready to adopt a microservices architecture, you still want the benefits of rapidly deployable, highly automated infrastructure that enables rapid delivery of new features and services. Paula Paul and Rosemary Wang offer a deeper look at the necessary set of products and capabilities for a delivery infrastructure to support a distributed service or microservice architecture.
Trisha Gee (JetBrains)
Trisha Gee shares advice and lessons she learned the hard way while managing her career as a developer, lead, and technical advocate. She also gives you tools for working out what your next steps are along with plenty of examples of what not to do.
Diana Montalion (Mentrix Group)
Modern content "management" systems are as conceptually challenging as they are technically difficult. Architecting them isn’t (strictly) AWS configuring or software solutioning now. The work requires an evolution from strategic planning to collaborative strategic thinking. Diana Montalion explores "archistructure": enabling everyone to engage with the parts through the lens of the whole.
John Chapin (Symphonia)
With systems like Travis CI, Circle CI, and CodeBuild, we're never more than a few lines of YAML away from a complete continuous delivery pipeline. However, ephemeral build systems constantly recreate the world from scratch, increasing build time and lengthening the CD feedback loop. John Chapin addresses those challenges and shares a reference pipeline using AWS CodePipeline and CodeBuild.
Brian Sletten (Bosatsu Consulting)
Decentralization is often touted as an intrinsic good architecturally. While it's possible to benefit from decentralized thinking, it's also very easy to misfit the solution to the problems at hand. Join Brian Sletten to explore the major decentralized approaches and their applicability to specific problems.
Jean Bordelon (Bounteous)
How do you develop great architects on your team? It's a real challenge when your organization offers limited opportunities to actually perform as an architect. Jean Bordelon shares approaches to give aspiring architects meaningful ways to grow and veteran architects ways to hone their craft, as well as lessons learned along the way.
Premanand Chandrasekaran (Barclays US)
A few years ago, Barclays embarked on a journey to migrate its legacy services with the objective of achieving a high level of scale, resilience, and reliability, mainly employing an ecosystem of focused, distributed services. Prem Chandrasekaran recounts some of the challenges faced during the transformation and sheds light on the things that worked well and those that didn't.
Paris Buttfield-Addison (Secret Lab Pty. Ltd.), Mars Geldard (University of Tasmania), Tim Nugent (lonely.coffee)
While the rest of the software architecture world is admiring their containers, edge computing, and cloud-native architecture, game developers are off in the corner creating entity component system (ECS)-based architectures and pushing the boundaries with this flexible, compatible, composable approach. It's not just for games. Paris Buttfield-Addison, Mars Geldard, and Tim Nugent explain why.
Marc Siegel (Panorama Education)
Have you ever launched a large ETL job to check a fix for a corner case in a derived calculation or normalization? Marc Siegel shares lessons learned applying the event sourcing pattern within an ETL pipeline. Key takeaway in regex form: E{1}T*L* -- that is, "Extract once, transform and load infinite times."
Mark Richards (Independent), Neal Ford (ThoughtWorks)
In a new series of interviews called "From the Trenches," Neal Ford interviews highly regarded industry professions about their career path and their work as an architect. Join in for his discussion with Mark Richards.
Allen Holub (Holub Associates)
If you still use large up-front design phases, you'll likely encounter problems with your design as you implement. The solution is to build around a domain-focused metaphor that allows for incremental changes while maintaining coherence throughout. Allen Holub demonstrates how to develop an effective and coherent architecture incrementally as the code evolves.
James Bottomley (IBM Research)
How much do you as an architect know about infrastructure—and how much do you think you should know? As we transition from physical systems to virtual machines to containers, the way we build systems is also changing radically, influenced by the new paradigms. James Bottomley explores the relationship between the systems we build and the infrastructure we build them from.
Seth Dobbs (Bounteous)
As more companies embrace digital technology as core to their operation, it's essential that we architects develop our leadership skills to be equal to our technical skills. Join Seth Dobbs to learn how to guide business decisions and align technology with broad strategy while also motivating your teams and ensuring their success.
Matt McLarty (MuleSoft, a Salesforce company)
Matt McLarty introduces Microservice-Based Enterprise Transformation Architecture (META), a holistic approach organizations can use to ensure their microservices migration delivers its intended benefits. META addresses the technological, operational, methodological, and cultural aspects of the migration effort. Along the way, you'll explore the Microservice Design Canvas and other artifacts.
Mason Jones (Credit Karma)
Once you decide to adopt a microservices architecture, you'll face many more decisions and questions about routing, management, observability, developer experience, and more. Mason Jones shares approaches based on his real-world experiences making the shift to microservices.
Maria Gomez (ThoughtWorks)
Agile practices and techniques like continuous delivery are all about being able to react to changes rapidly, but putting them into practice when you have a big monolith application can be difficult. Microservices offer one solution. Maria Gomez shows you how to move from a monolith to microservices by applying domain-driven design principles.
Aaron Parecki (Okta)
Aaron Parecki discusses common security threats when building microservices using OAuth and how to protect yourself. You'll learn about high-profile API security breaches related to OAuth; common implementation patterns for mobile apps, browser-based apps, and web server apps; and the latest best practices around OAuth security being developed by the IETF OAuth working group.
Irakli Nadareishvili (Capital One), Raji Chockaiyan (Capital One)
Despite its success in building an engineering and DevOps culture, when Capital One embarked on the gargantuan task of embracing microservices several years ago, it had to do an analysis of which of its development and operational practices were applicable to the new architectural style and which had to be fundamentally reevaluated. Irakli Nadareishvili shares lessons learned from the process.
Mike Amundsen (Amundsen.com, Inc.)
Mike Amundsen walks you through building adaptable microservices that take advantage of the features of REST. You’ll learn how to design services that advertise themselves to the network, discover their own “partner” services, and can adapt to subtle changes to existing services without relying only on recode-and-redeploy patterns for maintaining overall system operation.
Containers are all the rage these days, but how do you go from a single sandbox cluster to a globally distributed enterprise-scale architecture. Christopher Grant covers both infrastructure and application design best practices, such as hybrid and multicluster configurations as well as decomposing applications into system, service, and microservices.
Microservices provide a way to break up a monolithic architecture into multiple atomic units, allowing an independent scalability of a service. They also provide a better way to divide the domains across multiple teams. Luca Mezzalira explains how to apply the same principles to frontend applications, enabling you to scale up a project with tens of developers without reducing the throughput.
Eoin Woods (Endava)
As our world becomes digital, we all need to be developing systems that are secure by design. The security community has developed a well-understood set of principles used to build secure systems, but they are rarely discussed outside that community. Eoin Woods outlines these fundamental principles of secure software design and explains how to apply them to mainstream systems.
Kenny Baas-Schwegler (Xebia), Marc Duiker (Xpirit)
As fans of serverless and event-driven architectures, Kenny Baas-Schwegler and Marc Duiker wanted to see how easy it was to create a serverless application in AWS, Azure, and Google Cloud—specifically, by comparing how easy it is to orchestrate functions, using a current car park management example solution. Join them to learn the pros and cons of each cloud vendor.
John Chapin (Symphonia)
The lines between static and dynamic content are blurred, and it’s more difficult than ever to choose the right technologies for your requirements and budget. John Chapin takes you on a step-by-step journey from hosting static content on AWS S3 to deploying dynamic, complex business logic mere milliseconds away from your users with AWS CloudFront, Lambda@Edge, and more.
r0ml Lefkowitz (Retired)
Robert Lefkowitz offers an overview of technical debt, explaining how to recognize it, how to prevent or reduce it, and why there is so much of it.
Pepijn van de Kamp (Software Improvement Group), Luc Brandts (Software Improvement Group)
Great architectures are not just about software but also about the people that create it. Traces of how people collaborate during the creation of software systems are captured in data sources like version control history, source code, and ticketing systems. Luc Brandts and Pepijn van de Kamp explain how analyzing this data provides valuable insights and input for your architectural strategy.
Aaron Schlesinger (Microsoft)
Kubernetes is catching on like wildfire. But as organizations move to this new platform, they end up with legacy applications that don’t take advantage of everything Kubernetes has to offer—or worse, with applications that don’t work at all. Aaron Schlesinger shares an “Elements of Kubernetes” guide that details patterns to ensure your application fits into the Kubernetes platform.
Tamar Eilam (IBM Research)
Today, we are witnessing a great proliferation of cloud-native paradigms such as 12-factor apps, microservices, and serverless. Tamar Eilam discusses an emerging unified cloud platform (based on open source projects such as Kubernetes and Istio) and explains why the new frontier is its evolution to unify multiple programming paradigms for greater simplification with power of expression.
Jonny LeRoy (ThoughtWorks)
Jonny LeRoy details two architectural failure modes: hierarchical command and control from ivory tower architects with strict approvals and rigorous control gates, and chaos with every team doing whatever they want with close to zero governance. Jonny then explores the "Goldilocks" zone that ensures organizational risks and opportunities are handled while giving teams as much autonomy as possible.
Patrick Kua (N26)
Being a successful architect requires more than just a good understanding of architecture. Patrick Kua explores the breadth of skills and experience an architect should focus on and outlines the balance of traits that makes a well-rounded architect.
Jonathan Johnson (Dijure LLC)
Kubernetes is quickly becoming the preferred way to deploy applications. You may understand Docker, but how can a whole set of containers and services consistently work together and run reliably? Consider Kuberentes a new operating system for your data center. Jonathan Johnson walks you through a series of building blocks to demonstrate how Kubernetes actually works.