I'm building an application that has Web(PHP-Laravel) as well as Android UI. I need real-time sync of data between both platforms. For that, I'm trying to use AWS Appsync but after reading the documentation I'm so much confused about which service I need to use. There are so many options for integration like AWS lambda, API Gateway. So which one is appropriate for my requirement? Secondly, I'm not able to figure out how to connect the RDS MySQL database with Appsync for real-time data. AWS documentation is so much confusing that I'm not able to get it. Kindly help me with this. Thanks in advance.
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
We are facing speed issue on our CRM based website, hosted on AWS EC2 with m3.medium instance.
On this AMI, we have installed IIS 7.0 and MS SQL server(for local database).
And our region is US-West-2 (Oregon).
The site is functioning properly but speed is slow as compared to other hosting provider(Same site is hosted with BigRock with different domain).
There is noticeable speed difference between both website(BigRock and AWS) with same code but different domain.
Can someone please suggest what should we do to increase the speed of our site?
Since you have hosted your CRM based website in us-west-2, there will be latency issue which is obvious. If you are planning to serve Indian customers I suggest to host it in the ap-southeast-1 region. Also I guess bigrock data-centers are located in India itself. That's the reason latency will be less. Also considering integrating cloud-front or any CDN if you really want to accelerate the website. Since it's a CRM website you have a look at Elastic Memcache also.
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.
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