Our implementation
Our Implementation
User Interfaces
client <----------->loadBalancer----->edgeServer1, edgeServer2, edgeServer3
edgeServer
- receive request and validate parameters
- break into components and process
- send async actions to micro services
The edgeServer has visibility to the outside world so we want to insulate the software so there is no chance an outside player will be able to access our core services.
The edgeServer will provide an API to the web client but also to the mobile clients. Mobile clients are running Android or IOS applications on their phones or tablets but requesting the same data the web client is requesting.
External Interfaces
externalVendor<--------------->loadBalancer---->interfaceServer1, interfaceServer2, interfaceServer3
interfaceServer
- used to send files and/or messages to external vendors (encrypted)
- used to received files and/or messages from external vendors (encrypted)
- all files are virus scanned and stored as BLOBS
The interfaceServer also has visibility to the outside world via defined ports for receiving and sending files, xml messages, bank messages etc.
Typically the interface server is called by another service. The interface server uses secrets to store all vendor credentials internally. Other services just request the data type from vendor xyz, and this service determines how to get that data.
Scheduler
scheduler--------------->functionalService endpoint
The scheduler (or cron) is used to schedule jobs that run in the background. These jobs typically change the status of customer or system data based on the inputs from the day, or process more inputs received from sources other than user interfaces, or send data to be processed by external vendors.
The scheduler only even calls functional services, which in turn may then call the interfaceServer to request incoming data to be retrieved and processed or outgoing data to be placed.
For our banking application some of the functionalService endpoints are:
documentService/sendStatements
documentService/sendNegativeBalanceAlert
accountService/suspendAccounts
paymentService/processWireTransfers
Functional Services
Each functional service will implement an API to complete that function. The core functional service will have the majority of the application logic in it. Slices of application logic will be separated into micro services only where it makes sense to do so.
The functional services will be laid out a little later in the blog as we get into the design of the system and start building out the entities.
Comments
Post a Comment