Incremental Cutover
Tepia routes traffic to each new service gradually behind a gateway, so the monolith keeps running and any step can be rolled back.
Read: Legacy System Modernization and Mobile MigrationTepia refactors monolithic applications into services one module at a time, using the strangler fig pattern so the existing system keeps serving customers throughout. Typical first extractions are notifications, third party integration adapters and reporting, deployed as containers on AWS, Azure or GCP with their own data stores and CI/CD pipelines.
The goal is not a count of microservices but faster, safer change in the parts of the system that change most.
Tepia routes traffic to each new service gradually behind a gateway, so the monolith keeps running and any step can be rolled back.
Read: Legacy System Modernization and Mobile MigrationEach extracted service owns its tables, and Tepia syncs other parts of the system through events instead of a shared database.
Read: DevOps and CI/CDModules get clean internal boundaries inside the monolith first, which proves a split works before any network call is added.
Read: Rebuild or Refactor Your App?OpenTelemetry tracing follows a request across the monolith and every new service, so a slow step is found in minutes.
Delivery research Tepia uses to measure whether a refactor is paying off.
Google's 2024 DORA report placed about 19 percent of surveyed teams in its elite software delivery performance cluster.
DORA's 2024 research found only about 5 percent of elite teams' deployments fail, against about 40 percent for low performers.
Tepia clients report about 90 percent customer retention, which a refactor has to protect by staying invisible to users.
A monolith is not a problem by itself. Plenty of successful products run on one well organized codebase and one database. Tepia looks for specific symptoms before recommending any split:
If the real issues are missing tests, tangled code and an outdated framework, splitting into services will spread those problems across a network. In that case Tepia usually recommends a modular monolith first, or a broader look at whether to rebuild or refactor.
The first extraction should be valuable, loosely coupled and low risk. Tepia scores candidate modules with the client, and the result often looks like this:
| Module | Extract early when | Leave in place when |
|---|---|---|
| Notifications (email, SMS, push) | Volume spikes or many features trigger messages | A few transactional emails per day |
| Integration adapters for QuickBooks, Salesforce or an ERP | Partner outages or rate limits stall user requests | Syncs are rare and already run in background jobs |
| Reporting and exports | Long queries compete with transactions on the main database | Reports are small and run off hours |
| Search | A catalog needs relevance tuning or fast filters at scale | Simple lookups by ID or name |
| Payments | Isolating card flows narrows PCI DSS scope | Payments already run through tokenized Stripe or Square checkout |
| Core orders, jobs or accounts | Rarely first, only after the team has run services in production | Most of the time, at least initially |
Notice the core domain sits at the bottom. Tepia extracts the edges first, where boundaries are already clear, and earns confidence before touching the logic the business depends on most.
Martin Fowler named the strangler fig pattern after a vine that grows around a tree until it can stand on its own. Tepia applies it in a repeatable sequence for each module:
Because each module goes through these steps on its own, the business can pause between extractions to ship features. Tepia also uses this pattern for legacy system modernization when the old system cannot be refactored in place.
For companies whose main pain is connecting business systems, integrations are often the best place to start. Pulling QuickBooks, Salesforce and ERP sync code out of the request path into its own service, fed by a queue, means a partner outage slows a background job instead of every user’s screen, and Tepia can add new connections without redeploying the core application.
The most common failure in service projects is keeping one shared database. Services that read each other’s tables cannot be changed or deployed independently, so Tepia gives each service ownership of its data and shares changes through events, using the patterns on our event driven integration page. Reports that need data from several services read from a replica or a reporting store instead.
Operations change too. Each service gets its own pipeline with automated tests and contract tests that catch breaking API changes before deploy, as described on our DevOps and CI/CD page. Services usually run as containers on Amazon ECS, Azure Container Apps or Google Cloud Run, with centralized logs, OpenTelemetry tracing and alerts per service. Tepia keeps the number of services small, since every service is one more thing to deploy, monitor and secure.
Tepia agrees on success measures before the first extraction, usually the four DORA delivery metrics plus a business number such as checkout latency or failed syncs per week. Those are recorded for the monolith at the start, so after each cutover you can see whether deploys became more frequent, failures less common and recovery faster. If a module’s numbers do not improve, that is a signal to stop extracting and invest elsewhere.
Typically Discovery takes 1 to 3 months, development and QA 2 to 6 months per stage, and each cutover about a month. Read about our process or talk to Tepia about your codebase.
A paragraph or two with information on your product/service or describes a problem your product/service is designed to solve.
CEO
Senior Project Manager
VP & Operations Manager