Health care provider Kaiser Permanente has been on a journey with Cloud Foundry. The California-based non-profit has gained insights while working to integrate an array of legacy technology with cloud-based infrastructure and microservices-based deployments as it develops customer-facing services.
Alex Rubin, a principal architect at Kaiser Permanente, notes that issues can come up when going from concept to scale development and production.
Kaiser Permanente is a top integrated health care provider with more than 12 million members, 218,000 employees, and 700 medical facilities. The more than 70-year old company has a multitude of systems, most of which live in company data centers, housing data that’s critical for member engagement. Using information to deliver seamless, personalized experiences is key to Kaiser Permanente’s mission to keeping their members healthy.
Patients Push for More Direct Contact
As the consumerization of health care continues to gain speed, patients are looking for easy access to information, advice and services from their insurers and providers. At the same time, health care professionals want more engagement with their patients on preventive care. Today, Kaiser Permanente members can use their smartphones to make appointments, refill prescriptions, and communicate with their doctors by sending secure messages, according to Alex.
“We needed to create a digital foundation that provides building blocks, such as on-demand runtimes, databases and our own base layer services. This enabled us to innovate and solve business problems quickly instead of building redundant functionality.”
Some results of this work are services like video visits with doctors, chronic condition management help, and guiding members to local farmers’ markets to improve access to healthy food.
Scaling access to data is hard
However, accessing member information presents formidable challenges to IT, given that records are stored in highly secured, backend clinical systems that were never meant to support web scale traffic. “Scaling access to data in these systems is hard,” Alex says.
From the operational perspective, this challenge is often boiled down to latency. People do not tolerate sluggish systems, no matter the degree of difficulty in providing the information they want. Kaiser Permanente is working to build system integrations with treatment records, pharmacy transactions, medical history and other significant data.
Kaiser Permanente started using Cloud Foundry by deploying internal apps and has now taken on more complex, member-facing apps and services. Providing member functionality and a good experience was the result of a lot of effort by the development and operations teams, according to Alex. Migrating legacy Java applications to run in the cloud microservices environment was tricky as teams learned to work with eventual consistency, distributed transactions, and calls to the systems of record.
Kaiser Permanente’s microservices architecture is based on building blocks geared to solve specific challenges. From there, adapter services are responsible for fetching data from backend systems and Java-based business services process the data and contain business logic. Finally, NodeJS-based, presentation-tier services integrate with the front-end to serve user requests. A caching framework is used throughout to reduce latency. As application teams build out new services, teams work through fixing bottlenecks and testing performance throughout the overall system.
“As our multi-tenant Cloud Foundry environments are scaled for increasing sets of workloads, we watch app metrics and system resources carefully,” says Alex. “We found that for certain workloads, GO Router Keep Alive can make a significant performance difference,” he added. While memory can be managed by the platform, CPU cycles are critical to fast response times. Scaling CPU resources on the underlying systems may be required.
Alex says that newer Cloud Foundry OCI layered file system features and runtime adjustments to improve thread management are very useful in reducing CPU spikes. “Additionally, runtimes may not directly fit your workload profile, so you need to tweak and tune them,” he says. Future efforts could focus on CPU workload balancing support across underlying infrastructure and supporting the notion of CPU quotas as a way to manage and allocate system resources.
To learn more about Kaiser Permanente’s Cloud Foundry journey and the technical aspects of addressing latency and performance challenges, watch the presentation from the North American Cloud Foundry Summit: