Part 1 – Node.js application on the IBM Cloud – Cloud Foundry

cloud-foundry-logoI am writing blog entries to coincide with my new YouTube videos. I have started a series of videos exploring many of the capabilities of the IBM Cloud. Part 1 focuses on deploying a simple Node.js application to the IBM Cloud using Cloud Foundry. Please watch the video and give me your feedback. CF is still a viable deployment platform and IBM will continue to provide this as a first class citizen.

One thing I didn’t point out in the video. The full Cloud Foundry command line is available as a part of the IBM Cloud CLI. IBM does not force you into a customer flavor of Cloud Foundry in any way.

CF was the foundation of the original IBM Cloud. Everything was built on top of the CF ideas of orgs, spaces, and the Cloud Foundry service broker. IBM was and still is the single largest Cloud Foundry implementation.

But things have changed. The emergence of Kubernetes and the realization that deploying new CF services around the world is not nearly as quick and nimble as necessary. Deploying new cloud services in new regions of the world requires manual work. With the IBM Cloud growing to new regions and data centers every day, having to manually run procedures and configure things is not the fast enough.

So IBM made the choice to change the underpinnings of its cloud. IBM went full in on Kubernetes and Kube is now the foundation of the IBM Cloud. IBM still supports CF but there is now a Kube layer in the middle that allows IBM to create and offer new services in new regions in a fully automated way. This has drastically impacted IBM’s ability to propagate new services around the globe to new regions quickly.

The other challenge that IBM needed to tackle was providing a dedicated Cloud Foundry offering. There is a large set of customers that don’t like the multi-tenant idea when it comes to their cloud platform. They don’t want noisy neighbors and they want some assurance that they are running their workloads on an isolated platform. This posed a problem. Setting up a dedicated Cloud Foundry instance was a very manually intensive process. Dedicated hardware needed to be acquired and then a customer implementation of Cloud Foundry deployed to it. IBM did it and it didn’t scale.

So IBM ventured out to try and containerize Cloud Foundry. This was done a bit ahead of the Cloud Foundry Foundation but has since become embraced as a first class project within the foundation. Read about it here and here. What does this do for me? This now allows one to spin up a new instance of the Cloud Foundry Application Runtime on top of a Kubernetes cluster by simply deploying a Helm chart. Voilà. We now have a way to offer on-demand Cloud Foundry instances using Kubernetes as the underlying platform. Since we can control all types of networking things with Kube clusters, IBM can now offer dedicated and siloed private implementations of Cloud Foundry running in the public cloud. Go get yourself one here.

cfeeOn-demand Cloud Foundry has been a game changer. My opinion is that this will become the standard way to get Cloud Foundry in the IBM Cloud sometime in the future.

By the way, this has also allowed IBM to provide Cloud Foundry as an offering on top of the IBM Cloud Private solution. Another key advantage of containerized Cloud Foundry.

Cloud Foundry continues to remain popular with developers. And why not, it is simple and easy and removes from developers any reason to think about plumbing. But there is no arguing with the fact that Kubernetes is currently the thing. This explains the Cloud Foundry Organization’s Eirini project which allows you to run Kubernetes instead of Diego as the Cloud Foundry orchestration engine.

Advertisements

What is Your Path to the Cloud?

I think it is fair to say that the data center is dead. It was never even alive for newer organizations or startups as they began in the cloud. But I will wager that every organization, large or small, has a “plan” to get to a cloud-based application runtime model. Let’s take a look at how you might get there.street-731820_1280

First, let’s start with the end in mind and look at what we all should be shooting for. As we speak (if you read this in the not too distant future this may not be the case), I do not believe anyone can argue that the North Star of application architectures is a micro-services container architecture managed by Kubernetes orchestration. If you haven’t jumped on the container bandwagon you are too late. The same can be said for Kubernetes as the orchestration choice. It is the de facto winner and we shouldn’t even waste time with other orchestration options. Kube has won. (That is until the next big thing, maybe I will have to write another blog entry on serverless sooner than anyone thinks). And to take advantage of all of the cloud services out there (object storage, DBaaS, streams, AI, blockchain, …) we need to deploy our Kube clusters in the cloud. So, if we know what the target looks like, how do we get there. Let’s take a look at a few paths to get there.

Containers and Kubernetes Inside the Firewall

So you want to build containerized applications and deploy them to a Kube cluster, but you are not comfortable with building your own Kube cluster and integrating all of the open source capabilities you need for a first class enterprise application platform. Why not start with one already built for you that you can run in-house? IBM Cloud Private (ICP) is your answer. ICP is a pre-built Kubernetes platform with many, many open source capabilities already built in (Helm, Terraform, Prometheus, Grafana, …). ICP also has become the target platform for new deployment models of IBM Middleware. WAS, MQ, DB2 all have versions certified and ready to deploy on ICP. Many other open source components are also available (MongoDB, RabbitMQ, Redis, …). You can deploy on almost any platform (bare metal, VSIs, OpenStack, VMWare, OpenShift, AWS, Google, …). You can even deploy Cloud Foundry on top of ICP for your own private CF environment. ICP also comes with Cloud Automation Manager, which is a Terraform deployment built it. It includes Transformation Advisor, which is a tool to help you analyze existing IBM stack apps and help you understand the work needed to “containerize” it. And the newest member of the family, Multi-Cloud Manager, helping you manage deployments across numerous ICP installations. Lot’s to absorb and lots to consume. But it is all integrated and configured for you. This is a great way to get started.

Private Cloud off-prem?

Maybe you are ready to go to cloud but are not excited with the “public” part of cloud. IBM leads the industry in “private” access to its public cloud. The first step is to create a dedicated connection to the IBM Cloud. This might be a VPN solution or most likely a Direct Connect implementation. Then, many of IBM Cloud services offer the concept of a private end point. In AWS when you create an S3 bucket you are given a public URL. With IBM’s Cloud Object Storage, you can get a private end-point that is not accessible via the public internet. You get all of the benefits of on-demand public cloud services but the security of direct access only via your private connection. On the IBM Cloud, you can create your own on-demand Cloud Foundry instance only accessible by your organization. With the IBM Cloud you can keep the “public” out of your solutions.

Lift-and-Shift / Extend to the Cloud

If your primary driver of going to cloud is to get out of the data center business, you have many options to get you there. But let’s address the gorilla in the room first. This is not necessarily a cost savings strategy. Simply lifting and shifting your existing application portfolio to be cloud hosted is not a recipe for cost savings. All of the benefits of containers and Kube are based on agility and speed and applications that are static and monolithic do not take advantage of the benefits of cloud. But there may be many reasons why getting out of the data center is a driver to the cloud. Hardware refreshes, aging data center facilities, want out of an outsourcing contract, etc, are all legitimate reasons.

Lifting and shifting is all about utilizing what you already know. Going the virtual server instance route can be relatively easy if you already have experience in virtual servers, which is almost a given these days. But creating virtual servers and re-hosting an application is time consuming and error prone as it involves lots of testing. Cloud VSIs are usually not the same as the one running your app. Better yet, if you as an organization use VMWare you can extend your VMWare infrastructure into the cloud. The IBM VMWare Cloud solution allows you to create a VMWare environment in the IBM Cloud and simply extend the tools and skills that you already have. No new tools to learn. No new skills to obtain. Continue to do what you do today. And you can use VMWare capabilities like HCX to quickly move VMs out of your data center and onto the cloud.

Testing / Development in the Cloud

Maybe you have started your journey to containers but the projected timeframe to get there is daunting. And you don’t want to continue to invest in internal infrastructure to “support” the existing applications you have that aren’t going away any time soon. The IBM Cloud for Skytap might be just what you need. Skytap is an environment-as-a-service offering. You take snapshots of existing running applications. These snapshots include everything including network configurations. You can then create new instances of these environments on-demand. This allows developers to create full environment in the cloud for development and testing without any need for additional resources in your data center. This also gives your cloud-native developers legacy application environments to be able to do their transformation work.

The IBM Focus

The journey to the cloud is more than half the battle. IBM takes a huge leadership position in helping you get to your ultimate cloud architecture. IBM also takes a very hard stance in that multi-cloud will be the norm. The Multi-Cloud Manager is the first entry in helping you manage a multi-cloud strategy. Stay tuned for more.

Next time, I will look at the IBM Kubernetes Service, a fully managed Kubernetes platform in the IBM Cloud.