Innovating while Cutting Costs and Migrating to the Public Cloud
EPAM Systems Inc. offers consulting-based engineering services across a range of vertical markets. Since 1993, the company has partnered with the world’s leading companies to imagine, design, and engineer customer experiences that accelerate business transformation. One aspect of that work is InfoNgen, a service EPAM offers to customers, which alerts them to important news and other information related to their market. InfoNgen crawls the Web to search millions of online sources and also structured and unstructured data, sending customized alerts to users in industries ranging from financial services, life sciences and insurance.
InfoNgen, a startup acquired by EPAM, required flexibility, stability, and affordability from its technology stack. The biggest challenge for this business unit, back in 2012, was to cut operational costs and to start migrating to the public cloud – which was, by that point, maturing to become a viable alternative for a robust, public-facing service.
While the application was hosted in EPAM’s datacenter, the company was using a Citrix NetScaler appliance to perform load balancing and reverse proxy functionality. Unfortunately, this prevented a move to the cloud, as the load balancer was a piece of hardware. Additionally, Kirill Lutarevich, senior delivery manager at EPAM, said the Citrix license included high-priced functionality that wasn’t needed or used by the team.
At first, Lutarevich replaced NetScaler with the free NGINX Open Source. This reduced load balancer and reverse proxy infrastructure costs to zero, and enabled the move to cloud, thanks to NGINX’s status as a multi-platform, software-based solution. The team quickly upgraded to NGINX Plus, the commercially supported version of NGINX with advanced production-ready features. The upgrade still left the team with a tremendous cost savings over NetScaler.
InfoNgen’s solution for moving its legacy datacenter applications into the cloud and coupling them with microservices is now based entirely on NGINX Plus as the core traffic routing and balancing system.
InfoNgen uses an active/active pair of NGINX Plus instances in front of its microservices application. InfoNgen has 60-70 microservices running in production. The microservices are 80-85% hosted in custom-built Windows containers; the rest are Linux. InfoNgen is not using the native container support found in Windows Server 2016, which came along four years too late.
The majority of InfoNgen’s systems were on Windows Server 2012, which didn’t support the concept of containers. So InfoNgen built its own custom containers.
InfoNgen uses ZooKeeper for service discovery. With InfoNgen’s microservices architecture, the IP address and port number of services are constantly changing. All their services register with ZooKeeper, which maintains a registry. NGINX Plus then pulls information about services from ZooKeeper, and routes requests accordingly.
Since the transition, Lutarevich said that the team has had no issues or downtime related to its usage of NGINX Plus. Acting as an SSL terminator on the outside of its internal network, a single instance of NGINX Plus is able to handle all the traffic routing, balancing, and health monitoring tasks required by the system. The availability of robust health monitoring capabilities in NGINX Plus was another deciding factor when the team chose to upgrade from the free version to the commercial edition.
By replacing the Citrix NetScaler appliances with NGINX Plus, EPAM has been able to significantly reduce infrastructure costs, an important need for almost any company.
Citrix NetScaler is a feature-rich platform that was created in 1997 and acquired by Citrix in 2005. For EPAM, and most companies today, the majority of additional NetScaler features are no longer required, which unnecessarily drives up cost as companies are forced to pay for them anyways. For EPAM, the feature-set of NGINX Plus was more than sufficient for their needs.
The two internally hosted instances of NGINX Plus are used to enable rolling upgrades to services. NGINX Plus is able to reroute traffic to non-upgraded nodes while software upgrades take place on others. The result is that NGINX Plus has allowed InfoNgen to remain online 24/7, without any downtime for upgrades, since the team implemented rolling upgrades.
In addition to rolling upgrades, NGINX Plus has provided a stable environment for both legacy Windows and modern Linux applications. InfoNgen must utilize Windows because of the size and importance of the core .NET application.
EPAM has been using it as a load balancer for microservices architecture, so it is basically a system of registration and discovery for EPAM microservices, controlled through the NGINX API. When microservice endpoints need to be updated or replaced, they are turned off, then turned back on again, providing rolling upgrades by using the API provided by NGINX Plus.
The results of InfoNgen’s move to NGINX Plus are almost unexciting at this point. That’s because the transition was completed almost four years ago, and since that time, no issues have arisen in the NGINX layer. NGINX is stable and highly available and it’s easy to find administrators and operators who know how to use it.
“NGINX is used almost everywhere, especially on the front end side,” said Lutarevich. “There are many people who have skills or experience using NGINX and, not only can I find many of them on forums, like Stack Overflow, I can also hire someone from there as well. There are many candidates with NGINX experience, so it is very useful for us.”
With the move to microservices, it doesn’t matter what operating system the services are hosted on, as InfoNgen utilizes a system of service discovery based on ZooKeeper and NGINX Plus. InfoNgen is able to build new services on Linux while still running its legacy Windows applications, all in the same environment, and with the same middleware and infrastructure in place for both types of systems.
Because InfoNgen is still using Windows Server 2012 for its .NET-based microservices, supporting containers is tricky. This means containers are not supported out of the box in this operating system, and typical orchestration systems cannot work either, because they do not support Windows Server 2012. Still, the InfoNgen team has built its own containers for this environment, despite the older Windows version. This is bolstered by NGINX’s ability to rewrite the headers of incoming requests, allowing them to be forwarded internally to any number of systems, while external users continue to access the same URL.
“We are under constant pressure to lower our infrastructure costs, so people are asking us, ‘Are we using our EC2 instances effectively?’ If not, then we have to find a way to put as many microservices as possible on there. The only way to do that is through some sort of container infrastructure, like Docker,” said Lutarevich.
But, because Docker does not work in Windows Server 2012, NGINX Plus is called upon to bridge the gap between old-school infrastructure and modern application architecture. Fortunately, NGINX Plus is just as happy in a virtual machine as it is in a container, and it can route traffic to both types of systems, regardless of their underlying operating system or environment.
And, because NGINX is so versatile, it’s not affected by this custom container environment. For enterprises, customization is the most important feature for many software packages, and NGINX offers more customizability than any other load balancer or webserver on the market.
Since 1993, EPAM Systems, Inc. (NYSE: EPAM) has leveraged its core engineering expertise to become a leading global product development and digital platform engineering services company. Through its ‘Engineering DNA’ and innovative strategy, consulting, and design capabilities, EPAM works in collaboration with its customers to deliver innovative solutions that turn complex business challenges into real business opportunities. EPAM’s global teams serve customers in over 25 countries across North America, Europe, Asia and Australia.