Meteor deployment with auto scaling and CD pipeline?


#1

What I currently use - DigitalOcean droplets (1GB) and Meteor deployed using mupx.

As our app and team size grows this is getting harder to manage. What I’d like to have -

  1. auto scaling and load balancer instead of spinning up more droplets and manage them. Amazon’s ALB supports WebSockets but I don’t see anyone using it.

  2. A CD pipeline which has dev/stage/production and automatically builds/deploys apps on git push etc.

Some of the threads I’ve read -

Hosted providers such as Heroku offer some of these services (e.g. Heroku does CI) but the pricing is too high (e.g. on DO a 1GB droplet is $10, Heroku is $50 !!). I also use Atlas for MongoDb and I don’t want to use a platform that includes mongo.

The cheapest hosting solution seems to be AWS with ALB load balancer running containers which have Meteor docker images. Is there something that can provide CD with this option?


#2

For the load balancer ALB works perfect, no issues at all, also includes ssl termination.

For container orchestration you can use AWS’s own ECS, but it’s really limited. If you have the time, I’d advise running a Kubernetes cluster instead (or perhaps even dc/os with marathon, but that might be too expensive).

For the build tool, using Jenkins for example (there are other options like circleci): Jenkins reacts to git commits, starts the build process to create a docker image running your meteor (node) app. Pushes that image to an ECR repository (private docker repository on AWS) and invokes the commands needed for ECS (or Kubernetes) to restart the service that runs those containers. (You could also do more advanced things like blue-green deployments)

So the only thing you’ll need to research is Jenkins or another CI tool (and optionally Kubernetes), I’m sure there are tutorials out there for meteor. You can also write your own build server (which I did before), but that’s likely too time consuming and inefficient. In the end it depends on the scale and growth of your app and team how extensive and automated your pipeline needs to be.

As a last option there’s AWS’s own tools in the CodePipeline range, you can use CodeBuild and CodeDeploy to do what you need. I don’t have any experience with them (and since I don’t like vendor lock-in I likely never will) but I’m sure they would serve as a good solution.


#3

you can use Atlas with Heroku. Heroku also have CI tools. We run several apps on Galaxy, but have an unimportant app on Heroku. An associate of mine wrote up this about Heroku CI tests with Meteor

Galaxy doesn’t have auto-scaling, but it’s easy enough to scale with a mouse-click. If you truly need autoscaling you could consider IBM’s Bluemix.

that’s exactly why don’t manage our own servers. I never want to maintain my own server again as long as I live. I’d rather pay others to do that so that my team can focus, first and foremost, on solving customer pain with everything we do. If your competition is using a service like Galaxy so they can focus 100% on adding value for their customers, aren’t they going to make faster progress than a team bogged down in hosting problems which could be easily solved?