Energyworx: a serverless architectureJune 8th, 2018 by Edwin Poot
What does ‘serverless architecture’ mean?
Serverless computing refers to a model where the existence of servers is simply hidden from developers. This means that even though servers exist, developers are relieved from the need to care about their operation and to worry about low-level infrastructural and operational details such as scalability, high-availability, infrastructure-security, and so forth. Hence, serverless computing is essentially about reducing maintenance efforts, which allows developers to focus on developing value-added code. Serverless computing encourages and simplifies developing microservice-oriented solutions in order to decompose complex applications into small and independent modules that can be easily exchanged.
Pure Play PaaS
The entire Energyworx platform philosophy is based on the concept of solely using PaaS (Platform-as-a-Service) components. This policy allows us to efficiently focus on creating core business logic and deliver an outstanding platform without the need of a large development and operations team to maintain several levels of integration code, boilerplate code, virtual servers and virtual infrastructure. We call this Pure Play PaaS.
Within the industry, there are only a few players in the market that allow us to pursue this unique serverless architecture approach, and where PaaS actually abstracts platform services from the underlying infrastructure:
- Microsoft Azure Apps Service
- Amazon Lamba + AWS
- Google Cloud Platform
Energyworx has designed its software architecture with an abstraction layer to create PaaS independent business logic that consumes at least the following platform services areas:
Responsible for data collection, connecting to other systems, equipment and services and ingesting data
Responsible for asynchronous processing of ingested data, validation and take actions based on validation results.
Responsible for storing data into a specific type of datastore based on the characteristics of the data.
Responsible for calculations, aggregations, and consolidations of the different data sources
Responsible for making and improving predictions or discovering behaviors using several probabilities learned from the data.
Since Energyworx’s core focus is to support the Energy Value Chain business processes, the business logic layer of our platform contains industry-specific unique algorithms, functions and processing capabilities supporting the data ingestion, processing and analytics needs of our customers. The abstraction layer in the Energyworx Platform allows for the business logic layer to communicate transparently to the underlying PaaS services, without a direct dependency on the chosen PaaS platform.
After careful consideration and evaluation based on the following criteria, Energyworx has selected Google Cloud Platform as its preferred PaaS provider;
- Fastest, with consistent performance
- Competitive and transparent pricing
- Auto-scaling to millions of users (and back)
- Unlimited flexible storage and caching
- Big Data & Machine Learning capabilities
- Development SDK & tools
- 24/7 access to expert support resources
Since Pure Play PaaS requires service layer integration without the management of infrastructure and servers, regardless of which cloud provider is chosen, the Energyworx PaaS abstraction layer requires provider-specific implementation. Switching to other cloud providers is possible, but requires some work to connect to other PaaS services.
Engineering is always about trade-offs. The more we use someone else’s abstractions, the more productive we will be, and the more tied our implementation will be to the chosen platform. But in our case, the Google Cloud Platform did more work for us, and as a result, we also got more work done. Time is opportunity. When (not if), we rewrite our service/app, there will need to rewrite less, because the platform guided us to a sound structure. Of course, some of the abstractions leaked into our design. But, they’re not different from other abstractions that would have leaked in had you used something else. Any good platform will result in this net effect; although it’s not trivial to migrate, we aren’t artificially locked in either and with some work we can move somewhere else.
Bottom line is that, according to us and after careful evaluation, Google is currently leading the pack with the best big data storage, processing and analytics capabilities, which is being topped off with their unique cloud-based machine learning PaaS. This provides Energyworx with great competitive advantage in the market, not only based on technology but maybe even more on pricing, speed of the product release cycle, and unique capabilities.
Pure Play PaaS regions
Each cloud provider that provides PaaS from a serverless architecture perspective has set up their data centers to be spread across multiple geographical locations, which cross country boundaries in order to make autoscale of services across those different datacenters possible. Each cloud provider that we considered, whether it is Microsoft Azure App Services, Amazon Lambda + AWS or Google Cloud Platform, allows us to select a region for the use of this service, however, this isn’t possible on country level.
Data Privacy Regulations and geographical storage restrictions
Some customers in certain countries (e.g. Germany) are required by country law to store customer’s privacy sensitive data within the geographical country boundaries. This makes the use of Pure Play PaaS challenging. In their privacy laws, many countries designate a special category for data labeled as “sensitive data”, which are subjected to especially stringent protective covenants. The most common list of categories of sensitive data is the one in the EU Data Protection Directive, which includes data about “registered domicile, racial or ethnic origin, political opinions, religious or philosophical beliefs, trade-union memberships, health, and sex life.”
Energyworx has developed a unique feature to overcome this challenge. The Energyworx system safeguards the user’s privacy by never storing privacy sensitive data that could pinpoint the meter data to the user. If characteristics are stored in the Energyworx System, we merely store the pseudonym of this characteristic, while the mapping to the real characteristic is stored elsewhere (e.g. a private cloud environment or simply on-prem at the customer’s location). We call this methodology “Pseudonymisation”. This means that we fully comply with local privacy regulation and the EU Data Protection Directive. Privacy sensitive data can never be obtained from our system, not even when multiple characteristics are known that could identify the specific user.
Next to the pseudonymization, some customers want to store the results of several sophisticated calculations by the Energyworx SaaS in their own local datacenter or private cloud especially if this data is categorized as being critical to their organization. This option is supported and fully available.
In our short existence, we have managed to win several large customers that use Energyworx SaaS for their business-critical data processing and intelligence needs by convincing their security and privacy specialists with our unique approach in mitigating the most critical items based on their threat and vulnerability assessments and/or business impact analysis and implementing the highest level of security controls.
From our experience even the most strategic and large customer accounts are not held back by Energyworx using PaaS or running on Google Cloud Platform, in fact this is often one of the reasons for choosing Energyworx, since we are the only one following this Serverless Architecture approach that enables them a worry free, highest grade performance and best fit solution with innovative features, while also allowing them to innovate with a faster time to market.