Cloud resources can be expensive, especially when you are forced to pay for resources that you dont need; on the other hand resource shortages cause downtimes. Whats a developer to do? In this article we will discuss techniques for determining the golden medium that lets you pay for just the resources you actually consume, without being limited as your application capacity requirements scale.
The first step to any solution of course is admitting that you have a problem. Below are some details on the issue that many cloud users face.
Almost every cloud vendor offers the ability to choose from a range of different VM sizes. Choosing the right VM size can be a daunting task; too small and you can trigger performance issues or even downtimes during load spikes. Over-allocate? Then during normal load or idle periods all unused resources are wasted. Does this scenario look familiar from your own cloud hosted applications?
And when the project starts growing horizontally, the resource inefficiency issue replicates in each instance, and so, the problem grows proportionally.
In addition, if you need to add just a few more resources to the same VM, the only way out with most of current cloud vendors is to double your VM size. See the sample of AWS offering below.
(Click on the image to enlarge it)
Exacerbating the problem, you need to incur downtime when you move, by stopping a current VM, performing all steps of application redeploy or migration, and then dealing with the inevitable associated challenges.
This shows that VMs are not quite flexible and efficient in terms of resource usage, and limits adjustment according to variable loads. Such lack of elasticity directly leads to overpaying.
If scale out is not helping to use resources efficiently, then we need to look inside our VMs for a deeper understanding of how vertical scaling can be implemented.
Vertical scaling optimizes memory and CPU usage of any instance, according to its current load. If configured properly, this works perfectly for both monoliths, as well as microservices.
Setting up vertical scaling inside a VM by adding or removing resources on the fly without downtimes is a difficult task. VM technologies provide memory ballooning, but its not fully automated, requiring tooling for monitoring the memory pressure in the host and guest OS, and then activating up or down scaling as appropriate. But this doesn't work well in practice, as the memory sharing should be automatic in order to be useful.
Container technology unlocks a new level of flexibility thanks to its out-of-box automatic resource sharing among containers on the same host, with a help of cgroups. Resources that are not consumed within the limit boundaries are automatically shared with other containers running on the same hardware node.
And unlike VMs, the resource limits in containers can be easily scaled without reboot of the running instances.
As a result, the resizing of the same container on the fly is easier, cheaper and faster than moving to larger VMs.
There are two types of containers application and system containers. An application container (such as Docker or rkt) typically runs in as little as a single process, whereas a system container (LXD, OpenVZ) behaves like a full OS and can run full-featured init systems like systemd, SysVinit, and openrc, that allow processes to spawn other processes like openssh, crond, or syslogd, together inside a single container. Both types support vertical scaling with resource sharing for higher efficiency.
Ideally on new projects you want to design around application containers from the ground up, as it is relatively easy to create the required images using publicly available Docker templates. But there is a common misconception that containers are good only for greenfield applications (microservices and cloud-native). The experience and use cases prove possibility to migrate existing workloads from VMs to containers without rewriting or redesigning applications.
For monolithic and legacy applications it is preferable to use system containers, so that you can reuse architecture, configuration, etc., that were implemented in the original VM design. Use standard network configurations like multicast, run multiple processes inside a container, avoid issues with incorrect memory limits determination, write on the local file system and keep it safe during container restart, troubleshoot issues and analyze logs in an already established way, use a variety of configuration tools based on SSH, and be liberal in relying on other important "old school" tasks.
To migrate from VMs, monolithic application topology should be decomposed into small logical pieces distributed among a set of interconnected containers. A simple representation of the decomposition process is shown in the picture below.
Each application component should be placed inside an isolated container. This approach can simplify the application topology in general, as some specific parts of the project may become unnecessary within a new architecture.
For example, Java EE WebLogic Server consists mainly of three kinds of instances required for running in a VM: administration server, node manager and managed server. After decomposition, we can get rid of the node manager role, which is designed as a VM agent to add/remove managed server instances, as now they will be added automatically by the container and attached directly to administration server using the container orchestration platform and a set of WLST (WebLogic Server Scripting Tool) scripts.
To proceed with migration, you need to prepare the required container images. For system containers, that process might be a bit more complex than for application containers, so either build it yourself or use an orchestrator like Jelastic with pre-configured system container templates.
And finally, deploy the project itself and configure the needed interconnections.
Now each container can be scaled up and down on the fly with no downtime. It is much thinner compared to virtual machines, so this operation takes much less time compared to scaling with VMs. And the horizontal scaling process became very granular and smooth, as a container can be easily provisioned from the scratch or cloned.
For scaling Java vertically, it is not sufficient to just use containers; you also need to configure the JVM properly. Specifically, the garbage collector you select should provide memoryshrinking in runtime.
Such GC packages all the live objects together, removes garbage objects, uncommit and releases unused memory back to the operation system, in contrast to non-shrinking GC or non-optimal JVM start options, where Java applications hold all committed RAM and cannot be scaled vertically according to the application load. Unfortunately, the JDK 8 default Parallel garbage collector (-XX:+UseParallelGC) is not shrinking and does not solve the issue of inefficient RAM usage by JVM. Fortunately, this is easily remedied by switching to Garbage-First (-XX:+UseG1GC).
Lets see the example below. Even if your application has low RAM utilization (blue in the graph), the unused resources cannot be shared with other processes or other containers as its fully allocated to the JVM (orange).
(Click on the image to enlarge it)
However, the good news for the Java ecosystem is that as of JDK 9, themodern shrinking G1 garbage collector is enabled by default. One of its main advantages is the ability to compact free memory space without lengthy GC pause timesand uncommit unused heap.
Use the following parameter to enable G1, if you use JDK lower than 9th release:-XX:+UseG1GC
The following two parameters configure the vertical scaling of memory resources:
Also, the application should periodically invoke Full GC, for example, System.gc(), during a low load or idle stage. This process can be implemented inside the application logic or automated with a help of the external Jelastic GC Agent.
In the graph below, we show the result of activating the following JVM start options with delta time growth of about 300 seconds:
-XX:+UseG1GC -Xmx2g -Xms32m
(Click on the image to enlarge it)
This graph illustrates the significant improvement in resource utilization compared to the previous sample. The reserved RAM (orange) increases slowly corresponding to the real usage growth (blue). And all unused resources within the Max Heap limits are available to be consumed by other containers or processes running in the same host, and not wasted by standing idle.
This proves that a combination of container technology and G1 provides the highest efficiency in terms of resource usage for Java applications in the cloud.
The last (but not least) important step is to choose a cloud provider with a "pay per use" pricing model in order to be charged only based on consumption.
Cloud computing is very often compared to electricity usage, in that it provides resources on demand and offers a "pay as you go" model. But there is a major difference - your electric bill doesnt double when you use a little more power!
Most of the cloud vendors provide a "pay as you go" billing model, which means that it is possible to start with a smaller machine and then add more servers as the project grows. But as we described above, you cannot simply choose the size that precisely fits your current needs and will scale with you, without some extra manual steps and possible downtimes. So you keep paying for the limits - for a small machine at first, then for one double in size, and ultimately horizontal scaling to several underutilized VMs.
In contrast to that, a "pay as you use" billing approach considers the load on the application instances at a present time, and provides or reclaims any required resources on the fly, which is made possible thanks to container technology. As a result, you are charged based on actual consumption and are not required to make complex reconfigurations to scale up.
(Click on the image to enlarge it)
But what if you are already locked into a vendor with running VMs, and youre paying for the limits and not ready to change it, then there is still a possible workaround to increase efficiency and save money? You can take a large VM, install a container engine inside and then migrate the workloads from all of the small VMs. In this way, your application will be running inside containers within the VM - a kind of "layer-cake", but it helps to consolidate and compact used resources, as well as to release and share unused ones.
Realizing benefits of vertical scaling helps to quickly eliminate a set of performance issues, avoid unnecessary complexity with rashly implemented horizontal scaling, and decrease cloud spends regardless of application type - monolith or microservice.
Ruslan Synytsky is CEO and co-founder of Jelastic, delivering multi-cloud Platform-as-a-Service for developers. He designed the core technology of the platform that runs millions of containers in a wide range of data centers worldwide. Synytsky worked on building highly-available clustered solutions, as well as enhancements of automatic vertical scaling and horizontal scaling methods for legacy and microservice applications in the cloud. Rich in technical and business experience, Synytsky is actively involved in various conferences for developers, hosting providers, integrators and enterprises.
See the original post:
Cost Reduction Strategies on Java Cloud Hosting Services - InfoQ.com
- Cloud Hosting Service Market Size By Product Analysis, Application, End-Users, Regional Outlook, Competitive Strategies And Forecast Up To 2026 - 3rd... - July 14th, 2020
- Health Care Cloud and Hosting Market Comprehensive Survey on Demand by 2025 - Cole of Duty - July 14th, 2020
- Impact of Covid-19 on Application Hosting 2020-2027 with Focusing Key players like IBM, AWS, Google, Rackspace, etc - Cole of Duty - July 14th, 2020
- Google reportedly abandoned a cloud computing product for the Chinese market - The Verge - July 14th, 2020
- Southeast Asia Web Hosting Services Market Share, 5evelopment Status and Outlook by Players To 2020-2025 | Amazon Web Services, AT & T, Google,... - July 14th, 2020
- Migrating Your Clients to an Alternative Cloud Provider is Easier than You Might Think - Channel Futures - July 14th, 2020
- Managed Hybrid Cloud Hosting Market Size By Product Analysis, Application, End-Users, Regional Outlook, Competitive Strategies And Forecast Up To 2026... - July 14th, 2020
- Bullish Google looks to invest $10 billion over 7 years to digitize India - Livemint - July 14th, 2020
- Cloud Hosting Service Market Growth By Manufacturers, Type And Application, Forecast To 2026 - 3rd Watch News - July 8th, 2020
- Managed Hybrid Cloud Hosting Market Growth By Manufacturers, Type And Application, Forecast To 2026 - 3rd Watch News - July 8th, 2020
- Managed Hybrid Cloud Hosting Market: 2020 Global Industry Size, Share, Uses, Benefits, Trends, Growth Application, Key Manufacturers and 2026 Demand... - July 8th, 2020
- Y Soft announces YSoft SAFEQ Cloud, a New Family of Cloud-Based Print Services - What They Think - July 8th, 2020
- Industry VoicesRaynovich: The cloud is swallowing everything - FierceTelecom - July 8th, 2020
- Mohamed Arab Joins VPLS as VP of Cloud and Managed Services - PR Web - July 8th, 2020
- Dremio Dives Deep Below the Surface for the Industry's First Cloud Data Lake Conference - Business Wire - July 8th, 2020
- Astonishing growth in Cloud Communications Platform Market anticipates to grow at $ 4.4 billion by 2021, from 2016 to 2021, with CAGR of 26.8% with... - July 8th, 2020
- MediaOps' New 'Digital Anarchist' Streaming Video Platform Delivers Expert Content on What's Next In DevOps, Cybersecurity, Cloud Native and Digital... - July 8th, 2020
- Green House Data and Zerto Fast-Track Digital Transformation with Hybrid Cloud Resilience and Portability - MyHostNews.com - July 8th, 2020
- COVID-19 Impact On Cloud Hosting Service Providers Market Projection By Latest Technology, Global Analysis, Industry Growth, Current Trends And... - July 4th, 2020
- Sell-Side Technology Awards 2020: Best Cloud Provider to the Sell SideBT - www.waterstechnology.com - July 4th, 2020
- Global Cloud Hosting Service Market 2020 Analysis, Types, Applications, Forecast and COVID-19 Impact Analysis 2026 - Daily Research Chronicles - July 4th, 2020
- Green House Data and Zerto Fast-Track Digital Transformation with Hybrid Cloud Resilience - AiThority - July 4th, 2020
- Leaseweb's Five-Year Growth Exceeds Double the Market Average, Further Cementing Position as Top Player in International Cloud Hosting Market -... - July 4th, 2020
- THNQ fund from ROBO Global looks ahead to AI infrastructure growth - Robot Report - July 4th, 2020
- Bare Metal Cloud Market research, Industry Outlook, Current Trends and Forecast by 2025 - CueReport - July 4th, 2020
- Application Hosting Market | Global Industry Analysis, Segments, Top Key Players, Drivers and Trends to 2027 - Cole of Duty - July 4th, 2020
- Professional Services Automation Market Key Vendors, Analysis by Growth and Revolutionary Opportunities by 2025 - Apsters News - July 4th, 2020
- VyOS and FastNetMon Announce Integration | 2020-07-01 | Press Releases - Stockhouse - July 4th, 2020
- India bans 59 Chinese apps including TikTok and WeChat - Data Economy - July 4th, 2020
- Global Bare Metal Cloud Market with Covid-19 Effect Analysis | likewise Industry is Booming Globaly with Key Players IBM Corporation, Oracle... - July 4th, 2020
- Leaseweb's Five-Year growth Exceeds Double the Market Average, Further Cementing Position as Top Player in International Cloud Hosting Market - PR Web - June 30th, 2020
- Cloud hosting group confident on future prospects - The Business Desk - June 30th, 2020
- Connor and Scalio Announce Venture to Bring GRC and License Optimization to the Cloud - GlobeNewswire - June 30th, 2020
- What Is Cloud Computing? - World Atlas - June 30th, 2020
- Thought Machine's Vault Now Proven and Available on All Infrastructure Options: SaaS, Private or Public Cloud, Hybrid Cloud and on Premises - Business... - June 30th, 2020
- Global Application Hosting Market : Industry Analysis and forecast 2020 2027 - Morning Tick - June 30th, 2020
- Data Centers Above the Clouds: Colocation Goes to Space - Data Center Frontier - June 30th, 2020
- 'This Pandemic Has Highlighted The Importance Of Cloud System': Anand Chandra, Synechron - Express Computer - June 30th, 2020
- Southeast Asia Web Hosting Services Market 2020 Digital Learning, Growth Analysis, Industry Trends, Advanced Technologies, Services, Business Overview... - June 30th, 2020
- 4 common software maintenance models and when to use them - TechTarget - June 30th, 2020
- Applying AI and Cloud Technologies for Multivariate Control in Upstream Processes, Upcoming Webinar Hosted by Xtalks - PR Web - June 30th, 2020
- How to Host Your Own VPN with Algo and Cloud Hosting - How-To Geek - June 27th, 2020
- Web Hosting Services Market 2019 Size Overview By Industrial Application, E-Commerce Boom, Cloud Hosting, Latest Trends, New-Advancements in Internet... - June 27th, 2020
- This week in storage: Teradata in the cloud, WD Zoned SSDs and more - Blocks and Files - June 27th, 2020
- Top 10 Cloud Technology Market Exclusive insight on Transformation 2025 - Cole of Duty - June 27th, 2020
- Why you should shun unmanaged hosting and adopt managed - MOARGeek - June 27th, 2020
- E.ON selects Wipro for grid and digital transformation - Smart Energy - June 27th, 2020
- Application Hosting Market Key Players, Industry Overview, Application and Analysis to 2020-2026 - 3rd Watch News - June 27th, 2020
- Top 5 IT Certifications That Will Get You Paid in 2020 - ClearanceJobs - ClearanceJobs - June 27th, 2020
- Global personal cloud market is expected to grow with a healthy CAGR over the forecast period from 2020-2026 - Salamanca Press - June 27th, 2020
- An Introduction to Dave Antrobus, technology director of Fresh Thinking Group - Business MattersBusiness Matters - June 27th, 2020
- Uploadcare Media Pipeline for Online Business Wins at Nanjing Tech Week Competition - AsiaOne - June 27th, 2020
- JIESHUN Smart Parking and Cloud Hosting at Shenzhen Bao'an International Airport - Parking Network - June 22nd, 2020
- Cloud Computing Transforming And Revolutionising Cybersecurity In India - Inc42 Media - June 22nd, 2020
- Cloud Hosting Service Market Analysis, Top Manufacturers, Share, Growth, Statistics, Opportunities and Forecast To 2026 - Cole of Duty - June 22nd, 2020
- Global Application Hosting Market 2020 by Type, Share, Applications, Key Players, Growth, Trends and Forecast To 2026 - Cole of Duty - June 22nd, 2020
- Grading and audio post in the cloud | Industry Trends | IBC - IBC365 - June 22nd, 2020
- Serverless Architecture Market 2020 Global Trend, Segmentation and Opportunities Forecast to 2026 - Cole of Duty - June 22nd, 2020
- COVID-19 Impact and Recovery Analysis- Global Email Hosting Services Market 2020-2024 | Growing Adoption of the Bring-Your-Own-Device (BYOD) Policy to... - June 22nd, 2020
- Global Cloud Hosting Service Market Expected to Grow with a Significant Rate by 2024 Top Players : DreamHost, GoDaddy, HostGator, InMotion, Bluehost,... - June 22nd, 2020
- VPLS recognized on CRN's list of Top 500 Solutions Providers for second consecutive year - PR Web - June 22nd, 2020
- Security problems with the Employment Security Department should have been fixed last year - washingtonpolicy.org - June 22nd, 2020
- Global Cloud-based Database Market 2020 by Type, Share, Growth, Trends and Forecast To 2030 - 3rd Watch News - June 22nd, 2020
- Headliners, part I: 32 upcoming events & program deadlines in the Triangle - WRAL Tech Wire - June 22nd, 2020
- Global Network Host Service Market with Coronavirus (COVID-19) Impact Analysis | likewise Industry is Booming Globaly with Top Key Players | AT&T,... - June 22nd, 2020
- Behind the scenes of Israel's Global Data Center - Data Economy - June 22nd, 2020
- Tax small taxpayers but let the giants go? We can do better. - The Daily Star - June 22nd, 2020
- Global Data Center Outsourcing and Hybrid Infrastructure Managed Services Market Projected to Reach USD XX.XX billion by 2025- IBM, Wipro, Tata... - June 22nd, 2020
- Railway Management System Market to Eyewitness Massive Growth by 2028: Leading Key Players ABB, Alstom, Ansaldo, Bombardier Transportation, GE... - June 22nd, 2020
- All you need to know about cloud hosting - Business MattersBusiness Matters - June 9th, 2020
- Cloud Hosting Service Market 2019 Break Down by Top Companies, Countries, Applications, Challenges, Opportunities and Forecast 2026 - Cole of Duty - June 9th, 2020
- Managed Hybrid Cloud Hosting Market Set to Take Giant Positive Leap - Cole of Duty - June 9th, 2020
- Online Accounting Went Virtual on Short Notice | Online Accounting Jobs - NEC News & Events - June 9th, 2020
- Global Trade Impact of the Coronavirus on Managed Hybrid Cloud Hosting Market Reviewed in a New Study - 3rd Watch News - June 9th, 2020
- AGL announces huge shift to the Cloud - Which-50 - June 9th, 2020
- Moodle welcomes Adapt IT as a Certified Moodle Partner and strengthens presence across the Pan African market. - Moodle - June 9th, 2020
- Health Care Cloud and Hosting Market 2019 Break Down by Top Companies, Countries, Applications, Challenges, Opportunities and Forecast 2026 - Cole of... - June 9th, 2020
- UK signs cloud discount deal with Google to boost innovation - www.computing.co.uk - June 9th, 2020
- Data Breach Notification Software Market 2019 Break Down by Top Companies, Countries, Applications, Challenges, Opportunities and Forecast 2026 - Cole... - June 9th, 2020
- Triangle headliners: Previewing 71 local events & program deadlines this month - WRAL Tech Wire - June 9th, 2020