Solution Pattern: Enhancing Applications with Application Services
Most enterprises undertake app modernization of existing monolithic applications to microservices to enable cloud adoption and agility. This solution pattern takes a look at enhancing these Applications with Application Services, thereby realizing greater business value.
Use cases that can be addressed with this solution pattern:
An application has been modernized from monolith to microservices and from virtual/bare-metal deployment to a a container based application platform. New functionality needs to be added to this existing application to fulfill business needs. The new functionality should be designed and developed as small and targeted microservices.
New channels need to be added to the existing, web-based application, e.g. a mobile app. This requires formalizing the application API and exposing the APIs through a API Management solution for consumption by the mobile app.
Real-time data gathering and analysis. User activity in the application is gathered and transformed into a stream of activity events. These events are processed and analyzed in real-time.
Globex is a fictitious retail company. The company recently started a digital transformation and cloud adoption journey. As part of this initiative, the development and devops teams have completed the modernization of the existing multi-tier monolithic retail e-commerce web application. The monolithic application was split in a couple of loosely-coupled microservices and the application was re-hosted on OpenShift.
The devops team also adopted GitOps practices for rapid and continuous deployment.
The outcome of this application modernization effort is an increased velocity of application development and deployment, and an overall faster go to market for new functionalities.
A schematic overview of the current state of the application after the first phase of the application modernization effort:
The application is split into microservices and runs on OpenShift. As such it inherits all the benefits of the de-facto enterprise Kubernetes distribution: horizontal scaling, automated rollout/rollback, bin-packing, self healing, service discovery, load balancing, etc.
Adoption of GitOps practices decreases Lead Time for Change, Mean Time to Recover and Change Failure Rate while increasing Deployment Frequency
Taking advantage of this new momentum, the business comes up with new requirements for the e-commerce application:
Multi-channel approach: includes a mobile application in addition to the retail web-site. Globex does not have the necessary expertise in mobile development, so development will have to be outsourced.
The ability to track user activity on the website and the mobile application.
Highlight products which generate most customer interest as featured products.
Provide a personalized experience for users on the website and mobile application.
This solution pattern focuses on:
The introduction of a streaming platform (Apache Kafka) to generate a stream of user activity events from the application web UI. User activity events are sent to a new service using a REST API. This service forwards the events into the streaming platform.
The stream of user activity events is processed in real-time using a stream processing library to generate a list of featured products that can be highlighted on the web site.
The introduction of an API Management solution (Red Hat OpenShift API management) to expose, secure and manage the APIs to the application backend services. This allows to introduce new channels (mobile application, B2B transactions) in a controlled way.
Using a contract-first approach, the APIs are specified in a OpenAPI spec document and managed in a registry (Red Hat Openshift Service Registry). Once implemented, they are onboarded on the API management platform.
Mocking of the APIs allows parallel streams of development between API implementers and API consumers.
It’s time to boost your cloud-native application architectural design with bleeding-edge technology backed by open-source software. Explore the use cases and learn recommended solutions for each of these challenges: