Thanks to Michael Hartl's tutorial on rails, this amazing community, and twilio, I was able to learn rails and build my first app this month.
I love the the git/heroku workflow, and got thinking --
Currently I have,
~20 light PHP sites on a VPS I pay $40/month for
~10 light PHP sites + 2 Wordpress installs on a Shared Reseller Account I pay $20/month for
+1 App I just made
The PHP sites are basically static sites that have php_includes in them, to make the code a little bit less repetitive.
I'm a little confused by the Heroku pricing though, because I'm not sure how many requests constitutes one dyno, etc.
For the light PHP sites, does using Heroku make sense?
Say that all together the PHP sites get about 5000 views a month, out of which 2000 is for wordpress.
How much do you think it's going to cost me to have them up and running?
Heroku will answer - this is cloud and you should not think in terms of Servers or VPS but more Dynos etc. But old habits die hard :-)
For your question, very simply a Dyno has 512 MB memory (RAM), and the cost of a Dyno includes the bandwidth and the disk space you are using. There are many other issues, like Dynos being Read Only and transient, no IP assignment etc.
In your specific case, definitely use Heroku for your Rails testing, and hosting. Heroku provides hosting free for one Dyno. (Each additional Dyno - about USD 34/month)
For your static sites and PHP, why don't you use AWS with the free tier, you get your own server/vps with whole lot of other services free - http://aws.amazon.com/free/
Related
I´m new on development and found Heroku easy for deploying my app.
I was happy until I got to problems:
Heroku does not provide an IP adress which I need for a white IP list to access an API. I fixed this with a Heroku add-on proxy called Fixie. That is free if under 500 request per month.
The Heroku free plan sleeps after 30 min of inactivity. My app needs to makes API requests at midnight and this is getting difficult because the app is sleeping.
I was thinking to pay the nearest cheap plan on Heroku which make that the app does not sleep. But then I though why not use another platfrom than Heroku.
Does anyone have some sugestions? Any other platform that give an IP so I don´t worry about crossing the 500 request per month?
I was thinking of AWS Elastic Beanstalk. But as I said I´m new at this.
You can use DigitalOcean: the cheapest plan is 5$ a month and you get a Droplet with its own IP address. The Droplet is always running (no inactivity timeout like Heroku).
The main difference is Heroku provides an abstraction layer on top of the underlying infrastructure (you only deal with the application deployment and management) while DigitalOcean delivers a virtual box (ie Ubuntu), however the documentation is great and you can easily find what you need (ie install Docker, etc..)
Couldn’t agree more.
I have been running many applications on Heroku for years now and have faced the 1st problem that you’ve mentioned multiple times.
I tried using Engine Yard instead of Heroku as far as I can remember I never faced the IP issue that you are referring to. AWS is good, but again it’s not without its limitations because its really hard to use. It’s these shortcomings that drive users crazy, isn't it? All I can say is that when I shifted to Engine Yard the set problems I faced considerably dropped. It appears to be a much more usable platform. Check it out.
Here’s a link to Engine Yard, which I hope will help you.
I'm just starting with Heroku, and I'm considering using it to host my app.
The problem is, I'm planning to build my app with a micro services architecture.
As I understand Heroku's pricing, they charge per dyno. When using micro services, there are a bunch of "apps" or "services" working together to provide the functionality of one app.
It seems inevitable to do this without using multiple dynos, and by adding dynos, the price goes up very quickly.
I have three questions:
Is my interpretation of Heroku's pricing correct?
Is there a better way to do a micro services architecture using Heroku?
Or, is there a way to deploy multiple docker containers on a single dyno?
Your Heroku costs will definitely go up as you use more dynos and more apps, but if you are just starting out, the money you spend will be in no way more than the time you would spend setting up something like AWS to perform the same functionality.
You can always save money later, once your app is running and users are loving it. If you goal is to prototype and get it out fast, Heroku is still the best choice.
Did you know about Heroku price calculator?
Saw you run 10*1x dynos, plus some other services, like text messages and such. That will cost you $250-350 this month. That's a lot, sure. But you can get your app running tomorrow, and presumably that is worth a lot more than 250.
Since I am not very familiar with Heroku I need opinion of a specialists like you. I got two questions to which I cannot find an answers on the web.
Heroku tempts with the 450 dynos if I add the billing card.
Is that secure to add it?
Will they take the money from my account without my permission? If for instance I have used all the dynos, would they take the money from my account to add some dynos?
Do dynos last for long? How many users can use my site if I got 1000 dynos?
I tried to understand the answers from the another questions here in stack, but I could not understand them.
Please do not use the technical language, try to answer these questions as simply as you can (for me and users who will read it).
This is a very vague question, so I'll do my best to answer it clearly.
Adding your credit card to Heroku is perfectly safe. They are a legitimate company.
Heroku will automatically charge your credit card at the end of the month if you go OVER their free tier, meaning you use more than 450 dyno hours across your Heroku account, or if you provision paid addon services.
Dynos last forever, until you remove them. Heroku allows you to add dynos, remove them, etc., all instantly.
You also asked how many users your site can support if you have 1,000 dynos: this is equivalent to asking how many users your site can support if you have 1000 web servers. This is dependent on many factors: what does your site do? How was your site built? Etc.. In general, most webapps on Heroku only require 1 dyno to run indefinitely.
I have 3 ASP.NET web sites and 3 Ruby on Rails ones. I'm planning them to be hosted on a VPS hosting. Suppouse each of them would have the attendance of 1 thousand people per day.
Now I'm hesitating about the VPS hosting. Can I host them (ASP.NET web sites and 3 Ruby on Rails ones) side by side? Or should I use and buy 2 different hosting: first one is for ASP.NET web sites and second one for RoR web sites?
How much power of VPS do I choose to host them? And how much does it cost approximately?
I'm planning to pay not more than 25$ per month. If I use heroku and appharbor would they host all of them (3 and 3) and how much would it cost?
I think with that money you can have 2 Amazon EC2 instances, and should be fine to run those apps, plus you can have one for free for the first year.
But with heroku and appharbor maybe you can have it almost for free. Both (not sure about appharbor) gives you 1 instance free for each app, and so that should be just fine for your apps. You should just have to pay for DB, if you need to, and other add-ons that in EC2 you can have for free, but will spend some memory.
So you must put everything on the table about your apps since PaaS are not normal hosting, the cost depends on what your app needs. So you bust see if your app needs caching service, DB size and wich one, background process? ...
I strongly believe that 1 VPS instance should be sufficient for handling 5 to 6 websites with 1000 visitors a day on each. Regarding the power, 1 GB RAM or 2 GB RAM windows VPS should be sufficient for these sites.
I know Windows VPS can handle ASP.Net websites, but I am not sure about Ruby on Rails.
I have never heard about "heroku and appharbor", so, no suggestions for them.
Considering you're a startup with no funds for own server farm. Which existing solution can give you a peace of mind that any sudden increase in traffic won't bring everything down.
I know it's not just up to hardware, so we plan to have at least a load balancer, memcache and few db servers.
Is it possible to have a setup on AWS that would automatically add instances and bandwidth if the traffic increases?
What other advice you could give to deployment noobs? Thanks.
ps: I apologize in advance if a question is too broad or reflects inexperience on mentioned topics, but that's why I ask.
Heroku. Because you're a start-up, keep things lean and it doesn't get leaner than almost free (with 1 dyno + small shared DB). Spend time building your product, not on the infrastructure. You don't want to be installing patches when you should be talking to customers. Heroku is also flexible and allows you to scale up 'dynos' as your traffic increases so no worries about growing there. Heroku won't scale automatically for you, though, so do your own server monitoring. Heroku add-ons are also nice.
Recently we have done a very good comparison between AWS and Heroku and we decided to move to Heroku, here is the detail of this http://www.confiz.com/blog/tech-session/selecting-the-right-cloud-platform/
If you're on Python, you can try Google App Engine.
Migrating the Python app from one platform to another isn't too difficult once you get the past the learning curve as to what features is (not) available. GAE offers datastore, memcache, blobstore plus a few other goodies like dJango and Jinja (templating). Worth checking the Python start page and it didn't take me long to integrate it into Facebook and Dropbox too.
Stay away from Heroku. You can get EC2 for free for a year from Amazon. Scaling up heroku is extremely costly. Their pricing tends to be unclear and their customer service in general sucks.
BitNami for Amazon EC2 includes ready-to-run versions of Apache, MySQL, PostgreSQL, SQLite, Python, Django, Git, their required dependencies, and much more. It can be deployed via all-in-one free native installers, virtual machines and Cloud Images. maybe worth checking out.
My personal experience is that you should generally start with Heroku. Get your app out in the wild and find that product/market-fit or some type of traction. You will know you are going somewhere because customers will cause scaling issues. In this case, Heroku will allow you to scale with very little overhead. And for some time, this scaling will not hit you in the wallet.
Jump to AWS when you are ready. When will you be ready? When you have enough pain, in the wallet, where you need more control over the stack. You can hire a AWS devops type or learn about it, yourself.
Both Heroku and AWS have auto-scaling solutions, but whereas Heroku has a fairly flat learning curve -- that is what you are paying for -- AWS can get broad and steep fairly quickly. A Udemy AWS course or any of the hundred other online resources will get your started down building a robust AWS architecture.
Lastly, while performance should not be your primary concern, make sure that you are using best practices in your code. Your first user should not bring your system to a crawl. And AWS will not help if she does.
Hope this helps in some way.
This has been my experience. My saas start kits are built to deploy to Heroku out of the box for this reason. However, the start kits are also containerized. I know that you spoke of AWS explicitly, but with containers you can be infrastructure agnostic. This is worth considering!
Ted [at] https://stacksimple.io
Check out this blog series I'm starting because I found Heroku to not be scalable at all from a financial perspective compared to EC2 and Digital Ocean. Going to be showing how to put a Ruby application on Digital Ocean using Docker, which allows you the same flexibility and ability to scale up and down very quickly https://medium.com/#karimbutt/weaning-off-heroku-part-1-b7f123ae855f
It greatly depeneds whether you're looking for a PaaS, IaaS or SaaS, and what is the language you using.
AWS is a IAAS/PAAS with multiple components and layers.
Heroku is a PAAS supporting multiple languages, most notably Java, Ruby and Node.js
Other platforms come into play depending on your needs, you might want to take a look at this comparison as well: https://dictativ.com/compare/paas