Internet Banking System

Allows customers to view information about their bank accounts and make payments.

'!includeurl https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml !include <c4/C4_Container.puml> 'ref http://plantuml.com/stdlib !include <office/Users/user.puml> !include <office/Users/mobile_user.puml> LAYOUT_WITH_LEGEND() title Container diagram for Internet Banking System Person(customer , Customer , "<$user> <$mobile_user>\n A customer of the bank, with personal bank accounts", $link="../../customer.html" ) System_Boundary(c1, "Internet Banking") { Container(web_app, "Web Application", "Java, Spring MVC", "Delivers the static content and the Internet banking SPA", $link="applications/web/index.html") Container(spa, "Single-Page App", "JavaScript, Angular", "Provides all the Internet banking functionality to cutomers via their web browser", $link="applications/spa/index.html") Container(mobile_app, "Mobile App", "C#, Xamarin", "Provides a limited subset of the Internet banking functionality to customers via their mobile device", $link="applications/mobile/index.html") ContainerDb(database, "Database", "SQL Database", "Stores user registraion information, hased auth credentials, access logs, etc.", $link="database/index.html") Container(backend_api, "API Application", "Java, Docker Container", "Provides Internet banking functionality via API", $link="applications/api/index.html") } System_Ext(email_system, "E-Mail System", "The internal Microsoft Exchange system", $link="../external/e-mail.html") System_Ext(banking_system, "Mainframe Banking System", "Stores all of the core banking information about customers, accounts, transactions, etc.", $link="../external/mainframe.html") Rel(customer, web_app, "Uses", "HTTPS") Rel(customer, spa, "Uses", "HTTPS") Rel(customer, mobile_app, "Uses") Rel_Neighbor(web_app, spa, "Delivers") Rel(spa, backend_api, "Uses", "async, JSON/HTTPS") Rel(mobile_app, backend_api, "Uses", "async, JSON/HTTPS") Rel_Back_Neighbor(database, backend_api, "Reads from and writes to", "sync, JDBC") Rel_Back(customer, email_system, "Sends e-mails to") Rel_Back(email_system, backend_api, "Sends e-mails using", "sync, SMTP") Rel_Neighbor(backend_api, banking_system, "Uses", "sync/async, XML/HTTPS")