The document discusses moving from a simple CQRS architecture to an event-centric architecture using domain events. It describes how domain events can be used to build denormalized read models from an event stream and log events for future retrieval. Testing strategies are also covered, including validating that read models contain expected data given certain events and that commands emit the proper domain events.
These are the slides of my talk on June 22nd 2015 at the GOTO Night in Cologne
https://secure.trifork.com/berlin-2015/freeevent/index.jsp?eventOID=7123
Domain-Driven Design changed the way we reason about large software systems. Modern practices, tools and technologies like continuous delivery, NoSQL, and cloud-based virtualization allow the creation of fine-grained systems to solve the specific problems at hand.
Having DDD in mind and technical expertise at our hands, with microservice architectures we can build complex systems that reflect our businesses' complex realities and are easy to change at the same time. This talk will show what DDD and microservice architectures have in common and how you can use both to create software systems that fit your domain.
Taming the Monolith - Microservices Meetup HamburgDennis Traub
Taming the Monolith - Are Microservices just an Implementation Detail?
The slides of my presentation at the Microservices Meetup Hamburg on July 13th, 2015, hosted by Adobe Systems Engineering GmbH.
Event details: http://www.meetup.com/de/Microservices-Meetup-Hamburg/events/220839035/
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015Dennis Traub
Domain-Driven Design changed the way we reason about large software systems. Modern practices, tools and technologies like continuous delivery, NoSQL, and cloud-based virtualization allow the creation of fine-grained systems to solve the specific problems at hand. Having DDD in mind and technical expertise at our hands, with Microservice architectures we can build complex systems that reflect our businesses' complex realities and are easy to change at the same time. This talk will show what DDD and Microservice architectures have in common and how you can use both to create software systems that fit your domain.
These are the slides of my talk on June 22nd 2015 at the GOTO Night in Cologne
https://secure.trifork.com/berlin-2015/freeevent/index.jsp?eventOID=7123
Domain-Driven Design changed the way we reason about large software systems. Modern practices, tools and technologies like continuous delivery, NoSQL, and cloud-based virtualization allow the creation of fine-grained systems to solve the specific problems at hand.
Having DDD in mind and technical expertise at our hands, with microservice architectures we can build complex systems that reflect our businesses' complex realities and are easy to change at the same time. This talk will show what DDD and microservice architectures have in common and how you can use both to create software systems that fit your domain.
Taming the Monolith - Microservices Meetup HamburgDennis Traub
Taming the Monolith - Are Microservices just an Implementation Detail?
The slides of my presentation at the Microservices Meetup Hamburg on July 13th, 2015, hosted by Adobe Systems Engineering GmbH.
Event details: http://www.meetup.com/de/Microservices-Meetup-Hamburg/events/220839035/
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015Dennis Traub
Domain-Driven Design changed the way we reason about large software systems. Modern practices, tools and technologies like continuous delivery, NoSQL, and cloud-based virtualization allow the creation of fine-grained systems to solve the specific problems at hand. Having DDD in mind and technical expertise at our hands, with Microservice architectures we can build complex systems that reflect our businesses' complex realities and are easy to change at the same time. This talk will show what DDD and Microservice architectures have in common and how you can use both to create software systems that fit your domain.
A talk I presented at Grenland Web, 24th of January 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
A talk I presented at vNext Orange County, 25th of February 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
A talk I presented at Southern California Team System, 26th of February 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
Event-driven architecture (EDA) is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.
This architectural pattern may be applied by the design and implementation of applications and systems which transmit events among loosely coupled software components and services.
In this session you’ll learn how to create a loosely coupled architecture for your business that has the domain at the core. You’ll learn the basics of EDA, and also learn how we are transforming our architecture at Unibet.com to become event driven, and what benefits it will bring to our business. The session will cover technologies such as JMS, XML, JSON, Google Protocol Buffers, ActiveMQ and Spring.
Analytics at Scale with Apache Spark on AWS with Jonathan FritzDatabricks
Organizations from small startups to large enterprises are rapidly adopting Apache Spark on Amazon EMR in Amazon Web Services (AWS) to run streaming analytics, data science, machine learning, and batch processing workloads. These customers can quickly create big data architectures within minutes, and decouple compute and storage with Amazon S3 as a highly scalable, durable, and secure data lake, lower costs using Amazon EC2 Spot Instances and Auto Scaling, and utilize a wide range of encryption and access control features. In this session, we discuss how customers are using Spark on AWS and common architectures for easily running performant Spark clusters at scale and low cost with Amazon EMR.
Overcoming the Top Four Challenges to Real-Time Performance in Large-Scale, D...SL Corporation
The most critical large-scale applications today, regardless of industry, involve a demand for real-time data transfer and visualization of potentially large volumes of data. With this demand comes numerous challenges and limiting factors, especially if these applications are deployed in virtual or cloud environments. In this session, SL’s CEO, Tom Lubinski, explains how to overcome the top four challenges to real-time application performance: database performance, network data transfer bandwidth limitations, processor performance and lack of real-time predictability. Solutions discussed will include design of the proper data model for the application data, along with design patterns that facilitate optimal and minimal data transfer across networks.
Balancing Replication and Partitioning in a Distributed Java DatabaseBen Stopford
This talk, presented at JavaOne 2011, describes the ODC, a distributed, in-memory database built in Java that holds objects in a normalized form in a way that alleviates the traditional degradation in performance associated with joins in shared-nothing architectures. The presentation describes the two patterns that lie at the core of this model. The first is an adaptation of the Star Schema model used to hold data either replicated or partitioned data, depending on whether the data is a fact or a dimension. In the second pattern, the data store tracks arcs on the object graph to ensure that only the minimum amount of data is replicated. Through these mechanisms, almost any join can be performed across the various entities stored in the grid, without the need for key shipping or iterative wire calls.
게임을 위한 Cloud Native on AWS
IT 기술이 변화하며 클라우드를 보다 적극적으로 사용하는 게임사가 늘어나는 추세입니다. 게임 고객분들이 다양한 시각에서 AWS Cloud Service를 보다 효과적으로 잘 사용할 수 있는 방법을 소개합니다. 또한, 고객분들께서 개발에 집중하고 효율적으로 운영할 수 있도록 AWS가 어떠한 도움을 드리는지에 대해 말씀드리고자 합니다.
Spitogatos.gr is a leading real estate portal in Greece.
This presentation describes high level architecture and the learnings of a recent migration from dedicated servers to a more scalable solution in the cloud of Amazon.
Presentation was given at a meetup of AWS Usergroup Greece (AWSUGGR).
Application Integration Patterns (not only) for MicroservicesDennis Traub
When you have a microservices architectural style, much of the communication between components is done over the network. In order to achieve what microservices promise, this communication must happen in a loosely coupled manner. In this session, we discuss some fundamental application integration patterns mostly based on messaging, and we connect them to real-world use cases in a microservices scenario. We also highlight the benefits that asynchronous messaging can have over REST APIs for communication between microservices.
Serverless SecOps Automation on AWS at AWS UG Krakow, PolandDennis Traub
This is the slide deck of my presentation "Serverless SecOps Automation on AWS - How to automatically detect and handle security events in the cloud", that I presented at AWS UG Krakow, Poland, on Nov 26, 2020
A talk I presented at Grenland Web, 24th of January 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
A talk I presented at vNext Orange County, 25th of February 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
A talk I presented at Southern California Team System, 26th of February 2013 about the importance of delivering business value and how you as a developer can much easier meet the requirements of the end user by applying practices like DDD and utilizing things like CQRS and MVVM to help decouple your software and focus better.
Event-driven architecture (EDA) is a software architecture pattern promoting the production, detection, consumption of, and reaction to events.
This architectural pattern may be applied by the design and implementation of applications and systems which transmit events among loosely coupled software components and services.
In this session you’ll learn how to create a loosely coupled architecture for your business that has the domain at the core. You’ll learn the basics of EDA, and also learn how we are transforming our architecture at Unibet.com to become event driven, and what benefits it will bring to our business. The session will cover technologies such as JMS, XML, JSON, Google Protocol Buffers, ActiveMQ and Spring.
Analytics at Scale with Apache Spark on AWS with Jonathan FritzDatabricks
Organizations from small startups to large enterprises are rapidly adopting Apache Spark on Amazon EMR in Amazon Web Services (AWS) to run streaming analytics, data science, machine learning, and batch processing workloads. These customers can quickly create big data architectures within minutes, and decouple compute and storage with Amazon S3 as a highly scalable, durable, and secure data lake, lower costs using Amazon EC2 Spot Instances and Auto Scaling, and utilize a wide range of encryption and access control features. In this session, we discuss how customers are using Spark on AWS and common architectures for easily running performant Spark clusters at scale and low cost with Amazon EMR.
Overcoming the Top Four Challenges to Real-Time Performance in Large-Scale, D...SL Corporation
The most critical large-scale applications today, regardless of industry, involve a demand for real-time data transfer and visualization of potentially large volumes of data. With this demand comes numerous challenges and limiting factors, especially if these applications are deployed in virtual or cloud environments. In this session, SL’s CEO, Tom Lubinski, explains how to overcome the top four challenges to real-time application performance: database performance, network data transfer bandwidth limitations, processor performance and lack of real-time predictability. Solutions discussed will include design of the proper data model for the application data, along with design patterns that facilitate optimal and minimal data transfer across networks.
Balancing Replication and Partitioning in a Distributed Java DatabaseBen Stopford
This talk, presented at JavaOne 2011, describes the ODC, a distributed, in-memory database built in Java that holds objects in a normalized form in a way that alleviates the traditional degradation in performance associated with joins in shared-nothing architectures. The presentation describes the two patterns that lie at the core of this model. The first is an adaptation of the Star Schema model used to hold data either replicated or partitioned data, depending on whether the data is a fact or a dimension. In the second pattern, the data store tracks arcs on the object graph to ensure that only the minimum amount of data is replicated. Through these mechanisms, almost any join can be performed across the various entities stored in the grid, without the need for key shipping or iterative wire calls.
게임을 위한 Cloud Native on AWS
IT 기술이 변화하며 클라우드를 보다 적극적으로 사용하는 게임사가 늘어나는 추세입니다. 게임 고객분들이 다양한 시각에서 AWS Cloud Service를 보다 효과적으로 잘 사용할 수 있는 방법을 소개합니다. 또한, 고객분들께서 개발에 집중하고 효율적으로 운영할 수 있도록 AWS가 어떠한 도움을 드리는지에 대해 말씀드리고자 합니다.
Spitogatos.gr is a leading real estate portal in Greece.
This presentation describes high level architecture and the learnings of a recent migration from dedicated servers to a more scalable solution in the cloud of Amazon.
Presentation was given at a meetup of AWS Usergroup Greece (AWSUGGR).
Application Integration Patterns (not only) for MicroservicesDennis Traub
When you have a microservices architectural style, much of the communication between components is done over the network. In order to achieve what microservices promise, this communication must happen in a loosely coupled manner. In this session, we discuss some fundamental application integration patterns mostly based on messaging, and we connect them to real-world use cases in a microservices scenario. We also highlight the benefits that asynchronous messaging can have over REST APIs for communication between microservices.
Serverless SecOps Automation on AWS at AWS UG Krakow, PolandDennis Traub
This is the slide deck of my presentation "Serverless SecOps Automation on AWS - How to automatically detect and handle security events in the cloud", that I presented at AWS UG Krakow, Poland, on Nov 26, 2020
Serverless Security Automation on AWS - Hamburg AWS User GroupDennis Traub
Presented at Hamburg AWS User Group, June 6th, 2019.
IT is inherently insecure and moving to the cloud could expose your workload to all new kinds of potential risks. However, AWS provides you with a large set of integrated tools to be just as secure as your on-premises solution.
In this talk, you will learn how to combine these built-in tools with serverless technologies to monitor your environment and automatically detect, contain, and remediate security risks on AWS.
Cloud ist keine Strategie - Keynote des AWS Cloud Day, SolingenDennis Traub
Der Schritt in die Cloud ist für sich alleine noch keine Strategie. Vielmehr müssen Unternehmen die Cloud als mächtiges Werkzeug begreifen, das bei wohlüberlegtem Einsatz dabei helfen kann, schnell und kostengünstig mit neuen Geschäftsideen zu experimentieren.
Mit klugen Ideen und einer kleinen Portion Mut wagen immer mehr deutsche Unternehmen über alle Branchen hinweg den gefürchteten Umstieg in die digitale Welt und sind auf dem besten Weg, sich profitable und zukunftsfähige Geschäftsfelder zu erschließen.
Mit dem richtigen Vorgehensmodell und dem Ansatz “Einfach mal machen” kann jedes Unternehmen erstaunliche Dinge vollbringen.
Cloud ist keine Strategie - AWS Tech Community Summit Cologne, 2017Dennis Traub
Der Schritt in die Cloud ist für sich alleine noch keine Strategie. Vielmehr müssen Unternehmen die Cloud als mächtiges Werkzeug begreifen, das bei wohlüberlegtem Einsatz dabei helfen kann, schnell und kostengünstig mit neuen Geschäftsideen zu experimentieren.
Mit klugen Ideen und einer kleinen Portion Mut wagen immer mehr deutsche Unternehmen über alle Branchen hinweg den gefürchteten Umstieg in die digitale Welt und sind auf dem besten Weg, sich profitable und zukunftsfähige Geschäftsfelder zu erschließen. Mit dem richtigen Vorgehensmodell und dem Ansatz “Einfach mal machen” kann jedes Unternehmen erstaunliche Dinge vollbringen.
Honest Reviews of Tim Han LMA Course Program.pptxtimhan337
Personal development courses are widely available today, with each one promising life-changing outcomes. Tim Han’s Life Mastery Achievers (LMA) Course has drawn a lot of interest. In addition to offering my frank assessment of Success Insider’s LMA Course, this piece examines the course’s effects via a variety of Tim Han LMA course reviews and Success Insider comments.
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
Operation “Blue Star” is the only event in the history of Independent India where the state went into war with its own people. Even after about 40 years it is not clear if it was culmination of states anger over people of the region, a political game of power or start of dictatorial chapter in the democratic setup.
The people of Punjab felt alienated from main stream due to denial of their just demands during a long democratic struggle since independence. As it happen all over the word, it led to militant struggle with great loss of lives of military, police and civilian personnel. Killing of Indira Gandhi and massacre of innocent Sikhs in Delhi and other India cities was also associated with this movement.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
The Roman Empire A Historical Colossus.pdfkaushalkr1407
The Roman Empire, a vast and enduring power, stands as one of history's most remarkable civilizations, leaving an indelible imprint on the world. It emerged from the Roman Republic, transitioning into an imperial powerhouse under the leadership of Augustus Caesar in 27 BCE. This transformation marked the beginning of an era defined by unprecedented territorial expansion, architectural marvels, and profound cultural influence.
The empire's roots lie in the city of Rome, founded, according to legend, by Romulus in 753 BCE. Over centuries, Rome evolved from a small settlement to a formidable republic, characterized by a complex political system with elected officials and checks on power. However, internal strife, class conflicts, and military ambitions paved the way for the end of the Republic. Julius Caesar’s dictatorship and subsequent assassination in 44 BCE created a power vacuum, leading to a civil war. Octavian, later Augustus, emerged victorious, heralding the Roman Empire’s birth.
Under Augustus, the empire experienced the Pax Romana, a 200-year period of relative peace and stability. Augustus reformed the military, established efficient administrative systems, and initiated grand construction projects. The empire's borders expanded, encompassing territories from Britain to Egypt and from Spain to the Euphrates. Roman legions, renowned for their discipline and engineering prowess, secured and maintained these vast territories, building roads, fortifications, and cities that facilitated control and integration.
The Roman Empire’s society was hierarchical, with a rigid class system. At the top were the patricians, wealthy elites who held significant political power. Below them were the plebeians, free citizens with limited political influence, and the vast numbers of slaves who formed the backbone of the economy. The family unit was central, governed by the paterfamilias, the male head who held absolute authority.
Culturally, the Romans were eclectic, absorbing and adapting elements from the civilizations they encountered, particularly the Greeks. Roman art, literature, and philosophy reflected this synthesis, creating a rich cultural tapestry. Latin, the Roman language, became the lingua franca of the Western world, influencing numerous modern languages.
Roman architecture and engineering achievements were monumental. They perfected the arch, vault, and dome, constructing enduring structures like the Colosseum, Pantheon, and aqueducts. These engineering marvels not only showcased Roman ingenuity but also served practical purposes, from public entertainment to water supply.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
5. Definition: Domain Event
• Martin Fowler: (PEAA, 2002)
▫ Captures the memory of something interesting
which affects the domain
▫ The essence […] is to capture things that can
trigger a change to the state
▫ These event objects are then processed to cause
changes to the system, and stored to provide an
audit log
17. An Event Stream …
Added Added Added Removed
to to to from
Cart Cart Cart Cart
18. An Event Stream …
Added Added Added Removed
to to to from
Cart Cart Cart Cart
Shopping
Cart
Can be projected into:
19. An Event Stream …
Added Added Added Removed
to to to from
Cart Cart Cart Cart
Sales History
Shopping
Cart
… or into this:
20. An Event Stream …
Added Added Added Removed
to to to from
Cart Cart Cart Cart
Sales History
Audit Trail
Shopping
Cart
… or into this:
21. An Event Stream …
Added Added Added Removed
to to to from
Cart Cart Cart Cart
Sales History
Campaign Effectiveness
Shopping
Campaign Effectiveness
Cart
… or into this:
23. Simple CQRS
Relational Data SQL
Storage Views
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Queries
Client
24. Optimized Write / Complex to Read
INNER JOIN …
LEFT OUTER JOIN …
Relational Data UNION … SQL
Storage GROUP BY … Views
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Queries
Client
25. Optimized Write / Complex to Read
INNER JOIN …
LEFT OUTER JOIN …
Relational Data UNION … SQL
Storage GROUP BY … Views
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Queries
Client
26. Replace Views with Table per Query
SELECT * FROM …
Table
Relational Data per
Storage Query
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Queries
Client
27. Emit Events when they occur
Table
Relational Data per
Storage View
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Queries
Client
28. Denormalize Events into Read Model
Denormalizer
Table
Relational Data per
Storage View
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Queries
Client
29. Add an Event Log for future retrieval
Denormalizer
Table
Relational Data per
Storage View
ORM Thin Read Layer
Domain Model
Command Handlers
Commands Event Log Queries
Client
30. Simplified:
Events
Domain Read Model
Commands DTOs
Client
41. Testing the Read Model
Denormalizer
Table
per
View
Thin Read Layer
42. Testing the Read Model
Given that certain Events have occurred
Denormalizer
Table
per
View
Thin Read Layer
43. Testing the Read Model
Given that certain Events have occurred
Denormalizer
Table
per
When a specific Event has occurred View
Thin Read Layer
44. Testing the Read Model
Given that certain Events have occurred
Denormalizer
Table
per
When a specific Event has occurred View
Thin Read Layer
Then each query should produce the expected results
45. Testing the Read Model
Given that a book with an ISBN of xxx and a
price of USD 24.00 was added to a new shopping cart
When a book with an ISBN of yyy and a price
of USD 19.00 was added to that same shopping cart
Then the Shopping Cart Summary should contain 2 books
and have a total amount of USD 43.00
And the Shopping Cart Details should contain book xxx
And the Shopping Cart Details should contain book yyy
47. Testing the Write Model
Given that certain Events have occurred
Domain Model
Command Handlers
48. Testing the Write Model
Given that certain Events have occurred
Domain Model
Command Handlers
When a specific Commands is sent
Commands
49. Testing the Write Model
Then the expected Events (and only those) should be emitted
Given that certain Events have occurred
Domain Model
Command Handlers
When a specific Commands is sent
Commands
50. Testing the Write Model
Given that an Add Book To Shopping Cart event with
an ISBN of xxx had been sent
When a Remove Book From Shopping Cart command is
sent with an ISBN of zzz
Then a Book Removal Failed event should be emitted
And NO Book Was Removed From Shopping Cart event
should be emitted
52. Main Value:
• Additive only, i.e. we don‘t lose information
• Linearly scalable and distributable Read Model
• Every new view can be created from the
beginning of time
• We can come up with new questions at any time
• Built-In Integration Model
53. Proven Technology:
Mature business models move away from
Update/Delete and become purely transactional:
▫ Human Resources ▫ Banking
▫ Medicine ▫ Financial Trading
▫ Bookkeeping ▫ Government
▫ …
54. What we haven‘t touched yet:
▫ Messaging ▫ Eventual Consistency
▫ Event Sourcing ▫ Integration Scenarios
▫ Sagas ▫…