@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
!define SPRITES https://raw.githubusercontent.com/rabelenda/cicon-plantuml-sprites/v1.0/sprites
!include SPRITES/postgresql.puml
!include SPRITES/rabbitmq.puml
skinparam linetype polyline
skinparam linetype ortho

HIDE_STEREOTYPE()

Person(customer, "Customer")
System(bank_api, "Bank API")
System(external, "External services")

System_Boundary(billing_system, "Billing") {
    Container(billing_app, "Billing Service")
    Container(subscription_app, "Subscription Service")
    Container(celery, "Celery")
    ContainerDb(billing_db, "Billing DB", "PostgreSQL", $sprite="postgresql")
}

Rel(customer, subscription_app, " ")
Rel(subscription_app, billing_app, " ")
Rel(subscription_app, billing_db, " ")
Rel(billing_app, billing_db, " ")
Rel(billing_app, celery, " ")
Rel(billing_app, bank_api, " ")
Rel(celery, external, " ")
Rel(celery, billing_db, " ")

@enduml