Jimmy Bogard / Chief Architect at Headspring
The greenfield project started out so promising. Instead of devolving into big ball of mud, the team decided to apply domain-driven design principles. Ubiquitous language, proper boundaries, encapsulation, it all made sense.
But along the way, something went completely and utterly wrong. It started with arguments on the proper way of implementing aggregates and entities. Arguments began over project and folder structure. Someone read a blog post that repositories are evil, and ORMs the devil incarnate. Another read that relational databases are last century, we need to store everything as a stream of events. Then came the actor model and frameworks that sounded like someone clearing their throat. Instead of a nice, clean architecture, the team chased the next new approach without ever actually shipping anything.
Beyond the endless technical arguments it causes, domain-driven design can actually produce great software. We have to look past the hype into the true value of DDD, what it can bring to our organizations and how it can enable us to build quality systems. With the advent of microservices, DDD is more important than ever – but only if we can get to the good parts.
Recorded at SpringOne Platform 2016.
Speaker: Agim Emruli
Spring Cloud allows to implement cloud native application across different cloud platforms. Spring Cloud has also a dedicated support for running applications on the Amazon Web Service platform. This talk will introduce common patterns and best-practices to run the application the AWS cloud and how to use the platform provided services efficiently.
Nitesh Kant @NiteshKant / Netflix
Whether it is a simple DNS lookup or a complex dedicated solution, service discovery is the backbone of any microservices architecture and an immature solution can soon turn into an achilles’ heel.
Nitesh Kant in this talk will introduce the concept of service discovery and various use cases it solves in a complex service based architecture. He will then be introducing Netflix’s Eureka (https://github.com/Netflix/eureka); a highly-available, multi-datacenter aware service discovery solution built from scratch, it’s architecture and how it is unique in this space, by favoring Availability over Consistency in the wake of network partitions.
Nitesh Kant is an engineer in Netflix’s Cloud Platform team, working on their Inter Process Communication stack. He is the author of RxNetty (https://github.com/ReactiveX/RxNetty) which forms the core of Netflix’s IPC stack. He is also a contributor to other Open source projects like Eureka
(https://github.com/Netflix/eureka) and Karyon (https://github.com/Netflix/karyon)
Joshua Timberman / Software Development Engineer III at Chef Software
Habitat is an open-source framework that gives modern application teams an application-centric automation platform. Build, deploy, and manage modern and legacy applications with Habitat. In this talk we will explore:
– Introduction to Habitat
– The problems Habitat solves
– Getting started with Habitat Plans
– Using Habitat in your Chef workflow
Andrew Morgan / Principal Product Marketing Manager on MongoDB
Organisations are building their applications around microservice architectures because of the flexibility, speed of delivery, and maintainability they deliver. This session introduces you to technologies such as Docker, Kubernetes & Kafka which are driving the microservices revolution. Learn about containers and orchestration – and most importantly how to exploit them for stateful services such as MongoDB.
Carter Morgan / Developer Programs Engineer at Google
In the last decade, user demand for always-on applications have grown exponentially. Many developers choose application patterns to meet this need, but what about the infrastructure needed to support these ever growing demands? In this talk, we introduce you to the next level of automation using hands-on examples of industry standard tooling like Docker, a container format, and Kubernetes, a distributed automation platform. We cover the basics of modern day applications and how design patterns like microservices drive the need for more robust infrastructure. Then we cover packaging and distributing apps using Docker. Finally, we up our game to running applications on Kubernetes. By the end of this talk you’ll have the knowledge needed to excel at scale.
Senior Developer, Atlassian
QA Engineer, Atlassian
As you migrate your applications toward microservice architectures, new pains start to appear – like testing, for example. How on Earth do you verify all these separate moving parts work together before releasing? How can you be sure that your code is compatible with services that can’t easily be spun up anymore? They are all written in different languages, operated by separate teams and deploy every day!
Do you find yourself lying awake at night missing monolithic applications where integrations were easier to test? In this talk we’ll reveal how Atlassian is adopting a new strategy called “contract testing”, using the Pact open source library to test our microservices. We’ll introduce the concept of contract testing, talk about why we love this approach, and go through some examples and patterns that will help you get started.
Microservices are associated with extreme isolation (e.g. no shared database, autonomous dev-ops teams, etc.) At its best, this creates a practical boundary within which modeling and design have a chance to thrive. In Domain-driven Design (DDD) we call this a “Bounded Context”. Bounded contexts take many forms, some leakier than others, and the current best practices of microservices have given us perhaps the strongest mainstream manifestation of this principle to date. In this way, microservices can help teams who attempting DDD or other sophisticated approaches.Yet, as services get small and numerous, we might substitute one problem for another: The tangle of the monolith just migrates to become a tangle of interactions between microservices. Here, the strategic design principles of DDD can give architects a conceptual framework for working with suites of services and higher-level relationships between larger parts of systems.
This talk will introduce a few strategic design concepts and explain how they apply to development of microservices, as a tool for teams trying to grow large systems more coherently.