How to actually deploy to a serious host? - amazon-web-services

It's so undescribably discouraging and frustrating that deploying is such a pain. There are no step-by-step guides and every information source is outdated. I have NO idea where to begin!
I want to deploy Meteor apps to AWS (EC2 or Elastic Beanstalk) but now I've learned that it doesn't support Websockets or sticky sessions. I don't know what the latter means, but the former sounds like a big deal breaker. How can the biggest host on the Internet not support something so fundamental?
Should I just not use AWS at all? It's pretty much the only scalable host on the Internet, so that's discouraging in itself. I've read about Load Balancing and understand exactly 0 % of it, and I broke out in a sweat just typing that word here just now.
So, first of all: is it true that AWS/Elastic Beanstalk doesn't support websockets?
Second: What other issues should I look out for when deploying?

Use Meteor Up. Its README has some thorough documentation, and its primary hosting destination is AWS. And yes, AWS supports Websockets. Just follow the Meteor Up instructions.

Related

Does cloudrun on GKE support websockets?

This is my first time using GCP, and I'm trying to put my project on production, and I'm running into problems with getting websocket communication working. I've been googling around and I'm super unclear on if cloud run on GKE supports inbound/outbound websocket connections. The limitations docs say that cloud run fully managed does not work with inbound websockets, but does not say anything about cloud run on gke having issues with websockets.
I can post my ingress config and stuff, not really sure what exactly is relevant to this, but I've just followed their getting setup guide so everything is still set to the default for the most part.
The short answer is no. However, WebSockets do work outbound. This is a known issue on Cloud Run. You can use either just GKE or App Engine Flex as recommended alternatives.
The short answer, as of January 2021, is yes! You will need to use the beta api when deploying your service. Details are here: https://cloud.google.com/blog/products/serverless/cloud-run-gets-websockets-http-2-and-grpc-bidirectional-streams

Spring boot/cloud microservices on AWS

I have created a Spring cloud microservices based application with netflix APIs (Eureka, config, zuul etc). can some one explain me how to deploy that on AWS? I am very new to AWS. I have to deploy development instance of my application.
Do I need to integrate docker before that or I can go ahead without docker as well.
As long as your application is self-contained and you have externalised your configurations, you should not have any issue.
Go through this link which discusses what it takes to deploy an App to Cloud Beyond 15 factor
Use AWS BeanStalk to deploy and Manage your application. Dockerizing your app is not a predicament inorder to deploy your app to AWS.
If you use an EC2 instance then it's configuration is no different to what you do on your local machine/server. It's just a virtual machine. No need to dockerize or anything like that. And if you're new to AWS, I'd rather suggest to to just that. Once you get your head around, you can explore other options.
For example, AWS Beanstalk seems like a popular option. It provides a very secure and reliable configuration out of the box with no effort on your part. And yes, it does use docker under the hood, but you won't need to deal with it directly unless you choose to. Well, at least in most common cases. It supports few different ways of deployment which amazon calls "Application Environments". See here for details. Just choose the one you like and follow instructions. I'd like to warn you though that whilst Beanstalk is usually easier then EC2 to setup and use when dealing with a typical web application, your mileage might vary depending on your application's actual needs.
Amazon Elastic container Service / Elastic Kubernetes Service is also a good option to look into.
These services depend on the Docker Images of your application. Auto Scaling, Availability cross region replication will be taken care by the Cloud provider.
Hope this helps.

Amazon Web Services (AWS) - Web Development and IDE Workflow

I'm completely new to AWS and due to the many different types of services they offer I'm having trouble really figuring things out, so I'd love to get some input and fresh insight.
If I want to setup a development environment to play around with what would be the best course of action? (Please explain in detail, because like I said, I'm completely new to al of this)
How can I integrate my preferred IDE (Dreamweaver or Sublime Text 3) into my AWS workflow and web/application development process because it seems nearly impossible to be able to integrate these IDE's with any of the AWS services like EC2 or Elastic Beanstalk. Typically I would just connect my IDE via FTP to my hosting server but that doesn't seem possible with any of AWS' services. I know in many instances you can SSH into these work files and modify them via terminal (ex. using nano) but clearly that isn't a very user-friendly means of developing by any stretch of the imagination.
The underline gist of this post is that I'm trying to understand what the best website/web-application development process might be when using Amazon Web Services (ex. using s3/cloudfront as a CDN and using EC2 or Elastic Beanstalk for the application itself), as well as trying to understand how to correctly interact with various service environments so that I can still use my IDE of choice to add/modify/delete and push/pull files/directories from the various AWS services that I'm using.
Please explain any answers in detail and thanks in advance for any and all insights!
(As a side note I'd like to use PHP/MySQL, as well as MEAN, AngularJS, and other implementations of MongoDB/PostgreSQL)
Many Amazon services, including EC2, support SSH/SFTP. The SFTP is supported by both Dreamweaver and Sublime Text 3.
See my guide for connecting to Amazon EC2 with SFTP. It's for WinSCP client, but you can easily reuse it for configuring Dreamweaver or Sublime Text 3.

Rolling updates for websites hosted on Amazon's Elastic Beanstalk

I've deployed my application to Elastic Beanstalk, and configured it with the Rolling Updates feature. This sounds pretty cool because it keeps a certain number of servers in the farm at all times while others are swapped out for upgrades - so it seems an outage-less upgrade is achievable.
But by my reasoning this just isn't going to work - at some point during a rolling update there will be some servers with v1 on and some servers with v2 on. If the JS or CSS is different between v1 and v2 then there could be a v1 page loaded that sends a request to the load balancer and gets the v2 JS/CSS and vice versa.
I can't think of an easy way to avoid this, and so I'm struggling to see the point of Rolling Upgrades at all.
Am I missing something? Is there a better way to achieve an outage-less upgrade for a website? I was thinking that I could also set up a complete parallel Elastic Beanstalk environment with v2 on it, and then switch them over in one go - but that seems so much more time consuming.
As you described, to use rolling deployments and have continuous deployments on the same environment, you need to guarantee that version N is compatible with version N+1. "Compatible" meaning they can run simultaneously, what can be challenging in cases such as different files and database schema changes.
A popular workaround to that is Blue-Green Deployments, where you deploy to a different environment and then redirect users. The Swap URL feature helps to implement that using AWS Elastic Beanstalk.
Progressive rollouts and blue-green are not mutually exclusive. You can use progressive rollouts for small changes and blue-green for bigger ones. For more patterns and techniques on continuos delivery, i'd recommend you check Jez Humble's book.

Drupal with Amazon Web Services?

I'm not sure if this is the write place to ask, but this is the only site I know where I get my questions answered... anyways
I wanted to install drupal but where should I host it? Can amazon web service host this such application? Do I need to go somewhere else and host it? I do have an account with inmotionhosting, but I was thinking if Amazon does the job, why not just use it? Any thoughts and opinions?
You can install Drupal on AWS EC2 if you have sys admin experience. Otherwise you will need to use a managed platform, like Cloudways, for that. Configuring web server like Apache and Nginx, cache like Varnish and Memcached and other features on AWS is little difficult. Many managed servers have those features available in their platform so you don't have to configure anything or go through long process of installing application on AWS.
Amazon Web Services (AWS) will host Drupal no problem.
The service you're looking for is Amazon Elastic Compute Cloud (Amazon EC2). It's pretty much equivalent to a private server with which you can do almost whatever you want (Web hosting included). The downside is that you have to do all the setup yourself.
If you don't know how to install Apache or configure your own Linux machine, you'd probably be better off with managed hosting where they'll set everything up for you.
You can also just use AWS Cloudformation to set up your drupal environment. It's a service that is part of AWS that will set up your stack for you. you may still need to know how to handle your config files but at least you do not have to go into installing the DB , Apache etc all manually.
http://aws.amazon.com/cloudformation/
Bitnami provides a free (Apache-licensed) pre-built Drupal image for AWS that you launch easily. It is great for quickly testing something but if you choose the right instance for your expected load, also for production (disclaimer: I am a cofounder of Bitnami, though as I mentioned the image is open source)
Drupal can be deployed and hosted automatically on Jelastic PaaS. You won't need to configure it from scratch. And if you wish to make some custom settings while installation, you can also easily install it manually. Both variants are described in the guide.
As a result, you'll get automatic scaling, pay-per-use pricing, management via intuitive UI, a wide choice of local service providers from different countries and other options to run your Drupal effectively.