GN⁺: Rails로 다시 작성하기
(dirkjonker.bearblog.dev)-
블로그 시작
- 2022년에 세관 신고서를 작성하는 애플리케이션을 개발하기 시작함.
- 여러 언어와 프레임워크를 평가한 후, Ruby on Rails로 개발하기로 결정함.
- Rails에 익숙하여 다른 옵션보다 10배 빠르게 개발할 수 있었음.
-
버전 2 개발
- Rust와 SvelteKit을 사용하여 애플리케이션의 두 번째 버전을 개발하기 시작함.
- 초기에는 빠르고 좋았지만, 필요한 기능의 10%만 구현됨.
- Rails와 비교할 만한 Rust의 프레임워크가 없어 많은 시간이 소요됨.
-
Rust의 장점
- Rust의 성능과 오류 없는 컴파일의 장점을 경험함.
- Ruby에서는 런타임 오류가 자주 발생하여 Rust의 필요성을 느낌.
-
프론트엔드의 변화
- Rails의 프론트엔드에 불만을 느껴 SvelteKit으로 전환하기로 결정함.
- 새로운 스택으로 일부 페이지를 빠르게 전환했으나, 배포가 복잡해짐.
-
개발의 현실
- Rails 부분이 계속해서 유용한 기능을 추가하며 발전함.
- Rust와 Svelte로의 전환이 사용자에게 직접적인 가치를 제공하지 않음을 깨달음.
-
결정의 어려움
- 새로운 스택을 포기하고 Rails로 돌아가기로 결정함.
- 팀원들이 Rails를 배우도록 유도함.
-
Rails의 장점
- Rails는 많은 성공적인 회사의 기반이며, 많은 라이브러리와 생태계를 제공함.
- 제품 개발에 집중할 수 있게 해줌.
-
교훈
- 새로운 언어와 프레임워크를 배우는 것은 많은 통찰력을 제공함.
- 웹 애플리케이션 개발은 많은 선택과 타협이 필요함.
- Rails로 돌아가는 것이 좋은 결정이었으며, 생산성을 높임.
-
Ruby와 Rails의 단점
- 런타임 문제는 테스트로 해결 가능함.
- 코드가 복잡해지는 것은 개발자의 문제이며, 잘 조직화해야 함.
- Rails는 충분히 빠르며, Turbo와 캐싱으로 성능을 개선할 수 있음.
-
결론
- 완벽한 언어나 프레임워크는 없으며, 각자의 장단점을 이해하고 활용해야 함.
- Rails는 좋은 선택이며, 다른 많은 프레임워크도 훌륭함.
Hacker News 의견
-
Rails, Django, Laravel이 웹 앱 개발에 있어 다른 스택보다 훨씬 앞서 있음. 이들은 반복적인 작업을 처리하고, 요구 사항을 잘 알고 있으며, 애플리케이션을 구축할 때 방해하지 않음. 웹 개발은 이미 해결된 문제라고 생각하며, JavaScript 관련 기술은 대기업의 자금에 의해 주도되는 경향이 있음
-
17년 동안 Rails를 사용해왔으며, 여전히 사랑하고 선호함. 코드 분리를 쉽게 할 수 있어 파일의 헤더가 불필요하게 길어지지 않음. 로직과 마크업을 분리하면 독립적으로 테스트할 수 있어 버그 추적이 쉬워짐
-
Rust는 매우 똑똑한 사람들이 만든 언어지만, 타입 이론과 메모리 할당에 집중되어 있어 일반 개발자에게는 이해하기 어려움. Rust 관련 블로그 글을 읽어도 절반 정도밖에 이해하지 못함
-
Ruby와 Rails에 대한 불만이 줄어들었음. 완벽한 언어나 프레임워크는 없으며, 강점과 약점을 알고 대처해야 함
-
Rust로 대형 웹 애플리케이션을 빠르게 작성하기는 어려움. Rails로 작성된 대형 애플리케이션은 빠르게 실행되지 않으며, 버그가 많고 유지보수 및 확장이 어려울 수 있음. Java, C#, Go 같은 언어는 Rails만큼 빠르게 작업을 완료하면서 Rust만큼 빠르게 실행됨
-
NextJS와 SvelteKit 같은 기술이 JS 개발자들 사이에서 인기 있는 이유는 Node.JS의 백엔드 개발 경험 문제를 해결하기 때문임. Rails는 2006년에 애플리케이션 구축을 위한 포괄적인 솔루션을 혁신적으로 제공했음
-
AdonisJS를 Rails의 TS 대안으로 테스트 중임. Rails나 Laravel과 유사하며, 스택의 모든 부분을 결정해야 하는 부담을 덜어줌
-
Rust가 웹 백엔드에 적합하지 않다는 의견에 혼란스러움. 작은 서비스에서는 좋은 경험을 했으며, 큰 애플리케이션을 구축할 때 복잡성이 증가할 수 있지만, Rust는 대규모 코드베이스에서 필요한 자신감을 줌
-
Django와 같은 경험을 하고 있으며, 성능 문제는 주로 Django 자체보다는 데이터베이스 쿼리에서 발생함
-
2010년이 아닌데 왜 Rails를 사용하는지 의문임. Java(Spring), Go, Node 같은 많은 대안이 있음. Rust를 사용하는 것은 C++만큼이나 이상한 선택임