Home > Workload Solutions > Data Analytics > White Papers > Application Modernization for High-Volume Workloads with DataStax > Introduction
Enterprises have long relied on the latest technologies to manage all aspects of their organizations, from operations to supply chains, and from human resources to customer management. But as technology becomes obsolete, legacy enterprise applications become more difficult to maintain and scale.
Application modernization is the process of applying new technology and modern development methodologies to legacy systems. Modernization projects can range from refreshing the platforms that applications use to completely rewriting applications using modern architectures, tools, and development processes.
Many legacy applications—including those applications that were written for mainframe computers—were written as single, large, monolithic units. These applications often run on proprietary hardware in on-premises data centers, and they rely on teams of developers, project managers, quality assurance (QA) staff, and operations personnel to develop, deploy, and maintain the applications. Although mainframe applications, for example, are known for their stability and availability, maintaining these applications is expensive and time-consuming. Also, the functionality of legacy applications typically cannot be repurposed for use in other areas of an organization.
Given the difficulties inherent in developing and maintaining their older applications, enterprises are increasingly turning to microservices architectures to enhance and scale their critical applications. A microservices architecture takes a different approach to application design and development. Legacy applications often contain valuable functions and intellectual property that are locked deep within the application. A set of functions might work well within a certain context within the application, but they could also prove valuable across other areas of the enterprise. A microservices approach breaks applications down into independent components that are developed, deployed, and maintained as separate units. These components are often simpler to maintain and deploy, and they can also be reused.
Application containerization can help bridge the continued reliance on legacy applications while simultaneously providing the foundation for modern application development. Containers are lightweight, portable, stand-alone packages that encapsulate the software, runtime libraries, tools, and settings that are required to run an application or microservice. Using a container engine such as Docker, multiple containers can run on a physical server, but they are isolated from other containers and the server’s operating system. This isolation helps applications and microservices avoid software, driver, or library incompatibilities.
While the combination of containers and microservices provides a path to application modernization, managing and orchestrating container deployments is vital. Containerized applications built using a microservices architecture can help enterprises scale, in addition to allowing the applications and data to become more distributed in nature. Kubernetes, an open-source container-orchestration system, can streamline the deployment, scaling, and management of containers. For example, a containerized, distributed, microservices-based application can be deployed on premises using off-the-shelf Intel Xeon processor-based hardware, such as Dell EMC PowerEdge servers; it can be deployed to a cloud platform such as Microsoft Azure; or it can be deployed in a hybrid-cloud environment. Software developers can use Kubernetes to automate the full life cycle of containerized microservices.
Another benefit of containerized microservices is that they can be run from any location, such as on-premises data centers or geographically dispersed cloud platforms. Yet the benefits of containerized microservices can lead to scalability and performance issues if the underlying data models are not also modernized.