How do organizations run large-scale applications with a team of developers while deploying changes hundreds of times per day without breaking things?
History of Server-Infrastructure
Server-Infrastructure in 1970
In 1970 we had large Mainframe computers.
They were primarily used for corporate and governmental organizations because they needed bulk data (Census, Statistics, Transaction Processing).
All in all server-infrastructure was very expensive.
Server-Infrastructure in 1995
Humans did collaborate on creating and managing applications.
The produced code needs to be pushed over the operations wall into the production environment.
The old story about Server-Infrastructure
Server-Infrastructure hinders to quickly react to customer needs.
The product to market time was very long and was a cost center.
And developers mashed in a quick change before going on vacation.
We need to optimize Infrastructure work
- Creating a fast flow of work as it moves from Development to Operations so it can get to the customer
- Shorten and amplify feedback loops, so we can fix quality at the source and avoid rework
- The business requires change. But manual change is the root cause of most outages!
What can we do?
a.) Discourage change in the interests of stability or
b.) Allow change to happen as often as it needs to
“Lowering risk of change through tools and culture!”
What is Virtualization?
Virtualization basically allows one computer to do the job of multiple computers, by sharing the resources of a single hardware across multiple environments.
- Possibly the single most important issue in infrastructure
- Started a top-to-bottom overhaul of the computing industry
- An abstraction of the computer hardware that allows a single machine to act as if it were many machines
- Way of fully utilizing physical resources to minimize the investment in new hardware
- Stands under your desk
- Runs a single operating system (e.g. Windows)
- You use all its resources
- Most of the resources are underutilized
- There is no virtualization going on
“Non virtualized” system
A single operating system owns all hardware resources
- Can run multiple operating systems at the same time
- Resources are divided among the virtualized systems
- Resources are therefore efficiently used
It makes it possible to run multiple virtual computers on a single physical platform
- We have one very powerful computer in a server room
- On your desk is a smaller computer that connects to the powerful one
- The powerful computer shares its resources with the smaller one
- The user experience is the same
- We also call such a powerful computer a “server”
What are servers?
- Can mean: a very powerful computer
- Can also mean: a computer that provides a service (e.g. website)
- This means that there could be multiple servers (provides) inside a single server (powerful computer)
How does this work?
- Virtualization technology emulates real computing resources
- It creates virtual environments that allow multiple workloads to run on one computer
- It hides the physical components (hard drive, memory etc.)
- We also call a virtual computer a virtual machine
- A virtual machine (VM) is a software-based emulation of a computer
- Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer
- Implemented as software
- Performance can vastly be improved if the hardware supports virtualization. Then no slow software based emulation is needed anymore
“Virtualization uses a combination of software and hardware engineering that creates Virtual Machines (VMs)”
Reasons for Virtualization
- Business requirements are driving a rapidly evolving technology landscape
- Virtualization is a key technology used in data centers to optimize resources
- Data centers are becoming “service centers” that must deliver applications on demand and respond to changing customer requirements with speed and flexibility
- Enterprises need greater optimization and efficiency beyond simple consolidation and provisioning of systems
- Provisioning Multiple Test Environments
- Providing as much resources and performance as the tests need
- Therefore, removing the need to run only a small part of the tests to save resources
- You can run the whole test suite without worrying about performance
9 great things Virtualization lets you do
1 Reuse old hardware
- You can turn old, less powerful computers into thin clients, wiping out the need for a workstation upgrade budget
2 Make a backup of your server for emergencies
- Virtualizing servers allows you to copy across any existing virtualized server installation to a backup storage
- Creating backups of existing server installations via virtualization provides redundancy if a catastrophe happens to your existing server
- All you have to do is boot up the backup image and then continue as usual
3 Run headless for development
- Most virtualization software allows the virtual machine to run headless, which is to say, without displaying a desktop
- The VM runs in the background and can accept all other kinds of connections, such as networking
- For software developers, this offers the possibility of running their own private server for testing purposes
4 Create a Personal Cloud Computer
- If you’re out of the office, there’s no need to take your laptop with you
- Access the laptop via a Remote Desktop Protocol (RDP) connection over the Internet
- This even works on your Smartphone or Tablet
5 Run Linux on top of windows
- You can run just about any operating system (OS) inside a virtual machine
6 Test software, upgrades or new configurations
- Use your virtual computer to test new software, updates, or even new configurations of software before you roll them out for real on your main OS
- Use it to create a copy of an existing installation of an OS, plus its data, which you then run virtualized and play with to see if configuration changes or updates will cause any harm
7 Browse in complete safety
- Why not install Windows on a VM, then install Firefox, and use it to surf the web. Malicious code is limited to the virtual machine!
8 Access Virus-Infected Data
- Most virtualization software includes snapshot functionality, which means you can create a “saved state” of the virtual OS and its entire hard disk
- It’s a little like traveling back in time
- You could create a snapshot in the VM, open the infected file within the VM to access the data and, if the virus causes chaos, simply click to restore the VM snapshot
9 Run old apps
- Want to run some old Windows 95 tools?
- Install a VM with an old OS
- This essentially decouples the software lifecycle from the hardware lifecycle
Imagine the possibilities…
- When it comes to running business services
- Scaling high-performance applications
- Data security and fault tolerance
- Speeding up local development
Advantages of Virtualization in large enterprises
Increased server utilization
- By using resources more efficiently, you need a smaller number of servers to run your business
Lower operating expenses
- A smaller number of servers means less power consumption
- Save on capital expenditures for new server equipment
- Whatever system you need for your software to run, a VM can emulate it and give it to you very fast
- What took days/weeks, now only takes minutes
Hardware / Location independence
- The actual hardware (hard disk, memory etc.) being used in the server does not matter to the VM
- It doesn’t matter if your servers are very close to you or far away
- You don’t even need to know!
- Whenever you need more server power to do the job you can simply start more Virtual Machines
- By being able to have more identical servers as virtual machines, you don’t have to be afraid of server failure
Flexible, rapid provisioning
- Provisioning: To install and setup a new system
- Provisioning traditional systems is an expensive and time-consuming process for any organization
- Virtualization tools provide organizations with a rapid, flexible provisioning capability to support their enterprise requirements
Simplified workload mobility
- Perform hardware maintenance or upgrades while minimizing downtime by moving your VMs to another server
- Manage server resources by automatically migrating unusually busy workloads
- Maintain business continuity when an outage or disaster occurs by moving workloads to other physical hosts
- Not all workloads are active at the same time
- Customer related software is important during business hours, shipping related software may peak in the afternoon
- Virtualization allows you to take advantage of these asynchronous workloads by shifting them to other servers
- Developers can write code and deliver this code to Production in mere minutes
- With a classic environment this could have taken weeks
- Multiple on demand, production-like environments for Development (coding and testing)
“By adapting Virtualization, a company can increase its development efficiency and productivity immensely!”