├── README.md ├── containers.puml └── context.puml /README.md: -------------------------------------------------------------------------------- 1 | # C4-Microservices 2 | -------------------------------------------------------------------------------- /containers.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml 3 | AddRelTag("async", $lineStyle = DashedLine()) 4 | 5 | title "Digital Wallet Full Cycle" 6 | 7 | Person(client, "Client", "Digital Wallet User") 8 | System_Ext(payment_gateway, "Payment Gateway", "Payment Processor") 9 | 10 | System_Boundary(digital_wallet, "Digital Wallet") { 11 | Container(spa, "SPA", "React", "Digital Wallet Web App") 12 | Container(wallet_core, "Wallet Core", "TS", "Wallet Core is responsible for the transactions") 13 | Container(balance_service, "Balance Microservice", "TS", "Returns customer balance") 14 | Container(statement_service, "Statement Microservice", "TS", "Returns customer statements") 15 | Container(payment_acl, "Payment ACL", "TS", "Anticorruption Layer for Payment Gateway") 16 | 17 | ContainerDb(wallet_code_db,"Wallet DB","MySQL") 18 | Rel(wallet_core, wallet_code_db, "Uses","MySQL Driver") 19 | 20 | ContainerDb(balance_db,"Balance DB","MySQL") 21 | Rel(balance_service, balance_db, "Uses","MySQL Driver") 22 | 23 | ContainerDb(statement_db,"Statement DB","MySQL") 24 | Rel(statement_service, statement_db, "Uses","MySQL Driver") 25 | 26 | ContainerDb(payment_acl_db,"Payment ACL DB","MySQL") 27 | Rel(payment_acl, payment_acl_db, "Uses","MySQL Driver") 28 | 29 | Rel(client, spa, "Uses", "HTTPS") 30 | Rel(spa, wallet_core, "Uses", "JSON/HTTPS") 31 | Rel(spa, balance_service, "Uses", "JSON/HTTPS") 32 | Rel(spa, statement_service, "Uses", "JSON/HTTPS") 33 | 34 | Rel(wallet_core, payment_acl, "Uses", "JSON/HTTPS") 35 | Rel(payment_acl, payment_gateway, "Uses", "JSON/HTTPS") 36 | 37 | Rel(wallet_core, balance_service, "Uses", "Topic", $tags = "async") 38 | Rel(wallet_core, statement_service, "Uses", "Topic", $tags = "async") 39 | 40 | } 41 | 42 | @enduml -------------------------------------------------------------------------------- /context.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml 3 | 4 | title "Digital Wallet Full Cycle" 5 | 6 | Person(client, "Client", "Digital Wallet User") 7 | 8 | System(wallet, "Digital Wallet System", "FC Digital Wallet") 9 | 10 | System_Ext(secret_manager, "AWS Secrets Manager", "Credentials Manager") 11 | System_Ext(apm, "APM", "Application Performance Monitoring") 12 | System_Ext(collect, "OTEL", "OpenTelemetry Collector") 13 | System_Ext(payment_gateway, "Payment Gateway", "Payment Processor") 14 | 15 | Rel(client, wallet, "Uses","HTTPS") 16 | Rel(wallet, secret_manager, "Uses","HTTPS") 17 | Rel(wallet, apm, "Uses","HTTPS") 18 | Rel(wallet, collect, "Uses","HTTPS") 19 | Rel(wallet, payment_gateway, "Uses","HTTPS") 20 | 21 | 22 | 23 | @enduml --------------------------------------------------------------------------------