Best Practice for Microservice Integration Testing

I have an app that’s 12 containerized microservices and growing. Due to interdependencies between all the services, I can’t do all the testing I’d like to do at Circle without pulling in all (or most) of the other containers. I don’t view this as a scalable solution. We’d still be missing out data sources, and I’d expect it to double or triple (at a minimum) our build/test times. Our QA environment is hosted in a private subnet in a private VPC in Amazon. I could change that, but I’d rather not. Because the addresses are private, just using a script to open a security group won’t work. We’ve discussed building a VPN into the VPC, but that seems overly complicated with a high potential for flakiness.

I’ve scanned Circle documentation looking for guidance, but I haven’t found anything. Are there best practices? Is there anybody else out there that’s struggling with (or has fixed!) a similar problem? Am I missing something obvious or doing something boneheaded? Any advice is appreciated.

I know GitLab CI has the option of adding a self-hosted runner. I could drop that in a public subnet in my VPC and run tests from there. Seems like it would work great, but transitioning to GitLab to solve this problem seems like using a crane to crush a fly.

1 Like