Skip to Content

Hi everyone,

with this blog post I want to briefly talk about a lecture I gave at SAP TechEd 2017 in Las Vegas, Bangalore and Barcelona. It is about XS Advanced Programming Model and how you can use that with Cloud Foundry. The session is also available as a video recording on SAP TechEd Online here:

Introduction

SAP Cloud Platform is SAP’s Platform-as-a-Service offering for extensions of our on premise and cloud products and to build new innovative solutions. Currently, SAP Cloud Platform consists of two environments. The Neo Environment, which went productive in 2012, and then the Cloud Foundry Environment, which went productive in May, 2017 at SAPPHIRE NOW.

We introduced XS Classic as a lightweight web application server with a server-side JavaScript engine embedded in the database in 2012 with SAP HANA 1.0 SPS05. With the XS Engine, we enabled customers to expose APIs directly in SAP HANA without setting up an additional application server so that other tools could make use of the data that customers collected and brought together, as they asked for. However, XS Classic has a couple of drawbacks. It has only one process so, if you run for example three applications there and if one of those application crashes, then the process would crash and all applications would crash or if you want to scale just one of those three applications, then you need to scale the XS Engine process which means you automatically scale all three applications. Those are just two reasons why SAP HANA Native Development needed to evolve. This happened on premise with the availability of the XS Advanced runtime in SAP HANA 1.0 SPS11 and in the cloud with Cloud Foundry and it’s availability in May, 2017 where the XS Advanced programming Model is also available.

SAP HANA XS Advanced (and Cloud Foundry) is a platform for microservices based polyglot web applications on premise (and in the cloud). That means, you can use different programming languages and it is not only a JavaScript web server, you can still use JavaScript but now also Java and other programming languages as well, if you have an SAP HANA database driver for them.

 

Major Concepts in the SAP HANA Programming Model with Cloud Foundry

Containers

When we are talking about containers in this context, we are talking about container isolation between parts of your application, between parts of your database and also between different applications deployed on the same systems. App Containers and HDI Containers are isolation mechanisms  between different parts either with the App Containers in your application layer or with the HDI Containers in your database layer. HDI stands for SAP HANA Deployment Infrastructure. It is an infrastructure that we use to handle deployment into the SAP HANA database that we always use with XS Advanced.

 

Microservices

If you want to do either XS Advanced development or development in Cloud Foundry but don’t yet know about Microservice Architectures, I would highly suggest that you make yourself familiar with the concept of microservices. [See for example the resources from Martin Fowler]

With a Microservice Architecture, it is possible to scale different parts of your application differently from other parts. For example, if you want to use one part of your application with a different programming language or if you just want to isolate it to make it more resilient, then it makes sense to split your monolithic application into microservices. When you should split a microservice and when you should not split a microservice is a very important concept and Microservice Architectures often go together with the Twelve-Factor App principles which should be known if you want to build applications for Cloud Foundry or for any cloud environment.

 

User and Authorizations

When we are talking about security, we are talking about users, about authenticating those users and about authorizations for those users. With SAP Cloud Platform, it is allowed to attach an external identity provider to authenticate your business users. In XS Classic, you always need to replicate those users into the database but here, with Cloud Foundry and also with SAP HANA Native Development with XS Advanced in the Cloud Foundry environment, you connect any external identity provider that supports the SAML 2.0 protocol and then you can make use of e.g. user attributes of the current user in your application context or even via Data Control Language (DCL) in your database context. The database connection from the application happens now similar to how it is in ABAP via a technical user.

 

Development Environment

When you develop SAP HANA Native Applications with XS Classic either on premise or in the cloud, you probably have used the SAP HANA Studio or the SAP HANA Tools for Eclipse. In XS Advanced, that is replaced by the SAP Web IDE for SAP HANA on premise or SAP Web IDE Full-Stack in the cloud. Those IDEs are newly built Web IDEs based on Eclipse Che. The SAP Web IDE for SAP HANA on premise comes with the SAP HANA medium or can be downloaded from the SAP Service Marketplace and is itself also an XS Advanced application. In the cloud, we are currently in the process adding all those database development capabilities and back-end development capabilities to the SAP Web IDE Full-Stack.

 

Lifecycle Management

In XS Classic, there is the term of a Delivery Unit. A Delivery Unit is a package for all parts of your application. We have a similar concept in XS Advanced in Cloud Foundry, and also in the Neo Environment of SAP Cloud Platform, it is called Multi-Target Application (MTA). It is a package for all parts of your application that you can use to deploy your application as a whole or to transport your application from development to test and to production. And when it comes to the Lifecycle Management, the Deploy Service is a central component because it handles the deployment of your application and the creation of Backing Services, etc. that you need and described in your manifest.

 

The Path from XS Classic to XS Advanced with Cloud Foundry

If you are already an XS Classic user, we support the migration from XS Classic to XS Advanced with the XS Migration Assistant. It is a tool either included with the SAP HANA medium or for download via the SAP Service Market Place. It is a command line utility that you just connect to your XS Classic system and that takes the delivery unit from there, then unpacks the delivery unit and repacks that as a Multi Target Application (MTA) that you can then import into the SAP Web IDE for SAP HANA, modify, and then deploy. For more information on this topic please have a look at this blog post which corresponds to my SAP TechEd 2017 session HBD201 and covers this part in more details.

Architecture of the SAP HANA XS Advanced Programming Model with Cloud Foundry

Here, we look at the architecture of the SAP HANA XS Advanced Programming Model with Cloud Foundry. On the right side, you can see how it was like with XS Classic. In the middle and on the left, you can see how it is now with XS Advanced. In the cloud, we have directly Cloud Foundry as our runtime, so we don’t need to bring the XS Advanced runtime to the cloud. If we use Cloud Foundry together with SAP HANA as persistence provider, then we are in the XS Advanced Programming Model.

In the video, there is also a demo. I am showing how an application can look like which is built with the XS Advanced Programming Model. The application is called SAP Connected Goods which belongs to the SAP Leonardo portfolio.

 

Conclusion

SAP HANA XS Advanced (and Cloud Foundry) is the platform for SAP HANA Native Web Applications on premise (and in the cloud). It enables applications implementing microservices based architectures. It provides runtimes for XSJS, Node.js, Java and also allows you to bring your own runtime.

For more details, please watch the video embedded above or directly on SAP TechEd Online. There, you can also download the slides. Thanks for reading.

All the best,
Sven

 

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply