A framework for building web-based apps with microservices

By Daniel Otto

As applications rapidly migrate to public and private clouds, application developers are requiring more from traditional enterprise infrastructure – more storage, more servers. Simply providing them to customers doesn’t really get the job done.

That’s why NetApp IT built a highly automated, self-service, cloud-based application development platform that quickly onboards and delivers integrated developments and containers. To maximize the value of the platform, we also developed an application development framework to implement web-based applications with microservice technologies, along with an Angular UI.

We created the framework to build web-based applications, even though it isn’t limited to this type of application.

A microservice approach with DevOps principles

For the new architecture, we used microservices based on DevOps ideals. We went from monolithic stacks to an Angular-based single-page application UI that uses microservices running in containers. Technically, we differentiated between four zones:

The client is the web or mobile application. The application can be built with any technology that can make HTTP calls to the UI gateway, even though Angular is the preferred client framework for building a single-page application.

The UI gateway is the entry point for the client to access back-end services. The UI gateway handles all calls from the client to the services, routing them to the appropriate containers according to the internal configuration. Anonymous calls are allowed for certain routes, but if a user wants to log in, the login is handled by the UI gateway. It also handles user authentication that uses OAuth 2.0. Any identity provider that supports OAuth — for example, Google or GitHub — can be connected. The UI gateway is technically a microservice. 

The microservice environment is accessible only through the UI gateway. Each microservice is like a standalone product: It has its own repository and build/deployment pipeline, runs as a pod on its own, and is accessed by other services. It isn’t directly accessible from outside the environment. When a call is made to a microservice, a security token must be added to the request. The UI gateway does this automatically, even for anonymous users. This action requires services, which call other services, to obtain a security token from the UI gateway before making the call. Although microservices can be built with any technology, we used Java and Spring Boot for our framework. In certain cases, developers may use other technologies if they provide substantial reasons.

Internal boundary systems are our major legacy applications like Oracle Enterprise Resource Planning (ERP) and SAP CRM and are accessible only in the corporate network. This approach provides an extra level of security.

Previously, we rebuilt the NetApp Support site by using this framework and its microservice-based architecture. With approximately 350,000 unique visitors a month, it’s NetApp’s digital channel for customers and partners who seek information and support related to our products. It’s a vital product for our customers and a proof point that the framework, well, works.