Home > Articles > Programming > Java

Ten Good Reasons to Virtualize Your Java Platforms

There are many reasons for a company to virtualize their Java platforms. In this article we will explore the top-ten that are arguably the most relevant. While cost efficiency is one driving factor, there are many other reasons related to reliability and availability.
Like this article? We recommend

There are many reasons for a company to virtualize their Java platforms. In this article we will explore the ten that, in my experience, are the most relevant. While cost efficiency is one driving factor, there are many other reasons related to reliability and availability. In the past, Java developers had to worry about these while they were developing an application, and it was a major distraction from focusing on the actual business logic. Today with a VMware Hypervisor, it is possible to have the reliability, availability, and scalability requirements of Java platforms in such way that Java developers do not have to worry as much about these issues during “code construction” time.

Reason 1: Manageability of big platforms

Manageability of platforms is the ability to easily administer all aspects of the VMs and JVMs, such stop/start and update/upgrade. Java, as a platform, can be designed and implemented (from a runtime deployment perspective) in a variety of ways to suit specific business application requirements. This is aside from the Java language itself, where Java programmers can take advantage of many design patterns available to implement a robust application. Because Java is a platform as well as a language, the platform behavior must be first categorized in order to quantify what the best practices are for each situation. After years of dealing with Java platforms, it dawned on me that there are three main categories, each distinguished by its own unique tuning technique. Once you understand the various categories and their behaviors. you’ll quickly realize the different manageability and tuning challenges that you must deal with. They are:

Category 1: Large Number of JVMS

In this first category there are thousands of JVMs deployed on the Java platform, which are typically JVMs as part of a system that maybe servicing millions of users, perhaps a public facing application, or a large enterprise-scale internal application. I have seen some customers with as many as 15,000 JVMs.

Category 2: JVMs with Large Heap size

In this category there almost always fewer JVMs, from one to twenty JVMs, but the individual JVM heap size is quite large, within a range of 8GB-256GB and potentially higher. These are typically JVMs that have an in memory databases deployed on them. In this category Garbage Collector (GC) tuning becomes critical, and many of the tuning considerations have been discussed in the Virtualizing and Tuning Large Scale Java Platforms book to help you achieve your desired SLA.

Category 3: Combination of Categories 1 and 2

In this category, there are perhaps thousands of JVMs running enterprise applications that are consuming data from large (Category 2) JVMs in the backend. This is a common pattern for in-memory databases where thousands of enterprise applications are consuming data from Category 2 in-memory database clusters; you see a similar pattern in big data, HBASE and HDFS type of setups. Managing the deployment and provisioning of such environments almost always requires heavy manual steps; however, in vSphere (and certainly through various automation tools such Serengeti, vCAC, and Application Director) the deployment of such systems has been refined.

Reason 2: Improve Scalability

Prior to the introduction of hypervisors, IT professionals tried to solve the scalability problem at the application layer, the JVM layer, and the application server layer; this trend persisted throughout the mid-1990s and 2000s, and continues to this day. However, managing scalability this way comes at a very heavy cost, namely overburdening Java designers and implementers with the worry of platform scalability issues rather than focusing on business functionality. With virtualization, this changes. Using vSphere as the example, this kind of functionality gives you the flexibility to define the size of a virtual machine CPU and memory; the ability to have multiple VMs, multiple vSphere hosts, vSphere clusters, sub capacity resource pools; set HA, Affinity and Anti-affinity rules; and manage Distributed Resource Scheduler (DRS), Fault Tolerance (FT), and VMotion. Thus, you have all the scalability functionality that you could ever need to build highly scalable and robust Java platforms.

Reason 3: Higher Availability

Higher availability is the ability to more easily meet your uptime SLAs with less downtime, whether during schedule or un-scheduled maintenance. If a VM crashes with VMware HA, it immediately restarts on another vSphere host, giving you a small outage window without any manual intervention needed to return to service. Of course, while this restarts the VMs only, you also need an ability to restart the JVMs; for this there are application scripts and Application HA plugins readily available in vSphere for you to leverage. You also have the ability to use affinity rules; for example if two JVMs and VMs need to be right next to each other on the same physical hosts, you can easily create such rules. On the other hand, if you want to make sure that two HA pairs of each other―maybe two critical redundant copies of JVM and associated data―are never on the same vSphere hosts, you can also setup such rules at the vSphere layer.

Reason 4: Attain Fault tolerance at platform layer

Fault tolerance gives you the ability to protect critical parts of the Java platforms by ensuring zero down time of FT protected VMs. Fault tolerance will always maintain a separate VM on a separate vSphere host and remain a hot standby; if the source VM crashes, the standby immediately takes over without loss of transactions. During an event, if the primary/source VM fails to the active standby, the active standby becomes the primary and then immediately another VM is spawned as the newly privileged active standby. Another benefit to consider: imagine how much more time you’d have to focus on application development if you wrote code that didn’t have to re-create its original state from a prior saved copy, and replicated on FT to always keep a hot redundant copy of the entire VM for you.

Reason 5: Virtualization is now the de-facto standard for Java platforms

Five years ago, perhaps prior to ESX 3, there were some opportunities to improve performance, but ever since then performance on ESX 4.1, 5.1 and 5.5 has matched its similar physical deployments. Various performance studies have been conducted to showcase this. After performance was no longer an issue, many customers jumped on the opportunity to be able to overcommit resources in their less critical development and QA systems to save on hardware and licensing costs.

But now there are more critical gains, namely in platform agility; to be able to move workloads around without downtime in order to facilitate near zero down time deployment of application components is a huge advantage versus your competitors, who may still be creating an outage in order to facilitate an application deployment. This trend is now prominent in the insurance, banking, and telecommunications industries where they realize the huge opportunity of virtualizing Java platforms. After all, Java is platform-independent to begin with, and hence the easiest of the workloads to virtualize as opposed to other tier-1 production workloads that have a tight dependency to the OS (although even with those we are seeing a mainstream virtualization trend is being set).

Reason 6: Save on licensing costs

Since you are able to overcommit CPU and Memory resources in development environments, you can often achieve savings in software licensing costs. Further, if you implement a completely stateless type of application platform (i.e. all the nodes don’t directly know about the other nodes and rely on vSphere for HA and fault tolerance) then you are quickly able to leverage more lightweight application containers that don’t have additional costly availability features.

Reason 7: Disaster Recovery

Disaster recovery is important because no prudent Java platform can achieve 99.99% uptime without a true DR implementation. Therefore, having all of the Java platform virtualized gives the ability to quickly protect the platform against natural disasters, using Site Recovery Manager (SRM). SRM additionally gives you the ability to test your DR plan, and provide ability to plugin in your own scripted extensions for any other post DR event automation.

Reason 8: Handling Seasonal Workloads

Seasonal workloads can be an issue for many companies because they are expensive from both power consumption and licensing perspectives. How many times developers race to ask you to provision a bunch of VMs, to later find out that they used these resources for one week and then lay dormant for weeks or months? In situations like these you can use vSphere Distributed Power Management (DPM) to manage shutting down such systems, if needed, in order to release the unused capacity. You can also setup the ability to expand vSphere cluster to meet new demand if needed, along with load balancer integration to be able to wire-in the newly created VMs into the load balancer pool so that traffic can be immediately sent to these from the Load Balancer.

Reason 9: Improve Performance

Since you have the ability to move workloads around with DRS and are able to better utilize the underlying capacity, virtualized systems can outperform their physical counterparts. Certainly on a single vSphere host compared with a single physical server, virtualization does add some overhead, albeit minimal; but from a more practical point of view, most production systems run on multiple physical hosts, and hence it is really about comparing the performance of the entire cluster rather the performance of the individual physical host. Even though we ran a test that compared the performance of virtualized Java platform to physical and found that up to 80% CPU utilization, the virtualized and physical platforms were nearly identical with minimal overhead in the virtual case. It is worth noting that beyond 80% CPU utilization, the virtualized results started to diverge a little from the physical case. This is great to know, since no one really runs their production systems at 80% CPU, except perhaps for short period of peak times, and then the load trickles off.

Now even on per host comparison basis, we don’t see memory overhead being greater than 1% of physical RAM per configured VM, and about 5% for CPU scheduler. The chart below plots load across the horizontal axis, response time on the left vertical axis and CPU utilization on the right vertical axis. The chart plots the virtualized case in brown, and the physical/native case in blue, note the straight linear lines are CPU measurements, while the curves are response time measurements.

As you can see, up to 80% the virtualized case is near equivalent to the physical/native case, and while beyond 80% we start to see slight divergence.

For more information, please refer to this white paper

Reason 10: Cloud Readiness

When an entire platform is virtualized, it makes it relatively easy to move some workloads off to a cloud provider, especially in development environments where these workloads can be facilitated at minimal cost. For example, customers in Category 1 (with excessive sprawl JVM instances in a physical deployment) who try to move to the public cloud will see that they cost significantly more to run, because Category 1 workloads have an excessive number of JVM containers and often track to being CPU bound. At least if these systems are first virtualized, it gives them an opportunity to meter the usage more appropriately and then consolidate where needed, and then consider pushing the workloads to the public cloud. When the workload is virtualized, pushing it to a public cloud is a relatively straightforward matter of moving over files.

Conclusion

In closing, making a Java platform virtualization decision these days almost always centers around one of the ten reasons presented in here. While these reliability, cost efficiency, availability, and scalability reasons are quite exciting, what’s most impressive is that you can achieve all of the while still maintaining really good performance.

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020