Comparing cloud hosting technologies(Azure, EC2 or Google) - google-app-engine

I'm going to start a simple SaaS application and am considering which cloud technology to go with(Azure, EC2 or Google).
Can someone who experience both (actual use)point the pros and cons(performence,costs,easy to develop,easy to maintain) of each technology and recommend his favorite?

Have you google'd this question?
https://softwareengineering.stackexchange.com/questions/64727/windows-azure-vs-amazon-ec2-vs-google-app-engine
Windows Azure for web developers vs Amazon EC2
http://programmerpayback.com/2009/02/04/scalable-windows-hosting-mosso-vs-ec2-vs-azure/
http://news.techworld.com/data-centre/3228389/windows-azure-versus-amazon-ec2/
This has been asked quite frequently with some fantastic answers.

If you are big into Java(Grails, JRuby etc)+MySql+ tomcat development nothing beats AWS elastic beanstalk. It let's you create a "real" relational mysql database on their infrastructure. And they provide 1 year free usage tier but it does not include RDS
Azures is great for all things microsoft. Though one can use AWS for IIS and MSSQL based app I have not done the price comparison myself.
Google AE is great from price point of view but you have to leave some of your conventional development practices on a side, one of them being relational database. This was one of the biggest reason why I did not try GAE. There is no fun in writing Grails app without the powerful GORM.

In current market other also provide cloud services like Microsoft Azure, Google. Then why Amazon? and what different service AWS provide than others. Amazon holds more than 36% stake in the cloud market. Also, top companies including Fortune 500 use Amazon Web Services. They all host their servers on AWS. The main reason behind is Amazon provide good service also its services are low cost comparatively others service, providers.
Why we need to learn AWS?
1) AWS is the leader and Fastest growing in the Cloud Computing market
2) It has more job opportunities than any other Cloud Provider
3) It has a more mature model of infrastructure, hence has a full stack of services, which complement each other
4) Companies are reserving a large share of their IT budget for upgrades and innovations in the cloud.
Here You will get a detailed description
https://answerdone.blogspot.com/2018/04/why-learn-amazon-web-services-aws-and.html

Related

What is the equivalent of AWS elastic beanstalk in GCP?

Is Elastic Beanstalk of AWS an answer to GAE of GCP?
Are there any benchmark comparisons between the two?
Is Elastic beanstalk of AWS an answer to GAE of GCP?
Yes, in a nutshell, you can think of it like that.
There's an article by Google showing side-by-side comparisons of AWS and Google Cloud products, listing them as IaaS and PaaS:
Service AWS Google Cloud Platform
-----------------------------------------------------------------
IaaS Amazon Elastic Compute Cloud Compute Engine
PaaS AWS Elastic Beanstalk App Engine
However, it is worth noting that at least AWS Elastic Beanstalk is not strictly a PaaS solution, I would describe it more as a management layer on top of EC2. From their FAQ:
Q: How is AWS Elastic Beanstalk different from existing application containers or platform-as-a-service solutions?
Most existing application containers or platform-as-a-service solutions, while reducing the amount of programming required, significantly diminish developers’ flexibility and control. Developers are forced to live with all the decisions predetermined by the vendor–with little to no opportunity to take back control over various parts of their application’s infrastructure. However, with AWS Elastic Beanstalk, developers retain full control over the AWS resources powering their application. If developers decide they want to manage some (or all) of the elements of their infrastructure, they can do so seamlessly by using Elastic Beanstalk’s management capabilities.
I don't think it's possible to compare these platforms with benchmarks. There is still a lot you can configure on this platforms and performance will mostly depend on your configuration and (even more) your application code.
It comes down to differences in pricing, easy-of-use and the availability of other services on these platforms.

Network latency with using different PaaS solutions

Not sure is this belongs to stackoverflow or stackexchange. Mods - please point me towards the right platform.
I am unable to find statistics for an average network latency (due to network calls) and average cost hike (because these platforms also charge for network ingress/egress) due to the amount of web-service calls involved - especially when we use different providers for webapp hosting and database hosting. Pretty much everything is on SSL to add more delay. Is this delay/cost noticeable to a consumer ? I understand caching will help, but there's a limit to that.
Just to add some context - I am wondering if it's a smart decision for a startup to go with PaaS (I am planning to use Cloudbees/mongolab); or prefer rolling out everything on IaaS (like EC2). I guess GAE will not have such issues because everything Datastore is a part of their cloud ?
Thanks !
Disclaimer: I'm working at CloudBees. Contact me ndeloof#cloudbees.com if you want to discuss specific application constraints
CloudBees (and probably other PaaS, can't tell) don't bill for network traffic. Compared to an IaaS that would bill I/O, network, CPU cycles, etc, a PaaS offer a higher level abstraction then pricing model.
Network latency indeed is a major topic being hosted on a PaaS, that may be hosted on another continent. CloudBees offer US-east and EU-west regions to host application. For European customers, being hosted in EU zone, with low-latency network connection is a major improvement.
Hosting on a IaaS vs a PaaS can make sense, but probably not as your startup is in early stage. Use the PaaS as a booster to get quicly online and deliver features to your customers. If/when you're successful, maybe you'd prefer for whatever reason to switch (partially?) to a IaaS, and even later follow Facebook and Google building your own DataCenter :P
We have many startups as CloudBees customers, that benefit high level service to reduce Time-to-market, and focus on company actual business. Even working on an IaaS is fun for engineers, from business perspective it's not really what you want developers to focus on when your company has to be quick on a competitive market - and there's lot's of other topics you can have engineers to have fun with ;)
I don't get your comment on GAE. Google is indeed hosting his own DataStore. A PaaS like CloudBees relies on partner SaaS for Mongo (mongoHQ.com) but as this one is hosted on AWS as well network latency is the same as if CloudBees hosted it's own mongo instances.

Windows Series Phone 7 "Cloud"

I have been reading up on "Cloud computing" on here and still not getting it. Basically I want to develop for the WP7 http://msdn.microsoft.com/en-us/library/ff402531%28v=VS.92%29.aspx#AppPlat_Overview_Arch
Now it mentions everything as being in the "Cloud". Is any server just a cloud? If i have a WCF service or wsdl on my server. Can I consider myself that "Cloud"? Or is there something that a server emits that checks whether or not it is a cloud?
I'm sure Microsoft would prefer for you to choose their version of 'the Cloud', which is Windows Azure, but yet, the cloud can mean WCF/WSDL on your server.
The only true 'cloud' out there is telecom - everything else is basically someone or some company's implementation of services offered over the Internet.
The Windows Phone 7 dev platform fully supports the calling of web services (SOAP/REST) so for your scenario, yes, you could think of yourself as the cloud.
Having said that, I think the notion that everything is up in the cloud simply implies that all of the information you've given an installed app is most likely stored/managed using a service. This service is hopefully installed on a trusted cloud provider (that could be Microsoft Azure or any other provider). This makes sense in light of the fact that the information we put into phone applications usually is quite valuable. Having it stored on a trusted cloud provider's web site would obviously be good from a reliability/security perspective. But to reiterate, that (or any cloud service) is NOT a requirement.
I hope that answered your question.
I liken "cloud" to any service accessible via the internet. This can include the likes of Microsoft's Azure cloud offering, similar "Software/Platform as a Service" offerings from other vendors, dedicated server hosting or shared server hosting solutions which are available much cheaper.
There was some confusion for Windows Phone 7 developers when Microsoft's cloud offering was pitched to students when the "All In" campaign began, around the same time the Windows Phone 7 campaign was getting going.
For developer's the confusion was borne out of wondering how do I support the costs of Microsoft's or other Platform as a Service offerings when my app is going to be free or returning revenues of an as yet unknown quantity.
In a much needed positioning comment offered to windows phone 7 developers, Microsoft made their position clear on Cloud with respect to shared hosting services, their cloud offering and Windows Phone 7 apps.
In short it's a budgeting call. If you're service has the income to cover cloud services (could be from any provider), then it is the most scalable model. Until then, traditional hosting services are recommended.
This is explained in more detail in this post.
Azure Storage and WP7

When should one use the following: Amazon EC2, Google App Engine, Microsoft Azure and Salesforce.com?

I am asking this in very general sense. Both from cloud provider and cloud consumer's perspective. Also the question is not for any specific kind of application (in fact the intention is to know which type of applications/domains can fit into which of the cloud slab -SaaS PaaS IaaS).
My understanding so far is:
IaaS: Raw Hardware (Processors, Networks, Storage).
PaaS: OS, System Softwares, Development Framework, Virtual Machines.
SaaS: Software Applications.
It would be great if Stackoverflower's can share their understanding and experiences of cloud computing concept.
EDIT: Ok, I will put it in more specific way -
Amazon EC2: You don't have control over hardware layer. But you can take your choice of OS image, Dev Framework (.NET, J2EE, LAMP) and Application and put it on EC2 hardware. Can you deploy an applications built with Google App Engine or Azure on EC2?
Google App Engine: You don't have control over hardware and OS and you get a specific Dev Framework to build your application. Can you take any existing Java or Python application and port it to GAE? Or vice versa, can applications that were built on GAE be taken out of GAE and ported to any Application Server like Websphere or Weblogic?
Azure: You don't have control over hardware and OS and you get a specific Dev Framework to build your application. Can you take any existing .NET application and port it to Azure? Or vice versa, can applications that were built on Azure be taken out of Azure and ported to any Application Server like Biztalk?
Good question! As you point out, the different offerings fit into different categories:
EC2 is Infrastructure as a Service; you get VM instances, and do with them as you wish. Rackspace Cloud Servers are more or less the same.
Azure, App Engine, and Salesforce are all Platform as a Service; they offer different levels of integration, though: Azure pretty much lets you run arbitrary background services, while App Engine is oriented around short lived request handler tasks (though it also supports a task queue and scheduled tasks). I'm not terribly familiar with Salesforce's offering, but my understanding is that it's similar to App Engine in some respects, though more specialized for its particular niche.
Cloud offerings that fall under Software as a Service are everything from infrastructure pieces like Amazon's Simple Storage Service and SimpleDB through to complete applications like Fog Creek's hosted FogBugz and, of course, StackExchange.
A good general rule is that the higher level the offering, the less work you'll have to do, but the more specific it is. If you want a bug tracker, using FogBugz is obviously going to be the least work; building one on top of App Engine or Azure is more work, but provides for more versatility, while building one on top of raw VMs like EC2 is even more work (quite a lot more, in fact), but provides for even more versatility. My general advice is to pick the highest level platform that still meets your requirements, and build from there.
This is an excellent question. Full disclosure as I am partial to Azure but have experience with the others.
Where I think Azure stands out from the others is the quick transition from on prem to the cloud. For example -
SQL Azure - change connection string, upload DB, go!
Queues work a lot like MSMQ.
Blobs are pretty much blobs any way you shake them but they scale like crazy.
The table storage component is good because it provides incredible scalability for name/value pairs - but takes some getting used to.
Service Bus is my favorite of the services because it allows for a variety of communications paradigms. Two SB endpoints first try to connect to each other, if they cannot, then they route through the cloud - makes for very secure and scalable processing when firewalls tend to get in the way.
Access control list - paired typically with the service bus to make sure the right people access the right things - think SAML in the cloud.
I hope that helps!
My cloud experience is currently limited to Salesforce.com
For standard business operations and automation it provides a significant number of features that allow us to get apps up and running very quickly. We are particularly benefitting from the following:
Security (Administrators can control access to objects and fields)
Workflow & Approvals
Automatic UI generation
Built in reporting and dashboards
Entire system (including our custom changes) is accessible via web services
Ability to make the data in the system available through public sites (e.g. eCommerce)
Large library of third party apps to solve standard problems
The platform does NOT solve every problem.
I would not use the platform to model a nuclear power station or build the next twitter.
The major points of cloud computing is to save on costs by paying for usage and enable immediate deployment of computing resources.
The costs are not purely x amount of cents per instance per hour. The costs include maintenance, development, administration, etc. The huge benefit of cloud, in my mind is to liberate the customers from having to manage anything that is not within the realm of their core business competency. If I am an insurance business, I want my developers to concentrate on my insurance problems that help solve needs of my claims, rates, etc. I would rather avoid dealing with problems of email servers, file servers, document repositories, and administrating OS patches, service packs, etc.
Thus, in my opinion, the biggest benefits are derived from the SaaS and PaaS cloud offerings. One should go to IaaS only when PaaS or SaaS have serious restrictions to specific needs (i.e. I need to install a set of proprietary COM components and Azure does not support them).
SaaS is good for commodity type of applications that are not the core line of business for the client, but are more of a utility. These are your typical Messaging systems, Portals, Document Repositories, Email systems, CRMs, ERP's, Accounting, etc. etc. etc. Why reinvent the wheel by writing your own when you can customize a well supported third party product.
PaaS is great for core line of business software that supports companies' main business offering. Abstracts clients from having to deal with OS management and lets clients concentrate on the business system development - something that noone else can do for the client.
One can also take advantage of the benefits of PaaS (let's say, Google App Engine) and extend it, at times and if necessary, by pulling out some virtual machines from IaaS providers (e.g. Amazon) to do some number crunching then just send back the output to Google App Engine.
This way, you get the best of both worlds -- you can rapidly develop scalable apps in GAE, then you can always augment it by running any program you want from Amazon virtual machines.
This keeps changing, now Windows Azure also supports VM, so it is also an IaaS provider now.
Now how about Free Amazon EC2 for a year to do a better comparision. Check this out.
http://www.buzzingup.com/2010/10/amazon-announces-free-cloud-services-for-new-developers/

Can you offer any tips/best practices for running SQL Server on an Amazon EC2 Instance?

Setting up a Windows based web application on Amazon's cloud has definitely been a learning experience. Lots of unexpected hoops to jump through, especially to get around the limitations associated with ephemeral local drives.
I was hoping to tap into the collective wisdom of those who have walked this road ahead of me and get some insight into best practices and/or tips for running SQL server on an Amazon EC2 Instance.
Storing web-directory and SQL Server files in EBS is an easy way to get around the flimsyness of local storage.
I've made a script for backing up SQL-Server to S3:
http://friism.com/ec2-sql-server-backup-strategies-and-tactics
Here are some more general thoughts on running ASP.Net websites off EC2:
http://friism.com/rent-vs-buy-or-ec2-vs-building-your-own-iron
Brent Ozar is very much into cloud computing and I beleive he has a number of articles on his blog pertaining to this.
Have a search through http://www.brentozar.com/ look for the word cloud.
For example, I came across his tutorial on how to setup hosting on Amazon EC2.
http://www.brentozar.com/archive/2008/10/running-sql-server-2005-on-amazon-ec2/
Hope this helps. Cheers.

Resources