In the world of software architecture, the move from monolithic applications to microservices was a seismic shift. It promised scalability, resilience, and independent deployment cycles. For years, breaking down large applications into smaller, manageable technical components has been the gold standard. But what if we've been focused on the wrong boundaries?
Microservices excel at decomposing technical capabilities. But what about the business capabilities? What about the complex, multi-step workflows that define how your company actually operates—like onboarding a new customer, processing a complex insurance claim, or generating an end-of-month financial report?
This is where the next evolution in software design comes into play: Services-as-Software, powered by Agentic Workflows. It’s a paradigm shift from building small technical functions to deploying entire business processes as robust, versioned software components.
Let's quickly level-set.
Microservices are small, independently deployable services organized around a specific technical function, like a user-authentication-service or a payment-gateway-service. They communicate over a network, and their primary goal is to decouple the technical concerns of a larger application. While powerful, this approach often leaves the business logic scattered and the orchestration between services complex and brittle.
A .do Service, on the other hand, is purpose-built to encapsulate an entire business workflow. It's the practice of treating a business process as a first-class citizen of your software architecture. We call this Business-as-Code.
Think about a customer-onboarding process. In a traditional microservices world, this might involve calls to a user service, an email service, a billing service, and a logging service. The orchestration logic lives somewhere else—in an API gateway, a frontend application, or another service—creating a web of dependencies.
With service.do, the entire workflow is defined in a single, self-contained service.
At its core, a .do Service is a simple piece of code that defines a complex operation. You define the inputs, the outputs, and the business logic that transforms one into the other. The platform handles the rest.
Here’s what that customer-onboarding service looks like on service.do:
import { Service, type Context } from '@do/sdk';
// Define the input and output schemas for your service
interface OnboardingInput {
name: string;
email: string;
plan: 'free' | 'pro' | 'enterprise';
}
interface OnboardingOutput {
customerId: string;
welcomeEmailSent: boolean;
status: 'complete' | 'failed';
}
// Create a new Service instance with your business logic
export default new Service<OnboardingInput, OnboardingOutput>({
name: 'customer-onboarding',
description: 'Onboards a new customer, creating an account and sending a welcome email.',
async run(input: OnboardingInput, context: Context): Promise<OnboardingOutput> {
console.log(`Starting onboarding for ${input.email} on plan ${input.plan}`);
// This is the Agentic Workflow.
// This service acts as an "agent" that orchestrates other services or agents.
// e.g., call user.create, email.send, billing.setup agents
const customerId = `cust_${context.invocationId}`;
// The platform guarantees this entire workflow runs to completion.
return {
customerId,
welcomeEmailSent: true,
status: 'complete',
};
},
});
This isn't just a function; it's a deployable, scalable, and versioned business asset. Once defined, it becomes a simple API you can call from anywhere, turning a complex operational workflow into on-demand software.
So, how is this truly different from a well-orchestrated microservice? The secret lies in the concept of an Agentic Workflow.
A .do Service isn't just a passive piece of logic. It's an active agent designed to orchestrate other agents and services to achieve a specific business goal.
Feature | Traditional Microservices | .do Agentic Services |
---|---|---|
Primary Focus | Technical decomposition of an application. | Encapsulation of a business process. |
Boundaries | Defined by technology (e.g., database, function). | Defined by business capability (e.g., "onboard customer"). |
Orchestration | Often complex, implicit, and spread across services (choreography). | Explicit, code-defined, and contained within the service itself. |
Infrastructure | Developer-managed (containers, clusters, networking, CI/CD). | Fully serverless and platform-managed. No servers to provision. |
Developer Focus | Building and connecting technical components. | Defining high-level business logic and outcomes. |
In an agentic model, the customer-onboarding service acts as a "manager." It's responsible for invoking a user.create agent, then an email.send agent, and finally a billing.setup agent. This orchestration isn't a fragile, hidden dependency; it's the explicit, readable, and testable core of the service itself.
Higher Abstraction: You stop thinking about servers, containers, and network protocols and start thinking about business value. You can model anything from data enrichment pipelines and lead qualification systems to automated financial reporting. If you can describe it as a series of steps, you can build it as a .do Service.
Radical Simplicity: The .do platform abstracts away all infrastructure complexity. You write the business logic; we handle the deployment, scaling, security, and execution. This dramatically accelerates the-to-market for new business capabilities.
Resilience and Clarity: By defining the entire workflow in one place, you create a single source of truth. The logic is easy to understand, version, and debug. The platform ensures that the workflow runs reliably, with built-in retries and state management.
Microservices were the right answer for breaking down monolithic applications. They taught us the value of decoupling and independent components.
Now, it's time for the next step.
Agentic Workflows and the Services-as-Software model take those lessons and apply them where it matters most: to your core business processes. It’s about moving beyond technical implementation details and toward codifying the very operations that make your company run.
Stop managing a complex web of micro-functions. Start defining, deploying, and delivering powerful business capabilities.
Discover how to turn your business logic into scalable software with service.do