Microservices, honestly
Microservices reduce the complexity of a single service while increasing the complexity of the overall system. The decision is usually about team and release independence, not about user experience.
Patterns we use in CI
- On PR open: build the image and push to a test repository in your registry.
- On main branch merge: build and push the production image.
- On main branch merge: run integration tests against the freshly built image to catch regressions.
- On a nightly schedule: build a fresh "unstable" image to surface drift early.
CI conventions worth standardizing
- Triggers: manual, push, PR, scheduled.
- Variables: build flags and secrets injected at build time.
- Build specs: artifact + push target are explicit.
- Build logs: structured and retained long enough to debug regressions.