{"id":15137196,"url":"https://github.com/bjastkuliar/ecst-violation","last_synced_at":"2026-01-20T10:33:24.736Z","repository":{"id":229670959,"uuid":"777266891","full_name":"Bjastkuliar/ecst-violation","owner":"Bjastkuliar","description":"Bachelor Thesis Repo. A simple ECST system with a dependecy violation and tracing system that can capture said infraction. Companion of my thesis","archived":false,"fork":false,"pushed_at":"2024-03-25T15:49:23.000Z","size":27,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T03:45:33.414Z","etag":null,"topics":["docker-compose","ecst","event-carried-state-transfer","event-driven","event-driven-architecture","event-driven-programming","jaegertracing","microservices","opentelemetry","pytest"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bjastkuliar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-25T14:26:36.000Z","updated_at":"2024-03-25T15:56:54.000Z","dependencies_parsed_at":"2024-03-25T18:58:05.033Z","dependency_job_id":"e9cc3fe3-680f-4653-842d-a0e1f08fd53c","html_url":"https://github.com/Bjastkuliar/ecst-violation","commit_stats":null,"previous_names":["bjastkuliar/ecst-violation"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bjastkuliar%2Fecst-violation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bjastkuliar%2Fecst-violation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bjastkuliar%2Fecst-violation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bjastkuliar%2Fecst-violation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bjastkuliar","download_url":"https://codeload.github.com/Bjastkuliar/ecst-violation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247430835,"owners_count":20937873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","ecst","event-carried-state-transfer","event-driven","event-driven-architecture","event-driven-programming","jaegertracing","microservices","opentelemetry","pytest"],"created_at":"2024-09-26T07:00:26.585Z","updated_at":"2026-01-20T10:33:24.730Z","avatar_url":"https://github.com/Bjastkuliar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Detecting Event Carried State Transfer Violations in an Event Driven Architecture\nIn order to reduce the verbosity of the [README](README.md) some abbreviations have been adopted.\n- **ECST** for *Event Carried State Transfer*\n- **EDA** for *Event Driven Architecture*\n\nThis repo is meant as a companion of the bachelor thesis (link TBA) of mine.\n## Repo Structure\nThe repo is composed of three branches:\n- [basic-system]() where a basic version of the application system is stored (without the telemetry capture)\n-  [main](https://github.com/Bjastkuliar/ecst-violation/tree/main) which holds a copy of the EDA with the instrumentation in place\n- [faulty-system](https://github.com/Bjastkuliar/ecst-violation/tree/faulty-system) which holds the same system with a violation of the ECST principles (dependecy anti-pattern) purposely implemented\n## How to run\nTo get the system running follow the steps listed below, beware that the application is built with [DockerComposeV2](https://docs.docker.com/compose/migrate/) (pytest may fail otherwise).\n### 1. Gather the necessary software\nThe system requires 3 programmes to be installed locally:\n- [Python](https://www.python.org/downloads/): the application uses [Flask](https://flask.palletsprojects.com/en/3.0.x/) for simulating the behaviour of a server on which each service is hosted.\n- [Docker Compose](https://docs.docker.com/compose/install/): the application makes use of the container technology for simulating the system. Additionally by utilising compose it is possible to start each service with the ports already configured.\n### 2.Get the application running\nBy executing the command `docker compose up --build` the application system will deploy automatically in its entirety (along with jaeger as telemetry capture service). \n### 3.Produce telemetry\nEither interact with the system (by either querying the `gateway` service or the single services themselves) or run `pytest` for some interactions to be simulated and recorded.\n### 4.Visualise interaction data\nAccess the frontend of the collection service by opening the web browser at the frontend port of [Jaeger](https://www.jaegertracing.io/docs/1.55/frontend-ui/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjastkuliar%2Fecst-violation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjastkuliar%2Fecst-violation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjastkuliar%2Fecst-violation/lists"}