Solving the Microservices/Monolith Dilemma.
By separating a monolith into decoupled modules with well defined interfaces, you get the benefits of microservices without the extra complexity.Our first tool, Tach, lets you do just that.
Tach lets you define and enforce module boundaries across your project. Preserve a clean architecture automatically with one line in your CI pipeline.
Define boundaries interactively, right in your terminal
Built with Rust for blazing fast static analysis
Tach is entirely open source and permissively licensed (MIT)
Enforce a public interface for each module with strict mode
With Tach you can see the dependencies between all of your modules,and identify cycles and tight coupling.
Discuss high-level design with your teammates
Quickly identify circular dependencies
Use your dependency graph to enhance documentation
Tach shows you how logic flows through your application
Tach uses your module boundaries to determine which test files are impacted by your changes, and dramatically speed up your CI pipelines.
Tach immediately determines exactly which test files are impacted by your changes
Rerun all tests for a module if anything within it has changed
Tach uses static analysis to determine which modules are used in each test.
Accurately cached results based on your source files and environment.