Matt Stine is a 17 year veteran of the enterprise IT industry, with eight of those years spent as a consulting solutions architect for multiple Fortune 500 companies, as well as the not-for-profit St. Jude Children’s Research Hospital. He is the author of Migrating to Cloud-Native Application Architectures from O’Reilly, and the host of the Software Architecture Radio podcast.

Matt is obsessed with the idea that enterprise IT “doesn’t have to suck,” and spends much of his time thinking about lean/agile software development methodologies, DevOps, architectural principles/patterns/practices, and programming paradigms, in an attempt to find the perfect storm of techniques that will allow corporate IT departments to not only function like startup companies, but also create software that delights users while maintaining a high degree of conceptual integrity. He is currently the product owner for Spring at Pivotal, and spends much of his time driving an active feedback loop between the Spring R&D organization and customers developing cloud-native application architectures.

Matt has spoken at conferences ranging from JavaOne to OSCON to YOW!, is a seven-year member of the No Fluff Just Stuff tour, and serves as Technical Editor of NFJS the Magazine. Matt is also the founder and past president of the Memphis Java User Group.

Cloud Native Architecture Patterns

As a software architect, confronting the cloud can feel quite daunting. We are confronted with an onslaught of public cloud providers; which one should we choose? Are we ready for public cloud? Or do we need to focus on private cloud? And what does that even mean? Or are we looking for a hybrid solution? And these questions are only the beginning. Soon we’ll be looking at IaaS vs. PaaS. Containers vs. Unikernels. Servers vs. Serverless! Is there any way to make sense of all of the choices and cut through all of the hype?

Fortunately there is a way forward. There are clear architectural concepts and patterns that we can use as guideposts on our journey to the cloud. In this full-day workshop, we’ll gain an understanding of the unique characteristics of cloud infrastructure and how we can design and develop application architectures that fully exploit those unique characteristics. These “cloud native” architectures compose simple patterns with predictable performance, scaling, security and failure characteristics to create solutions to complex problems that can be quickly, flexibly, and continuously evolved to take advantage of new information. In many ways these architectures have more in common with organic systems than anything we’ve previously called software.

These characteristics of cloud native architectures allow us to practice an extreme flavor of continuous delivery that allows us to survive a new marketplace where speed is our primary competitive advantage and access to consumer services must be ubiquitous.

The newly trained cloud architect will leave this workshop equipped with an understanding of:

  • unique characteristics of cloud infrastructure
  • architecture concepts unique to cloud native
  • significant tradeoffs involved in cloud architecture
  • the concept of continuous partial failure and how it affects architecture
  • the importance of composability to cloud architectures
  • how continuous delivery, devops, and microservices relate to cloud

You’ll also leave with a rich catalog of cloud native architecture patterns that you should be able to apply regardless of your choice of cloud provider or technology stack.

Reactive Fault Tolerant Programing with Hystrix and RxJava

As we build distributed systems composed of microservices, we introduce new potential performance problems and failure points. As the number of nodes in our system increases, these problems rapidly amplify. In order to keep our composite systems responsive, we can apply the techniques of reactive programming. In order to keep our composite systems healthy, we can apply fault tolerance patterns like circuit breakers and bulkheads.

In this presentation we’ll examine how to leverage two popular libraries from Netflix, Hystrix and RxJava, to create reactive and fault tolerant systems.