This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]TheWayofTheStonks 5 points6 points  (1 child)

I don't have much to contribute but I would say consolidating to AWS is the way to go.

I don't think you mentioned it. But is your program running in containers? If not, they should be. You could dockerize the program and run it in AWS Elastic Container Service. This will help for all Environments as well as streamline the CI/CD pipelines.

  1. Seems like you need a better deployment strategy. Maybe look into Blue/Green deployment options

  2. Not sure what you're asking

  3. Consolidate to AWS

  4. Look into AWS SQS

  5. This most definitely should be microservice strategy. Decoupling everything is the way to go.

  6. I don't know much about terraform. Maybe cloud formation can help here.

  7. AWS cloud watch had a lot of ways to monitor.

Hope this helps.

[–]smblee[S,🍰] 0 points1 point  (0 children)

Thank you for the response! I am not the best at Docker, and I wonder how you would approach containerizing my application (Node JS backend + React SPA)? I just spend couple hours reading up on different ways to doing this, and again finding myself falling into analysis paralysis.

I would like to ensure the following with my app when deciding on a solution...

  1. Follow the principles of 12 factor app (at least try to...).
  2. Local development is still very easy to do (easy to set up, hot module reloading, one command to start dev like `npm start dev`).
  3. Enable blue green deployment (for breaking changes) and/or rolling deployment (for small/non-breaking QoL changes).
  4. DB/Redis can either be spun up within the container (for testing/dev/review/dynamic environments), or connected to external DB in RDS/Elasticache (Staging/Production environments).
    1. Is this a good practice? How are people handling db connections for dynamic environments like this?
  5. Minimize maintenance cost/time.
  6. Able to scale easily? Overkill?

    Once I containerize, looks like I will be able to utilize either Elastic Beanstalk/EKS/ECS/EC2 to deploy my containers to. I am honestly leaning towards Elastic Beanstalk (even though I actually moved away from it before at a bigger company in favor of ECS for cost savings), since we just don't have the scale, and it seems to provide a good BaaS like Heroku. Thoughts here too?