Serverless Cloud for Enterprise Applications

Here I will describe an interesting hybrid cloud architecture that we propose to evaluate for an upcoming project.

The scenario:

The enterprise already has an ERP (Enterprise Resource Planning) system running inside it’s datacenter and it would like to create a Self Service Progressive Web Application for its customers, but for security reasons, would not like to expose its ERP outside it’s Firewalls.

The dataflow is shown below as an UML Sequence Diagram.

UML sequence Diagram

In a nutshell, the Web App only interacts with the MBaaS (Mobile Backend as a Service). The MBaaS triggers a cloud function that exchanges message with the ERP system, hiding behind a firewall. The message is brokered by a Message Queue Service and a Cloud Agent. The Cloud Agent is stationed in the DMZ (demilitarized zone).

The UX (User Experience) Elements

The Progressive Web App is hosted on the MBaaS.

We use Web Components, for developing the Progressive Web App, more specifically the Google’s Polymer elements. Web Components are a standards based vendor neutral next generation platform. Primarily leveraging these standards:

  • Custom Elements
  • Shadow DOM
  • HTML imports
  • HTML Template

Serverless Components

We are considering a best of stack approach, but might fallback to a best of breed approach.

The two cloud providers we actively work upon are Amazon AWS & Google Cloud. Both of these platforms have serverless stacks.

While AWS is more matured, I love Google! So, the debate is on among us.

Serverless Stacks:

Behind the Firewall

The cloud broker is a small custom program in Java or Go, that lives in the DMZ. It pulls messages from the message queue service and pushes to the ERP.

The ERP processes either calls back to the cloud agent or the cloud agent pulls the data through a synchronous API call from the ERP.