I'm new to cloud foundry and would like to do a detailed comparison between Windows Azure and Cloud Foundry. I've searched around a lot but haven't been able to find anything useful. Is there a good post or some material which does a detailed feature wise comparison of the two?
Regards,
Vikram
You're not exactly comparing like for like here. Azure has IaaS type capability as well as PaaS, not only can you push applications to it but you can also deploy VM images too, including Linux.
However, as Cloud Foundry is open source the number of runtimes and frameworks if supports evolves quickly as VMWare openly encourage contributions from the OSS community. Correct me if I am wrong, but in a lot of cases, with Azure, you have to provide the runtime you wish to use where as Cloud Foundry supports them "natively", if that's the correct word?!
Right now, Cloud Foundry supports the following runtimes and frameworks;
Runtimes
java - 1.6.0_24
java7 - 1.7.0_04
node - 0.4.12
node06 - 0.6.8
node08 - 0.8.2
ruby18 - 1.8.7p357
ruby19 - 1.9.2p180
Frameworks
grails
java_web
lift
node
play
rack
rails3
sinatra
spring
standalone
They also provide all the major storage services too, including MySQL, Postgres, RabbitMQ and Redis.
The actual open source project supports a whole lot more too!
I don't know much about Azure. But, I've used Cloudfoundry. Its great for Java deployments. I use VMC from Ruby gem for deployment and its so 3 - 4 step easy way to push your WAR to cloudfoundry server. They also provide neat documentation for configuration and setup. Oh and adding services (like Mongo DB, MySql) are also very simple. Though,sometimes, debugging server related issues are annoying with it. But, overall, its good for me :)
http://docs.cloudfoundry.com/tools/deploying-apps.html
Likewise, I don't know much about Cloud Foundry but I'm using Windows Azure for a couple of client projects and I have to say that I'm now very impressed with the development environment. I'm using the Websites Preview feature with continuous Git deployment via BitBucket. Setting this up is a breeze and allows me to push my changes to BitBucket and have Windows Azure deploy them automatically for me. There's currently no ability to run unit tests as part of the deployment cycle as per other cloud platforms (e.g. AppHarbor) but the feature set for getting up and running with a .NET application and SQL Azure database is now pretty slick. Here's a couple of links:
Deploying an ASP.NET Web Application to a Windows Azure Web Site and SQL Database
Continuous Deployment with Windows Azure Websites and Bitbucket
Related
I would like to deploy Orocrm community edition in Azure in web service or Azure docker container and Azure MySQL. I'm looking for good working documentation
Thank you very much!
The application requires a lot of services. At least database (mysql), web server (nginx), php interpreter (php-fpm), consumer services, websockets, etc.. In the docker paradigm, these should be separate containers. The documentation describes a typical setup, what should be done from the application side. If you want some non-standard installation, you will have to adapt it yourself.
We are currently developing the ability to run in containerized environments. But there are a lot of them and there will not be a single approach. And it's hard to meet all the requirements.
I wonder what are the features/capabilities that Serverless Framework gives me when developing Node.js functions in Azure Functions environment?
When I look to this CLI, there is nothing I cannot do with Kudu and GitHub integration (or for simpler scenarios - directly with IDE built into the portal).
So I wonder if I am missing something (and I will regret in the future), or Serverless Framework at this stage is more useful for AWS Lambdas?
The Serverless Framework is a CLI that offers the following:
Deployment: it will zip your functions/modules and upload to Azure.
Integration: you can integrate with Blob Storage, DocumentDB and create HTTP endpoints with the same configuration file.
Multi-vendor support: if you decide to leave Azure, migrating to AWS or IBM will be easier.
Configuration: YAML syntax is readable and overall configuration is simple.
Logs: you can stream the logs into the terminal.
Environments: you can replicate a dev stage into production.
Plugins: you can extend the framework features by yourself or use things that the community is creating.
When I look to this CLI, there is nothing I cannot do with Kudu and GitHub integration
That's great. If you have already stablished a development workflow to organize and deploy your code, maybe you don't need the Serverless Framework. The framework was created to help new users to deploy stuff, but it it based on Azure tools, so there is no magic happening there. Just some people trying to make things easier than using the Azure CLI.
Serverless Framework at this stage is more useful for AWS Lambdas?
Maybe. Depends if you think that Azure CLI is better or not than AWS CLI. I have tried to implement my own code to deploy AWS Lambda functions and I know how hard it is. There are many configuration steps and things to learn, which are very trivial to configure when using the Serverless Framework.
I am currently looking into using ARM to deploy new environments of our Azure Components. We have a lot of web apis that are deployed to Cloud Services, since we need access to the underlying OS to get CPU usage for App Dynamics metrics. When reading through ARM, it seems as if they are deprecating Cloud Services, but I have some confusion about what is replacing it. I see that you can create Web Apps using this and use Publish from Visual Studio to deploy the app it, but I see no options for Cloud Services. So what is the preferred method to do this? Creating a VM and deploying using Web Deploy? What about VM scaling. Any help would be greatly appreciated.
My company is in the process of moving a legacy app to Azure using Cloud Services and we were concerned about the future of Cloud Services. Since we are somewhat early into the project and would like to use the ARM model we thought it would be easier to make a move now if we knew the future. After a few conversations with project leads at Microsoft on this topic we were only told that we should continue working with Cloud Services as they would continue to be supported.
It's quite clear that the move to ARM was not well thought out in terms of direction and consequences of existing services that many people are already using. Reading between the lines I would say that there is no plan to convert Cloud Services from the ASM to ARM model.
If application insights (https://azure.microsoft.com/en-us/services/application-insights/) are sufficient for your monitoring needs, then you can use web apps. These can be deployed via ARM, and can automatically deploy from a git repo or web deploy package. See this example:
https://github.com/Azure/azure-quickstart-templates/tree/master/201-web-app-github-deploy
The issue here that you may be trying to do operations which are restricted by the web app sandbox.
Failing that, you can use an ARM template to set up a VM and then invoke a custom site extension which will run powershell code to do further provisioning. This powershell code can fetch any package that you may want to install. See this ARM template for example: https://github.com/Azure/azure-quickstart-templates/tree/9ad72f1f5f0008c14311be79eee036b871712394/201-list-storage-keys-windows-vm
Once the VM is created you would be able to modify it and scale as needed.
Is it possible to port existing node.js applications to Windows Azure platform? I currently develop on my Mac but will need to deploy the application to Windows Azure in a near future.
You may also want to check a video on Channle 9.
node.js on Azure : http://channel9.msdn.com/Events/Patterns-Practices-Symposium-Online/Patterns-Practices-Symposium-Online-2012/node-js-on-Azure
Yes it is very much possible. You may also need to consider to make changes to use Azure Blob storage where your node.js code is using local file system (if required). The deployment is very similar to any other Windows Azure App and one you have Azure SDK for node.js you can use powershell cmdlets to make your job easy.
Download Node.js SDK for Azure
https://www.windowsazure.com/en-us/develop/nodejs/
Here you can learn the basics to deploy node.js app to Azure:
https://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/
Porting node.js apps to Azure is possible but not yet a yes/no answer.
You can run your Node apps in Azure but you need to look at the modules you're using to make sure you aren't depending on a tool or command or other facility that isn't yet available on Azure. For example, are you using a database like redis or couchDB or mysql? These don't exist natively in Azure so you may or may not be able to port that layer -- you'll have to check.
Since you're on a Mac, there isn't yet a native OS X deployment tool. Microsoft and the Cloud9 folks have been showing a way for Macs to deploy from the Cloud9 IDE which works but the Mac story will most assuredly improve over time. I work on a Mac but I keep a Windows VM open (Parallels) and if I deploy from the desktop I've been using the Powershell cmdlets in the Windows Azure SDK for Node.js which makes things fairly turnkey from Windows.
You will want to follow a couple of repos and their contributors: Azure SDK for Node, which allows native access to Azure Storage via npm install azure and iisnode (on Github) which is a component that assists your node app running under IIS (the Windows Web Server) on Azure.
It's been great to see the Node story on Azure evolve; it's still just a little early but they seem to be making great progress quickly.
I would like use a continuous integration system in my projects. However, I don't want to use a server sitting in my office, instead I'd like my continuous integration server to run on Windows Azure. Has anyone set this up? Are there recipes to host Hudson or CruiseControl.Net (or any other CI system) within Azure?
We use the Build Manager in Team Foundation Server to push our automated builds to Azure. We set up our Azure hosted services to allow for Web Publish through remote desktop using this plugin - http://dunnry.com/blog/2010/12/20/UsingWebDeployWithWindowsAzure.aspx
You do not need to involve Team Foundation Server to use the plugin - you can set up your instances to publish to azure instantaneously through Visual Studio Web Publish without CI.
I think there are two parts to the Azure CI solution - automated builds from your source control and actually pushing the bits to azure. The plugin makes the publish to Azure much, much faster. So if you want real time access to changes on Azure, you will need to look into the plugin.
It sounds like you are trying to use Azure as an infrastructure provider, which runs a VM where your builds happen.
This is not a particularly good use-case for Azure. Azure is a platform to run your custom-built applications. While it does provide VM's similarly to Amazon or other IaaS cloud providers, those VM's are "stateless", can go up and down at will and meant to act as application servers where more than one can be up at any given time.
You can probably get this to work on an Azure VM but I am not sure if the pain would be worth it.
Azure's instances are application servers, not "windows servers".
HTH
I have installed Jenkins on Windows Azure, it works very well for me.
http://blogs.msdn.com/b/gongcheng/archive/2013/02/27/jenkins-on-windows-azure-the-missing-manual.aspx