XS Advanced for (not so) dummies
My career in the SAP ecosystem started in the beautiful. comfy world of ABAP. After some time doing C++ and Java, ABAP presented itself as the awesome language that masked the database and built the UI for you. Back in those days when you manually built the field catalog for an ALV, finding out what actual SQL the database needed or drawing the UI were usually uncommon tasks.
If my self from those times wanted to do some SAP HANA native development with XS Advanced, dummy or not, she would be completely lost and would need to start from the very basics. Even if you have been doing some XS Classic development, now that it is officially deprecated as of SPS02, you may also need to catch up with some concepts.
This post is dedicated to my (not so) dummier self. I hope it also works for anyone who is looking to get started with SAP HANA native development using its most current, embedded application layer and tools.
The history of XS Advanced starts with the need to both scale and keep the SAP Cloud Platform and on-premise editions consistent but flexible. Cloud Foundry is an application platform that:
- is open-source: even my dummier self knew what this is, but just in case, this site explains the benefits
- is container-based: In my own dummy words, a container is like a virtual machine but on top of the operating system and without the hypervisor or player. In more pro words, a container packages an application with its code, the libraries it needs, the runtime environment and system tools and isolates it from the operating system. Multiple containers will share a common operating system and the resources it manages (RAM, filesystem, etc). This topic is vast and very interesting. You can get more information from one of the leading container platforms, Docker.
- allows for multiple programming languages: There are some magical elves called buildpacks in Cloud Foundry. When you push an application, the platform will check in which language it was written and retrieve a set of scripts that will bring all the dependencies for your application and generate the compiled code or equivalent executables. Although the list of Cloud Foundry buildpacks is very promising, XSA currently provides dedicated support to Node.js and Java.
- decouples applications from infrastructure: This translates to enabling multi-cloud. In other words, freedom to choose what you run and in which cloud provider (e.g., Amazon Web Services, MS Azure, Google Cloud Platform) depending on different factors such as cost, geographical proximity or compliance, regardless of the underlying infrastructure.
All of this is not necessarily applicable to XSA. This first concept in itself is HUGE. Almost everything of what is coming next is related to this, so please bear with me.
SAP Web IDE for SAP HANA
You will later see that with this new architecture come, at least, two things: some more complexity than just a database and script on top of it and a whole new world of possibilities. The complexities are tackled by understanding the why of what of you are doing (and they bring the benefit of robustness, among others). The possibilities are gracefully enabled by the new development environment. This is SAP Web IDE for SAP HANA.
There’s more than meets the eye here, but it would mean an entire new blog post. You should really try it out.
Thanks for everything, HANA Studio!
Here is the first piece of news: if you were using SAP HANA Studio, you do not need it any more. As you can see, the Web IDE has got your back and has everything (and more) covered. Rephrasing, the Web IDE covers everything HANA Studio could do in terms of development(*) but HANA Studio cannot do what the Web IDE and Database explorer do.
If you are missing the Administration Cockpit (or the site telling you it is not there anymore), you will find it is also a part of the XS Advanced applications.
Another thing you might notice is the Git integration (c’mon, I put an arrow to it…). This is because files will not live in a repository in HANA either. The internal source code repo will also say goodbye.
(*) The only feature I have spotted that is missing is the “Import from File” wizard that created a table straight form an Excel spreadsheet, though there are plenty of alternatives to achieve this in Web IDE.
Give it a try
The default port for Web IDE in an SAP HANA, express edition, is 53075. So unless you’ve changed it, you can access the Web IDE with URL https://<hostname>:53075 .
Right after you enter the URL, you will be redirected to a new address and a different port. That is the User Account and Authentication service:
Witchcraft? Nope, that is UAA providing you with an OAuth token… and we need to go into the architecture piece to understand this and many other concepts first.
Let’s dig deeper into the key architecture concepts in the second part of this blog post here: https://blogs.sap.com/2017/09/05/xs-advanced-for-not-so-dummies-pt-2-multi-target-applications/
The third part, Multi target Apllications can be found here: https://blogs.sap.com/2017/09/22/xs-advanced-for-not-so-dummies-pt-3-microservices/
And the last piece, about Routing is here: https://blogs.sap.com/2018/02/16/xs-advanced-for-not-so-dummies-routing/
Stay tuned on Twitter or on LinkedIn !
Very nice blog, Lucia. I'm looking forward to Part 2
very good blog Lucia. A lot of good information captured and explained.
Thanks for your share!
Does SAP Web IDE for HANA editor is available on trial account?
You can get it on the "Server + XS Advanced applications" version from HANA Express (needs 16GB RAM): https://www.sap.com/developer/topics/sap-hana-express.html
The Cloud Foundry trial on SAP Cloud platform offers Web IDE though some of the features are not available.
Let me know how that goes!
This is the first time I've read your content and you're already one of my favorite writers here.
Glad you liked it. Thanks!
Very nice blog Lucia, thanks for sharing!
Thanks for reading!
Thanks for sharing this for Dummies .
I have a question with reference to Containers, as the container packages the code along with libraries and runtime , when we say the database procedures needs to be containerized , we also need to have HANA DB Runtime along with the code as part of the container. But the HANA DB runtime comprises of many libraries and processing engines, Index servers etc... Does that mean all of this would be part of containers, which would be very huge (or) my understanding is not appropriate.
Also in case of XS Advanced (or) Micro Service architecture each Application or Service has it own runtime deployed along with it , whether it is Node.js (or) Java which is consuming DB procedures as part of the application , the above question is more related from this perspective.
Correct me if my understanding is wrong.
Thanks & Regards
I think your question about the HDI containers is addressed here: https://blogs.sap.com/2017/09/22/xs-advanced-for-not-so-dummies-pt-3-microservices/ (please let me know if it doesn't) . As you mention, it does not make much sense to package the entire database and this goes with other services like the authentication one.
I have recently downloaded the very latest HANA express edition 2.0, SP03 (released in April 2018). I am using the virtual machine approach locally and it was working quite ok: I could use eclipse and web ide for development. I was just today following a tutorial you have written and all of a sudden the web ide crashed. I tried to restart the XS services using XS restart -s SAP several times without any luck. When I attempt to login to https://hxehost:53075/watt/index.html, the logo with the cloud with brackets can hang around forever. The reason seems the application has crashed. I can view the log in chrome hitting F12 and the red text is very long. Below you will find a snippet of the error code.
Can development of XSA applications be done in Eclipse on premise, not Eclipse che. I find the web ide to be very premature and it is simply too buggy. Sometimes you build the project and it works, and doing the exact same step a minute later without executing any change can give errors. It is hard for me to judge what is actually happening behind the scenes when compiling the code. The log does not give too detailed information, in my opinion.
The snippet seems to be missing but the information you are looking for may be in the logs.
It sounds like you may be running out of resources You can stop services you are not using to make room for applications to run if resources are too limited to accommodate more apps. For example, I stop all of the cockpit apps except the XSA cockpit, then scale di-core and di-runner (first add an extra gig of RAM to your VM, run script hxe_gc.sh and the XSA CLI commands xs scale di-core and xs scale di-runner).
Restarting XSA would only make the memory problem worse, assuming lack of resources is the root cause.
As for not using Web IDE, you can always create all of the files manually and use the XS CLI to deploy your apps (there are examples here: https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/en-US/1307bc5dbb844146b0cf4594b39fc3db.html ).
However, Web IDE simplifies this process a lot, especially if you are just getting started in this programming model. I would recommend you take a look at the logs for the backend services before you attempt a more complex approach, as Web IDE does not just crash because it has a bad day.
I'm glad to find this Blog, well written ,thanks 🙂
Thank you for reading! Appreciate the comment 🙂
Thank you for the excellent blog ,
could you also share your expertise on enabling Web IDE URL https://<hostname>:53075 for internet facing, we would like to make this url available for users over the internet, we using F5 by creating external facing hostname and mapping it to internal hostname, but when we call the externalfacing url it says service unavailable.
appreciate any inputs.
I am trying to download sap hana express edition on my laptop but been asked to enter proxy details. Please how can I over come this