The document discusses various techniques for evolving event sourced systems to handle changes over time, as immutable event streams must be adapted to new requirements. Upcasters can modify event representations during loading to rename fields, add data, or change event types, while maintaining immutable event storage. Migrating to a new "version 2.0" event stream allows restructuring events while rebuilding systems. Editing stored events is discouraged except under rare circumstances like data regulations, as the preferred approach is adding corrective events or redesigning read models, events, and aggregates over time through incremental changes.
Akka and Kubernetes, the beginning of a beautiful relationshipHugh McKee
One of the best features of Akka is Akka Cluster. Akka cluster allows for building distributed applications, where one application or service spans multiple nodes. From its initial release in 2013, Akka Cluster needed a node management system to manage the Akka nodes and to provide a resilient and elastic platform. With Kubernetes Akka finally has the node management system that is has been waiting for. Akka Cluster has been designed to gracefully handle nodes leaving and joining a running cluster while continuing to run. Kubernetes adds and removes nodes as needed to increase capacity or to recover from failures. In effect, there is a perfect symbiosis between Akka Cluster and Kubernetes. In this talk, we will look at and demonstrate how Akka Java Cluster and Kubernetes work together and how together they form a beautiful relationship.
JavaFX Tutorial Slides.
Watch the video series here:
https://www.youtube.com/watch?v=kKKtgstZ5qM&list=PLje_ti-y5EoL6PDfH3x5d8FMOpEHgHYVF
K. N. Toosi University of Technology
A Deep Learning use case for water end use detection by Roberto Díaz and José...Big Data Spain
Deep Learning (DL) is a major breakthrough in artificial intelligence with a high potential for predictive applications.
https://www.bigdataspain.org/2017/talk/a-deep-learning-use-case-for-water-end-use-detection
Big Data Spain 2017
November 16th - 17th Kinépolis Madrid
This session of ArcBlock's Technical Learning Series will introduce CQRS and commanded.
CQRS stands for Command Query Responsibility Segregation. At its heart is the notion that you can use a different model to update information than the model you use to read information.
We will have a look into what CQRS and commanded (a framework for elixir) are and how they fit together, followed by a introduction on how to implement an application using CQRS concepts with commanded in our service. "
Event Sourcing, Domain Driven Design, and Command Query Responsibility Segregation – we hear all of these technologies used together frequently, but how do they actually work together? How do you manage complex co-ordination in a CQRS system?
In this talk, we will discuss a real world example of DDD with ES and CQRS written in F# - a functional first language on the .NET Framework. We’ll take a deep dive into the F# algebraic type system that constructs the domain model. Also, the explanation of the abstract notion of a DDD aggregate root compared to the CQRS implementation of an aggregate root. Finishing with how sagas and triggers facilitate poly-aggregate communication.
Event Grid - quiet event to revolutionize Azure and moreSean Feldman
The document discusses Microsoft's Event Grid service. It provides a 3-sentence summary:
Event Grid is a fully managed event routing service that can handle billions of events per week to trigger workflows and functions. It uses a pub/sub model to allow event publishers to emit events to topics, which then causes matching subscriptions to receive the events. Event Grid is designed to be cloud native, serverless friendly, and handle large-scale event processing reliably and securely across Microsoft Azure and other cloud services and applications.
This document discusses implementing event sourcing in .NET. It provides an overview of event sourcing and CQRS, noting that events capture past occurrences that affect the domain. A demo is shown of a sample event sourcing application using NServiceBus for messaging. The document recommends buying rather than building event store and messaging toolkit components, and lists options for each including SQL Server, MongoDB, RavenDB, MSMQ, NEventStore, and NServiceBus.
An Open Source Platform for Social Science ResearchJazkarta, Inc.
In 2016, a group of social scientists at the University of California Berkeley received a large grant to develop tools for rigorous social science research, initially focused on collective identity formation. Jazkarta has been helping them develop Dallinger, a tool to automate experiments that use large numbers of subjects recruited on platforms like Mechanical Turk. They chose Jazkarta because of our web development and project management expertise, but also because of our familiarity with large, open source software projects - which is a goal for Dallinger. At this 2017 Plone Conference presentation, members of the Jazkarta team (David Glick, Alec Mitchell, Matthew Wilkes, and Sally Kleinfeldt) describe how we've put the lessons of Plone to work setting up this new open source project. We also describe how the technology stack (Python, Redis, Web Sockets, Heroku, AWS/Mechanical Turk/boto, Flask, PostgreSQL/SQLAlchemy, Gunicorn, Pytest, gevent) has been working for us.
Akka and Kubernetes, the beginning of a beautiful relationshipHugh McKee
One of the best features of Akka is Akka Cluster. Akka cluster allows for building distributed applications, where one application or service spans multiple nodes. From its initial release in 2013, Akka Cluster needed a node management system to manage the Akka nodes and to provide a resilient and elastic platform. With Kubernetes Akka finally has the node management system that is has been waiting for. Akka Cluster has been designed to gracefully handle nodes leaving and joining a running cluster while continuing to run. Kubernetes adds and removes nodes as needed to increase capacity or to recover from failures. In effect, there is a perfect symbiosis between Akka Cluster and Kubernetes. In this talk, we will look at and demonstrate how Akka Java Cluster and Kubernetes work together and how together they form a beautiful relationship.
JavaFX Tutorial Slides.
Watch the video series here:
https://www.youtube.com/watch?v=kKKtgstZ5qM&list=PLje_ti-y5EoL6PDfH3x5d8FMOpEHgHYVF
K. N. Toosi University of Technology
A Deep Learning use case for water end use detection by Roberto Díaz and José...Big Data Spain
Deep Learning (DL) is a major breakthrough in artificial intelligence with a high potential for predictive applications.
https://www.bigdataspain.org/2017/talk/a-deep-learning-use-case-for-water-end-use-detection
Big Data Spain 2017
November 16th - 17th Kinépolis Madrid
This session of ArcBlock's Technical Learning Series will introduce CQRS and commanded.
CQRS stands for Command Query Responsibility Segregation. At its heart is the notion that you can use a different model to update information than the model you use to read information.
We will have a look into what CQRS and commanded (a framework for elixir) are and how they fit together, followed by a introduction on how to implement an application using CQRS concepts with commanded in our service. "
Event Sourcing, Domain Driven Design, and Command Query Responsibility Segregation – we hear all of these technologies used together frequently, but how do they actually work together? How do you manage complex co-ordination in a CQRS system?
In this talk, we will discuss a real world example of DDD with ES and CQRS written in F# - a functional first language on the .NET Framework. We’ll take a deep dive into the F# algebraic type system that constructs the domain model. Also, the explanation of the abstract notion of a DDD aggregate root compared to the CQRS implementation of an aggregate root. Finishing with how sagas and triggers facilitate poly-aggregate communication.
Event Grid - quiet event to revolutionize Azure and moreSean Feldman
The document discusses Microsoft's Event Grid service. It provides a 3-sentence summary:
Event Grid is a fully managed event routing service that can handle billions of events per week to trigger workflows and functions. It uses a pub/sub model to allow event publishers to emit events to topics, which then causes matching subscriptions to receive the events. Event Grid is designed to be cloud native, serverless friendly, and handle large-scale event processing reliably and securely across Microsoft Azure and other cloud services and applications.
This document discusses implementing event sourcing in .NET. It provides an overview of event sourcing and CQRS, noting that events capture past occurrences that affect the domain. A demo is shown of a sample event sourcing application using NServiceBus for messaging. The document recommends buying rather than building event store and messaging toolkit components, and lists options for each including SQL Server, MongoDB, RavenDB, MSMQ, NEventStore, and NServiceBus.
An Open Source Platform for Social Science ResearchJazkarta, Inc.
In 2016, a group of social scientists at the University of California Berkeley received a large grant to develop tools for rigorous social science research, initially focused on collective identity formation. Jazkarta has been helping them develop Dallinger, a tool to automate experiments that use large numbers of subjects recruited on platforms like Mechanical Turk. They chose Jazkarta because of our web development and project management expertise, but also because of our familiarity with large, open source software projects - which is a goal for Dallinger. At this 2017 Plone Conference presentation, members of the Jazkarta team (David Glick, Alec Mitchell, Matthew Wilkes, and Sally Kleinfeldt) describe how we've put the lessons of Plone to work setting up this new open source project. We also describe how the technology stack (Python, Redis, Web Sockets, Heroku, AWS/Mechanical Turk/boto, Flask, PostgreSQL/SQLAlchemy, Gunicorn, Pytest, gevent) has been working for us.
The document summarizes the development of a hydroperiod tool to estimate floodplain inundation for restoration of the Kissimmee River floodplain. The tool uses monitoring data, digital elevation models, and ArcGIS interpolation to estimate inundation depths, durations, and extents. It allows scientists to evaluate whether restoration is meeting hydrological goals and identify suitable habitat sampling sites. The tool provides a low-cost alternative to complex hydrology models and helps restoration efforts by quickly assessing hydroperiod restoration, which is fundamental to restoring habitats.
An event-driven architecture consists of event producers that generate event streams and event consumers that listen for events. It allows for loose coupling between components and asynchronous event handling. Key aspects include publish/subscribe messaging patterns, event processing by middleware, and real-time or near real-time information flow. Benefits include scalability, loose coupling, fault tolerance, and the ability to add new consumers easily. Challenges include guaranteed delivery, processing events in order or exactly once across multiple consumer instances. Common tools used include Apache Kafka, Apache ActiveMQ, Redis, and Apache Pulsar.
Cassandra Summit 2014: Turkcell Curio, Real-Time Targeted Mobile Marketing Pl...DataStax Academy
Presenter: Ülker Ciftci, Senior Expert Architect at Turkcell
In this session, hear how a leading telecom operator integrates complementary and powerful real-time big data processing technologies such as Apache Kafka, Apache Storm and Datastax Cassandra to build a distributed, fast, fault tolerant and highly scalable mobile marketing platform. Telecom operators as mobile app marketers can better target and offer individualized personalization by collecting customer behavior data and segmenting customers according to behavior. Currently there are 50 mobile applications in Turkcell's Mobile App. Store, and for now, these applications get almost 100 million hits per day. As more mobile applications and more users become involved in the Turkcell Curio, the data set coming from customer behaviours is growing each day. The main challenge facing mobile marketers is the difficulty of real time big data processing which requires low latency, high availability and high scalability. The second requirement, processing a user's action in an "exactly once semantics" for the sake of reliability, is making the challenge even bigger. Turkcell Curio, its name inspired from Mars Rover named Curiosity, is developed within Turkcell to solve these challenges. Curio is now in production, giving Turkcell's Mobile Marketers precious real-time statistics, reports and even chance to interact the online customers via another platform, Turkcell's Push Notifications Platform.
This document discusses event driven architectures. It defines an event driven architecture as a framework that orchestrates behavior in response to events. It distinguishes between messages, which request actions, and events, which reflect completed actions. An example is provided of an order processing workflow with and without an event driven architecture. Key advantages of event driven architectures are also outlined, including improved scalability, fault tolerance, and the ability to more easily develop and release new features. Implementation options for event driven architectures like Amazon Kinesis, Azure Event Hubs, and Apache Kafka are also briefly mentioned.
Zentral is an open source tool that aggregates system logs, events, and inventory data from various sources like osquery, Santa, Munki, Jamf Pro, and ELK. It allows filtering and custom actions on events. The demo shows how Zentral can connect Jamf Pro and osquery to detect configuration changes, trigger remediation, and provide an audit trail of management activities across an organization's endpoints and servers.
This document discusses event driven architecture and event processing. It defines key terms like events, event types, event processing styles, and event flows. Events are notable things that happen and can signify problems, opportunities, or deviations. Event types include ordinary and notable events. Event processing styles range from simple to complex event processing. The document outlines the common components of an event processing system including event generators, processors, channels, and reactions. It also discusses concepts like stateless and stateful event processing, event streams, and windows.
Server side process does react to business events. User actions, timers, other services may trigger states of change, which should be tracked and propagated. A classical implementation is to define a shared database or centralized message queue, locally or in the cloud. When applied to Microservices, this monolithic approach will quickly appear as a limitation.
In this session, we will introduce how Microservices could have their own dedicated persistence layer (i.e. database), and how real-time callbacks could be used to leverage real-time propagation of events, without any centralized message queue. Both ORM and SOA features of the Open Source mORMot framework will illustrate how to write such stand-alone services.
The document discusses testing system qualities when developing software. It introduces Rebecca Wirfs-Brock and Joseph Yoder, the authors, and their backgrounds. It then discusses some myths around system qualities testing. The rest of the document focuses on how to test various system qualities like performance, security, modifiability, and usability through the use of quality scenarios. It provides templates and examples for writing different types of quality scenarios.
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderJoseph Yoder
Agile teams incrementally deliver functionality based on user stories. In the sprint to deliver features, frequently software qualities such as security, scalability, performance, and reliability are overlooked. Often these characteristics cut across many user stories. Trying to deal with certain system qualities late in the game can be difficult, causing major refactoring and upheaval of the system’s architecture. This churn isn’t inevitable. Especially if you adopt a practice of identifying those characteristics key to your system’s success, writing quality scenarios and tests, and delivering on these capabilities at the opportune time. We will show how to write Quality Scenarios that emphasize architecture capabilities such as usability, security, performance, scalability, internationalization, availability, accessibility and the like. This will be hands-on; we present some examples and follow with an exercise that illustrates how you can look at a system, identify, and then write and test quality scenarios.
This talk will address new architectures emerging for large scale streaming analytics. Some based on Spark, Mesos, Akka, Cassandra and Kafka (SMACK) and other newer streaming analytics platforms and frameworks using Apache Flink or GearPump. Popular architecture like Lambda separate layers of computation and delivery and require many technologies which have overlapping functionality. Some of this results in duplicated code, untyped processes, or high operational overhead, let alone the cost (e.g. ETL).
I will discuss the problem domain and what is needed in terms of strategies, architecture and application design and code to begin leveraging simpler data flows. We will cover how the particular set of technologies addresses common requirements and how collaboratively they work together to enrich and reinforce each other.
Microservices, Kubernetes, and Application Modernization Done RightLightbend
In this talk by David Ogren, Enterprise Architect at Lightbend, we draw from experiences helping our clients successfully create, migrate to, and manage cloud-native system architectures. We look at some of the common pitfalls and anti-patterns of modernization efforts, and some of the best practices for taking an incremental approach to transforming legacy systems.
See the full post with video on the Lightbend blog: https://www.lightbend.com/blog/microservices-kubernetes-application-modernization
Reactive applications and Akka intro used in the Madrid Scala MeetupMiguel Pastor
This document provides an agenda and overview for a presentation on building reactive applications using Akka. The presentation introduces Akka concepts like actors, messaging, and clustering. It discusses how the actor model addresses issues with shared memory and locks by embracing asynchronous message passing. It also covers topics like remote actors, cluster membership, leader election, and supervision strategies for building resilient systems.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1M9hGVj.
Helena Edelson addresses new architectures emerging for large scale streaming analytics - based on Spark, Mesos, Akka, Cassandra and Kafka (SMACK) and other streaming analytics platforms and frameworks using Apache Flink or GearPump. Edelson discusses the problem domain and what is needed in terms of strategies, architecture and application design and code to begin leveraging simpler data flows. Filmed at qconsf.com.
Helena Edelson is a committer to the Spark Cassandra Connector and a contributor to Akka, adding new features in Akka Cluster such as the initial version of the cluster metrics API and AdaptiveLoadBalancingRouter.
This document discusses quality attributes that are important considerations for software architects. It defines key attributes like availability, modifiability, performance, security, and testability. It presents these attributes as general scenarios to help stakeholders communicate and understand them. The document also covers business qualities and architectural qualities that influence design decisions.
This document discusses publish/subscribe systems and top-k publish/subscribe systems. It provides background on publish/subscribe communication paradigms and taxonomies. It then discusses requirements for top-k publish/subscribe systems to limit the number of matching publications delivered to k best within a time window. Several research papers on distributed top-k publish/subscribe systems are summarized, including their approaches to ranking publications, computing top-k over sliding windows, and delivering top-k results.
Intellias CQRS Framework - is a cutting-edge cloud-native framework for massive-scale event-driven microservice solutions.
CQRS Framework designed as a part of IntelliGrowth cloud platform for managing mission-critical business processes by a team of Top CoE architects and engineers.
Zero-downtime deployment on Kubernetes with HazelcastNicolas Fränkel
Kubernetes allows a lot. After discovering its features, it’s easy to think it can magically transform your application deployment process into a painless no-event. For Hello World applications, that is the case. Unfortunately, not many of us do deploy such applications day-to-day because we need to handle state. Though it would be much easier to have stateless apps, and despite our best efforts in this direction, state is found in (at least) two places: sessions and databases.
You need to think keeping the state while stopping and starting application nodes. In this talk, I’ll demo how to update a Spring Boot app deployed on a Kubernetes cluster with a non-trivial database schema change with the help of Hazelcast, while keeping the service up during the entire update process.
Making sense of messy problems - Systems thinking for interaction designersjohanna kollmann
This document discusses systems thinking and its application to interaction design. It begins with an introduction to systems thinking and then covers three main topics: 1) modeling systems using tools like rich pictures and conceptual models, 2) understanding system behavior over time through graphs and cohort analysis, and 3) identifying leverage points for changing systems. The document provides examples and illustrations for each topic to demonstrate how systems thinking can help interaction designers make sense of complex, real-world problems.
1) The document discusses how event-driven systems are reshaping modern architectures. It argues that modeling systems around publishing and reacting to events can help increase autonomy, loose coupling, scalability and other advantages.
2) Events represent immutable facts that accumulate over time and allow systems to manage uncertainty through eventual consistency. Well-designed events can help systems balance determinism and availability.
3) Event sourcing is presented as a cure for the "cardinal sin" of in-place updates, since it models the database as a cache of events from an immutable log. This allows for replay, auditing and other benefits like managing time within systems.
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Drona Infotech is a premier mobile app development company in Noida, providing cutting-edge solutions for businesses.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
More Related Content
Similar to Evolution in Event Sourced Systems - JFall 2021
The document summarizes the development of a hydroperiod tool to estimate floodplain inundation for restoration of the Kissimmee River floodplain. The tool uses monitoring data, digital elevation models, and ArcGIS interpolation to estimate inundation depths, durations, and extents. It allows scientists to evaluate whether restoration is meeting hydrological goals and identify suitable habitat sampling sites. The tool provides a low-cost alternative to complex hydrology models and helps restoration efforts by quickly assessing hydroperiod restoration, which is fundamental to restoring habitats.
An event-driven architecture consists of event producers that generate event streams and event consumers that listen for events. It allows for loose coupling between components and asynchronous event handling. Key aspects include publish/subscribe messaging patterns, event processing by middleware, and real-time or near real-time information flow. Benefits include scalability, loose coupling, fault tolerance, and the ability to add new consumers easily. Challenges include guaranteed delivery, processing events in order or exactly once across multiple consumer instances. Common tools used include Apache Kafka, Apache ActiveMQ, Redis, and Apache Pulsar.
Cassandra Summit 2014: Turkcell Curio, Real-Time Targeted Mobile Marketing Pl...DataStax Academy
Presenter: Ülker Ciftci, Senior Expert Architect at Turkcell
In this session, hear how a leading telecom operator integrates complementary and powerful real-time big data processing technologies such as Apache Kafka, Apache Storm and Datastax Cassandra to build a distributed, fast, fault tolerant and highly scalable mobile marketing platform. Telecom operators as mobile app marketers can better target and offer individualized personalization by collecting customer behavior data and segmenting customers according to behavior. Currently there are 50 mobile applications in Turkcell's Mobile App. Store, and for now, these applications get almost 100 million hits per day. As more mobile applications and more users become involved in the Turkcell Curio, the data set coming from customer behaviours is growing each day. The main challenge facing mobile marketers is the difficulty of real time big data processing which requires low latency, high availability and high scalability. The second requirement, processing a user's action in an "exactly once semantics" for the sake of reliability, is making the challenge even bigger. Turkcell Curio, its name inspired from Mars Rover named Curiosity, is developed within Turkcell to solve these challenges. Curio is now in production, giving Turkcell's Mobile Marketers precious real-time statistics, reports and even chance to interact the online customers via another platform, Turkcell's Push Notifications Platform.
This document discusses event driven architectures. It defines an event driven architecture as a framework that orchestrates behavior in response to events. It distinguishes between messages, which request actions, and events, which reflect completed actions. An example is provided of an order processing workflow with and without an event driven architecture. Key advantages of event driven architectures are also outlined, including improved scalability, fault tolerance, and the ability to more easily develop and release new features. Implementation options for event driven architectures like Amazon Kinesis, Azure Event Hubs, and Apache Kafka are also briefly mentioned.
Zentral is an open source tool that aggregates system logs, events, and inventory data from various sources like osquery, Santa, Munki, Jamf Pro, and ELK. It allows filtering and custom actions on events. The demo shows how Zentral can connect Jamf Pro and osquery to detect configuration changes, trigger remediation, and provide an audit trail of management activities across an organization's endpoints and servers.
This document discusses event driven architecture and event processing. It defines key terms like events, event types, event processing styles, and event flows. Events are notable things that happen and can signify problems, opportunities, or deviations. Event types include ordinary and notable events. Event processing styles range from simple to complex event processing. The document outlines the common components of an event processing system including event generators, processors, channels, and reactions. It also discusses concepts like stateless and stateful event processing, event streams, and windows.
Server side process does react to business events. User actions, timers, other services may trigger states of change, which should be tracked and propagated. A classical implementation is to define a shared database or centralized message queue, locally or in the cloud. When applied to Microservices, this monolithic approach will quickly appear as a limitation.
In this session, we will introduce how Microservices could have their own dedicated persistence layer (i.e. database), and how real-time callbacks could be used to leverage real-time propagation of events, without any centralized message queue. Both ORM and SOA features of the Open Source mORMot framework will illustrate how to write such stand-alone services.
The document discusses testing system qualities when developing software. It introduces Rebecca Wirfs-Brock and Joseph Yoder, the authors, and their backgrounds. It then discusses some myths around system qualities testing. The rest of the document focuses on how to test various system qualities like performance, security, modifiability, and usability through the use of quality scenarios. It provides templates and examples for writing different types of quality scenarios.
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderJoseph Yoder
Agile teams incrementally deliver functionality based on user stories. In the sprint to deliver features, frequently software qualities such as security, scalability, performance, and reliability are overlooked. Often these characteristics cut across many user stories. Trying to deal with certain system qualities late in the game can be difficult, causing major refactoring and upheaval of the system’s architecture. This churn isn’t inevitable. Especially if you adopt a practice of identifying those characteristics key to your system’s success, writing quality scenarios and tests, and delivering on these capabilities at the opportune time. We will show how to write Quality Scenarios that emphasize architecture capabilities such as usability, security, performance, scalability, internationalization, availability, accessibility and the like. This will be hands-on; we present some examples and follow with an exercise that illustrates how you can look at a system, identify, and then write and test quality scenarios.
This talk will address new architectures emerging for large scale streaming analytics. Some based on Spark, Mesos, Akka, Cassandra and Kafka (SMACK) and other newer streaming analytics platforms and frameworks using Apache Flink or GearPump. Popular architecture like Lambda separate layers of computation and delivery and require many technologies which have overlapping functionality. Some of this results in duplicated code, untyped processes, or high operational overhead, let alone the cost (e.g. ETL).
I will discuss the problem domain and what is needed in terms of strategies, architecture and application design and code to begin leveraging simpler data flows. We will cover how the particular set of technologies addresses common requirements and how collaboratively they work together to enrich and reinforce each other.
Microservices, Kubernetes, and Application Modernization Done RightLightbend
In this talk by David Ogren, Enterprise Architect at Lightbend, we draw from experiences helping our clients successfully create, migrate to, and manage cloud-native system architectures. We look at some of the common pitfalls and anti-patterns of modernization efforts, and some of the best practices for taking an incremental approach to transforming legacy systems.
See the full post with video on the Lightbend blog: https://www.lightbend.com/blog/microservices-kubernetes-application-modernization
Reactive applications and Akka intro used in the Madrid Scala MeetupMiguel Pastor
This document provides an agenda and overview for a presentation on building reactive applications using Akka. The presentation introduces Akka concepts like actors, messaging, and clustering. It discusses how the actor model addresses issues with shared memory and locks by embracing asynchronous message passing. It also covers topics like remote actors, cluster membership, leader election, and supervision strategies for building resilient systems.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1M9hGVj.
Helena Edelson addresses new architectures emerging for large scale streaming analytics - based on Spark, Mesos, Akka, Cassandra and Kafka (SMACK) and other streaming analytics platforms and frameworks using Apache Flink or GearPump. Edelson discusses the problem domain and what is needed in terms of strategies, architecture and application design and code to begin leveraging simpler data flows. Filmed at qconsf.com.
Helena Edelson is a committer to the Spark Cassandra Connector and a contributor to Akka, adding new features in Akka Cluster such as the initial version of the cluster metrics API and AdaptiveLoadBalancingRouter.
This document discusses quality attributes that are important considerations for software architects. It defines key attributes like availability, modifiability, performance, security, and testability. It presents these attributes as general scenarios to help stakeholders communicate and understand them. The document also covers business qualities and architectural qualities that influence design decisions.
This document discusses publish/subscribe systems and top-k publish/subscribe systems. It provides background on publish/subscribe communication paradigms and taxonomies. It then discusses requirements for top-k publish/subscribe systems to limit the number of matching publications delivered to k best within a time window. Several research papers on distributed top-k publish/subscribe systems are summarized, including their approaches to ranking publications, computing top-k over sliding windows, and delivering top-k results.
Intellias CQRS Framework - is a cutting-edge cloud-native framework for massive-scale event-driven microservice solutions.
CQRS Framework designed as a part of IntelliGrowth cloud platform for managing mission-critical business processes by a team of Top CoE architects and engineers.
Zero-downtime deployment on Kubernetes with HazelcastNicolas Fränkel
Kubernetes allows a lot. After discovering its features, it’s easy to think it can magically transform your application deployment process into a painless no-event. For Hello World applications, that is the case. Unfortunately, not many of us do deploy such applications day-to-day because we need to handle state. Though it would be much easier to have stateless apps, and despite our best efforts in this direction, state is found in (at least) two places: sessions and databases.
You need to think keeping the state while stopping and starting application nodes. In this talk, I’ll demo how to update a Spring Boot app deployed on a Kubernetes cluster with a non-trivial database schema change with the help of Hazelcast, while keeping the service up during the entire update process.
Making sense of messy problems - Systems thinking for interaction designersjohanna kollmann
This document discusses systems thinking and its application to interaction design. It begins with an introduction to systems thinking and then covers three main topics: 1) modeling systems using tools like rich pictures and conceptual models, 2) understanding system behavior over time through graphs and cohort analysis, and 3) identifying leverage points for changing systems. The document provides examples and illustrations for each topic to demonstrate how systems thinking can help interaction designers make sense of complex, real-world problems.
1) The document discusses how event-driven systems are reshaping modern architectures. It argues that modeling systems around publishing and reacting to events can help increase autonomy, loose coupling, scalability and other advantages.
2) Events represent immutable facts that accumulate over time and allow systems to manage uncertainty through eventual consistency. Well-designed events can help systems balance determinism and availability.
3) Event sourcing is presented as a cure for the "cardinal sin" of in-place updates, since it models the database as a cache of events from an immutable log. This allows for replay, auditing and other benefits like managing time within systems.
Similar to Evolution in Event Sourced Systems - JFall 2021 (20)
How Can Hiring A Mobile App Development Company Help Your Business Grow?ToXSL Technologies
ToXSL Technologies is an award-winning Mobile App Development Company in Dubai that helps businesses reshape their digital possibilities with custom app services. As a top app development company in Dubai, we offer highly engaging iOS & Android app solutions. https://rb.gy/necdnt
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Drona Infotech is a premier mobile app development company in Noida, providing cutting-edge solutions for businesses.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Liberarsi dai framework con i Web Component.pptxMassimo Artizzu
In Italian
Presentazione sulle feature e l'utilizzo dei Web Component nell sviluppo di pagine e applicazioni web. Racconto delle ragioni storiche dell'avvento dei Web Component. Evidenziazione dei vantaggi e delle sfide poste, indicazione delle best practices, con particolare accento sulla possibilità di usare web component per facilitare la migrazione delle proprie applicazioni verso nuovi stack tecnologici.
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfVALiNTRY360
Salesforce Healthcare CRM, implemented by VALiNTRY360, revolutionizes patient management by enhancing patient engagement, streamlining administrative processes, and improving care coordination. Its advanced analytics, robust security, and seamless integration with telehealth services ensure that healthcare providers can deliver personalized, efficient, and secure patient care. By automating routine tasks and providing actionable insights, Salesforce Healthcare CRM enables healthcare providers to focus on delivering high-quality care, leading to better patient outcomes and higher satisfaction. VALiNTRY360's expertise ensures a tailored solution that meets the unique needs of any healthcare practice, from small clinics to large hospital systems.
For more info visit us https://valintry360.com/solutions/health-life-sciences
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
UI5con 2024 - Bring Your Own Design SystemPeter Muessig
How do you combine the OpenUI5/SAPUI5 programming model with a design system that makes its controls available as Web Components? Since OpenUI5/SAPUI5 1.120, the framework supports the integration of any Web Components. This makes it possible, for example, to natively embed own Web Components of your design system which are created with Stencil. The integration embeds the Web Components in a way that they can be used naturally in XMLViews, like with standard UI5 controls, and can be bound with data binding. Learn how you can also make use of the Web Components base class in OpenUI5/SAPUI5 to also integrate your Web Components and get inspired by the solution to generate a custom UI5 library providing the Web Components control wrappers for the native ones.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Project Management: The Role of Project Dashboards.pdfKarya Keeper
Project management is a crucial aspect of any organization, ensuring that projects are completed efficiently and effectively. One of the key tools used in project management is the project dashboard, which provides a comprehensive view of project progress and performance. In this article, we will explore the role of project dashboards in project management, highlighting their key features and benefits.
14 th Edition of International conference on computer visionShulagnaSarkar2
About the event
14th Edition of International conference on computer vision
Computer conferences organized by ScienceFather group. ScienceFather takes the privilege to invite speakers participants students delegates and exhibitors from across the globe to its International Conference on computer conferences to be held in the Various Beautiful cites of the world. computer conferences are a discussion of common Inventions-related issues and additionally trade information share proof thoughts and insight into advanced developments in the science inventions service system. New technology may create many materials and devices with a vast range of applications such as in Science medicine electronics biomaterials energy production and consumer products.
Nomination are Open!! Don't Miss it
Visit: computer.scifat.com
Award Nomination: https://x-i.me/ishnom
Conference Submission: https://x-i.me/anicon
For Enquiry: Computer@scifat.com
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
Preparing Non - Technical Founders for Engaging a Tech AgencyISH Technologies
Preparing non-technical founders before engaging a tech agency is crucial for the success of their projects. It starts with clearly defining their vision and goals, conducting thorough market research, and gaining a basic understanding of relevant technologies. Setting realistic expectations and preparing a detailed project brief are essential steps. Founders should select a tech agency with a proven track record and establish clear communication channels. Additionally, addressing legal and contractual considerations and planning for post-launch support are vital to ensure a smooth and successful collaboration. This preparation empowers non-technical founders to effectively communicate their needs and work seamlessly with their chosen tech agency.Visit our site to get more details about this. Contact us today www.ishtechnologies.com.au
2. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
State of the universe
• age: 7.252.754.400.000.000.000 minutes
• width: 554.000.000.000 lightyears
• stars:
10.000.000.000.000.000.000.000.000
• birthRate: 190.000 stars / minute
Photo by Guillermo Ferla on Unsplash
3. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
State of the universe
• age: 7.252.754.400.000.000.001 minutes
• width: 554.000.000.006 lightyears
• stars:
10.000.000.000.000.000.000.000.000
• birthRate: 190.000 stars / minute
• deathRate: 190.000 stars / minute
Photo by Guillermo Ferla on Unsplash
4. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
What just happened?
Photo by Guillermo Ferla on Unsplash
state
t[0]
state
t[1]
time passes
5. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
What just happened?
Photo by Guillermo Ferla on Unsplash
state
t[0]
state
t[1]
time passes
6. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Image credit: Particle Data Group at Lawrence Berkeley National
[910] StarBirthEvent
...
[867] PlanetLostLifeEvent
...
[1] ParticleFormedEvent
[0] BigBangEvent
...
[593] PlanetSparkedLifeEvent
[911] PlanetSparkedLifeEvent
...
[???] JFall2021Event
7. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Traditional State Sourcing (CRUD)
• Stores current state of system
• Constant read-time complexity
• Impossible to determine reason for change
• Impossible to analyze origin of data
Event Sourcing
• Stores changes / events
• Increasing read-time complexity
• All intents of changes visible
• Analysis of data origin
8. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Traditional State Sourcing (CRUD) Event Sourcing
Shopping Cart
1 copy of Domain-Driven Design by Eric Evans
Added Domain-Driven Design by Eric Evans
Added Implementing Domain-Driven Design
by Vaughn Vernon
Added Domain-Driven Design Distilled by
Vaughn Vernon
Removed Domain-Driven Design Distilled by
Vaughn Vernon
Removed Implementing Domain-Driven
Design by Vaughn Vernon
9. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Typical Architecture
• User interacts with Command Handler (CH)
• CH validates state and emits Event
• Event stored in Event Stream
• Event is read by Event Processor
• Event Processor updates Read Model
• User reads from Read Model
CQRS
10. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Common Terms in Event Sourcing
Aggregate Set of entities that share consistency rules. Emits events to
indicate changes. Is rebuilt from its stored events.
Event Unit of change in an Aggregate. Consists of a type/name,
timestamp, payload, metadata and associated Aggregate.
Command Expresses and intent to performa a change within an Aggregate.
Cause Aggregate reconstruction, validation and event emission.
11. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
The Event Stream
• The Event Stream maintains all history
– Aggregates contain subplots
• Practically Immutable
– Time Travel wreaks havoc
• You should never change past events
– But, what if … ?
Image credit: Particle Data Group at Lawrence Berkeley National
12. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Types of changes
• Read Model Changes
– New Structure
– Derived Data
• Event-based Changes
– New Data
– Renaming Fields
– Filtering Events
– Splitting Events
– Corrective Events
• Drastic Changes
– Editing Events
– Migrating Event Streams
13. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Changing a Read Model
• Read Model Changes are "easy"
– Delete & Start over
– Build & Switch
– Corrective Processor
• When ?
– A bug in a projection
– Adding derived data (scale conversion)
– Changes in Read API
14. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Rebuilding a Read Model
• Stop Event Processor
• Delete the Read Model
• Delete the state of Event Processor
• Restart Event Processor
• ... wait for it
• ... wait for it
• Profit!
15. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Build & Switch
• Build a second Event Processor
• Add second Read Model database
• Start the Event Processor
• Both projections are kept up to date
• Seamless jump from old to new
• Old is a backup-plan
• When?
– Structural Changes in Read Model
16. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Corrective Processor
• Fix the original Event Processor
• Build a second Event Processor
• Target the existing Read Model
• Start the second Event Processor
• Projection is corrected while online
• When?
– Adding data
– Fixing Projection Bugs
17. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Designing Events for Evolution
• Events live forever!
• Careful design pays off
• Start small, capture change in new events
• Event Hierarchies are a big help
A useful system must evolve continually, or it
becomes less useful over time
- Meir Lehman
18. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Event Hierarchies
• Allow grouping of events
• Allows for easy “fixing events”
• Allows for adding similar events easily
interface UserDetailsEvent {}
class AppliedUnicodePatchJIRA123Event
implements UserDetailsEvent {}
@EventHandler
public void onUserEvent(UserEvent event) {
...
}
19. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Changing Events
• Events in storage never change
• Axon offers Upcasters
– Modify event during Aggregate Loading
– Chained together
– Driven by Event Revisions
@Revision("1.0")
class User {
String userId;
}
20. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Adding Data to Events
• Natural progression of application
• SingleEventUpcaster
• Provide default values
• Mind the order of upcasters!
@Revision("1.0")
class User {
String userId;
}
@Revision("2.0")
class User {
String userId;
String name;
}
21. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
How do upcasters work?
• Axon loads events into
IntermediateEventRepresentation
• Upcasters are asked to do their thing
• Final intermediate representation is then
deserialised
document -> {
document.getRootElement()
.addElement("name")
.setText("Not entered");
return document;
}
22. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Renaming fields
• Typically fixing typo's or refactorings
document -> {
document.getRootElement()
.selectSingleNode("name")
.setName("username");
return document;
}
23. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Renaming Events
• Event name should reflect Domain action
• Can be conditional
• Use EventTypeUpcaster
24. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Filtering Events
• Effectively "deletes" events from a stream
• Useful for reducing clutter in Aggregates
– After "moving" behaviour away
• Impractical for corrections
25. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Splitting Events
• Allows to reduce the scope of an Event
• Free to split into any number of Events
• Can help reduce Event Handler size
• Uses SingleEntryMultiUpcaster
• Returns a Stream of new events
class UserDetailsUpdatedEvent {
String newName;
String newAddress;
String newPhone;
String newEmail;
String newSelfie;
}
26. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Corrective Events
• Indicate a manually corrected situation
• A bug caused Email Addresses to be null
• Extend an existing Event
• Make the name recognizable as a correction
• May need a temporary Command
• Temporary means Temporary!
class UserEmailCorrectedByJIRA1234Event
extends UserEmailUpdatedEvent {
String newEmail;
}
28. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Editing Events
• Last resort, consider upcasting / filtering
• Regulations
– GDPR
– Secrets
• Shut down the application
• Backup the database
• Edit the database
• Restart the application
29. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Migrating Event Streams
• When applications change drastically
• Chance to consolidate Events / Aggregates
• Restructure Events
• Practically building your 2.0
• It will take time
– System 2.0 can run in "shadow mode"
• Useful when upcasters have stacked
• Useful for splitting applications
• Useful for merging applications
30. Jan-Hendrik Kuperus Evolution in Event Sourced Systems
Summary
• Event Streams are immutable
– But reality changes constantly
• Read Models are easy to change
• Upcasters can modify Event-representations
• Corrective Events show mea culpa
• Database editing as last resort
• Event Stream migration for next version
I’m curious: who here is actually working on an Event Sourced System? Who is thinking about introducing Event Sourcing? Who is using Axon Framework?
Target: 50 minutes
We just witnessed the limitation of classic CRUD state storage: the state can't tell you how it came to be.
Next slide shows example of analysis on data origin: the doubting shopper
A more concrete example shows the richness of Event Sourced data. First, the only thing you will see when using CRUD: an order for 1 book. How do you make recommendations based on this? You cannot see into the buyer's behaviour, so you can only guess.
On the other hand, when using Event Sourcing, you get the same result: an order for just 1 book. There is however data on what other books the buyer was looking at. You could use this to create a more targeted recommendation. Maybe one of the other books is on sale, you can then notify this user.
A typical architecture for Event Sourced systems uses the CQRS (Command/Query Responsibility Segregation) pattern. While technically possible, it is not recommended to use the Event Stream as a read model. This is due to the fact that state has to be rebuild before answering a query on the command handler side. Whereas the read model’s sole purpose is to handle read operations as quickly as possible.
A typical architecture for Event Sourced systems uses the CQRS (Command/Query Responsibility Segregation) pattern. While technically possible, it is not recommended to use the Event Stream as a read model. This is due to the fact that state has to be rebuild before answering a query on the command handler side. Whereas the read model’s sole purpose is to handle read operations as quickly as possible.
Lehman's law states: any useful application either undergoes continuing change, or gradually becomes less useful
What if : regulations require new data? we made a typo? a bug corrupted data?
Rebuilding a read model is an easy way to make changes to an application. You can also use it as a prototyping method. By creating a second projection, you can keep the current application running while you are developing your new application.
An example of this is the rising need for timestamps from the last change of an entity. You can update the normal processor, but it will only add the timestamp to any entity touched from the moment of the fix. You will need a way to update the timestamps for the other, untouched entities as well.
Before we get into how to change Events, I would like to emphasize that changing events should never be done lightly. It is important to remember that events will live forever. That means you as the developer will also have to maintain those events forever, in every part of your system. (Aggregates / Projects / etc...)
Don't over-engineer events to cover things you may need in the future. It's better to create many smaller events opposed to large events containing all possible meaning in your system.
But as much as we want to try and prevent having to go back and make changes, we will have to be prepared for situations where we are left no other choice.
Let's get into the part where we are changing things for real.
Let's get into the part where we are changing things for real.
Remember the data in the event store is not changed. We are only changing the runtime representation in memory.
It's questionable whether these changes would be worth introducing an upcaster. At least it is possible.
Renaming an event might be more useful.
You should not use these perform corrections on Aggregate state. Corrections are better kept explicit and I'll show you how in just a moment.
Take this example of an Event that contains all updated fields of a User. Imagine this class having another 25 fields. Maybe it seemed like a good idea somewhere in the past. But if the system now wants to respond to address changes, it makes sense to have a separate UserAddressUpdatedEvent. Using a SingleEntryMultiUpcaster, you can split this event in this way and allow old events to still be loaded in an Aggregate that now has handlers for two smaller events.
Corrective events may in some situations also be created by a splitting Upcaster. That does however require the data needed for the correction is already in the original event. This does raise the question whether this is useful. But maybe a dependent Event Processor needs it.