Scripta Insights Evolution to Microservices

Overview

Scripta is a healthcare IT solution that was founded by doctors with a goal to help payers make better, more informed decisions so they get ‘The Right Meds at The Best Price – Every Transaction, Every Member, Every Day’ thus helping deliver immediate, real savings on pharmacy benefit costs for self-insured employers, payers and their members.

Numino team’s involvement was in helping to evolve the Scripta Insights back end to Java microservices based architecture, while making feature enhancements to the existing job service. The application follows a multi-tenant architecture, and is hosted on the AWS cloud platform.

Project Info

Category

Cloud Backend, Web Apps

Client

Scripta Insights

Tags

Product Features

Supports multi tenancy
Scalability and High Availability
Load Balancing

Technology Stack

Architecture

The overall system architecture comprises of 2 subsystems

Microservices Backend

Some of the core components of this architecture includes –

Load balancing
The Load Balancer distributes incoming application multiple targets(in this case services running in Kubernetes cluster) which improves the availability and fault tolerance of application.
Kubernetes Cluster
Using Kubernetes offers significant benefits including automatic scaling & ensuring high availability. It simplifies service discovery, internal load balancing, and deployment processes with declarative configurations and automated rollbacks.
Member Spring boot microservice
The member service acts as a single point of contact with the outside world and serves all user requests.
Catalog Spring boot microservice
The catalog service is used for managing all master data and is also responsible for connecting with any third party vendors.
Redis cache
Redis is used as a cache to store drug information, thus helping in cost optimization from third party vendors.
Job Service (Application Engine Subsystem)

The ‘Engine’ serves as a distributed processing system for the biz ops team to perform bulk operations for various tasks. Some of these engine processing include –

The following is the architecture diagram

The front-end application’s REST API publishes a notification to the SNS topic. The SNS topic broadcasts the notification to all subscribed resources. Ie. SQS and Lambda. The AWS Lambda function receives the notification and triggers an ECS task.

The ECS task retrieves the notification from the SQS queue and performs the required processing for the job. The output of the ECS task is specific to the engine. For eg. Communication engine will send out notifications.

Monitoring

For monitoring the microservices deployed in the Kubernetes-based architecture, Datadog is used. The setup involves the following steps:

This configuration allows comprehensive monitoring and analysis of microservice events and logs within the Kubernetes cluster.

The integration allows for real-time notifications of important events, such as service outages, high error rates, or high traffic volume. This allows teams to quickly respond to issues and minimize downtime.

Integration with Slack allows for contextual information to be sent ensuring prompt awareness and response to issues.

DevOps

01

Creating a release branch, building and testing the code, creating release artifacts, and publishing the artifacts to a private package repository.

02

Running automated tests and ensuring that the code builds successfully in the release branch. Here, Rest Assured tests were integrated within the CI/CD workflow.

03

Generate the necessary artifacts for the release, such as a JAR file, a Docker image, or an installer.

04

Publish the artifacts to AWS Code Artifact private package repository and followed by release to the target environment.

05

Creating a Kubernetes deployment defining the desired state of the application, including the Docker image, number of replicas, and other configurations which will create the necessary Kubernetes objects such as pods and services.

Delivery Practices

Agile based delivery
Agile based delivery

The Numino-Scripta team followed Agile principles for product development. JIRA was used for issue tracking, bug tracking and managing epics, stories and defects and agile project management

Summary

The overall solution helps Scripta with

Improved Scalability
Rapid deployment
Reliability and Fault tolerance
Enhanced productivity

This in turn helps Scripta empower companies to take control of their Pharmacy Benefit Spend and the members and their dependents get the Right Meds at the Best Price, all without changing their Pharmacy Benefit Manager.