목차
릴리스 공지
원자적 Lua 실행, 기본 내장된 멤버십 기반 중복 제거, 구조화된 진행 상황 텔레메트리, 엄격한 의존성 주입. Sukarix가 프레임워크의 군살 없이 어떻게 엔터프라이즈급 성능을 제공하는지, 그리고 저희의 실시간 BigBlueButton Analytics 파이프라인을 어떻게 움직이고 있는지 소개합니다.
미션 크리티컬한 백엔드 시스템과 실시간 스트리밍 파이프라인을 구축할 때는 1밀리초, 1메가바이트의 RAM까지 모두 중요합니다. 현대 PHP는 타입 시스템과 속도 면에서 강력한 언어로 발전했지만, 널리 쓰이는 PHP 프레임워크 상당수는 정반대 방향으로 나아갔습니다. 깊은 상속 트리, 무거운 리플렉션 오버헤드, 비대한 의존성 그래프, 수 메가바이트에 이르는 부트스트랩 부담이 쌓여 오래 실행되는 CLI 워커의 숨통을 조입니다.
RIADVICE는 가상 강의실 플랫폼, 실시간 분석 엔진, 고가용성 로드 밸런서를 위한 고동시성 아키텍처를 구축합니다. 저희에게는 마이크로 프레임워크의 속도와 단순함에, 복잡한 엔터프라이즈 애플리케이션에 필요한 엔터프라이즈급 구조를 결합한 프레임워크가 필요했습니다.
그 프레임워크가 바로 Sukarix입니다. 오늘 저희는 다단계 파이프라인 워크로드를 위해 특별히 설계한 견고한 Redis 기반 큐잉 엔진을 담은 Sukarix 0.4.0의 출시를 자랑스럽게 발표합니다.
왜 Sukarix인가? 실제 프로덕션의 과제에서 탄생했습니다
Sukarix는 학술적인 연습으로 구상된 것이 아닙니다. 트래픽이 많은 프로덕션 환경에서 수년간 실전으로 검증된 엔지니어링의 결실입니다. 수백만 건의 WebRTC 텔레메트리 이벤트 처리, 지속적인 데이터베이스 마이그레이션 처리, 고부하 리버스 프록시를 통한 API 호출 라우팅이 그 바탕입니다.
초고속 Fat-Free Framework (F3) 코어 위에 구축된 Sukarix는 F3의 번개처럼 빠른 라우팅과 최소한의 메모리 사용량을 그대로 유지하면서, 현대 엔터프라이즈에 꼭 필요한 요소를 더합니다.
- 현대적인 PHP 8.4+ 및 8.5+ 아키텍처: 완전한 타입 안전성, 엄격한 타이핑, 깔끔한 객체 지향 설계.
- 군살 없는 의존성 주입(DI)과 IoC: 리플렉션 병목 없이 트레이트 기반으로 프로세서를 동적으로 초기화합니다.
- 통합된 프로덕션 도구: Monolog 통합, Tracy 디버깅, Phinx 데이터베이스 마이그레이션, Statera 테스트 툴킷을 기본으로 지원합니다.
- 잦은 변경보다 안정성: 업그레이드에 필요한 변경을 최소화하도록 설계해, API를 깨뜨리는 재설계로부터 프로덕션 워크로드를 보호합니다.
| 기능 / 지표 | Sukarix 0.4.0 | 무거운 프레임워크 (Laravel / Symfony) | 순수 마이크로 프레임워크 |
|---|---|---|---|
| 메모리 사용량 (CLI / Web) | 매우 낮음 (~2-4 MB) | 높음 (~15-35 MB) | 매우 낮음 (~2-3 MB) |
| 부트스트랩 및 라우팅 속도 | 1밀리초 미만 | 오버헤드 큼 (복잡한 미들웨어 스택) | 1밀리초 미만 |
| 파이프라인 큐 엔진 | 원자적 Lua + 중복 제거 기본 내장 | 범용 큐 추상화 (오버헤드 큼) | 없음 (직접 구현) |
| 엔터프라이즈 유틸리티 (마이그레이션, DI, 로그) | 포함 및 사전 구성 | 포함 | 없음 / 직접 조합 필요 |
| 의존성 그래프 복잡도 | 엄선한 가벼운 PSR 패키지 | 수십 개의 깊은 의존성 | 최소 |
Sukarix 0.4.0의 새로운 기능: 큐잉 업데이트
Sukarix 0.4.0은 Sukarix\Queue 네임스페이스를 도입합니다. 다단계 비동기 처리 파이프라인에 최적화된, 목적에 맞게 설계한 고처리량 Redis FIFO 큐 아키텍처입니다.
원자적 Lua 실행과 자동 중복 제거
일반적인 Redis 리스트 큐는 워커 장애 시 경쟁 상태나 중복 항목이 생기기 쉽습니다. Sukarix는 Redis FIFO 리스트를 멤버십 추적용 보조 세트와 짝지어 원자적 Redis Lua 스크립트로 실행함으로써 이 문제를 해결합니다. 이미 큐에 있는 항목을 다시 넣으면 자동으로 아무 동작도 하지 않으며, 작업 도중 종료된 워커가 상태를 불일치한 채로 남기는 일도 없습니다.
특정 정책을 강요하지 않는 항목별 시도 횟수 추적
Sukarix는 큐 엔진 안에 경직된 재시도 정책이나 데드 레터 한도를 강제하지 않고, Redis 해시에 항목별 시도 횟수 카운터를 제공합니다. 실패한 작업을 즉시 재시도할지, 지연시킬지, 검토를 위해 보류할지, 데드 레터로 보낼지는 전적으로 비즈니스 도메인에서 자유롭게 결정할 수 있습니다.
빠른 실패 초기화를 지원하는 HasQueue 트레이트
큐를 사용하는 서비스는 HasQueue 비헤이비어 트레이트로 큐 기능을 손쉽게 주입받을 수 있습니다. 큐 서비스가 인젝터에 등록되어 있지 않으면 Sukarix는 부팅 시점에 명확한 \LogicException을 발생시켜, 프로덕션 실행 중에 찾기 어려운 널 포인터 오류가 생기는 것을 막습니다.
구조화된 QueueProgressLogger와 CLI 콘솔 로깅
Sukarix 0.4.0은 큐 생명주기 이벤트(시작, 배치 진행, 처리량, 완료)에 대해 기계가 파싱할 수 있는 구조화된 로깅을 추가합니다. 페이로드는 정제되어(예: array[3] 형태로 기록) 민감한 고객 데이터가 로깅 시스템으로 새어 나가지 않도록 보장합니다. 또한 LogWriter는 이제 실시간 CLI 워커 모니터링을 위한 컬러 콘솔 로깅을 선택적으로 지원합니다.
코드 예제: 실제로 동작하는 워커 파이프라인
// Worker implementation with HasQueue trait
namespace App\Workers;
use Sukarix\Behaviours\HasQueue;
use Sukarix\Behaviours\LogWriter;
use Sukarix\Core\Processor;
class EventIngestionWorker
{
use HasQueue, LogWriter;
public function __construct()
{
Processor::instance()->initialize($this);
}
public function consume(): void
{
while (null !== ($payload = $this->queueService->popFromQueue('queue.events.pending'))) {
try {
$this->processEvent($payload);
$this->queueService->clearAttempts('queue.events.failed', $payload);
} catch (\Throwable $e) {
$attempts = $this->queueService->incrementAttempts('queue.events.failed', $payload);
$this->logger->error('Failed processing item', ['attempts' => $attempts, 'error' => $e->getMessage()]);
}
}
}
}프로덕션 사례: BigBlueButton Analytics 실시간 파이프라인
Sukarix 0.4.0은 실제 엔터프라이즈 부하에서 어떤 성능을 보일까요? 저희의 BigBlueButton용 실시간 분석 엔진인 RIADVICE의 BigBlueButton Analytics 플랫폼이 그 답입니다.
대규모 가상 강의실 인프라는 수백만 건의 동시 이벤트에 걸쳐 방대한 양의 세분화된 이벤트 데이터를 만들어 냅니다. WebRTC 오디오/비디오 피드, 참석자 입장과 퇴장, 채팅 메시지, 설문 상호작용, 화이트보드 드로잉 경로, 슬라이드 전환 등이 그 예입니다. 실시간 강의실에 뒤처지지 않으면서 이 데이터를 안정적으로 수집하려면 매우 견고한 스트리밍 파이프라인이 필요합니다.
내부적으로는 Sukarix 0.4.0의 Redis 큐가 무거운 원시 이벤트 스트림을 시계열 데이터베이스에 저장되는 구조화된 데이터셋으로 전환하는 과정을 조율하며, 대시보드는 Apache Superset으로 제공됩니다. 이 파이프라인은 다음과 같은 이점을 직접 누립니다.
- 중복 수집 제로: 서버가 중복된 동기화 신호를 보내더라도 멤버십 기반 중복 제거가 지표의 이중 집계를 막아 줍니다.
- 즉각적인 워커 복구: 원자적 Redis 트랜잭션 덕분에 워커가 재시작되거나 노드를 확장하더라도 큐 인덱스가 손상되거나 회의 이벤트가 유실되지 않습니다.
- 탁월한 리소스 효율: Sukarix CLI 워커는 다른 프레임워크에 비해 극히 일부의 RAM만 사용하므로, 수십 개의 동시 큐 워커가 가벼운 가상 머신에서도 여유 있게 실행됩니다.
- 고부하 상황에서의 관측 가능성: 구조화된
QueueProgressLogger가 워커 처리량, 배치 완료, 오류 진단을 로그 수집기에서 바로 확인할 수 있게 해 줍니다.
RIADVICE와 함께 BigBlueButton 인프라를 확장하십시오
대학이나 조직을 위한 바로 사용 가능한 BigBlueButton Analytics 실시간 대시보드, 맞춤형 고성능 데이터 처리 파이프라인, 대규모 BigBlueButton 클러스터를 위한 아키텍처 컨설팅 등 무엇이 필요하시든 RIADVICE가 도와드립니다.
Sukarix 0.4.0으로 업그레이드하기
Sukarix 0.4.0은 기능을 추가하기만 하며, 기존 애플리케이션을 깨뜨리는 변경은 전혀 없습니다. PHP 8.4+에서 Sukarix 0.3.x를 사용 중이시라면 Composer로 바로 업그레이드하실 수 있습니다.
composer update sukarix/sukarix
전체 릴리스 노트는 Sukarix Github Discussions에서 확인하십시오.
태그: Sukarix, PHP 8.5, PHP 프레임워크, Redis 큐, 비동기 처리, BigBlueButton, 학습 분석, 에듀테크, 실시간 데이터 파이프라인, RIADVICE, 고성능 PHP, 오픈소스.





