5 Emerging Technologies — a 101 to Cloud, Microservices, & more

Vincent Cheng
IBM DCPE Group
Published in
9 min readMay 5, 2020

While the rate of businesses adopting cloud technology has continually increased in the last decade — virtual machines, containers, and Kubernetes are all leading edge technologies that surround cloud computing, and consequently increase our need for understanding these terms.

As a budding technologist in the field of technical sales, I needed to quickly grasp these concepts to keep up in the conversation, let alone add value to my team and clients. To reinforce my own learning, I have simplified these five key concepts: cloud computing, microservices, virtual machines (VM), containers, and Kubernetes. Every explanation and example I use are — at best — a high level overview on my understanding of these technologies and what the importance is. Whether you are an early career professional like me in the world of tech, or an established long-time business guru looking for simplified definitions, I hope my ideas can help you feel comfortable to incorporate some of these concepts into your daily conversations.

What is Cloud computing?

Cloud computing, or the cloud, is the on-demand delivery of computing resources via the internet.

It’s like giving your IT department thermostats that they can turn on, up, down, or off based on their needs. Need extra processing power to cover your peak period? Crank it up — and then turn it down when you’re finished.

To understand why cloud is such a big deal, I want you to think about how businesses operate for a moment.

Today, most large enterprises still own and maintain hardware systems, mainframes, data centers, applications in their own location or facility, also known as on-premises (or on-prem). With an on-prem model, on-site operation teams need to maintain how much core processing units (CPUs), RAM, and disk space are needed to run day-to-day operations in their data centers. This can be quite expensive when there are many servers to manage. For that reason, the option to move to a cloud environment: either public cloud or private cloud is more appealing. At the end of the day, cutting down on costs using a cloud environment will save more money for businesses.

Public cloud is a type of cloud computing in which a third-party service provides computing resources.

Private cloud is a cloud computing environment in which all hardware and software resources are dedicated exclusively to a single customer.

One advantage of utilizing cloud computing is the option to pay-as-you go. This can save businesses money because instead of spending on capital expenses and maintenance, they can use a subscription model to offload the resources needed to run and maintain their environment. Not only do businesses save money with a pay-as-you go service using a cloud, it is much faster and efficient to build an application. When an internal IT development team is asked to build an application and they don’t have enough resources, they would need to buy those servers, install them, and configure them — which all takes a lot of time. Therefore, moving and migrating to a cloud is advantageous as it can provide the necessary configurations, maintenance, and implementation.

At the same time, not all businesses are going to want to move to the cloud for security purposes. And not every business should move to full cloud.

And that’s why at IBM, there is a hybrid cloud mentality.

A hybrid cloud is a mixture of a public cloud and a private cloud, allowing data and applications to be moved, developed, and shared between the two clouds. You can read more here.

What are Microservices?

Now, once a business has decided to move to a private, public or hybrid cloud, they have to be able to move their application(s) over to the new cloud environment. But there might be some problems doing this.

Up until recently, applications have been developed as a single unit, constructed using custom technologies. As you can imagine, the more features and code you add to the application, the more complex it becomes. As a result, a monolithic application or a very large, single unit application is born. This makes it hard to update and scale across an entire business because when one feature of the application is changed, there is a ripple effect across the entire application. To change a feature, the entire application needs to be first taken down, halting business operations, then re-deployed back into the environment — causing a lot of downtime and frustration for workers.

Let’s discuss how microservices can fix some of those problems. Microservices can break apart a monolithic model into small, separated and independent processes — speeding up the development and deployment times for software developers. It helps to frame microservices with another technology that disrupted the way people work: The invention of the assembly line.

In the early 1900s, single team of workers were required to manually assemble an automobile from start to finish. Workers were responsible for all the tasks at once: building the parts, putting together the parts, and constantly switching without any specialized focus to build one automobile. It was time-consuming, labor intensive and there were no standardization to any process. As a result, Henry Ford struggled to keep up with the automotive demand using this method.

In 1913, Henry Ford strategized and pioneered the invention of the assembly line for cars to be assembled more efficiently. His assembly line innovation reduced the time it took to build a car from more than 12 hours to 2.5 hours. Not only was the company able to satisfy the demand but they were able to figure out a way to build cars faster than ever before, disrupting the entire automotive industry.

Just like what the assembly line did for car parts, a microservice model offers standardized, modularized blocks of code for individual processes that can be plugged in for a cleaner and more efficient build. Microservices take a monolithic application and break it down into services and components. For example, a banking application can consist of a deposit money feature, loan application feature, checking account feature, etc. which are all independent of one another, using APIs (or application programming interface) to talk to each other.

What is the benefit of doing this? If you want to update a feature, you can now make changes to that one feature without it rippling across the entire banking application. As technology becomes more ingrained into businesses, there needs to be a smart way to simplify, standardized and scale applications which is what microservices allows you to do.

What are Virtual Machines and Containers?

Virtual machines (VMs) and containers are both commonly used for developers to develop applications. A virtual machine is an emulation of a computer, i.e using a Windows operating system (OS) on a Mac.

Imagine a teammate who still uses Windows 10 operating system and you are a developer using Mac. You have two options: one, install Windows 10 on your Mac computer (which would be a disaster) or two, download a virtual machine software. You decide option two and install a VM on your Mac computer, which will create buckets for you to install the Windows 10. Now you run both operating systems and can use Windows 10 on your Mac. Why would you want to do this? So that you can have precisely configured, operating systems for testing and development purposes.

Containers and VMs are similar in their goals: to isolate an application and its dependencies into a self-contained unit that can run anywhere. Both remove the need for physical hardware, allowing for more efficient use of computing resources, in terms of energy consumption and cost effectiveness.

A lot people that were using virtual machines before are now moving to containers because it is much easier to use and takes up less space. Similar to a virtual machine, a container is the smallest unit of an application of software. They are “lightweight” since it does not include a guest OS, saving more disk space.

Let’s use an iPhone as an example. If you’re like me, you probably have more than one app on your iPhone. If you wanted to download more applications in a virtual machine setting, it would be hard because there is not enough compute capacity — i.e. you wanted four iPhone apps, well you would need four separate iPhones for those apps. What containers allow developers to do is to simulate an operating system and scale those applications, allowing you to put all four applications all into one single container. Containers also have the bare minimum of what that application needs to run — so you save more money on compute capacity.

Should everyone use containers? No, containers (while super powerful) become more important as the project becomes bigger and scales more. When this happens, there also needs to be a way to manage all of the containers created in an application — which brings us to Kubernetes.

What is Kubernetes?

As more applications and containers are being developed, Kubernetes was created to manage containers in an microservices environment.

Kubernetes is an open source project, meaning anybody is free to use, study, modify, and distribute it for any purpose.

Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.

Openshift is a product built by Red Hat (the world’s leading provider of enterprise open source solutions) who enhanced the Kubernetes project by adding features to support large enterprises — essentially enterprise support for an open source platform. With enterprise support, you can get guidance on how to better manage your IT ecosystem and have the right experts resolve technical roadblocks, instead of having to fix those issues yourself. An example of enterprise Kubernetes support would be Redhat Openshift.

Why does this matter?

Let’s put all the concepts together in an example. Say you work at a bank and you need an application for customers to handle all their banking needs whether on a phone or computer.

  1. You develop an application using a cloud environment; why do this? You don’t have to manage the infrastructure, you don’t have to pay the overhead to host the servers, so you will be able to add more features without having to buy a computer for more capacity, saving you money and time.
  2. You build the application using a microservices architecture which consists of different features: a user interface, a deposit function , and so on — every feature or function will be its own microservice; why do this? if one feature is used more frequently and has a lot more demand than another feature, you can scale it up dynamically and not waste resources.
  3. You deploy these microservices with containers; why do this? Because it’s easy, it’s simple, and scalable as you have more customers using the application. Now you want to be able to manage your containers with Kubernetes so you can scale as you need to.
  4. You manage your containers using an enterprise ready Kubernetes; why do this? When an application, feature, or function breaks, you can get an enterprise support team (i.e Redhat Openshift) to fix it, instead of you having to fix the bug/code yourself — saving you frustration and time.

IBM is helping enterprises use these fundamental technologies in their modernization journey through products and services like: Cloud Paks, Global Technology Services, Global Business Services and Redhat Openshift.

Thank you for reading, I welcome any feedback, questions, or discussions over in the comment section below! You may also reach me at vincent.cheng@ibm.com.

— — — —

Editor(s) — Robin (Lawson) Dewberry, Leslie Rodriguez

Disclaimer: All content is based on personal views, thoughts, and opinions expressed and not necessarily to my employer, organization, committee or other groups. All hyperlinks to third party sites are solely for informational purposes and not in anyway affiliate advertisements.

--

--

Vincent Cheng
IBM DCPE Group

Data & AI Technology Specialist at IBM interested in: Technology, analytics, design and entrepreneurship