What services should I use to deploy my single page (angular) website, NodeJS api, webhook for stripe, and mysql database?

0

I am currently developing a website with an Angular frontend, a NodeJS API/server to handle the HTTP requests from Angular (mainly inserting data into the database, login/out, and sending reminders via SMS), a webhook (to connect to stripe in order to handle payments) and a MySQL database to maintain all of our data and perform stored procedures. I have done a bit of research on AWS services to see how I should continue with my development. Currently, the Angular frontend is nearing completion as are the databases. The API is able to send reminders, login/out, and insert/export data but still needs some modifications and this is my first time building an API. The webhook and stripe integration has been put on hold until the end as I have no experience with it. I am in no rush to complete this project.

After examining the AWS services I have come to a few conclusions:

  1. Run all of these as I have locally with some extra configuration on an EC2 instance
  2. Deploy my Angular build to an s3 bucket and use AWS amplify and AWS RDS to format my backend
  3. Deploy my Angular to s3, host data with RDS, create a serverless API with aws lambda and a few other services etc

My question is, how should I go about setting up the website to be functional, secure, and hosted via AWS based on where I am at in my development process?

I would rather do the easiest/fastest option in regards to both deployment and development but would eventually like to make it as efficient and cost-effective as possible but that isn't the highest priority. The highest priorities are development, functionality, security, and time.

1 Answer
0

Hi,

It really depends on your priorities. Let me highlight the cons and pros of each method you described and suggest a few more. I'd like to highlight that whatever you choose for your backend the best would be deploying the frontend part to S3 + CloudFront and having RDS as database.

  1. Run all of these as I have locally with some extra configuration on an EC2 instance. It could be the fastest/easiest to implement because of copying your local environment. The downsides are that it is harder to maintain and harder to achieve high availability.
  2. Deploy my Angular build to an s3 bucket and use AWS amplify and AWS RDS to format my backend. If pick from the options you provided - the most balanced.
  3. Deploy my Angular to s3, host data with RDS, create a serverless API with aws lambda and a few other services etc. The most effective. If your framework supports deploying as serverless, I would consider this option, but you need to take a look at API Gateway as an entry point for your API.
  4. AWS Beanstalk could be another option to deploy the backend and have easy HA setup and zero-downtime deployment.
  5. Nowadays, it's mainstream to use Docker, so if you like to go this way, you can take a look at ECS. I would consider it as a better solution than p.1 and p.4 and easier (IMHO) than p.3.
  6. Another option to run containers is EKS (I like it). It's not efficient on the small workload, but you can come to it if scale needed.

Usually, for MVP, you pick the option which you know better/more comfortable with and then you can improve it later.

profile picture
EXPERT
answered 7 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions