1. 19

  2. 4

    So we started at $400. What’s the cost of the final build?

    1. 1

      Alternate scenario: use AppEngine.

      1. 1

        App Engine has a lot of limitations in practice. In particular, you can’t run native code which makes it hard (impossible?) to exec arbitrary programs. At work, we call external programs (e.g. Git, Maven, Go) a lot through exec and pipes. We could emulate their behaviour instead, but that’s a Red Queen’s race we don’t really want to run.

        1. 1

          Yeah, it won’t work for your needs. But the OP didn’t seem to have needs like that.

          1. 1

            I don’t think OP was talking about any particular needs. This was a general architecture for launching web applications without black box technologies. E.g.,

            The industry has provided a number of hosted options that handle most of this for you. Instead of building all of this yourself, you can rely on Beanstalk, AppEngine, GKE, ECS, etc. Most of these services setup sensible permissions, load balancers, subnets, etc… automatically. They take a lot of the hassle out of getting an application up and running quickly that has the reliability your site needs to run for a long time.

            Regardless, I think it’s useful to understand what functionality each of these platforms provides and why they provide it. It makes it easier to select a platform based on your own needs.

            We’ve built a scalable web application with backups, rollbacks (using blue/green deployments between production and staging), centralized logging, monitoring, and alerting. This is a good point to stop, since growth from here tends to depend on application-specific needs.

      2. 1

        That was really informative. I’m in the first stage of this post and those tips should help me avoid future issues.

        1. 3

          Log aggregation is one of the most important things you can possibly do (Papertrail is pretty easy to setup and has a generous free tier). Don’t skimp on that, and backups!

          Also, I can strongly suggest introducing caching as early as possible, I’ve used Redis and Memcached in the past both to great success. K/V stores can also solve a lot of problems that you would typically use a normal RDBMS with where they may fit better. Things like ephemeral data and sessions.

        2. 1

          Why using CloudWatch for monitoring alerts but not for log aggregation too? ELK seems like a big thing to setup and maintain. I’d add that most of these things can be deployed and maintained with Terraform and a bunch of Ansible scripts (that should only care about your application).