What is the differnce between a Cloud Foundry and A Web Server - cloud-foundry

So being an SAP consultant , I am trying to understand the SAP cloud foundry .
As per understanding till now , Cloud Foundry is a runtime engine provider (on the cloud ) .
There are many Cloud Foundry like SUSE , IBM , SAP Cloud Foundry .
Doubt:-
I develop an application for Android ,
I deploy the application in a Web Server ,
Now everybody can download it from Google Play and use it .
I deploy the same application in one of the Cloud Foundry .
Now everybody can download it from Google Play and use it .
Is there any difference between a Cloud Foundry and A Web Server ? Or both are same
EDIT :- Question Clarification
What is the difference between products like SUSE , IBM , SAP Cloud Foundry and Cloud services like AWS , Google Cloud , AZURE

So being an SAP consultant , I am trying to understand the SAP cloud foundry .
I can't talk to anything specific that SAP is doing, but to be called Cloud Foundry you need to be certified which tests compatibility and interoperability (and prohibits lock-in). SAP is certified so there's a base set of functionalty that is common with it and any other provider. I'll only be referencing that here.
There are many Cloud Foundry like SUSE , IBM , SAP Cloud Foundry .
Correct, just a minor terminology note. Each vendor with a certified Cloud Foundry offering is called a provider. Cloud Foundry is the service, the company offering it is the provider.
Oh, you can also run your own, if you or your company prefers that route.
Doubt:- I develop an application for Android , I deploy the application in a Web Server , Now everybody can download it from Google Play and use it .
I deploy the same application in one of the Cloud Foundry . Now everybody can download it from Google Play and use it .
Is there any difference between a Cloud Foundry and A Web Server ? Or both are same
Let's say that you have an Android app. It talks to some services.
For example:
Android Phones 1..X (possibly millions) talking to Servers 1..Y (hopefully not millions).
Each Android phone runs a client, the client talks to the server to perform work
The server provides some functionality, like storing data or performing expensive calculations you wouldn't/can't do on the phone
There's no difference when it comes to the Android app. You're building that. It's running on someone's phone. It's talking over HTTP (or some other protocol) to a service. It's installed through the Play Store (not from your servers).
The main difference is with the services to which your Android app communicates. Specifically, between how you deploy your app on a server/VM directly or on Cloud Foundry and the amount of work required to do so.
For a server you might:
need to request hardware or request a VM from IT, if you're lucky you can provision this on-demand
you need to install an OS, if you're doing this right you have a tool to install this for you, but that tool might need some configuration/tuning
you need to install any software required to run your app (JVM, Dotnet, Python, etc...), including servers like Nginx, Tomcat, Apache Web Server, etc...
you need to configure software and servers (again if you're doing it right you have a tool that helps you manage this, which may require some configuration)
then you build your app (or perhaps take bits from a CI server)
last you set up your app to run, including some sort of watcher/service management software to make sure that when your app crashes it is automatically restarted
There could be more (network/firewall/service work) or less (like if you deploy to a public cloud IaaS) tasks here depending on what it takes to deploy an app in your environment.
This also doesn't touch on the fact that you need to maintain all this. Ensure that you're updating software and the OS in a timely fashion.
For Cloud Foundry:
You do a cf push which takes your code and automatically adds and configures the software needed to run your app (through buildpacks).
Your app is then run on Cloud Foundry.
You're back to writing code.
Other benefits:
It's watched automatically, so if it crashes it restarts. No intervention required.
Logs are captured and made easily available to you, the developer
Network access & TLS are already set up and managed by your provider.
There's a catalog of on-demand and easy to consume services available to your app.
Software is automatically updated whenever you push code.
You can scale up/down easily with load, no new servers to provision and set up.
There's even an autoscaler to automatically scale up/down based on provided rules to save resources/money.
tl;dr - it is an easy button for developers. You just write code and push. All the other stuff you don't want to worry about is done for you.

Related

How do deploy a play application on google cloud

This is my first time deploying an application. I have some idea about it but I am not sure if it is correct. How do I go about deploying a play application on google cloud?
1) I have created a package using dist command. I have the zip file now on my local pc. https://www.playframework.com/documentation/2.5.x/Deploying
2) Do I first need to create a compute resource on gcp? What configuration shall I use for the vm? My app is still in test phase so there are no external users at the moment
3) I suppose play uses netty web server. So do I need to install netty on the compute resource? I have looked online a bit but can't find a resource on how to deploy an application on netty.
deploy an application on netty
Netty is not a web server/application server, but an IO framework which can be used to build web servers or any high-performant IO applications.
If you really want to use netty, you need to write an HTTP server yourself, or just use an HTTP framework built on netty.
If you want to build an application using netty, have a look at the examples on https://github.com/netty/netty/tree/4.1/example/src/main/java/io/netty/example/
Deploying a container to the Cloud using Google Cloud Platform and Kubernetes Engine
Kubernetes is a way of orchestrating containers in the Cloud, enabling you to do things like auto-scale, fast deploys and manage running versions of containers. You simply create a container and upload it to a container repository. In this example I used Google’s Container Registry, it’s really simple to use and works brilliantly with their Kubernetes implementation.
follow this tutorial might help you with this
https://medium.com/beyond/deploying-a-container-to-the-cloud-using-google-cloud-platform-and-kubernetes-engine-10d8ee3aba86

What is the difference between Bitnami and Click to deploy on GCE?

Just trying to understand what's the difference between bitnami apps and google 'click-to-deploy' options on Google Cloud Engine?
For example: There is a 'Cassandra' click-to-deploy and there is a Bitnami version of 'Cassandra'
Can anyone tell me how do they compare and what are the differences?
- is one restrictive compared to the other?
- does bitnami version lock you in somehow?
- is there any performance difference (other than obvious performance difference that the hardware change would bring)
Thanks.
Bitnami makes application stacks that run on several cloud platforms including Google Cloud Platform, AWS, Azure and a few others. The Bitnami images you see on Google Cloud Launcher are created by employees of Bitnami and are mostly standard across cloud.
Click to Deploy images are usually created by Google Cloud Platform employees working in conjunction with application vendors.
There are differences in versions here and there related to maintenance, but there isn't any difference in the way they are intended to be used. Some Click to Deploy images will incur higher use charges due to licensing (ie. the Click to Deploy image contains the "Pro" version of a vendor's software), but these are called out during the selection process.
Neither version is intended to lock you into a particular platform, Google or Bitnami, it's just that there is duplication among the applications provided.

Usage of Cloud Foundry Spaces in the development chain

I am currently evaluating the possibility of introducing a private Java PAAS cloud. So far I am quite excited about the whole solution, especially combining the foundry with openstack.
What I am wondering though, is how this can be combined with development. I obviously want the developer to run the developed code on the cloud and no longer on his unmanaged workstation.
Is it possible to do the following:
Developer develops his application code on the local host OS. A virtual machine is used to build and run the application. I have seen this in vagrant and liked this alot. Ideally the local vagrant box is a cloud foundry space.
If the developer is OK with his code, he should push his application out of the local vm to a developer specific acceptance space run by cloud foundry on the network. Here the application is a more production like environment and automated acceptance / disaster recovery tests can be executed.
If the developer decides this is OK and merges his changes to the trunk (SVN/GIT) a CI tool should deploy the application to the "global" test, acceptance and production spaces.
I assume the last point is no problem. I just cannot find a way, how the first steps can be achieved.
Any ideas?
are you actually looking for a complete cf deployment on top of openstack?
That can be achieved using BOSH cloud foundry deployment for openstack.
http://docs.cloudfoundry.com/docs/running/deploying-cf/openstack/
you can have different spaces in the cf deployment: test , production etc. and can move application from one space to another after testing is done.

Webservices to monitor Windows Azure

Does anybody of you know if there are any Webservices (or other interfaces) to monitor an, for example ASP.NET application, which is hosted within Windows Azure from a NON .NET environment?
If you're talking about monitoring things like performance counters and diagnostics (logging), those may be accessed from any language, as that information is ultimately stored in table Storage (you need to just set it up in your Windows Azure app as it starts up). Storage is accessed via a REST interface. Additionally, there are SDKs for PHP and Java to facilitate this. There are a few additional open source project I've seen as well - for instance, Ruby.
For a desktop monitoring tool, check out Cerebrata's Azure Diagnostics Manager.
Note: the Management API is also REST-based, so you can control deployments from other languages as well (e.g. scaling instances up/down, stopping/deleting a deployment, creating a new service, etc.). You'll see that the PHP SDK already wraps most of the Management API. See here for detailed API documentation.
Dirk, it depends on what you're trying to monitor. There are many partner products like AzureWatch from Paraleap that can monitor applications in Windows Azure, or you could always write an application yourself to monitor your Windows Azure application using the Windows Azure APIs (try AzureMonitor on CodePlex] as a start). You can find out more information about Monitoring on MSDN and the Windows Azure Managed Library Reference.

Develping with Django, Git, and Cloud Server

I'm currently working with a team in my University to put together a new webapp. Nothing too fancy, just run of the mill MySQL + Django. We are also hoping to use Git for source control. We were wondering what hosting options were available to us. We're all very competent with Unix, so a ssh connection would be preferable. We also looked into the Amazon Cloud, but are not sure if that's right for us. What does Stackoverflow suggest for a provider to host both a Git repo for us and our webapp. The simpler, the better. It should also run a Linux environment.
I have had great success using the Rackspace Cloud servers. You get root SSH into the server, so you can set up your Git repo and your web app there. They have a lot of options for which flavor of Linux you want to use as well.
I'm doing Django/Postgres on an Ubuntu server and haven't had any problems at all. As a bonus, it includes very easy web and API integration with their CDN if you're interested in that.
I looked into a variety of cloud providers and RS had the best options for me, although CDN integration was a big deal for my site so that factor weighed heavier than it might for you.
I use the cheapo 256MB RAM/10GB HD install and pay around ~$12/month after bandwidth costs are figured into it.
Here's the pricing: http://www.rackspace.com/cloud/cloud_hosting_products/servers/pricing/
Why not AWS? It has a free tier that is able to run basic Django apps well. You can run it using a Django AMI directly or a service like BitNami Cloud Hosting (Disclaimer: I am a BitNami developer, I am actually in charge of many of the Python-based stacks). Both options allow you to run a micro instance of an Amazon Machine for free (680Mb Ram, 10Gb disk).
On BitNami Cloud Hosting, we recently added support for Python and Django (Python 2.6.5 and Django 1.3) and we already included Git. When you select to create a new server you will have access to all those components on top of Ubuntu 10.04.
Also if you are interested in using Redmine (as dgel suggests) you can select to install it when you create your server in the same machine. Since it is an university project, you may also want to consider hosting the Git part on github.com for free.
I would highly recommend sourcerepo.com for git and redmine hosting. $6.95 per month for unlimited projects including redmine instances with git hooks. You don't need to worry about setting up or maintaining the git repos or redmine instances yourself.
Then for your project's public hosting you can't beat linode.com for $19.95 per month.