How can I configure multiple different destinations? - sapui5

i want to have multiple destinations is it possible to configure in cloud foundry environment?
xs-app.json

Your question is not really precise. When talking about SAP Cloud Platform Cloud Foundry, destinations can be configured on different levels. Most importantly the question is where you want to configure them with which purpose.
I suppose your linked screenshot about the xs-app.json is related to the approuter you have deployed, and you want to configure different routes. This is the first important thing to understand. You are probably trying to deploy and configure an application that acts as an entry-point for a bigger application, maybe even a SaaS-style offering or a "simple" service. The approuter on the SAP Cloud Platform Cloud Foundry normally acts as the browser-based gate into your application, handling SAML/IDP authentication and session management.
A destination can be seen as configured "target" for certain requests. Destinations can be configured within the Cloud Cockpit for example on subaccount level. Mostly they define the required configuration for backend systems, for example to establish connectivity to an SAP Backend (S/4 HANA or even OnPremise Systems). The approuter knows also destinations defined in its environment variables, mostly through its deployment descriptor.
I would recommend the following tutorials and documentation references for more information about destinations on the platform and the xs-app.json configuration descriptor:
https://developers.sap.com/tutorials/cp-cf-create-destination.html
https://developers.sap.com/tutorials/cp-connectivity-consume-odata-service-approuter.html
https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/en-US/6ba89596e3a64a5480c3977d4ea7fdba.html
(not necessarily cloud related, but still helpful)

Related

Containers (Kubernetes) vs Web service (REST APIs)

I have a single screen desktop application developed in Java. It is a tool to convert files, given a file in .abc format, the tool converts it to .xyz format. Basically the tool works offline and acts as a translator to convert file from one form to another.
So now, to improve the infrastructure, there are discussions to move the tool to Kubernetes or to provide REST services for the file conversion. I completely have no idea about the containers nor the REST APIs as I am a front-end developer.
More about the tool, as I told earlier, the tool is a single page application, very light doing very minimal job, totally used by 200 users approximately. So, this being the shape and size of the application, which one would be the best approach to go with and why? Basically, I am looking for a short evaluation report of Kubernetes vs REST service and architecture recommendation with reasons.
Currently your application is a standalone application which is quite an old concept.
I can mention high-level changes needs to be done when your file conversion logic would be exposed over Rest Api in Kubernetes world.
you can go through one by one following mentioned areas to get a better understanding design-wise:
java code would be a backend code and its public methods that take inputs from UI actions will be exposed over rest API.
There are multiple rest API's (jersey, rest easy, etc or spring/spring-boot framework also provides rest API support) that you can go through any of them to get an understanding.
once your backend is exposed over the rest API then it needs to be containerized means your backend will be running under the container. Can go through docker documentation and can build one sample containerized app. There is huge material present in this area.
once your backend is containerized then it will be installed in a Kubernetes cluster
Kubernetes is basically a container orchestration tool and it's quite a wide thing. you can through its official documentation for basic understanding.
SPA will be running on a client machine like today also you are able to launch from your desktop but it will communicate with the Kubernetes cluster where your application is presently packaged in a container.
References:
docker :
https://docs.docker.com/
Kubernetes :
https://kubernetes.io/

Can I deploy/add a service fabric stateless service to participate in the existing cluster?

I want the ability for clients to create their own stateless services and be able to upload/publish it to join an existing cluster. Is this doable? I understand that I need to update the application manifests dynamically but not sure how or if this is possible programmatically without side effects of the service fabric runtime processes.
The workflow is to upload the code (zipped file maybe or whatever) via an API gateway.
The first thing to keep in mind is that you do not deploy individual services to a Service Fabric cluster. You deploy applications, which can contain one or more services.
So the key question to ask is whether you need the new code to be integrated with an existing application type or not. It sounds like what you're trying to do is just enable multiple clients to deploy independent applications on a shared Service Fabric cluster, in which case you would not be modifying existing application types, but deploying entirely new ones.
Thus, you would need your API gateway to dynamically generate application and service manifests, combine them with the client-provided code to create an application package, then copy, register, and create those applications in the cluster. As far as the Service Fabric runtime is concerned, this looks no different than if you had deployed an application type built and packaged in Visual Studio. Processes running existing applications are not impacted.

Adding Destination in Hana Cloud Platform

I have a HANA cloud Platform account. When I create a SAPUI5 Application in web-ide, I do not see the services(xsodata) that I developed in web-based development workbench.
Is it because the host changes for each service provided through the cockpit i.e.
for HANA services, it is:
<schemaName><accountname>.hanatrial.ondemand.com
and for web-ide:
webide-<accountname>.dispatcher.hanatrial.ondemand.com
Should we be creating destinations every time we want to consume a service developed in HCP itself.
Thanks.
Yup, that's right. You need a destination in order to be able to access your services, whether it is a XSOData service, or any other service for that matter.
Do keep an eye on the Additional Properties of your destination. If you don't set them, you still won't be able to use the destination from WebIDE.

What is the difference between Cloud Foundry and OpenWhisk?

I see these both in Bluemix, but what is the difference between them?
Cloud Foundry and OpenWhisk are two Bluemix Compute models that a developer can used to power an application's workload.
I'll give a very high-level summary of both services and when I would use them...
Cloud Foundry
IBM Bluemix was originally based off Cloud Foundry's open technology. It is a cloud computing platform as a service that supports the full lifecycle, from initial development, through all testing stages, to deployment.
Cloud Foundry has a CLI program called cf which is the primary tool to interact with Bluemix (or Bluemix provides a web GUI for this).
Cloud Foundry introduces the concepts of Organizations that contain Spaces which you can think of as workspaces. Different spaces typically correspond to different lifecycle stages for an application.
Cloud Foundry introduces the concepts of Services and Applications. A Cloud Foundry service usually performs a particular function (like a database service), and an application usually has services and their keys bound to it.
OpenWhisk
OpenWhisk is a brand new IBM Cloud developed distributed event-driven compute model.
It has a distributed automatically scaling serverless architecture that executes application logic on events.
OpenWhisk also has a CLI program called wsk which can be used to run your code snippets, or actions, on OpenWhisk.
OpenWhisk introduces the concepts of Triggers, Actions, and Rules.
Triggers are a class of events emitted by event sources.
Actions encapsulate the actual code to be executed which support multiple language bindings including Node.js, Swift and arbitrary binary programs encapsulated in Docker Containers. Actions invoke any part of an open ecosystem including existing Bluemix services for analytics, data, cognitive, or any other 3rd party service.
Rules are an association between a trigger and an action.
Cloud Foundry vs. OpenWhisk
So the question remains: when should you use Cloud Foundry, or when should you use OpenWhisk?
In my limited experience using OpenWhisk, here are my thoughts. I like to think of OpenWhisk as an easily implementable automatically scaling architecture that application developers can use without needing much prior knowledge in backend development. I think of Cloud Foundry as a lower level in the software stack which might give you more customization, but will likely take more skill and knowledge for setting it up.
I would use Cloud Foundry if I...
Was a backend & application developer.
Had experience creating and connecting services together.
Needed functionality that just might not be possible using OpenWhisk.
I would use OpenWhisk if I...
Was an application developer.
Didn't want to worry about a server.
Didn't want to learn different programming languages, etc. to figure out how to set up my server.
Really wanted focus on developing my application and have the backend just work.
Hope that helped.
Edit:
Here's a cool image that I found that illustrates this:
CloudFoundry is a PaaS (Platform-as-a-service) platform, which means in a nutshell, that it hosts the platform for your application to run on. Examples of a platform include node.js or a JVM.
OpenWhisk is a serverless platform. The term FaaS (Function-as-a-service) seems to be emerging as well. You upload code, which is executed once an event happens. That event might be anything, ranging from a simple HTTP request to a change happening in your database.
The fundamental difference between the two is the mode of operation. PaaS means, you're still running a server-process. You'll have a long running process which listens to events and executes your logic, once an event happens. All the other time, the process is idle, still requiring CPU cycles and memory to actually listen for events.
In serverless, the platform takes the burden of "listening for events". Once an event happens, your code is instantiated and executed. That code is shutdown afterwards thus not requiring any resources anymore. That also explains why OpenWhisk actions have a time limitation of 5 minutes. It is not meant to have long running actions.
Disclaimer: Both platforms support a lot more than I described here, I tried to keep it down to the most substantial difference between the both.

What exactly is BlueMix in layman's terms?

How exactly would someone define BlueMix to an engineering major with little to no knowledge in Comp. Sci?
Bluemix is a fully managed cloud service so all of the operations activities such as maintenance, availability, upgrades are part of the Bluemix service, so users don't have to worry about setting up their own infrastructure or installing software.
Bluemix makes it easy for application developers to write applications as it is a polygot environment that supports many different languages and runtimes.
Applications in Bluemix can easily be scaled as needed leveraging the elasticity of the cloud. There are over 100 services available in Bluemix (both IBM and 3rd party services) which can be tied together to make robust applications and also to implement a microservices architecture.
Bluemix cloud services are available as part of the public multi-tenant cloud offering which runs on softlayer. There are also dedicated and local Bluemix cloud offerings available for users who don't want to use the public cloud or want to combine the different offerings to create a hybrid cloud.
it is a platform that lets you build, run, deploy applications via cloud. moreover, it handles multiple languages
Check Bluemix Overview topic in the docs: https://www.ng.bluemix.net/docs/overview/index.html