Do I need MongoDB Atlas if I have Heroku? - heroku

Can someone explain me why we need the Atlas?
If I have Heroku which gives an easier access to cloud (PaaS), then why we need MongoDB Atlas?
Some sources say that we can connect Heroku with Atlas, but why we need that? And can please someone explain me the difference, because it seems I do not understand it completely.
Will be very thankful to everyone. Articles will also be good.

Heroku is a PAAS where you can deploy your applications. Multiple languages are supported and the development experience is great (deploy from Git or using Docker, plenty of examples and documentation).
Typically your application needs a data store to persist the data, Heroku offers few options (ie Postgres) but no more MongoDB. An alternative is to use Atlas where you can define your MongoDB cluster and databases.
Both Heroku and Atlas have a free-tier so you can run both the application and the database without cost. As your database grows you might need to buy a different subscription, this applies to Heroku too if you require more resources or for example no downtime (Heroku Free tier sends the Dyno to sleep after 30 min inactivity).
A good article to use Heroku with Atlas is Detaching from mLab

Related

Heroku alternative

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.

Any advantage of using Google Cloud over VPS?

I've visited Google Cloud full day "training" and I still don't get if there is any REAL advantage in using it for my Laravel applications.
Currently I'm using a VPS server from local hosting provider, and I can deploy a laravel application in 5 ssh commands. In few minutes it becomes live.
I've searched through options on how to do it on GoogleCloud. All of them are for minimum 2 hours of tedious reading/clicking and none offers deploying straight from a git repository, thus no continuous integration.
Please help me understand what is the advantage of paying 5 times more and configuring 20 times longer in GoogleCloud versus VPS?
Thx
It all depends on what you try to achieve by deploying your Laravel app. If you expect little traffic and of a constant nature, you local hosting provider is fine. Do you expect your app to scale for millions of requests per second? Would you value resilience? In this case, you are better off doing a little extra effort and deploying in the cloud. You may gather more detail from the "Building Scalable and Resilient Web Applications on Google Cloud Platform" online document.

Heroku vs Elastic Beanstalk with Django + Postgres

If I am planning to deploy a Django + Postgres site and I would like to do so to a PaaS, what are the major differences between what Heroku and Elastic Beanstalk will offer me?
What are features that one has but the other does not?
How does the experience of deploying and maintaining sites on the two platforms compare?
I have recently migrated an application from Heroku to Amazon EB and am missing Heroku already :)
Application wise, everything is the same. The major differences regard pricing, performance and ease of operation.
1. Price - Amazon will beat Heroku for nearly anything above two servers.
2. Performance - again, Amazon gives you the flexibility to deploy your app on a RAM monster, speeding things up significantly
3. Operation - that's the tricky part where Heroku wins big time.
Operations wise, Heroku is extremely easy to configure and maintain, while in Amazon you need to dig deep into the Elastic Beanstalk deploy scripts in order to customize them for your application. Deploying isn't a breeze as well, as EB CLI isn't as easy to use as Heroku and forces you to keep thinking about the underlying infrastructure (region, vpc, load balancing, security, etc).
I'd stick with Heroku if you're happy with price/performance and move to Amazon only if you really want these parameters notched up.

What exactly is Heroku?

I just started learning Ruby on rails and I was wondering what Heroku really is? I know that its a cloud that helps us to avoid using servers? When do we actually use it?
Heroku is a cloud platform as a service. That means you do not have to worry about infrastructure; you just focus on your application.
In addition to what Jonny said, there are a few features of Heroku:
Instant Deployment with Git push - build of your application is performed by Heroku using your build scripts
Plenty of Add-on resources (applications, databases etc.)
Processes scaling - independent scaling for each component of your app without affecting functionality and performance
Isolation - each process (aka dyno) is completely isolated from each other
Full Logging and Visibility - easy access to all logging output from every component of your app and each process (dyno)
Heroku provides very well written tutorial which allows you to start in minutes. Also they provide first 750 computation hours free of charge which means you can have one processes (aka Dyno) at no cost. Also performance is very good e.g. simple web application written in node.js can handle around 60 - 70 requests per second.
Heroku competitors are:
OpenShift by Red Hat
Windows Azure
Amazon Web Services
Google App Engine
VMware
HP Cloud Services
Force.com
It's a cloud-based, scalable server solution that allows you to easily manage the deployment of your Rails (or other) applications provided you subscribe to a number of conventions (e.g. Postgres as the database, no writing to the filesystem).
Thus you can easily scale as your application grows by bettering your database and increasing the number of dynos (Rails instances) and workers.
It doesn't help you avoid using servers, you will need some understanding of server management to effectively debug problems with your platform/app combination. However, while it is comparatively expensive (i.e. per instance when compared to renting a slice on Slicehost or something), there is a free account and it's a rough trade off between whether it's more cost effective to pay someone to build your own solution or take the extra expense.
Heroku Basically provides with webspace to upload your app
If you are uploading a Rails app then you can follow this tutorial
https://github.com/mrkushjain/herokuapp
As I see it, it is a scalable administrated web hosting service, ready to grow in any sense so you don't have to worry about it.
It's not useful for a normal PHP web application, because there are plenty of web hosting services with ftp over there for a simple web without scalability needs, but if you need something bigger Heroku or something similar is what you need.
It is exposed as a service via a command line tool so you can write scripts to automate your deployments. Anyway it is pretty similar to other web hosting services with Git enabled, but Heroku makes it simpler.
That's its thing, to make the administration stuff simpler to you, so it saves you time. But I'm not sure, as I'm just starting with it!
A nice introduction of how it works in the official documentation is:
https://devcenter.heroku.com/articles/how-heroku-works
Per DZone: https://dzone.com/articles/heroku-or-amazon-web-services-which-is-best-for-your-startup
Heroku is a Platform as a Service (PaaS) product based on AWS, and is vastly different from Elastic Compute Cloud. It’s very important to differentiate ‘Infrastructure as a Service’ and ‘Platform as a Service’ solutions as we consider deploying and supporting our application using these two solutions.
Heroku is way simpler to use than AWS Elastic Compute Cloud. Perhaps it’s even too simple. But there’s a good reason for this simplicity. The Heroku platform equips us with a ready runtime environment and application servers. Plus, we benefit from seamless integration with various development instruments, a pre-installed operating system, and redundant servers.
Therefore, with Heroku, we don’t need to think about infrastructure management, unlike with AWS EC2. We only need to choose a subscription plan and change our plan when necessary.
That article does a good job explaining the differences between Heroku and AWS but it looks like you can choose other iaas (infrastructure) providers other than AWS. So ultimately Heroku seems to just simplify the process of using a cloud provider but at a cost.

AWS vs Heroku vs something else for scalable platform?

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

Resources