Technical Context
The technical context of the DCIS.
@startuml
skinparam actorStyle awesome
together {
:Player: << Human >>
:GM: << Human >>
:Judge: << Human >>
:Orga: << Human >>
:Admin: << Human >>
}
together {
rectangle << External >> {
together {
[FoundryVTT]
[discord]
}
}
[k8s ingress]
}
together {
[SSO]
[broker]
}
component "k8s ingress" {
portin HTTP as HTTPingressIn
component "ingress" as HTTPingress
HTTPingressIn -- HTTPingress
}
FoundryVTT --> HTTPingressIn
[SSO]
[dcis-gaming]
[torg-codex]
[dcis-threats]
[dcis-operatives]
[dcis-discord]
together {
[dcis-users]
[mail]
}
component dcis-gaming << SCS >> {
portin HTTP as HTTPgaming
portout AMQP as AMQPgaming
component "torganized-play-gaming" as DCISgaming
database "PostgreSQL" as gamingDB
HTTPgaming -- DCISgaming
AMQPgaming -- DCISgaming
DCISgaming -- gamingDB
}
component torg-codex << SCS >> {
portin HTTP as HTTPcodex
portout AMQP as AMQPcodex
component "torg-codex" as DCIScodex
database "MongoDB" as codexDB
HTTPcodex -- DCIScodex
AMQPcodex -- DCIScodex
DCIScodex -- codexDB
}
component dcis-threats << SCS >> {
portin HTTP as HTTPthreats
portout AMQP as AMQPthreats
component "torganized-play-threats" as DCISthreats
database "PostgreSQL" as threatsDB
HTTPthreats -- DCISthreats
AMQPthreats -- DCISthreats
DCISthreats -- threatsDB
}
[broker]
component "broker" {
portin AMQP as AMQPbroker
component "broker" as DCISbroker
AMQPbroker -- DCISbroker
}
component dcis-operatives << SCS >> {
portin HTTP as HTTPoperatives
portout AMQP as AMQPoperatives
component "torganized-play-operatives" as DCISoperatives
database "PostgreSQL" as operativesDB
HTTPoperatives -- DCISoperatives
AMQPoperatives -- DCISoperatives
DCISoperatives -- operativesDB
}
component dcis-users << SCS >> {
portin HTTP as HTTPusers
portout AMQP as AMQPusers
component "torganized-play-users" as DCISusers
component "torganized-play-arbitration" as DCISarbitration
database "PostgreSQL" as usersDB
HTTPusers -- DCISusers
HTTPusers -- DCISarbitration
AMQPusers -- DCISusers
AMQPusers -- DCISarbitration
DCISusers -- usersDB
DCISarbitration -- usersDB
}
component dcis-discord << SCS >> {
portout HTTP as HTTPdiscord
portout AMQP as AMQPdiscord
component "torganized-play-discord" AS DCISdiscord
HTTPdiscord --> discord
AMQPdiscord -- DCISdiscord
}
component dcis-commons << SCS >> {
portin HTTP as HTTPcommons
component "torganized-play-commons" as DCIScommons
HTTPcommons -- DCIScommons
}
:Player: .d.> HTTPingressIn
:GM: .d.> HTTPingressIn
:Judge: .d.> HTTPingressIn
:Orga: .d.> HTTPingressIn
:Admin: .d.> HTTPingressIn
FoundryVTT .d.> HTTPingressIn
DCISgaming ..> SSO
DCIScodex ..> SSO
DCISthreats ..> SSO
DCISoperatives ..> SSO
DCISusers ..> SSO
HTTPingress .d.> HTTPgaming : use
HTTPingress .d.> HTTPcodex : use
HTTPingress .d.> HTTPthreats : use
HTTPingress .d.> HTTPoperatives : use
HTTPingress .d.> HTTPusers : use
HTTPingress .d.> HTTPcommons : use
DCISusers ..> mail : use
HTTPdiscord <.u.> discord : use
AMQPbroker <.u.> AMQPdiscord : use
AMQPbroker <.u.> AMQPgaming : use
AMQPbroker <.u.> AMQPcodex : use
AMQPbroker <.u.> AMQPthreats : use
AMQPbroker <.u.> AMQPoperatives : use
AMQPbroker <.u.> AMQPusers : use
@enduml