Colorized2

@startuml(id=Containers)
scale max 2000x1413
title Customer Information System - Containers

skinparam {
  shadowing false
  arrowColor #707070
  actorBorderColor #707070
  componentBorderColor #707070
  rectangleBorderColor #707070
  noteBackgroundColor #ffffff
  noteBorderColor #707070
}
actor "Customer" <<Person>> as 2 #ffbf00
note right of 2
  A customer
end note
package "Customer Information System" <<Software System>> {
  rectangle 8 <<C# .NET>> #facc2e [
    Audit Service
    --
    Provides organisation-wide
    auditing facilities.
  ]
  database 9 <<Event Store>> #f5da81 [
    Audit Store
    --
    Stores information about
    events that have happened.
  ]
  rectangle 3 <<Angular>> #facc2e [
    Customer Application
    --
    Allows customers to manage
    their profile.
  ]
  database 5 <<Oracle 12c>> #f5da81 [
    Customer Database
    --
    Stores customer information.
  ]
  rectangle 4 <<Java and Spring Boot>> #facc2e [
    Customer Service
    --
    The point of access for
    customer information.
  ]
  rectangle 10 <<RabbitMQ>> #facc2e [
    Message Bus
    --
    Transport for business
    events.
  ]
  database 7 <<MySQL>> #f5da81 [
    Reporting Database
    --
    Stores a normalised version
    of all business data for ad
    hoc reporting purposes.
  ]
  rectangle 6 <<Ruby>> #facc2e [
    Reporting Service
    --
    Creates normalised data for
    reporting purposes.
  ]
}
8 .[#707070].> 9 : Stores events in
3 .[#707070].> 4 : <<JSON/HTTPS>>\nUpdates customer information using
4 .[#707070].> 3 : <<WebSocket>>\nSends events to
4 .[#707070].> 5 : <<JDBC>>\nStores data in
4 .[#707070].> 10 : Sends customer update events to
2 .[#707070].> 3 : Uses
10 .[#707070].> 8 : Sends customer update events to
10 .[#707070].> 6 : Sends customer update events to
6 .[#707070].> 7 : Stores data in
@enduml

Containers

--

@startuml(id=CustomerUpdateEvent)
scale max 2000x1413
title Customer Information System - Dynamic
caption This diagram shows what happens when a customer updates their details.

skinparam {
  shadowing false
  arrowColor #707070
  actorBorderColor #707070
  componentBorderColor #707070
  rectangleBorderColor #707070
  noteBackgroundColor #ffffff
  noteBorderColor #707070
}
participant "Message Bus" as 10 <<RabbitMQ>> #facc2e
actor "Customer" as 2 <<Person>> #ffbf00
participant "Customer Application" as 3 <<Angular>> #facc2e
participant "Customer Service" as 4 <<Java and Spring Boot>> #facc2e
database "Customer Database" as 5 <<Oracle 12c>> #f5da81
participant "Reporting Service" as 6 <<Ruby>> #facc2e
database "Reporting Database" as 7 <<MySQL>> #f5da81
participant "Audit Service" as 8 <<C# .NET>> #facc2e
database "Audit Store" as 9 <<Event Store>> #f5da81
2 -[#707070]> 3 : 1. Uses
3 -[#707070]> 4 : 2. Updates customer information using
4 -[#707070]> 5 : 3. Stores data in
4 -[#707070]> 10 : 4. Sends customer update events to
4 -[#707070]> 3 : 5. Confirms update to
10 -[#707070]> 8 : 5. Sends customer update events to
10 -[#707070]> 6 : 5. Sends customer update events to
8 -[#707070]> 9 : 6. Stores events in
6 -[#707070]> 7 : 6. Stores data in
@enduml

CustomerUpdateEvent