Recently I took a look at Cloud Foundry in the SAP Cloud Platform. Having used the NEO environment in the SAP Cloud Platform for several years, it was important to me to understand the differences between the two.
What is Cloud Foundry? Why would I use it, and how is Cloud Foundry in the SAP Cloud Platform different than NEO in SAP Cloud Platform?
Having attended SAP TechEd in 2017, I was able to see it in action during one of the hands-on sessions…but that was it up until now. For the past couple of months I researched SAP Cloud Foundry, built a small application, and now want to share what I’ve learned.
Nearly all the content below is derived from other sources. I’ll do my best to give credit where it is due.
In a follow up blog, I’ll post the steps to create a trial SAP Cloud Foundry account and how to deploy a web application that binds to an hdi-shared HANA service instance.
What is Cloud Foundry?
Cloud Foundry is in open source, multi-cloud application platform and is governed by the Cloud Foundry Foundation – www.cloudfoundry.org. Cloud Foundry has a container-based architecture that runs applications in any program language.
Cloud Foundry is an industry standard Platforms as a Service (PaaS) technology for developing and deploying cloud applications in both private and public cloud environments. It is designed to run on a variety of Infrastructure as a Service (IaaS), such as Amazon Web Services, OpenStack, Google Cloud Platform and Microsoft Azure. It enables developers to use different programming languages, runtimes and data / backing services. SAP is a founding Platinum level member of the Cloud Foundry Foundation, which oversees the development of Cloud Foundry Software and ecosystem.
Reference: SAP Cloud Platform Public Wiki / SAP Cloud Platform https://wiki.scn.sap.com/wiki/display/SAPHCP/Cloud+Foundry+environment+within+SAP+Cloud+Platform%3A+FAQ
The SAP Cloud Platform Cloud Foundry environment is managed by SAP and has its own network controlled by SAP on top of the supporting infrastructure providers. Depending on the SAP availability zone, the Cloud Foundry infrastructure may be either AWS, Google Cloud Platform or Microsoft Azure.
Reference: SAP Cloud Platform Regions https://help.sap.com/doc/aa1ccd10da6c4337aa737df2ead1855b/Cloud/en-US/3b642f68227b4b1398d2ce1a5351389a.html
Reference: Environments – Supported and Unsupported Features: https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/ab512c3fbda248ab82c1c545bde19c78.html
Cloud Foundry Architecture
I found a very good basic tutorial on Cloud Foundry, “Cloud Foundry: From Zero to Hero” from which I derived a quick summary of the Cloud Foundry architecture.
Reference: Cloud Foundry: From Zero to Hero http://basics-workshop.cloudfoundry.org/slides/#/
- Every application and service are scoped to a space
- Organizations segregate tenants in a Cloud Foundry installation
- Quotas provide resource limits to orgs and spaces
- Apps are started on specialized VMs called cells
- If it’s a web process, it binds to a TCP port
- Instances are distributed across multiple cells
- Router distributes traffic across instances
What happens when you push an application up to Cloud Foundry “cf push”?
- Upload: App files sent to CF
- Staging: Executable artifact is created (droplet)
- Running: App starts on an app host
- App receives web requests (if it binds to TCP port)
- Buildpacks create a runnable artifact called a droplet
- App Files + Runtime Dependencies = App Artifact (droplet)
HANA Databases in Cloud Foundry – SAP HANA Service
Cloud Foundry supports creating and consuming SAP HANA databases using the SAP HANA Service.
The SAP HANA Service allows you to leverage the in-memory data processing capabilities of SAP HANA in the cloud. As a managed database service, backups are fully automated and service availability guaranteed. Using the SAP HANA service, you can set up and manage SAP HANA databases and bind them to applications running on SAP Cloud Platform. You can access SAP HANA databases using a variety of languages and interfaces, as well as build applications and models using tools provided with SAP HANA.
Reference – What is the SAP HANA Service https://help.sap.com/viewer/a36ee1aa073e4e8e840573fb30a72d95/Cloud/en-US
In the Cloud Foundry environment in SAP and Azure regions, space developers can install SAP HANA database systems in their space and create tenant databases on these systems. They then can create schemas and HDI containers on the tenant databases and bind them to applications running on SAP Cloud Platform. To do so, they create service instances using the different services available for the SAP HANA service.
Reference – Introduction to the SAP HANA Service in the Cloud Foundry Environment in SAP and Azure Regions: https://help.sap.com/viewer/a12d484310c847d2bb7ce1f0283cdb1e/Cloud/en-US/6ac30883e3e6445ba1b35fa002ca0247.html
An SAP HANA database system is associated with a particular space and is available to applications in this space. You can administer the database system and its databases using the SAP Cloud Platform cockpit or the Cloud Foundry command line interface (CF CLI).
What is the SAP Cloud NEO Environment?
The SAP Cloud NEO environment is a development environment that supports Java, SAP HANA XS and HTML5 applications. Applications run in a modular and lightweight runtime container. Management of the HANA database is performed either in the SAP Cloud Platform using the Cockpit or WebIDE, or by using a local version of Eclipse configured with the SAP Hana Tools. Virtual Machines are available in the European, Australia and US East landscapes, and only in the NEO environment. (As of October 2018)
My primary experience has been using the SAP NEO environment in the SAP Cloud Platform. Web applications can be deployed within a runtime container and executed within an embedded Tomcat runtime engine. Connections to an SAP HANA database also in the SAP Cloud Platform are made using Data Source Bindings and supporting files can be stored within a document service.
When to Use Which Environment? NEO or Cloud Foundry?
SAP provides a good high level case analysis:
Use Cases for the Cloud Foundry Environment
Application developers can use the Cloud Foundry environment to enhance SAP products and to integrate business applications, as well as to develop entirely new enterprise applications based on business APIs that are hosted on SAP Cloud Platform. The Cloud Foundry environment allows you to use multiple programming languages such as Java, Node.js, and community/bring-your-own language options. We recommend that you use the Cloud Foundry environment for 12-factor and/or micro-services-based applications, for Internet of Things and machine learning scenarios, and for developing applications using SAP HANA extended application services, advanced model (SAP HANA XSA).
Use Cases for the Neo Environment
Neo is a feature-rich and easy-to-use development environment, allowing you to develop Java, SAP HANA XS, and HTML5 applications. We recommend that you use the Neo environment to develop HTML5 and complex Java applications and for complex integration and extension scenarios.
Reference: Environments – When to Use Which Environment? https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/ab512c3fbda248ab82c1c545bde19c78.html#loioab512c3fbda248ab82c1c545bde19c78
Capabilities and Features Comparison
An analysis can be found in a blog written in April 2018 by Hakan Yerlikaya, with BuQuaTi, that provides a good comparison between the SAP NEO and SAP Cloud Foundry environments.
Reference: Haken Yerlikaya’s Blog on SAP Cloud Platform NEO vs Cloud Foundry: http://buquati.com/blogs/sap-cloud-platform-neo-vs-cloud-foundry-cf/
For me, the main take-aways from Hakan’s blog:
- One of the primary qualities of SAP Cloud Foundry is Micro Services Compliance. Develop, deliver and administer isolated units of software.
- SAP Cloud Foundry offers Multi-Target Applications. Modules can be written in different technologies and deployed to different targets, but all serving a particular purpose. The positive consequence of using Cloud Foundry is once written, the MTA can be deployed on any platform (AWS, GCP, Azure or SAP CF).
- SAP NEO is simpler to use and more mature on SAP Cloud Platform. SAP Cloud Foundry has a larger learning curve and requires a larger investment in application development and administration, however appears to be the future for cloud development.
- SAP Cloud Foundry uses Maven and Spring tools and supports internal tools such as GitHub and Jenkins.
A good graphic that shows fully what is provisioned in Cloud Foundry is below and can be found at https://docs.cloudfoundry.org/concepts/overview.html. The SAP NEO environment does also provide the runtime containers, however libraries and development artifacts need to be included in your application.