retellai-architecture-variants
Choose and implement Retell AI validated architecture blueprints for different scales. Use when designing new Retell AI integrations, choosing between monolith/service/microservice architectures, or planning migration paths for Retell AI applications. Trigger with phrases like "retellai architecture", "retellai blueprint", "how to structure retellai", "retellai project layout", "retellai microservice". allowed-tools: Read, Grep version: 1.0.0 license: MIT author: Jeremy Longshore <jeremy@intentsolutions.io>
Allowed Tools
No tools specified
Provided by Plugin
retellai-pack
Claude Code skill pack for Retell AI (30 skills)
Installation
This skill is included in the retellai-pack plugin:
/plugin install retellai-pack@claude-code-plugins-plus
Click to copy
Instructions
# Retell AI Architecture Variants
## Overview
Three validated architecture blueprints for Retell AI integrations.
## Prerequisites
- Understanding of team size and DAU requirements
- Knowledge of deployment infrastructure
- Clear SLA requirements
- Growth projections available
## Variant A: Monolith (Simple)
**Best for:** MVPs, small teams, < 10K daily active users
```
my-app/
โโโ src/
โ โโโ retellai/
โ โ โโโ client.ts # Singleton client
โ โ โโโ types.ts # Types
โ โ โโโ middleware.ts # Express middleware
โ โโโ routes/
โ โ โโโ api/
โ โ โโโ retellai.ts # API routes
โ โโโ index.ts
โโโ tests/
โ โโโ retellai.test.ts
โโโ package.json
```
### Key Characteristics
- Single deployment unit
- Synchronous Retell AI calls in request path
- In-memory caching
- Simple error handling
### Code Pattern
```typescript
// Direct integration in route handler
app.post('/api/create', async (req, res) => {
try {
const result = await retellaiClient.create(req.body);
res.json(result);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
```
---
## Variant B: Service Layer (Moderate)
**Best for:** Growing startups, 10K-100K DAU, multiple integrations
```
my-app/
โโโ src/
โ โโโ services/
โ โ โโโ retellai/
โ โ โ โโโ client.ts # Client wrapper
โ โ โ โโโ service.ts # Business logic
โ โ โ โโโ repository.ts # Data access
โ โ โ โโโ types.ts
โ โ โโโ index.ts # Service exports
โ โโโ controllers/
โ โ โโโ retellai.ts
โ โโโ routes/
โ โโโ middleware/
โ โโโ queue/
โ โ โโโ retellai-processor.ts # Async processing
โ โโโ index.ts
โโโ config/
โ โโโ retellai/
โโโ package.json
```
### Key Characteristics
- Separation of concerns
- Background job processing
- Redis caching
- Circuit breaker pattern
- Structured error handling
### Code Pattern
```typescript
// Service layer abstraction
class Retell AIService {
constructor(
private client: RetellAIClient,
private cache: CacheService,
private queue: QueueService
) {}
async createResource(data: CreateInput): Promise {
// Business logic before API call
const validated = this.validate(data);
// Check cache
const cached = await this.cache.get(cacheKey);
if (cached) return cached;
// API call with retry
const result = await this.withRetry(() =>
this.client.create(validated)
);
// Cache result
await this.cache.set(cacheKey, result, 300);
// Async follow-up
await this.queue.enqueue('retellai.post-create', result);
return result;
}
}
```
---
## Variant C: Microservice (Complex)
**Best for:** Enterprise, 100K+ DAU, strict SLAs
```
retellai-service/ # Dedicated microservice
โโโ src/
โ โโโ api/
โ โ โโโ grpc/
โ โ โ โโโ retellai.proto
โ โ โโโ rest/
โ โ โโโ routes.ts
โ โโโ domain/
โ โ โโโ entities/
โ โ โโโ events/
โ โ โโโ services/
โ โโโ infrastructure/
โ โ โโโ retellai/
โ โ โ โโโ client.ts
โ โ โ โโโ mapper.ts
โ โ โ โโโ circuit-breaker.ts
โ โ โโโ cache/
โ โ โโโ queue/
โ โ โโโ database/
โ โโโ index.ts
โโโ config/
โโโ k8s/
โ โโโ deployment.yaml
โ โโโ service.yaml
โ โโโ hpa.yaml
โโโ package.json
other-services/
โโโ order-service/ # Calls retellai-service
โโโ payment-service/
โโโ notification-service/
```
### Key Characteristics
- Dedicated Retell AI microservice
- gRPC for internal communication
- Event-driven architecture
- Database per service
- Kubernetes autoscaling
- Distributed tracing
- Circuit breaker per service
### Code Pattern
```typescript
// Event-driven with domain isolation
class Retell AIAggregate {
private events: DomainEvent[] = [];
process(command: Retell AICommand): void {
// Domain logic
const result = this.execute(command);
// Emit domain event
this.events.push(new Retell AIProcessedEvent(result));
}
getUncommittedEvents(): DomainEvent[] {
return [...this.events];
}
}
// Event handler
@EventHandler(Retell AIProcessedEvent)
class Retell AIEventHandler {
async handle(event: Retell AIProcessedEvent): Promise {
// Saga orchestration
await this.sagaOrchestrator.continue(event);
}
}
```
---
## Decision Matrix
| Factor | Monolith | Service Layer | Microservice |
|--------|----------|---------------|--------------|
| Team Size | 1-5 | 5-20 | 20+ |
| DAU | < 10K | 10K-100K | 100K+ |
| Deployment Frequency | Weekly | Daily | Continuous |
| Failure Isolation | None | Partial | Full |
| Operational Complexity | Low | Medium | High |
| Time to Market | Fastest | Moderate | Slowest |
## Migration Path
```
Monolith โ Service Layer:
1. Extract Retell AI code to service/
2. Add caching layer
3. Add background processing
Service Layer โ Microservice:
1. Create dedicated retellai-service repo
2. Define gRPC contract
3. Add event bus
4. Deploy to Kubernetes
5. Migrate traffic gradually
```
## Instructions
### Step 1: Assess Requirements
Use the decision matrix to identify appropriate variant.
### Step 2: Choose Architecture
Select Monolith, Service Layer, or Microservice based on needs.
### Step 3: Implement Structure
Set up project layout following the chosen blueprint.
### Step 4: Plan Migration Path
Document upgrade path for future scaling.
## Output
- Architecture variant selected
- Project structure implemented
- Migration path documented
- Appropriate patterns applied
## Error Handling
| Issue | Cause | Solution |
|-------|-------|----------|
| Over-engineering | Wrong variant choice | Start simpler |
| Performance issues | Wrong layer | Add caching/async |
| Team friction | Complex architecture | Simplify or train |
| Deployment complexity | Microservice overhead | Consider service layer |
## Examples
### Quick Variant Check
```bash
# Count team size and DAU to select variant
echo "Team: $(git log --format='%ae' | sort -u | wc -l) developers"
echo "DAU: Check analytics dashboard"
```
## Resources
- [Monolith First](https://martinfowler.com/bliki/MonolithFirst.html)
- [Microservices Guide](https://martinfowler.com/microservices/)
- [Retell AI Architecture Guide](https://docs.retellai.com/architecture)
## Next Steps
For common anti-patterns, see `retellai-known-pitfalls`.