-
Notifications
You must be signed in to change notification settings - Fork 4
General Architecture
Artemis is built on Elixir and Phoenix and uses an umbrella application architecture. The parent umbrella project contains the applications:
apps
|- artemis
|- artemis_api
|- artemis_log
|- artemis_pubsub
|- artemis_web
\- release_manager
Core business logic and data layer. This includes interactions with the database and data synchronization with external data sources like PagerDuty and ServiceNow.
Exposes generic Contexts
other applications can use to interact with data resources while abstracting database directly. A typical resource exposes generic contexts for common read/write actions:
ListCustomers
CreateCustomer
ShowCustomer
UpdateCustomer
DeleteCustomer
A simple application for publishing events across the umbrella application. Allows each individual application to be decoupled from each other by broadcasting events other applications can subscribe to. Uses Phoenix PubSub.
A dedicated application that listens for all auditable events and captures them in a separate database. Decouples audit information from the primary application in the artemis
, allowing it to be have separate backup, archival, and storage policies than the rest of the application.
A web endpoint for the application. Handles user authentication using OAuth2 authorization code flows. Primary interaction point for users of the application.
A GraphQL API endpoint. Handles user authentication using either existing OAuth2 token (from Web endpoint) or client credentials passed in a HTTP request header. Primary interaction point for system-to-system integrations.