Should I use Amazon AWS or Heroku or New Relic?
I have set up a lot of web platforms in the past, usually with Amazon web services. Does anyone have experience with Heroku or New Relic and what are the pros and cons of each vs AWS?
That is a strange question.
AWS is an Infrastructure-as-a-Service solution.
Heroku is a Platform-as-a-Service solution, RoR oriented
New Relic is a network monitoring solution.
There are not interchangeable (although with Heroku one gets the underlining infrastructure).
True that with AWS one may subscribe to the DB solution and use a RoR image and there is a monitoring solution as part of the ecosystem, but it seems that Geoff needs to do much homework and define what the goals are before looking at specific solutions.
Tim Henrich & Jason Ball both have very good advice. The fact that they differ in opinion exposes the problem with generic "which should I use" questions. Disregarding the differences between the technologies & uses...There are no answers to questions like this that can cover your specific situation without knowing the full requirements. Of course, answering specific questions WITH the full requirements is what consultants get paid for because everything needs to be taken into consideration. Questions like "Should I use Android, Windows 7, OS X, Linux, or Unix?" will prompt responses from disciples of one platform or another, or those with an agenda of their own. The wise consultant would respond "I don't know, what are you trying to accomplish?" Followed by many other questions to determine what makes the most sense in that particular use case.
That said, the short answer is that there is no shortcut to gathering all of your requirements and comparing the potential solutions. You CAN, however, hedge your bets by using something like Ravello Systems (ravellosystems.com) if you need to move things later.
So, I'm going to suggest going the Azure route. Azure is easier to understand and administer (not even Amazon chooses to argue with that!); MS is deploying new capabilities damned near weekly; MS is trying REALLY hard to provide much better than normal service levels in order to maintain attractiveness; there are a LOT of MS partners and more and more are taking the Azure training and preparedness; you get a good percentage of the sorts of products that Jason Ball mentioned; you can do things like SQL clustering in pretty much the same way you would on your own VM's running on your own hardware (of course you can also go the route of SQL Azure which is the hugely distributed compute fabric type of option); MS keeps driving down the pricing; and even Gartner has acknowledged that Azure is now THE threat to AWS.
Heroku is *very* popular and used quite often with tech companies that don't want to deal with managing infrastructure.
When talking about AWS I'm going to assume you're referring to EC2, since AWS does offer many other products and services.
Comparing AWS EC2 and Heroku is difficult because they're operate on different levels. It's easiest to think of Heroku as a layer of abstraction on *top* of infrastructure like EC2. Heroku is best compared to other PaaS products like Google App Engine, OpenShift, and AWS Elastic Beanstalk.
When using PaaS products you can generally focus more on application development than installing and configuring databases, message queues, workers, etc. Deployments can be as simple as a "git push" or a "gcloud deploy" in the case of Google App Engine. Reverting to an old release or updating to a new version is generally quick and painless, and the platform handles pushing out your code changes across all of the machines that are automatically managed for you. If architected well, your app can usually be scaled by manually launching more servers or by using an autoscaling feature. But, the ease of use comes with a price of less control and customization. You might be forced to use Postgres instead of MySQL on Heroku, Google App Engine's database is its own proprietary CloudSQL, support for your programming language or choice of web server might be limited, etc.
On the flip side, IaaS products like AWS EC2, DigitalOcean, Linode, etc. provide server instances, networking capabilities, and storage mediums. What you do with that is up to you. You have control over the operating system (including Linux kernel in some cases), all of the software, and can design your systems as you see fit. Deployments and scaling are your responsibility (though there are *many* tools available to help with this).
On a final note -- it's very easy to try out both types of services and see what makes the most sense for you. AWS offers a 12 month free tier and Heroku generally offers a free development environment. Google App Engine offers just over 24 hours worth of instance usage every day, making it essentially free to try as well. (I've been running several small applications in GAE for over a year free of charge).
Good luck!
-Tim
Amazon, Heroku and New Relic have solutions that are not “Enterprise Class” solutions. That being said, marketing dollars have resulted in AWS being one of the most well known solutions in the world. Cisco has recently entered the same space.
Amazon's environment was designed originally for its own internal needs and Amazon made purchases based on its cost model, not with the intention of offering hosting services to other companies. Sometime down the road Amazon realized there was excess capacity and decided to offer it to other companies but, not to support it. Netflix or a host of other companies may decide to do the same thing in the near future.
Their environment makes a lot of sense as a sandbox environment for development, but not for live production.
Trying to run a production environment with Amazon causes some issues. The cardinal sin in network engineering is using one off, not commonly deployed solutions. That is why we always urge our customers to use the most commonly used technologies. For enterprise class hosting, this includes SQL clustering, load balancing provided by Cisco or F5 (or WCS CoyotePoint), no single point of failure, security provided by Cisco ASA devices, and virtualization technologies that are widely supported such as VMware, Microsoft, or Citrix. Unfortunately, you can’t shoe horn these technologies into Amazon’s environment. Instead of a SQL Cluster you’re forced to use a SQL synchronization tool that creates 2 separate databases and provides the opportunity for those to get out of sync. That is why this technology is not used in enterprise class production deployments. A single point of failure is the load balancer which is a one-off technology designed in Russia. You have no control over what RAID levels their SQL data sits in, etc., etc.
Once again, we are always going to recommend steering away from using technologies that aren’t widely supported and not commonly deployed in other enterprise class environments. If Heroku and New Relic go out of business who’s going to support the environment they’re proposing? What if you want to leave Amazon because you need SQL clustering down the road? What if you want to have your corporate environment hosted? That can’t be done at Amazon, so you’d end up managing relationships with another 3rd-party provider. Also, AWS has gone down twice since inception in 2006, once for two days. Protelligent's cloud solution has been around since 2002, and never gone down.
A lot of thought and care went into building the Protelligent hosting environment to meet enterprise class requirements. Even customers with heavy needs enjoy 100% up-time. One customer gets on average 38,000,000 hits per month.
Hope this helps you understand the pitfalls to avoid as you set up future web platforms.
I'm going to have to respectfully disagree with a lot of these points.
1. "Enterprise Class" is a subjective term, so I'm not sure how you're defining that, but companies like Netflix, Zynga, Reddit, and Newsweek heavily rely on AWS.
2. "for development, but not for live production" -- If you're not developing your applications in an environment that mirrors your production environment, you're doing something wrong. Developing and testing on one platform for deployment to another is a recipe for disaster.
3. While you can certainly incorrectly design a system on AWS with single points of failure, the common method is to design for redundancy. A combination of DNS, ELB or HAProxy, and multi-region deployments prevents outages and creates a very resilient system.
4. Apparently I'm running out of comment space....
Anyway, by all means market your hosting service as you see fit, but please don't spread FUD about your competition.
I'm also going to have to correct a few things. 1) Netflix RUNS ON AWS, so never will they decide to offer their excess capacity. 2) I think you are speaking of which you know not and interjecting your opinions heavily into your statements like "decided to offer it to other companies but not support it". I personally have received excellent support, within 15 minutes of a ticket being created, late night on a weekend.
3) Heroku runs on AWS as well and is owned by Salesforce, so they are not just going to go out of business any time soon. 4) SQL Clustering already exists within AWS. 5) Corporate environment hosted? Can't be done? How so? I think you're misinformed.
Overall, it just sounds like you're trying to push your own solution and making up things about competitors. Not cool.
Even if AWS has gone down, you need to design for failure, because EVERYBODY has failures. AWS in its entirety has not gone down for 2 days.
David
Heroku would be comparable to AWS or Azure, but in my experience, is used more for development or processes running for a larger application.
NewRelic is a monitoring platform, not a virtual appliance platform. You can use it to monitor your server instances, or applications (Java, PHP, Mobile, .NET)
My opinion is to stick with AWS. Their pricing structure is great, and as Raffi said, so is their support.
Ah... i had only heard of new relic and not seriously looked into them, I just assumed what they offered. You're right about their products not being the same as heroku or aws. Thanks for the reply!
I agree with Bob. Go with the best. I have not heard of the other two platforms either. With AWS, it is also the support that matters. I can call AWS with any issue and they will accommodate to the best of their ability. You actually get a human being on the other end. Just recently, I created an instance my mistake that charged me $0.31/hr instead of $0.07/hr and the agent gave me $100 courtesy credit. Who does that nowadays other than few companies?
AWS has massive global presence and name recognition. I work in cloud/colocation market and have never heard of the other two which doesnt mean that they are not good providers...just not familar with them. Most clients compare AWS to Rack Space, Softlayer, Google, Azure, etc.
Thanks Tim. Awesome answer! Didn't know about the GAE free tier, I should spend more time with it.