3
4 Comments

How are you deploying your app? What do you like/dislike about it?

I currently deploy all my apps using AWS CDK. This means my backend is mostly just Lambdas + API Gateway + DynamoDB/Aurora. Frontend is React and maybe Next.js depending on if I need SEO and deployed on S3 + Cloudfront, again with CDK.

Deployment is defined in a single CDK stack, in a single file. cdk deploy and we're live. It's amazing.

I would prefer a better testing infrastructure. Right now, testing is either totally full stack (playwright after deployment) or unit (individual Lambda/function testing). In order to simulate a local testing environment I use SAM, but it's not an exact copy of my backend.

How are you deploying? What do you like about your deployment flow? What ideas have you had to improve it, but not had the time or knowledge to implement?

  1. 3

    I do it the old school way. My app runs on one AWS EC2 instance.

    Deploy Process

    1. Run the tests
    2. Create a JAR
    3. Copy the JAR to an S3 bucket
    4. Kick off an ansible script.
    5. Ansible logs onto the virtual machine
    6. Ansible downloads the JAR from S3
    7. Ansible stops my app using systemctl
    8. I write the new JAR over the old JAR
    9. Ansible starts my app using systemctl
    1. 1

      Nothing wrong with old school! What are the pain points you have in this process?

  2. 1

    I use serverless to deploy lambdas to AWS, both with zip and docker uploads. I’ve had to make my own setup / cli / config to really optimize deploy times, but serverless does most of the heavy lifting. It’s fairly straightforward to test lambdas. Most of the limits around size, storage, and timeouts are gone.

    Pain points I’ve had involve not no support for modern NodeJS. By the time they release Node 16, it will already be time for Node 18. Plus, they don’t keep their public runtime updated, which makes it hard to ensure consistent environments. Other major cloud providers have a timely release schedule.

    I do wish that other services, e.g. DynamoDB, could run locally. Quite frankly, it’s harder to debug the cloud.

    1. 1

      It is harder to debug the cloud, totally agree. You never know 100% how your app is going to behave until it is actually deployed.

      At my last job we used the team plan of Serverless to help us test our resources (like DynamoDB) locally, but we always ran into issues and I think we just stopped testing locally lol.

Trending on Indie Hackers
Passed $7k 💵 in a month with my boring directory of job boards 35 comments Reaching $100k MRR Organically in 12 months 31 comments 87.7% of entrepreneurs struggle with at least one mental health issue 14 comments How to Secure #1 on Product Hunt: DO’s and DON'Ts / Experience from PitchBob – AI Pitch Deck Generator & Founders Co-Pilot 11 comments Competing with a substitute? 📌 Here are 4 ad examples you can use [from TOP to BOTTOM of funnel] 10 comments Are you wondering how to gain subscribers to a founder's X account from scratch? 9 comments