Spring Days NYC - A pattern language for microservicesChris Richardson
This is a presentation that I gave at Spring Days NYC
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs. A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
A pattern language for microservices (melbourne)Chris Richardson
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
Kong Summit 2018 - Microservices: decomposing applications for testability an...Chris Richardson
In this presentation, I describe the essential characteristics of the microservice architecture. You will learn about the benefits and drawbacks of the microservice architecture and when it makes sense to use it. I discuss how the microservice architecture is not a silver bullet. You will learn about the microservice pattern language, which is a collection of patterns that solve architecture and design issues that you will encounter when using microservices.
#JaxLondon keynote: Developing applications with a microservice architectureChris Richardson
The micro-service architecture, which structures an application as a set of small, narrowly focused, independently deployable services, is becoming an increasingly popular way to build applications. This approach avoids many of the problems of a monolithic architecture. It simplifies deployment and let’s you create highly scalable and available applications. In this keynote we describe the micro-service architecture and how to use it to build complex applications. You will learn how techniques such as Command Query Responsibility Segregation (CQRS) and Event Sourcing address the key challenges of developing applications with this architecture. We will also cover some of the various frameworks such as Spring Boot that you can use to implement micro-services.
Building microservices with Scala, functional domain models and Spring Boot (...Chris Richardson
In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.
Developing microservices with aggregates (SpringOne platform, #s1p)Chris Richardson
The Domain Model pattern is a great way to develop complex business logic. Unfortunately, a typical domain model is a tangled, birds nest of classes. It can’t be decomposed into microservices. Moreover, business logic often relies on ACID transactions to maintain consistency.
Fortunately, there is a solution to this problem: aggregates. An aggregate is an often overlooked modeling concept from the must read book Domain Driven Design. In this talk you will learn how aggregates enable you to develop business logic for the modern world of microservices and NoSQL. We will describe how to use aggregates to design modular business logic that can be partitioned into microservices. You will learn how aggregates enable you to use eventual consistency instead of ACID. We will describe the design of a microservice that is built using aggregates, and Spring Cloud.
Spring Days NYC - A pattern language for microservicesChris Richardson
This is a presentation that I gave at Spring Days NYC
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs. A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
A pattern language for microservices (melbourne)Chris Richardson
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
Kong Summit 2018 - Microservices: decomposing applications for testability an...Chris Richardson
In this presentation, I describe the essential characteristics of the microservice architecture. You will learn about the benefits and drawbacks of the microservice architecture and when it makes sense to use it. I discuss how the microservice architecture is not a silver bullet. You will learn about the microservice pattern language, which is a collection of patterns that solve architecture and design issues that you will encounter when using microservices.
#JaxLondon keynote: Developing applications with a microservice architectureChris Richardson
The micro-service architecture, which structures an application as a set of small, narrowly focused, independently deployable services, is becoming an increasingly popular way to build applications. This approach avoids many of the problems of a monolithic architecture. It simplifies deployment and let’s you create highly scalable and available applications. In this keynote we describe the micro-service architecture and how to use it to build complex applications. You will learn how techniques such as Command Query Responsibility Segregation (CQRS) and Event Sourcing address the key challenges of developing applications with this architecture. We will also cover some of the various frameworks such as Spring Boot that you can use to implement micro-services.
Building microservices with Scala, functional domain models and Spring Boot (...Chris Richardson
In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.
Developing microservices with aggregates (SpringOne platform, #s1p)Chris Richardson
The Domain Model pattern is a great way to develop complex business logic. Unfortunately, a typical domain model is a tangled, birds nest of classes. It can’t be decomposed into microservices. Moreover, business logic often relies on ACID transactions to maintain consistency.
Fortunately, there is a solution to this problem: aggregates. An aggregate is an often overlooked modeling concept from the must read book Domain Driven Design. In this talk you will learn how aggregates enable you to develop business logic for the modern world of microservices and NoSQL. We will describe how to use aggregates to design modular business logic that can be partitioned into microservices. You will learn how aggregates enable you to use eventual consistency instead of ACID. We will describe the design of a microservice that is built using aggregates, and Spring Cloud.
OReilly SACON2018 - Events on the outside, on the inside, and at the coreChris Richardson
Events are very much on the edge of traditional applications, which use them as an application integration mechanism. The classic example is an ecommerce system. When a customer places an order, the order management application publishes an event, which triggers the fulfillment application to action. But today, microservices and DDD—which is a great foundation for microservices—are at the core of the application.
Events play an essential role in modern applications. Chris Richardson explains why events are a key application integration mechanism and how they are used by applications to communicate with the outside world. You’ll learn how the microservices inside an application use events to maintain data consistency and discover how to go one step further and make events an integral part of your domain logic.
Futures and Rx Observables: powerful abstractions for consuming web services ...Chris Richardson
A modular, polyglot architecture has many advantages but it also adds complexity since each incoming request typically fans out to multiple distributed services. For example, in an online store application the information on a product details page - description, price, recommendations, etc - comes from numerous services. To minimize response time and improve scalability, these services must be invoked concurrently. However, traditional concurrency mechanisms are low-level, painful to use and error-prone.
In this talk you will learn about some powerful yet easy to use abstractions for consuming web services asynchronously. We will compare the various implementations of futures that are available in Java, Scala and JavaScript. You will learn how to use reactive observables, which are asynchronous data streams, to access web services from both Java and JavaScript. We will describe how these mechanisms let you write asynchronous code in a very straightforward, declarative fashion.
Developing microservices with aggregates (devnexus2017)Chris Richardson
he Domain Model pattern is a great way to develop complex business logic. Unfortunately, a typical domain model is a tangled, birds nest of classes. It can’t be decomposed into microservices. Moreover, business logic often relies on ACID transactions to maintain consistency. Fortunately, there is a solution to this problem: aggregates.
An aggregate is an often overlooked modeling concept from the must read book Domain Driven Design. In this talk you will learn how aggregates enable you to develop business logic for the modern world of microservices and NoSQL. We will describe how to use aggregates to design modular business logic that can be partitioned into microservices. You will learn how aggregates enable you to use eventual consistency instead of ACID. We will describe the design of a microservice that is built using aggregates, and Spring Cloud.
Oracle Code One: Events and commands: developing asynchronous microservicesChris Richardson
The microservice architecture functionally decomposes an application into a set of services. Each service has its own private database that’s accessible only indirectly through the services API. Consequently, implementing queries and transactions that span multiple services is challenging. In this session, you will learn how to solve these distributed data management challenges by using asynchronous messaging.
The presentation describes how to implement transactions with sagas, which are sequences of local transactions coordinated by use of messages. You will learn how to implement queries using command query responsibility segregation (CQRS), which uses events to maintain replicas, and will hear about the key role messaging plays in a microservice architecture.
Decompose that WAR? A pattern language for microservices (@QCON @QCONSP)Chris Richardson
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it's important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
Building microservices with Scala, functional domain models and Spring BootChris Richardson
In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.
Microservices pattern language (microxchg microxchg2016)Chris Richardson
My talk from http://microxchg.io/2016/index.html.
Here is the video - https://www.youtube.com/watch?v=1mcVQhbkA2U
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
This is a presentation I gave at SF Scala.
I describe the motivations for having a pattern language for microservices.
I then describe how to build event-driven microservices using event sourcing and CQRS.
I show some Java and Scala code examples.
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Chris Richardson
In this talk we share our experiences developing and deploying a microservices-based application. You will learn about the distributed data management challenges that arise in a microservices architecture. We will describe how we solved them using event sourcing to reliably publish events that drive eventually consistent workflows and pdate CQRS-based views. You will also learn how we build and deploy the application using a Jenkins-based deployment pipeline that creates Docker images that run on Amazon EC2.
This talk was given at the Berlin Microxchg conference and the Munich microservices meetup.
Events on the outside, on the inside and at the core (jfokus jfokus2016)Chris Richardson
This is the talk I gave at JFokus 2016 on event-driven microservices.
This presentation looks at the importance of events and the role that they play in applications. We describe how events are a key application integration mechanism and how they are used by applications to communicate with the outside world. You will learn how the microservices inside a system can use events to maintain data consistency. We discuss how easy it is to implement both of these mechanisms by developing your core business logic using an event-centric approach known as event sourcing.
This is a talk I gave at PLoP 2017 - http://www.hillside.net/plop/2017/index.php?nav=program
The microservice architecture is growing in popularity. It is an architectural style that structures an application as a set of loosely coupled services that are organized around business capabilities. Its goal is to enable the continuous delivery of large, complex applications. However, the microservice architecture is not a silver bullet and it has some significant drawbacks.
The goal of the microservices pattern language is to enable software developers to apply the microservice architecture effectively. It is a collection of patterns that solve architecture, design, development and operational problems. In this talk, I’ll provide an overview of the microservice architecture and describe the motivations for the pattern language. You will learn about the key patterns in the pattern language.
Microservices are an essential enabler of agility but developing and deploying them is a challenge. In order for microservices to be loosely coupled,each service must have its own datastore. This makes it difficult to maintain data consistency across services.
Deploying microservices is also a complex problem since an application typically consists of 10s or 100s of services, written in a variety of languages and frameworks. In this presentation, you will learn how to solve these problems by using an event-driven architecture to maintain data consistency and by using Docker to simplify deployment.
Developing event-driven microservices with event sourcing and CQRS (london Ja...Chris Richardson
This is a talk I gave to the London Java Community in June 2016
In a microservices architecture, each service has its own database. While this ensures that services are loosely coupled it creates a problem: how do you maintain consistency across services without using 2PC? In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Separation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
Events to the rescue: solving distributed data problems in a microservice arc...Chris Richardson
To deliver a large complex application rapidly, frequently and reliably, you often must use the microservice architecture.
The microservice architecture is an architectural style that structures the application as a collection of loosely coupled services.
One challenge with using microservices is that in order to be loosely coupled each service has its own private database.
As a result, implementing transactions and queries that span services is no longer straightforward.
In this presentation, you will learn how event-driven microservices address this challenge.
I describe how to use sagas, which is an asynchronous messaging-based pattern, to implement transactions that span services.
You will learn how to implement queries that span services using the CQRS pattern, which maintain easily queryable replicas using events.
Developing microservices with aggregates (melbourne)Chris Richardson
This is a talk I gave at the Melbourne microservices meetup, January 2017
The Domain Model pattern is a great way to develop complex business logic. Unfortunately, a typical domain model is a tangled, birds nest of classes. It can’t be decomposed into microservices. Moreover, business logic often relies on ACID transactions to maintain consistency. Fortunately, there is a solution to this problem: aggregates.
An aggregate is an often overlooked modeling concept from the must read book Domain Driven Design. In this talk you will learn how aggregates enable you to develop business logic for the modern world of microservices and NoSQL. We will describe how to use aggregates to design modular business logic that can be partitioned into microservices. You will learn how aggregates enable you to use eventual consistency instead of ACID.
Solving distributed data management problems in a microservice architecture (...Chris Richardson
This is a talk that I gave the SFBay Area Microservices and Cloud Native Apps meetup: https://www.meetup.com/microservices/events/241894841/
In a microservice architecture, each service has a private datastore in order to ensure that the services are loosely coupled. While loose coupling is essential, this architecture makes managing transactions and querying difficult. You can’t use traditional distributed transactions. Nor can you use distributed queries. In this talk you will learn about some patterns for solving these problems: Sagas, API Composition and Command Query Responsibility Segregation (CQRS).
There is no such thing as a microservice! (oracle code nyc)Chris Richardson
This is a keynote I gave at Oracle Code 2017 in New York:
https://developer.oracle.com/code/newyork
The microservice architecture is becoming increasingly popular. However, frequent references to using “a microservice to solve a problem” suggest that the concept is not universally well understood.
In this talk we define the microservice architecture as an architectural style and explain what that actually means. You will learn why the architecture that you pick for your application matters. We describe how the primary goal of the microservice architecture is to enable continuous delivery/deployment and how it achieves that.
You will learn how to solve key challenges with decomposing an application into microservices. We describe why there is no such thing as a microservice!
YOW2018 - Events and Commands: Developing Asynchronous MicroservicesChris Richardson
The microservice architecture functionally decomposes an application into a set of services. Each service has its own private database that’s only accessible indirectly through the services API. Consequently, implementing queries and transactions that span multiple services is challenging.
In this presentation, you will learn how to solve these distributed data management challenges using asynchronous messaging. I describe how to implement transactions using sagas, which are sequences of local transactions, coordinated using messages. You will learn how to implement queries using Command Query Responsibility Segregation (CQRS), which uses events to maintain replicas. I describe how to use event sourcing, which is an event-centric approach to business logic and persistence, in a microservice architecture.
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC.
In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Separation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
This is a keynote talk that I gave at RedisConf 2016.
It answers three questions:
What are microservices?
Why should you use them?
Where does Redis fit into a microservices architecture?
You can find the example code here: https://github.com/eventuate-examples/eventuate-examples-restaurant-management
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaSSoftware Guru
This session will present the different challenges for telco companies when they deploy support chatbots for clients, this is based on a real experience of working with chatbots in a
telco company Telefónica based on Guatemala and some countries in Central America.
Presentado por Sergio Méndez en SG Virtual Conference 2020
Serverless is now well established pattern for all things Cloud. As we leverage this style architecture with more power we require more control. Discover how good architects and developers design and develop serverless platforms for the enterprise. We describe a framework that will move your serverless systems from good to great and help you grow our connected world.
OReilly SACON2018 - Events on the outside, on the inside, and at the coreChris Richardson
Events are very much on the edge of traditional applications, which use them as an application integration mechanism. The classic example is an ecommerce system. When a customer places an order, the order management application publishes an event, which triggers the fulfillment application to action. But today, microservices and DDD—which is a great foundation for microservices—are at the core of the application.
Events play an essential role in modern applications. Chris Richardson explains why events are a key application integration mechanism and how they are used by applications to communicate with the outside world. You’ll learn how the microservices inside an application use events to maintain data consistency and discover how to go one step further and make events an integral part of your domain logic.
Futures and Rx Observables: powerful abstractions for consuming web services ...Chris Richardson
A modular, polyglot architecture has many advantages but it also adds complexity since each incoming request typically fans out to multiple distributed services. For example, in an online store application the information on a product details page - description, price, recommendations, etc - comes from numerous services. To minimize response time and improve scalability, these services must be invoked concurrently. However, traditional concurrency mechanisms are low-level, painful to use and error-prone.
In this talk you will learn about some powerful yet easy to use abstractions for consuming web services asynchronously. We will compare the various implementations of futures that are available in Java, Scala and JavaScript. You will learn how to use reactive observables, which are asynchronous data streams, to access web services from both Java and JavaScript. We will describe how these mechanisms let you write asynchronous code in a very straightforward, declarative fashion.
Developing microservices with aggregates (devnexus2017)Chris Richardson
he Domain Model pattern is a great way to develop complex business logic. Unfortunately, a typical domain model is a tangled, birds nest of classes. It can’t be decomposed into microservices. Moreover, business logic often relies on ACID transactions to maintain consistency. Fortunately, there is a solution to this problem: aggregates.
An aggregate is an often overlooked modeling concept from the must read book Domain Driven Design. In this talk you will learn how aggregates enable you to develop business logic for the modern world of microservices and NoSQL. We will describe how to use aggregates to design modular business logic that can be partitioned into microservices. You will learn how aggregates enable you to use eventual consistency instead of ACID. We will describe the design of a microservice that is built using aggregates, and Spring Cloud.
Oracle Code One: Events and commands: developing asynchronous microservicesChris Richardson
The microservice architecture functionally decomposes an application into a set of services. Each service has its own private database that’s accessible only indirectly through the services API. Consequently, implementing queries and transactions that span multiple services is challenging. In this session, you will learn how to solve these distributed data management challenges by using asynchronous messaging.
The presentation describes how to implement transactions with sagas, which are sequences of local transactions coordinated by use of messages. You will learn how to implement queries using command query responsibility segregation (CQRS), which uses events to maintain replicas, and will hear about the key role messaging plays in a microservice architecture.
Decompose that WAR? A pattern language for microservices (@QCON @QCONSP)Chris Richardson
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it's important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
Building microservices with Scala, functional domain models and Spring BootChris Richardson
In this talk you will learn about a modern way of designing applications that’s very different from the traditional approach of building monolithic applications that persist mutable domain objects in a relational database.We will talk about the microservice architecture, it’s benefits and drawbacks and how Spring Boot can help. You will learn about implementing business logic using functional, immutable domain models written in Scala. We will describe event sourcing and how it’s an extremely useful persistence mechanism for persisting functional domain objects in a microservices architecture.
Microservices pattern language (microxchg microxchg2016)Chris Richardson
My talk from http://microxchg.io/2016/index.html.
Here is the video - https://www.youtube.com/watch?v=1mcVQhbkA2U
When architecting an enterprise Java application, you need to choose between the traditional monolithic architecture consisting of a single large WAR file, or the more fashionable microservices architecture consisting of many smaller services. But rather than blindly picking the familiar or the fashionable, it’s important to remember what Fred Books said almost 30 years ago: there are no silver bullets in software. Every architectural decision has both benefits and drawbacks. Whether the benefits of one approach outweigh the drawbacks greatly depends upon the context of your particular project. Moreover, even if you adopt the microservices architecture, you must still make numerous other design decisions, each with their own trade-offs.
A software pattern is an ideal way of describing a solution to a problem in a given context along with its tradeoffs. In this presentation, we describe a pattern language for microservices. You will learn about patterns that will help you decide when and how to use microservices vs. a monolithic architecture. We will also describe patterns that solve various problems in a microservice architecture including inter-service communication, service registration and service discovery.
This is a presentation I gave at SF Scala.
I describe the motivations for having a pattern language for microservices.
I then describe how to build event-driven microservices using event sourcing and CQRS.
I show some Java and Scala code examples.
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Chris Richardson
In this talk we share our experiences developing and deploying a microservices-based application. You will learn about the distributed data management challenges that arise in a microservices architecture. We will describe how we solved them using event sourcing to reliably publish events that drive eventually consistent workflows and pdate CQRS-based views. You will also learn how we build and deploy the application using a Jenkins-based deployment pipeline that creates Docker images that run on Amazon EC2.
This talk was given at the Berlin Microxchg conference and the Munich microservices meetup.
Events on the outside, on the inside and at the core (jfokus jfokus2016)Chris Richardson
This is the talk I gave at JFokus 2016 on event-driven microservices.
This presentation looks at the importance of events and the role that they play in applications. We describe how events are a key application integration mechanism and how they are used by applications to communicate with the outside world. You will learn how the microservices inside a system can use events to maintain data consistency. We discuss how easy it is to implement both of these mechanisms by developing your core business logic using an event-centric approach known as event sourcing.
This is a talk I gave at PLoP 2017 - http://www.hillside.net/plop/2017/index.php?nav=program
The microservice architecture is growing in popularity. It is an architectural style that structures an application as a set of loosely coupled services that are organized around business capabilities. Its goal is to enable the continuous delivery of large, complex applications. However, the microservice architecture is not a silver bullet and it has some significant drawbacks.
The goal of the microservices pattern language is to enable software developers to apply the microservice architecture effectively. It is a collection of patterns that solve architecture, design, development and operational problems. In this talk, I’ll provide an overview of the microservice architecture and describe the motivations for the pattern language. You will learn about the key patterns in the pattern language.
Microservices are an essential enabler of agility but developing and deploying them is a challenge. In order for microservices to be loosely coupled,each service must have its own datastore. This makes it difficult to maintain data consistency across services.
Deploying microservices is also a complex problem since an application typically consists of 10s or 100s of services, written in a variety of languages and frameworks. In this presentation, you will learn how to solve these problems by using an event-driven architecture to maintain data consistency and by using Docker to simplify deployment.
Developing event-driven microservices with event sourcing and CQRS (london Ja...Chris Richardson
This is a talk I gave to the London Java Community in June 2016
In a microservices architecture, each service has its own database. While this ensures that services are loosely coupled it creates a problem: how do you maintain consistency across services without using 2PC? In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Separation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
Events to the rescue: solving distributed data problems in a microservice arc...Chris Richardson
To deliver a large complex application rapidly, frequently and reliably, you often must use the microservice architecture.
The microservice architecture is an architectural style that structures the application as a collection of loosely coupled services.
One challenge with using microservices is that in order to be loosely coupled each service has its own private database.
As a result, implementing transactions and queries that span services is no longer straightforward.
In this presentation, you will learn how event-driven microservices address this challenge.
I describe how to use sagas, which is an asynchronous messaging-based pattern, to implement transactions that span services.
You will learn how to implement queries that span services using the CQRS pattern, which maintain easily queryable replicas using events.
Developing microservices with aggregates (melbourne)Chris Richardson
This is a talk I gave at the Melbourne microservices meetup, January 2017
The Domain Model pattern is a great way to develop complex business logic. Unfortunately, a typical domain model is a tangled, birds nest of classes. It can’t be decomposed into microservices. Moreover, business logic often relies on ACID transactions to maintain consistency. Fortunately, there is a solution to this problem: aggregates.
An aggregate is an often overlooked modeling concept from the must read book Domain Driven Design. In this talk you will learn how aggregates enable you to develop business logic for the modern world of microservices and NoSQL. We will describe how to use aggregates to design modular business logic that can be partitioned into microservices. You will learn how aggregates enable you to use eventual consistency instead of ACID.
Solving distributed data management problems in a microservice architecture (...Chris Richardson
This is a talk that I gave the SFBay Area Microservices and Cloud Native Apps meetup: https://www.meetup.com/microservices/events/241894841/
In a microservice architecture, each service has a private datastore in order to ensure that the services are loosely coupled. While loose coupling is essential, this architecture makes managing transactions and querying difficult. You can’t use traditional distributed transactions. Nor can you use distributed queries. In this talk you will learn about some patterns for solving these problems: Sagas, API Composition and Command Query Responsibility Segregation (CQRS).
There is no such thing as a microservice! (oracle code nyc)Chris Richardson
This is a keynote I gave at Oracle Code 2017 in New York:
https://developer.oracle.com/code/newyork
The microservice architecture is becoming increasingly popular. However, frequent references to using “a microservice to solve a problem” suggest that the concept is not universally well understood.
In this talk we define the microservice architecture as an architectural style and explain what that actually means. You will learn why the architecture that you pick for your application matters. We describe how the primary goal of the microservice architecture is to enable continuous delivery/deployment and how it achieves that.
You will learn how to solve key challenges with decomposing an application into microservices. We describe why there is no such thing as a microservice!
YOW2018 - Events and Commands: Developing Asynchronous MicroservicesChris Richardson
The microservice architecture functionally decomposes an application into a set of services. Each service has its own private database that’s only accessible indirectly through the services API. Consequently, implementing queries and transactions that span multiple services is challenging.
In this presentation, you will learn how to solve these distributed data management challenges using asynchronous messaging. I describe how to implement transactions using sagas, which are sequences of local transactions, coordinated using messages. You will learn how to implement queries using Command Query Responsibility Segregation (CQRS), which uses events to maintain replicas. I describe how to use event sourcing, which is an event-centric approach to business logic and persistence, in a microservice architecture.
Developing Event-driven Microservices with Event Sourcing & CQRS (gotoams)Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC.
In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Separation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
This is a keynote talk that I gave at RedisConf 2016.
It answers three questions:
What are microservices?
Why should you use them?
Where does Redis fit into a microservices architecture?
You can find the example code here: https://github.com/eventuate-examples/eventuate-examples-restaurant-management
Service Mesh and Serverless Chatbots with Linkerd, K8s and OpenFaaSSoftware Guru
This session will present the different challenges for telco companies when they deploy support chatbots for clients, this is based on a real experience of working with chatbots in a
telco company Telefónica based on Guatemala and some countries in Central America.
Presentado por Sergio Méndez en SG Virtual Conference 2020
Serverless is now well established pattern for all things Cloud. As we leverage this style architecture with more power we require more control. Discover how good architects and developers design and develop serverless platforms for the enterprise. We describe a framework that will move your serverless systems from good to great and help you grow our connected world.
Detecting Malicious Cloud Account Behavior: A Look at the New Native Platform...Priyanka Aash
Until recently, major public cloud providers have offered relatively basic toolsets for identifying suspicious activity occurring inside customer accounts that may indicate a compromise. Some organizations have invested significant resources to build their own tools or have leveraged industry vendor offerings to provide this visibility. The reality is, that barrier has meant that a large number of organizations haven't dedicated those resources to this problem and therefore operate without sufficient detection and response capabilities that monitor their cloud accounts for compromise.
Amazon Web Services, Google Cloud Platform, and Microsoft Azure have recently launched a new set of native platform threat and anomalous behavior detection services to help their customers better identify and respond to certain issues and activities occurring inside their cloud accounts. From detecting crypto-currency mining to identifying bot-infected systems to alerting on suspicious cloud credential usage to triggering on cloud-specific methods of data exfiltration, these new services aim to make these kinds of detections much easier and simpler to centrally manage.
But what new and unique insights do they offer? What configuration is required to achieve the full benefits of these detections? What types of activities are not yet covered? What attack methods and techniques can avoid detection by these systems and still be successful? What practical guidelines can be followed to make the best use of these services in an organization?
Follow along as we attempt to answer these questions using practical demonstrations that highlight the real threats facing cloud account owners and how the new threat detection capabilities perform in reducing the risks of operating workloads in the public cloud.
APIdays Paris 2018 - Cloud computing - we went through every steps of the Gar...apidays
Cloud computing - we went through every steps of the Gartner Hype cycle. Now it's time to debrief.
Ludovic Piot, Lead of Customer Care, Clever Cloud
Apply to be a speaker here - https://apidays.typeform.com/to/J1snsg
Moving Legacy Apps to Cloud: How to Avoid RiskCloverDX
** Watch the video to accompany these slides: https://www.cloverdx.com/webinars/avoiding-risk-when-moving-legacy-apps-to-cloud **
Legacy systems can be critical to business success, but because they're frequently old, they often don't work well in the modern world and lag behind in features and convenience.
Migrating to a more modern system is often viewed as risky and expensive.
But it doesn't have to be.
Watch this video to discover:
- Why would you want to migrate your legacy application to the cloud
- Common migration approaches
- Ways to make the migration faster and painless
- How to minimize risk during the migration process
More CloverDX webinars: https://www.cloverdx.com/webinars
Twitter: https://twitter.com/cloverdx
LinkedIn: https://www.linkedin.com/company/cloverdx/
Get a free 45 day trial of the CloverDX Data Management Platform: https://www.cloverdx.com/trial-platform
Securing Your CI Pipeline with HashiCorp Vault - P2Ashnikbiz
Today, CI/CD is becoming a practice for optimum software delivery in almost every organization. What is key is how you manage the secrets in your pipeline, especially in a large organization with multiple projects, across several teams.
Hashicorp Vault helps organizations to centrally manage secrets even in your CI/CD pipelines.
WEBINAR COVERS:
Why is it critical to secure your pipeline which needs to access a lot of important secrets in order to provision and deploy
How Vault provides a unified interface to any secret while providing tight access control and recording a detailed audit log
Customer use cases and scenarios
Demo: How to secure your CI pipeline with Vault
Watch on demand: https://bit.ly/35QCq0u
Cassandra Day Atlanta 2015: BetterCloud: Leveraging Apache CassandraDataStax Academy
BetterCloud works on Insights, Security and Management for cloud office platforms like Google Apps and Office 365. In order to support large data sets with no impact to data retrieval and data ingestion performance, we are using Cassandra as the Data Storage engine to serve our Customers across the globe.
Similar to Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications - IMW 2015 (20)
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBrad Spiegel Macon GA
Brad Spiegel Macon GA’s journey exemplifies the profound impact that one individual can have on their community. Through his unwavering dedication to digital inclusion, he’s not only bridging the gap in Macon but also setting an example for others to follow.
# Internet Security: Safeguarding Your Digital World
In the contemporary digital age, the internet is a cornerstone of our daily lives. It connects us to vast amounts of information, provides platforms for communication, enables commerce, and offers endless entertainment. However, with these conveniences come significant security challenges. Internet security is essential to protect our digital identities, sensitive data, and overall online experience. This comprehensive guide explores the multifaceted world of internet security, providing insights into its importance, common threats, and effective strategies to safeguard your digital world.
## Understanding Internet Security
Internet security encompasses the measures and protocols used to protect information, devices, and networks from unauthorized access, attacks, and damage. It involves a wide range of practices designed to safeguard data confidentiality, integrity, and availability. Effective internet security is crucial for individuals, businesses, and governments alike, as cyber threats continue to evolve in complexity and scale.
### Key Components of Internet Security
1. **Confidentiality**: Ensuring that information is accessible only to those authorized to access it.
2. **Integrity**: Protecting information from being altered or tampered with by unauthorized parties.
3. **Availability**: Ensuring that authorized users have reliable access to information and resources when needed.
## Common Internet Security Threats
Cyber threats are numerous and constantly evolving. Understanding these threats is the first step in protecting against them. Some of the most common internet security threats include:
### Malware
Malware, or malicious software, is designed to harm, exploit, or otherwise compromise a device, network, or service. Common types of malware include:
- **Viruses**: Programs that attach themselves to legitimate software and replicate, spreading to other programs and files.
- **Worms**: Standalone malware that replicates itself to spread to other computers.
- **Trojan Horses**: Malicious software disguised as legitimate software.
- **Ransomware**: Malware that encrypts a user's files and demands a ransom for the decryption key.
- **Spyware**: Software that secretly monitors and collects user information.
### Phishing
Phishing is a social engineering attack that aims to steal sensitive information such as usernames, passwords, and credit card details. Attackers often masquerade as trusted entities in email or other communication channels, tricking victims into providing their information.
### Man-in-the-Middle (MitM) Attacks
MitM attacks occur when an attacker intercepts and potentially alters communication between two parties without their knowledge. This can lead to the unauthorized acquisition of sensitive information.
### Denial-of-Service (DoS) and Distributed Denial-of-Service (DDoS) Attacks
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
3. So what's the ruckus about?
3
Months
3
Apps
0
Buffer
Grady Cloud
GRADY = Grails Rapid Application
Development for Ymens
4. But what is a cloud ready application?
SaaS
Online
Internet
Subscription
based
Automated
Updates
Recurring
Billing
Configurable
Efficient Scalable
5. And which are the typical cloud challenges?
Multi-tenancy
User Identity
Management
Single Sign
On
Access
Management
Network
Dependence
Integration &
Interoperability
Data Mobility
& Portability
Data Privacy
& Security
Legacy
Migration
6. So what is our “simple” answer?
Plugins
Bootstrap
[Magic]
Groovy
Grails GRADY
Rapid Development framework, based on open
source technologies seamlessly glued together
7. How do we isolate tenant data?
Separate DB Shared
Schema
Separate
Schema
Multi
Tenant
Single DB
Plugin
Multi Tenancy: Data Architecture
8. How do we manage identities?
Authentication Spring Security
Authorization Spring Security
Account
Management Spring Security
Audit Logging Hibernate Envers
The 4 A’s of
Cloud Identity
9. Much ado about nothing? We did it again!
4th of October: official launch date
Smarter! Better! Faster!
Adopt Grady company wide
Core to our Cloud Broker Platform
Foster Innovation through Rapid Prototyping
No silver bullet. Beware of the tradeoffs!
3
Months
3
Apps
0
Buffer
Grady Cloud
10. And we are…
þ A young team with mixed backgrounds
using an heterogeneous tech stack.
þ An agile team who believes in an iterative,
incremental and sustained pace of
development.
þ A self-organizing team oriented towards
products, customers and innovation.
þ A growing team.
And hiring ☺
11. Before I go
@Audited
@MultiTenant
class Product {
enum Type {
SUBCRIPTION, USAGE, TRIAL
}
String name
String description
String category
Float price
Type type
static mapping = {
}
static constraints = {
name unique: 'tenantId', nullable: false, blank: false, maxSize: 50
category nullable: false, blank: false, maxSize: 50
price min: 0.0f, scale: 3
type inList: [Type.SUBCRIPTION, Type.USAGE, Type.TRIAL]
description blank: true, widget: 'textarea'
tenantId display: false
}
}
13. Grails & Groovy
q Grails:
þ OSS, Groovy-based high-productivity framework inspired by Ruby on
Rails and following the "coding by convention" paradigm
þ Grails applications can run in standard Java servlet containers.
q Groovy:
þ OOP language for the Java platform
þ Dynamic language with features similar to those of Python, Ruby, Perl,
and Smalltalk
þ Can be used as a scripting language for the Java Platform, is
dynamically compiled to Java Virtual Machine (JVM) bytecode, and
interoperates with other Java code and libraries.
15. Core Plugins
q Spring Security Core: Secure applications using the powerful
Spring Security library
þ Spring Security Configuration Info: Provides a basic UI to view the
security configuration
þ Spring Security LDAP: Support for LDAP and Active Directory
authentication
þ Spring Security OpenID: Support for OpenID authentication
q Hibernate Envers:
þ Plugin to integrate grails with Hibernate Envers
þ Easy Entity Auditing. All that you have to do is annotate your persistent
class or some of its properties, that you want to audit, with @Audited
q Multi Tenant Single DB:
16. Twitter Bootstrap & Less
q Bootstrap:
þ Developed by Twitter as a framework to encourage consistency across
internal tools
þ No.1 project on GitHub with 71,000+ stars and 26,000+ forks
þ The most popular HTML, CSS, and JS framework for developing
responsive, mobile first projects on the web
q Less:
þ CSS pre-processor, meaning that it extends the CSS language, adding
features that allow variables, mixins and functions
þ Make CSS that is more maintainable, themable and extendable
17. Multi Tenancy: Data Architecture
q Separate DB: Each tenant has its own set of data that remains logically isolated
from data that belongs to all other tenants.
þ Metadata associates each database with the correct tenant, and database security
prevents any tenant from accidentally or maliciously accessing other tenants' data.
q Separate Schema: House multiple tenants in the same database, with each
tenant having its own set of tables that are grouped into a schema created
specifically for the tenant.
þ When a customer first subscribes to the service, the provisioning subsystem creates a
discrete set of tables for the tenant and associates it with the tenant's own schema.
þ A significant drawback of the separate-schema approach is that tenant data is harder
to restore in the event of a failure. If each tenant has its own database, restoring a
single tenant's data means simply restoring the database from the most recent backup.
q Shared Schema: The same database and the same set of tables to host
multiple tenants' data.
þ A Tenant ID column associates every record with the appropriate tenant
þ The shared schema approach has the lowest hardware and backup costs, because it
allows you to serve the largest number of tenants per database server
þ However, it may incur additional development effort in the area of security, to ensure
that tenants can never access other tenants' data, even in the event of unexpected
bugs or attacks
18. Tradeoffs: No Silver Bullet
q Grails
þ Tight Coupling
þ Anti-patterns
þ (Some) Immature Plugins
q Twitter Bootstrap
þ A dark future where the entire web looks like the Bootstrap example
page
þ Heavy-handed, Prescriptive
19. Grady: Initial Goals
Requirement Description
Rapid Prototyping Quickly generate/implement a vertical prototype of the
application
Scaffolding Generate CRUD code up yo UI Layer
Dynamic Form Generation Generate/Render forms based on data model
Configuration Based Validation Validate input in forms based on configuration and data model
constraints
Support for Dictionaries Sets of predefined values to be reused across the application
Object Relational Mapping Map domain model to underlying persistence based on
configuration/convention
Support for Workflows Support for wizards and basic support for workflows
User Management Basic user management
Access Management Basic authorization
Authentication HTTP basic access authentication and Digest authentication
Reporting Built-in reporting capabilities
Flexible Data Model Flexible schema or schemaless persistence
21. So what's the ruckus about?
“Smarter. Faster. Better. These are today's words when talking about
business. And, about development too. Nowadays, we’re all in the cloud
and some of us have already faced a simple question without a simple
answer: how to build better apps faster? There are a multitude of
challenges arising when trying to achieve this ambitious goal while
maintaining a productive pace for delivery and innovating at the same time.
How do I isolate tenant data, how do I manage identities across federated
clouds, how can I migrate legacy apps, how do I ensure single sign on in
heterogeneous cloud environments (of course everything Smarter. Faster.
Better.) We now have a simple answer to some of these technical
questions: our own rapid development framework, based on open source
technologies seamlessly glued together, of course, for cloud-ready
applications - because this is what we do. We're inviting you to a practical
discussion on how the R&D department can play a major role in delivering
every business' goal: time to market. Smarter. Better. Faster.”
Vlad, R&D Monica, Marketing