-
Phoenix LiveView는 애플리케이션 속도와 개발 속도 모두에서 높은 효율성을 제공함
-
Frontend와 backend를 각각 유지관리할 필요 없이, 하나의 언어로 모놀리식하게 처리할 수 있는 점이 장점임
-
Rails Hotwire와 Laravel Livewire도 고려했지만, 실시간성 및 백그라운드 작업 구현에서 더 많은 설정이 필요함
-
Phoenix는 높은 성능, 내장된 Oban 백그라운드 잡 시스템, LiveView의 실시간성 등 탁월한 기능을 제공함
-
Elixir/Erlang 기반의 안정성, 고동시성, 버그 방지, 결함 허용성 등이 최종 선택의 결정적 요인임
왜 Phoenix LiveView를 선택했는가
코드의 목적과 선택 기준
- 코딩의 목적은 문제를 가장 최적의 방식으로 해결하기 위함임
- 본인에게 가장 중요한 요소는 애플리케이션 속도와 개발 효율성임
- 이 덕분에 Phoenix LiveView를 사용하게 됨
프론트엔드·백엔드 분리의 한계와 모놀리식 선택
- React나 Next.js, Laravel(또는 Inertia.js)로 개발할 경우 프론트엔드와 백엔드를 따로 관리해야 하는 단점이 있음
-
솔로 개발자로서 두 영역의 상태를 별도로 관리하는 데 시간이 부족함
- 견고한 모놀리식 솔루션이 필요했음
대안 비교: Laravel Livewire, Rails Hotwire, Next.js
-
Laravel Livewire와 Rails Hotwire는 자바스크립트 의존도를 줄이면서 프론트엔드 개발을 간소화해주는 도구임
- Next.js로 풀 자바스크립트도 고려했지만, 백엔드에서 JS를 쓰는 것에 선호도가 낮았음
-
Rails Hotwire는 MVP(최소기능제품) 속도 개발이 강점이나, 백그라운드 작업·실시간 업데이트·양방향 통신 등 추가설정 필요성이 있었음
Elixir, Phoenix, LiveView의 결정적 장점
-
Elixir와 Phoenix는 Ruby on Rails의 우아함을 유지하면서 훨씬 높은 성능을 제공함
-
Oban을 통한 내장 백그라운드 잡, 친숙하고 가독성 좋은 문법, 그리고 LiveView의 실시간 양방향 통신이 강점임
-
LiveView는 서버 렌더링 방식과 프론트엔드 무거운 프레임워크 사이에서 이상적 균형을 잡음
- WebSocket을 통한 실시간 업데이트와 JavaScript 라이브러리(예: Alpine.js) 연동이 가능함
- Phoenix는 Oban 내장으로 백그라운드 잡 선언과 자동 복구가 쉬움
Elixir/Erlang의 이점
-
Elixir는 Erlang 위에 구축된 컴파일 언어로, WhatsApp, Discord와 같은 대규모 동시성 시스템의 기반임
-
고동시성, 결함 허용성, 장애에 대한 자동 복구를 제공함
최종 선택의 이유
-
빠른 개발과 높은 동시성 지원
-
단일 언어로 거의 모든 구현 가능
-
가독성 좋은 코드 작성
-
컴파일러가 많은 버그를 사전에 차단함
-
장애 허용성과 앱의 안정성 보장
결론 및 조언
- Phoenix가 무조건 Rails, Laravel, Next.js보다 우월하지 않음
- 모든 프레임워크는 훌륭하며, 각자 다양한 프로젝트에 사용 경험이 있음
- 본인의 특정 상황과 프로젝트에 Phoenix가 가장 적합했음 (Hyperzoned.com)
-
새로운 도구를 탐색해보는 것이 더 효율적인 문제 해결법 발견에 도움이 됨
-
끊임없는 학습의 중요성을 강조함
참고