Microservices and deploy/releasing

Hello!

Is fly.io a good fit for building microservice architectures? Could we feasibly run 100+ services on it?

With service discovery and private networking this definitely seems possible. We are currently just starting out, building an alpha of our product as a single application, but hope to break it down later as our team grows and our products diverge.

fly.io would replace a lot of the stack and subsequent staff that we’d need to build a platform like this ourselves, which means we can concentrate more on the product. We’d still probably end up building custom tooling around fly.io API, but that’s pretty straightforward.

What would be nice is to get a bit more control around the deploy/release phases of an app. My understanding with fly.io at the moment is that deploying and releasing a new version of an app is one action, which relies on a health check and traffic is gradually switched as the replicas come up. I’d really like the ability to deploy the software, and then separately release, perhaps in a blue/green approach or even better traffic split using weights and/or HTTP headers. Is this something that could eventually be built in?

Thanks,
Nick.

You can! It should work very well, internal DNS service discovery will help. It’s a little slow to propagate right now, but we’re working on that.

There’s no manual option for shifting traffic around during a deploy. We’ve debated how best to do this, but in general we want people to automate deploys. If you run fly deploy --strategy bluegreen, you’ll get a bluegreen deploy right now. But it is automatic based on health checks.

What we’re likely to do is allow you to send traffic to different apps at some point, possibly with some lightweight JavaScript logic. When we get there I think you’ll be able to make deploys work however you want by running two different apps.

Thanks for the reply, that is super helpful to know.

Yeah that solution sounds like it could work really well. If we can push this routing logic onto fly.io without our services having to be aware of it, that would be perfect.

FYI, before finding fly.io, we had been looking to use the SMI Traffic Split spec with Linkerd2 to accomplish this.

I’d love to know more when you know more and we’d be more than happy to help if we can.

Thanks,
Nick.