How to write your database: the story about Event StoreVictor Haydin
This story is about distributed open-source database called Event Store (http://geteventstore.com). Event Store is developed by distributed team, part of which are ELEKS employees. I am going to talk about Event Store purpose and how it works, share some lessons we learned during the development and how it feels when you develop distributed high-performance system of that complexity. The talk will be interesting for technical people: software architects and engineers in general and .NET developers in particular as Event Store is written in C#.
In Onebip we developed a reporting system based on CQRS (Command Query Responsibility Segregation) and Event Sourcing using MongoDB.
In this talk I will introduce CQRS and Event Sourcing concepts, I will talk about our path and technical and conceptual challenges we faced, the strenght of our solution and the parts where there's room for improvement.
Presentation slides from sessions discussing Event Source data storage and read-model projections.
Source code from demos at: https://bitbucket.org/csharpfritz/nerddinner-cqrs
"Implementing an Event Sourcing strategy on Azure", Olena Borzenko/Eldert Gro...Fwdays
In recent years the Event Sourcing pattern has become increasingly popular. By storing a history of events it enables us to decouple the storage of data from the implementation of the logic around it. And we can rebuild the state of our data to any point in time, giving us a wide range of opportunities around auditing and compensation.
In this demo-heavy session you will learn how we can use Azure Event Hubs to process and store these events to build our own event store based on Cosmos DB. Moreover, we will also dive into options around connecting to other Azure services and even Kafka applications to easily implement this popular pattern in our own solutions.
#JaxLondon: Building microservices with Scala, functional domain models and S...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.
MongoDB .local Bengaluru 2019: Realm: The Secret Sauce for Better Mobile AppsMongoDB
Realm Database is the fast, easy to use, and open source alternative to SQLite and Core Data that is popular with hundreds of thousands of developers. Learn what makes it special and how it can be used to build better apps, faster.
How to write your database: the story about Event StoreVictor Haydin
This story is about distributed open-source database called Event Store (http://geteventstore.com). Event Store is developed by distributed team, part of which are ELEKS employees. I am going to talk about Event Store purpose and how it works, share some lessons we learned during the development and how it feels when you develop distributed high-performance system of that complexity. The talk will be interesting for technical people: software architects and engineers in general and .NET developers in particular as Event Store is written in C#.
In Onebip we developed a reporting system based on CQRS (Command Query Responsibility Segregation) and Event Sourcing using MongoDB.
In this talk I will introduce CQRS and Event Sourcing concepts, I will talk about our path and technical and conceptual challenges we faced, the strenght of our solution and the parts where there's room for improvement.
Presentation slides from sessions discussing Event Source data storage and read-model projections.
Source code from demos at: https://bitbucket.org/csharpfritz/nerddinner-cqrs
"Implementing an Event Sourcing strategy on Azure", Olena Borzenko/Eldert Gro...Fwdays
In recent years the Event Sourcing pattern has become increasingly popular. By storing a history of events it enables us to decouple the storage of data from the implementation of the logic around it. And we can rebuild the state of our data to any point in time, giving us a wide range of opportunities around auditing and compensation.
In this demo-heavy session you will learn how we can use Azure Event Hubs to process and store these events to build our own event store based on Cosmos DB. Moreover, we will also dive into options around connecting to other Azure services and even Kafka applications to easily implement this popular pattern in our own solutions.
#JaxLondon: Building microservices with Scala, functional domain models and S...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.
MongoDB .local Bengaluru 2019: Realm: The Secret Sauce for Better Mobile AppsMongoDB
Realm Database is the fast, easy to use, and open source alternative to SQLite and Core Data that is popular with hundreds of thousands of developers. Learn what makes it special and how it can be used to build better apps, faster.
Using event sourcing (backed by Azure table storage) as a persistence mechanism to store durable state for azure functions and using Event Grid to communicate between them
CQRS and Event Sourcing are popular architectural patterns that allow you to build effective event-driven micro-services.
The basic idea of these patterns is to record each event that changes the state of the domain model into the event-storage.
This approach allows you to reduce service latency for any data scale, as well as be able to restore the system without losing any data.
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.
Amazon DynamoDB is a fully managed NoSQL database service for applications that need consistent, single-digit millisecond latency at any scale. This talk explores DynamoDB capabilities and benefits in detail and discusses how to get the most out of your DynamoDB database. We go over schema design best practices with DynamoDB across multiple use cases, including gaming, AdTech, IoT, and others. We also explore designing efficient indexes, scanning, and querying, and go into detail on a number of recently released features, including JSON document support, Streams, and more.
CQRS and Event Sourcing are popular architectural patterns that allow you to build effective event-driven micro-services.
The basic idea of these patterns is to record each event that changes the state of the domain model into the event-storage.
This approach allows you to reduce service latency for any data scale, as well as be able to restore the system without losing any data.
AWS re:Invent 2016: Born in the Cloud; Built Like a Startup (ARC205)Amazon Web Services
This presentation provides a comparison of three modern architecture patterns that startups are building their business around. It includes a realistic analysis of cost, team management, and security implications of each approach. It covers Elastic Beanstalk, Amazon ECS, Docker, Amazon API Gateway, AWS Lambda, Amazon DynamoDB, and Amazon CloudFront, as well as Docker.
AWS December 2015 Webinar Series - Strategies to Quantify TCO & Optimize Cost...Amazon Web Services
AWS allows customers to save money and optimize costs in multiple ways. By adopting AWS, organizations can reduce capital expenses and shift to an operating model, improve business performance and drive savings over time. Organizations that adopt AWS have the tools to move from forecast-based capacity planning to an on-demand model with no termination fees or complex agreements. By moving to AWS, customers can reduce total cost of ownership (TCO) and continue to see increased savings over time. In addition to reducing TCO, AWS empowers customers to optimize costs by providing them tools and partner solutions that help them identify what they are consuming and the right size of the services that their business needs. They will use the services only when they are necessary for production. These solutions allow customers to pay not only for what they need but also only pay for the right capacity and time of consumption, reducing idle time and unnecessary sunk costs.
In this webinar, you will learn strategies directly from AWS Product Manager and understand how a customer (FINRA) used Splunk to develop a cost optimization model that helps to drive value and continued lower costs.
Learning Objectives:
Dive deeper into the economics of the cloud and understand how AWS can positively impact your organization
Learn how a customer gained real-time visibility into instance cost and usage to reduce spending
Who Should Attend:
IT managers, Sr. IT professionals, business decision makers, procurement managers, developers, sys admins, operations
Building and deploying microservices with event sourcing, CQRS and Docker (QC...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.
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T JackettBrian T. Jackett
Code samples: https://github.com/BrianTJackett/Presentations/tree/master/DogFoodCon2018
Dipping Your Toe into Cloud Development with Azure Functions. Presented at DogFoodCon 2018 by Brian T. Jackett.
CTE Ottawa Seminar Day - September 7th, 2012
This clinic introduces the key features and enhancements in SQL Server 2012. It is designed to provide a high-level overview of the product and the key new capabilities in this release.
This course is intended for technology managers and database professionals who want to understand the key capabilities of SQL Server 2012. In many cases, it is assumed that senior technical managers may attend this clinic in order to assess the further training that their technology-focused employees will need in order to adopt SQL Server 2012.
It's rare that you get a chance to build an applicaton the way you want to, from the ground up. If you did, what architectural choices would you make and why? Command Query Responsibility Segregation (CQRS) is a hot topic and has been described as crack for architecture addicts. This talk will look at why CQRS may be a good architectural choice for your project, how to use the NCQRS framework, and how this framework can be incorporated with ASP.NET MVC on the front-end and Azure on the back-end. This talk will also focus on the learning curve experienced when implementing an architectural style that bends the curve and is out of the mainstream of traditional application development.
Geek Sync I Learn to Troubleshoot Query Performance in Analysis ServicesIDERA Software
You can watch the replay for this Geek Sync webcast in the IDERA Resource Center: http://ow.ly/DJWn50A5odn
In this webinar Stan Geiger walks you through how to find and troubleshoot query performance in Analysis Services.
We often use Analysis Services because we "should" get better query performance than if we were querying data from our relational data sources. Analysis Services is very fast whether using cubes or tabular with simple queries requiring no tuning.
However, complex queries or aggregation queries will often require tuning to make them perform efficiently. This presentation will walk you through how Analysis Services processes queries and how to determine where performance improvements can be made. This will include determining where the bottleneck is and possible ways to resolve the issues.
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...confluent
In this talk we'll look at the relationship between three of the most disruptive software engineering paradigms: event sourcing, stream processing and serverless. We'll debunk some of the myths around event sourcing. We'll look at the inevitability of event-driven programming in the serverless space and we'll see how stream processing links these two concepts together with a single 'database for events'. As the story unfolds we'll dive into some use cases, examine the practicalities of each approach-particularly the stateful elements-and finally extrapolate how their future relationship is likely to unfold. Key takeaways include: The different flavors of event sourcing and where their value lies. The difference between stream processing at application- and infrastructure-levels. The relationship between stream processors and serverless functions. The practical limits of storing data in Kafka and stream processors like KSQL.
Using event sourcing (backed by Azure table storage) as a persistence mechanism to store durable state for azure functions and using Event Grid to communicate between them
CQRS and Event Sourcing are popular architectural patterns that allow you to build effective event-driven micro-services.
The basic idea of these patterns is to record each event that changes the state of the domain model into the event-storage.
This approach allows you to reduce service latency for any data scale, as well as be able to restore the system without losing any data.
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.
Amazon DynamoDB is a fully managed NoSQL database service for applications that need consistent, single-digit millisecond latency at any scale. This talk explores DynamoDB capabilities and benefits in detail and discusses how to get the most out of your DynamoDB database. We go over schema design best practices with DynamoDB across multiple use cases, including gaming, AdTech, IoT, and others. We also explore designing efficient indexes, scanning, and querying, and go into detail on a number of recently released features, including JSON document support, Streams, and more.
CQRS and Event Sourcing are popular architectural patterns that allow you to build effective event-driven micro-services.
The basic idea of these patterns is to record each event that changes the state of the domain model into the event-storage.
This approach allows you to reduce service latency for any data scale, as well as be able to restore the system without losing any data.
AWS re:Invent 2016: Born in the Cloud; Built Like a Startup (ARC205)Amazon Web Services
This presentation provides a comparison of three modern architecture patterns that startups are building their business around. It includes a realistic analysis of cost, team management, and security implications of each approach. It covers Elastic Beanstalk, Amazon ECS, Docker, Amazon API Gateway, AWS Lambda, Amazon DynamoDB, and Amazon CloudFront, as well as Docker.
AWS December 2015 Webinar Series - Strategies to Quantify TCO & Optimize Cost...Amazon Web Services
AWS allows customers to save money and optimize costs in multiple ways. By adopting AWS, organizations can reduce capital expenses and shift to an operating model, improve business performance and drive savings over time. Organizations that adopt AWS have the tools to move from forecast-based capacity planning to an on-demand model with no termination fees or complex agreements. By moving to AWS, customers can reduce total cost of ownership (TCO) and continue to see increased savings over time. In addition to reducing TCO, AWS empowers customers to optimize costs by providing them tools and partner solutions that help them identify what they are consuming and the right size of the services that their business needs. They will use the services only when they are necessary for production. These solutions allow customers to pay not only for what they need but also only pay for the right capacity and time of consumption, reducing idle time and unnecessary sunk costs.
In this webinar, you will learn strategies directly from AWS Product Manager and understand how a customer (FINRA) used Splunk to develop a cost optimization model that helps to drive value and continued lower costs.
Learning Objectives:
Dive deeper into the economics of the cloud and understand how AWS can positively impact your organization
Learn how a customer gained real-time visibility into instance cost and usage to reduce spending
Who Should Attend:
IT managers, Sr. IT professionals, business decision makers, procurement managers, developers, sys admins, operations
Building and deploying microservices with event sourcing, CQRS and Docker (QC...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.
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T JackettBrian T. Jackett
Code samples: https://github.com/BrianTJackett/Presentations/tree/master/DogFoodCon2018
Dipping Your Toe into Cloud Development with Azure Functions. Presented at DogFoodCon 2018 by Brian T. Jackett.
CTE Ottawa Seminar Day - September 7th, 2012
This clinic introduces the key features and enhancements in SQL Server 2012. It is designed to provide a high-level overview of the product and the key new capabilities in this release.
This course is intended for technology managers and database professionals who want to understand the key capabilities of SQL Server 2012. In many cases, it is assumed that senior technical managers may attend this clinic in order to assess the further training that their technology-focused employees will need in order to adopt SQL Server 2012.
It's rare that you get a chance to build an applicaton the way you want to, from the ground up. If you did, what architectural choices would you make and why? Command Query Responsibility Segregation (CQRS) is a hot topic and has been described as crack for architecture addicts. This talk will look at why CQRS may be a good architectural choice for your project, how to use the NCQRS framework, and how this framework can be incorporated with ASP.NET MVC on the front-end and Azure on the back-end. This talk will also focus on the learning curve experienced when implementing an architectural style that bends the curve and is out of the mainstream of traditional application development.
Geek Sync I Learn to Troubleshoot Query Performance in Analysis ServicesIDERA Software
You can watch the replay for this Geek Sync webcast in the IDERA Resource Center: http://ow.ly/DJWn50A5odn
In this webinar Stan Geiger walks you through how to find and troubleshoot query performance in Analysis Services.
We often use Analysis Services because we "should" get better query performance than if we were querying data from our relational data sources. Analysis Services is very fast whether using cubes or tabular with simple queries requiring no tuning.
However, complex queries or aggregation queries will often require tuning to make them perform efficiently. This presentation will walk you through how Analysis Services processes queries and how to determine where performance improvements can be made. This will include determining where the bottleneck is and possible ways to resolve the issues.
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...confluent
In this talk we'll look at the relationship between three of the most disruptive software engineering paradigms: event sourcing, stream processing and serverless. We'll debunk some of the myths around event sourcing. We'll look at the inevitability of event-driven programming in the serverless space and we'll see how stream processing links these two concepts together with a single 'database for events'. As the story unfolds we'll dive into some use cases, examine the practicalities of each approach-particularly the stateful elements-and finally extrapolate how their future relationship is likely to unfold. Key takeaways include: The different flavors of event sourcing and where their value lies. The difference between stream processing at application- and infrastructure-levels. The relationship between stream processors and serverless functions. The practical limits of storing data in Kafka and stream processors like KSQL.
Slides from our unconference-style first meeting on DDD in which we discussed what it was (and wasn't) and embarked on choosing a domain to use to do a soup-to-nuts process with which to learn all the techniques.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
2. Agenda
• Sources of cost
• Introduction to “event sourcing”
• Introduction to Azure storage and Azure Event Grid
• Overview of a proposed system architecture
• Lessons learned
14. Code and architecture recap
Event Grid function triggers
Query orchestration Command orchestration
Event streams and projections
Fan-out
Editor's Notes
Good morning and thank you very much.
My name is Duncan Jones and my twitter handle (probably the easiest way to contract me) is @Merrion
First I need to discuss where cost comes from, in the context of cloud computing.
Then briefly explain event sourcing because the solution I have put together makes extensive use of this (and I will explain why at the same time)
Then the environment in which this is to be hosted – using the Azure Event Grid, Durable Serverless functions and Azure storage.
Then I will walk through the way the architecture hangs together
Finally I’ll wrap up with lessons learned and Q&A
The system I am describing here is best suited to non critical or occasional/burst use scenarios rather than enterprise critical systems and is tuned toward minimising cost rather than maximised performance.
It is also an experiment rather than a definitive textbook example.
To manage expectations, what I am looking for is an equivalent to what Blogs did for micropublishing in applications.
There are two main sources of cost that we need to address with regard to cloud hosted systems:
The first is always-on systems, for example virtual machines, for which a cost arises regardless of use.
The second is overprovisioning, where we have to reserve more processing power than we are using so that we are able to ramp-up to match rapidly increasing demand.
Azure serverless functions address these two sources of cost “out of the box”
Event sourcing is a way of storing data, not as the current state of the entity (as in active state) but rather as a sequential history of all the events that have occurred to an entity.
This history is implemented as an append only event stream. It places the onus on getting “state” onto the system that is reading the data which has to run a projection over the event stream.
This is done by (and is the responsibility of) the process that needs that state, either to report it or to use it in a business decision.
This allows us to eliminate one of the “always on” fixed costs – the state consistency management system (or database to use the more common term).
For a more complicated system I would recommend using CosmsosDb – much to the relief of our sponsors, no doubt – and there is a talk coming up from Craig Nicol which will address the why and the how of that.
For smaller scale systems there are three other options. For the more read –biased application I would recommend either Azure Table storage or Azure Files – and for a write-biased system I would recommend the Azure AppendBlob storage. This matches very well the “event sourcing” architecture discussed earlier.
The demonstration system is for organising an amateur running organisation.
It is split into three domains – the league domain being anything to do with the overall organisation of leagues,
The race domain being to do with an individual race,
The runner domain being relating to the runner and their interaction with the organisation.
Importantly there is no privileged communication between the domains – the interface available to each other is the same interface publicly available outside.
A command is issued to the system through an event grid topic.
The parameters required to perform the command as well as any authorisation tokens and externally supplied unique identifier are supplied in the payload to this event grid topic.
When a message is received by the topic it triggers a serverless function to handle the command.
This uses the durable function framework to call activities that perform each step in turn and, if all is OK, appends 1 or more events to the event streams of the entities updated by the command.
As well as the built in durable function orchestration which is backed by a table the command has its own event stream in which the progress is logged.
A query is handled in a similar manner but in addition to the parameters you also pass in a return address to which the results of the query should be returned.
This could be, for instance, a webhook or an azure storage location to drop a file into.
This allows the query to be executed asynchronously.
The query runs projections over the event streams of the entities it is getting data for and then performs any aggregation needed over these before returning the results.
Domains communicate directly with each other by these commands and queries
Domains can also raise notifications that other domains or indeed other processes can subscribe to.
(These notifications are tagged with the “as of date” and “as of sequence number” information so that the subscriber can determine if it has already received this notification before.)
Because serverless computing is no less susceptible to the “sunk cost fallacy” it is worth investing time in design before getting started coding. It is a mistake to allow the rapid spin-up time of serverless functions as an excuse not to do some design work. I would recommend looking at things like event storming as a way to do this.
If you are dealing with a system that needs to be able to survive being spun down without the worry of data loss requires being rigorous about reading your won writes – i.e. making sure any state change is persisted before it is used.