초기에는 JavaScript 의존성을 줄이면서 프론트엔드 작업을 간소화하는 Laravel Livewire와 Rails Hotwire 같은 도구들을 살펴보았습니다. 특히 Rails Hotwire는 Rails의 빠른 MVP(최소 기능 제품) 구축 능력 때문에 매력적이었으나, 백그라운드 작업, 실시간 업데이트, 안정적인 양방향 통신 구현에는 추가적인 노력이 필요했습니다.
이러한 고민 끝에 Elixir와 Phoenix 프레임워크를 접하게 되었습니다. Phoenix는 Ruby on Rails의 우아함을 유지하면서도 훨씬 뛰어난 성능을 제공했습니다. 특히 다음과 같은 점들이 저의 선택을 굳혔습니다.
Phoenix LiveView의 강력함
-
실시간 양방향 통신: LiveView는 WebSockets를 통해 통신하며, 변경 사항 발생 시 매번 새로운 요청을 보내지 않고도 실시간 양방향 업데이트를 가능하게 합니다. 이는 Rails Hotwire나 Laravel Livewire보다 훨씬 앞선 기술입니다.
-
유연한 확장성: 필요에 따라 Alpine.js나 다른 JavaScript 라이브러리를 훅(hooks)을 통해 통합하여 사용할 수 있습니다.
Elixir/Phoenix의 내재된 장점
-
내장된 백그라운드 작업 (Oban): Phoenix는 Oban을 통해 백그라운드 작업을 쉽게 선언할 수 있으며, 작업 실패 시 애플리케이션 중단 없이 자동으로 재시작되는 결함 허용(fault tolerant) 특성을 가집니다.
-
높은 동시성 및 안정성: Elixir는 Erlang 위에 구축된 컴파일 언어로, WhatsApp이나 Discord와 같은 고도로 동시성 높은 시스템을 구동하는 Erlang의 강력함을 계승합니다.
-
개발 효율성:
- 빠른 개발 속도
- 필요시 높은 동시성 처리 능력
- 대부분의 코드를 단일 언어로 작성 가능
- 깔끔하고 가독성 높은 코드
- 컴파일러가 대부분의 버그를 프로덕션 전에 감지
- 결함 허용 설계로 앱 다운타임 최소화