Cloud <-> Intranet Gateway Design
As business priorities shift, modern cloud-enabled technologies are more critical than ever in healthcare. However, scaling cloud can be complicated. Healthcare is at a tipping point. A hybrid cloud environment can solve many of its biggest challenges.
The COVID era has turned the healthcare industry upside down and Healthcare organizations now have their focus on migrating legacy technology to the cloud and transforming data and applications using capabilities that are not available in their existing infrastructure solutions.
The problem:
Pretext: In most of the hospitals (end users of the solutions we develop), all computers are connected to intranet with only single gateway machine connected to the Internet as per traditional security standards. Moreover, hospitals do not have technical capability/resources to accommodate different use-cases internally. Neither are they willing to make substantial changes to their existing infrastructure.
Due to this, our customer, an OEM, was not able to facilitate work flexibility for its staff. Lot of time was wasted in getting access to the health analytics data due to restrictions on sharing data via intranet. Moreover, the customer did not have budget to make substantial changes in the current infrastructure.
Business need
Since only one machine was allowed to communicate with the Internet, we had to find a way that will not only make the communication possible with the cloud but also keep the installation and codebase as simple as possible. Also, the different departments had different licenses for analytics service.
The top challenges that we identified are listed below:
- Lack of Cloud Accessibility – It was a top challenge to make data communication possible with organization’s isolated network.
- Lack of configurable solution- Another challenge was to make any service plug & play based on user configuration as per hospital’s dynamic requirements.
- Lack of Generic solution – Existing product did not have generic codebase to simplify the maintenance process.
Our solution
Scaling cloud requires a new way of architecting, governing, managing, and measuring technology consumption. While modernizing the legacy is costly and overly complex, healthcare organizations do not have to be overwhelmed by tackling such a monumental challenge. A more reasonable approach is to focus on modernizing key capabilities that drive the experiences that are priorities for reinvention, and we are helping healthcare industry to achieve this with our experience and expertise.
We created a platform independent micro-service that employed latest version of DotNet Core (.Net 6). This service could be configured and deployed as stand-alone windows service (directly communicating to cloud) as well as client-server distributed service (each sitting on different station).
The service also uses plug and play analytics library that is highly detachable and configurable as per client’s requirements.
This Micro-Service has multiple hosted services to perform following functions:
- Upload data/files to azure blob storage
- Send data/files via SFTP protocol
- Monitor network availability and keep track of uploaded files
- Retrieve files as per requests
- Upload analytics data to preferred analytics service provider
Technology stack used:
- .NET 6+
- Kestrel server
- Git
- gRPC
- Http
- Renci SFTP client
- Azure SDK
All above tech stack is open source.
Implementation details
There are 2 modes in this architecture implementation.
- Stand-alone
- Client-server
Solution is highly configurable to switch the service between these modes.
Stand-alone:
In a stand-alone mode, host machine is directly connected to the Internet. Here, uploader service fetches all the files and upload them directly to customer’s preferred cloud service. There is no need for intermediate connection between cloud and host. Hence, complexity and cost are reduced.
Client-server:
In client-server mode, host machines sit inside the private network whereas only server machine is connected to the Internet. Uploader service on host machines is connected to the server via FTP server. sFTP protocol is used to transfer data between client and server machines. If sFTP is not available, then the service automatically switches to https protocol for data transfer.
How to use the service:
Class Components:
- DynamicDependencyLoader – An in-house & generic library created for dynamically injecting 3rd party services or libraries as a part of the hosted service itself. This library makes use of ‘System.Runtime.Loader,’ ‘System.Runtime.InteropServices’ & ‘System.Reflection’ to achieve the behavior of loading & unloading modules at runtime.
- AzureBlobUploader – Service component that uploads and manages files on azure blob storage.
- SftpFileUploader – Manages uploading of data & files between client-server instances using ssh-FTP.
- FileUploadTracker – It keeps the track of weather file was successfully uploaded and if not then it will retry as soon as the network issues are solved.
- FilesRetriever – Checks for legacy data & files on machine that matches the given pattern.
- NetworkMonitorService – Monitors machine network and notifies other services of any network changes.
Benefits Derived
- Facilitated work flexibility for end users by making cloud accessible from intranet.
- Saved time that was wasted in accessing data on earlier platform.
- Saved money/costs by not making substantial changes to their existing infrastructure for incorporating services.
- Made the solution secure and future proof.
Ready to transform your healthcare infrastructure seamlessly? Contact our team today to explore how our Cloud <-> Intranet Gateway Design can benefit you.