스레드 프로그래밍의 난해함에 대한 대안으로 Actor 모델 기반의 Rectors가 제시됩니다. Rectors는 메모리 공유 없이 메시지 통신으로 동시성을 구현, 추론을 용이하게 합니다. GServer 기반 헬스 체크 서비스 재구현은 Rector를 통한 기능적 라이브러리 구축 가능성을 보여줍니다. 그러나 Rack 호환 서버 구현 시 async HTTP
젬 사용에서 Rector 안전성 문제가 드러났습니다. IO 객체 메시지 전달 불가 및 젬의 싱글턴 콘솔 사용 방식과의 충돌이 원인이었습니다. 화자는 RPC 개념 도입으로 IO 처리를 우회하려 시도했으나, 스레드-Rector 상호작용 정의 부족 및 메모리 손상 버그로 인해 최종적으로 작동하지 않았습니다. 이러한 불안정성은 Rectors의 프로덕션 적용을 어렵게 만듭니다.
Ruby Rectors: 실제 프로젝트 적용 경험과 한계점
Seong Heon Jung, "Using Ractors and Making Ractors Usable"
작성자
EuRuKo
발행일
2025년 01월 13일
핵심 요약
- 1 본 발표는 Ruby의 Rectors를 실제 프로젝트에 적용한 경험을 공유하며, 이론적 장점과 더불어 현재 직면한 한계와 과제를 심층적으로 다룹니다.
- 2 Rectors는 스레드 기반 동시성 프로그래밍의 문제점을 해결하기 위해 메모리 공유 없이 메시지 통신을 사용하는 Actor 모델 기반의 동시성 프레임워크입니다.
- 3 현재 Rectors는 불안정성과 호환성 문제로 프로덕션 적용에 어려움이 있지만, Ruby가 동시성 언어로서 경쟁력을 갖추고 재도약할 핵심 동력이 될 잠재력을 가지고 있습니다.
도입
본 발표는 Ruby의 Rectors(ractor) 실제 적용 경험과 한계를 다룹니다. 화자는 Raw TCP/HTTP 서버 및 Rack 호환 서버 구축 사례를 통해 Rectors의 잠재력과 현재 직면한 과제를 제시합니다. 스레드 기반 동시성 프로그래밍의 복잡성(교착 상태, 자원 낭비)을 유치원 아이들의 그림책 공유 비유로 설명하며, 명확한 규칙 없는 스레드 동작의 예측 불가능성을 강조합니다.
결론
화자는 Rectors의 잠재력을 인정하나, 현재의 "잘못된 기능"은 프로덕션 사용을 어렵게 한다고 역설합니다. Ruby 커뮤니티는 Rectors 발전에 기여해야 하며, 이는 Ruby가 동시성을 강조하는 타 언어들과 경쟁하여 주류로 재부상할 기회가 될 수 있습니다. Ruby가 차별화된 쉽고 강력한 동시성 및 병렬 처리 프레임워크를 제공한다면, 중요한 판매 포인트가 될 것입니다. 화자는 Ruby 개발자들에게 Rectors를 "용감하게" 실제 프로젝트에 적용하고, 문제점과 개선 사항을 공유하여 발전 방향을 함께 모색할 것을 촉구하며 발표를 마무리합니다.