So if I had a microservice architecture and one of my services relied on a piece of AGPL software, and that service wasn't customer facing, but a service that communicated with it was, would I be required to open source all of those services? or any of them? How does this license impact this architecture?
If the the services together form a derivative work under copyright, then the AGPL source-sharing provisions apply to the entire work, and you must share the source code for the entire work. If they do not form a new work (i.e., they are considered independent program-works that merely happen to interact with one another), then the source-sharing provisions apply at most to the AGPL work only, and only if you have modified it in a way that qualifies as a derivative work under copyright. Note that the determination of when two programs interact with sufficient closeness to form a new single program-work is a subjective determination.
If the AGPL service is indeed a separate work from the rest of your code, then if both
- the user interacts with the service in a way that satisfies the AGPL's standard of "interacting with it remotely through a computer network," and
- you have modified the service in a way that produces a derivative work under copyright law
then you must make the source code available to your users.
I am not aware of any case law about what level of network interaction is necessary, but if the AGPL service is a utility used by another service that the user actually interacts with (e.g., an AGPL database used by a Web service that the user actually sends packets to) then it probably does not satisfy that condition. (However, note that in my parenthetical example, the database/Web service combo could be a modified work of the AGPL work and the AGPL may apply to both, in which case source-sharing would be necessary for the whole thing, as mentioned in the first paragraph.)