Pourquoi les microservices pour Keneya ?
Une plateforme médicale doit être scalable, résiliente et modulaire. Les microservices nous permettent :
Architecture globale
Keneya est composé de 7 microservices :
Services principaux
Communication entre services
1. REST API via API Gateway
typescript
// api-gateway/src/main.ts
import { NestFactory } from '@nestjs/core'
import { AppModule } from './app.module'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
// Proxy vers les microservices
app.setGlobalPrefix('api/v1')
await app.listen(3000)
}2. Event-driven avec Redis Pub/Sub
typescript
// consultation.service.ts
async completeConsultation(consultationId: string) {
const consultation = await this.consultationRepo.findById(consultationId)
consultation.status = 'completed'
await consultation.save()
// Publier un événement
await this.redisClient.publish('consultation.completed', {
consultationId,
patientId: consultation.patientId,
doctorId: consultation.doctorId
})
}
// medical-records.service.ts - Abonné
this.redisClient.subscribe('consultation.completed')
this.redisClient.on('message', async (channel, message) => {
if (channel === 'consultation.completed') {
const data = JSON.parse(message)
// Mettre à jour le dossier médical automatiquement
await this.updateMedicalRecord(data)
}
})3. Temps réel avec Socket.io
typescript
// notification.gateway.ts
@WebSocketGateway({ namespace: 'notifications' })
export class NotificationGateway {
@WebSocketServer() server: Server
async sendToUser(userId: string, notification: any) {
this.server.to(`user:${userId}`).emit('notification', notification)
}
}Stratégie de données
PostgreSQL pour les données critiques
MongoDB pour les documents
Redis pour le cache
Déploiement avec Docker Compose
yaml
version: '3.8'
services:
auth-service:
build: ./services/auth
environment:
- DATABASE_URL=postgresql://...
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
consultation-service:
build: ./services/consultation
environment:
- DATABASE_URL=postgresql://...
- MONGO_URL=mongodb://mongo:27017
depends_on:
- postgres
- mongoRésultats
Conclusion
Les microservices ajoutent de la complexité, mais pour une plateforme comme Keneya, les bénéfices en scalabilité et résilience valent largement l'investissement.
*Besoin d'aide pour architecturer votre plateforme ? [Contactez-nous](/contact).*