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

Popular posts from this blog

First Post - Overview of blog

Implementing a web application over time

Components of the micro service