-
Install git - https://git-scm.com/downloads.
-
Install .NET Core 2.2 - https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.2.108-windows-x64-installer.
-
Install Visual Studio (suggested 2017) or Rider.
-
Install docker - https://docs.docker.com/docker-for-windows/install/.
-
Make sure that you have ~10GB disk space.
-
Create Github Account
-
Clone Project https://github.com/oskardudycz/EventSourcing.NetCore, make sure that's compiling
-
Go to gitter channel https://gitter.im/oskardudycz/szkola-event-sourcing.
-
Check https://github.com/StackExchange/Dapper/, https://github.com/jbogard/MediatR, http://jasperfx.github.io/marten/documentation/
-
Open
Workshop.sln
solution. -
Docker useful commands
docker-compose up
- start dockersdocker-compose kill
- to stop running dockers.docker-compose down -v
- to clean stopped dockers.docker ps
- for showing running dockersdocker ps -a
- to show all dockers (also stopped)
-
For the first part of workshop please go to [./01-EventStoreBasics/docker.] and run:
docker-compose up
. -
Wait until all dockers got are downloaded and running.
-
You should automatically get:
- Postgres DB running
- PG Admin - IDE for postgres. Available at: http://localhost:5050.
- Login:
[email protected]
, Password:admin
- To connect to server Use host:
postgres
, user:postgres
, password:Password12!
- Login:
-
Before the second part run
docker-compose kill
kill running docker images. -
Then go to ./02-EventSourcingAdvanced/docker and run:
docker-compose up
. -
You should automatically get (besides
Postgres
andPGAdmin
):- Kafka
- Kafka ide for browsing topics. Available at: http://localhost:8000
- ElasticSearch
- Kibana for browsing ElasticSearch - http://localhost:5601
I prepared self-paced training Kit for the Event Sourcing. See more in the Workshop description.
It's splitted into two parts:
Event Sourcing basics - it teaches the event store basics by showing how to build your own Event Store on Relational Database. It starts with the tables setup, goes through appending events, aggregations, projectsions, snapshots and finishes with the Marten
basics. See more in here.
- Streams Table
- Events Table
- Appending Events
- Optimistic Concurrency Handling
- Event Store Methods
- Stream Aggregation
- Time Travelling
- Aggregate and Repositories
- Snapshots
- Projections
- Projections With Marten
Event Sourcing advanced topics - it's a real world sample of the microservices written in Event-Driven design. It explains the topics of modularity, eventual consistency. Shows practical usage of WebApi, Marten as Event Store, Kafka as Event bus and ElasticSearch as one of the read stores. See more in here.
- Meetings Management Module - module responsible for creating, updating meetings details. Written in
Marten
in Event Sourcing pattern. Provides both write model (with Event Sourced aggregates) and read model with projections. - Meetings Search Module - responsible for searching and advanced filtering. Uses
ElasticSearch
as a storage (because of it's advanced searching capabilities). It's a read module that's listening for the events published by Meetings Management Module.