남들이 쓴다고 하면 뜯어 말리는 기술 RoR

1 minute read

생태계가 맛이 갔다

개발자가 다 떠나고 있는건지 Archive된 리포지터리가 상당히 많이 보인다.

Rails운영동력 꺼짐

RoR의 장점을 흡수해서 다른 기술들은 계속 발전하고 있는데
RoR는 10년째 제자리다.

디렉토리 구조도 새로운 기능 추가도…

최신버전인 7.0에서 어떤 기술을 표준으로 사용할지도 조금 애매한 모양이다. js관리 라이브러리도 서너개가 동시에 따로 개발되고 있는 것 같다. 안그래도 버전업이느린데…. 세개로 화력을 분산까지?

인터페이스가 없다보니 하위 라이브러리들 구현이 지좆대로임

Devise의 Omniauth를 보면

google, facebook, github, gitlab, keycloak 죄다 생긴게 다름
openid와 oauth2차이때문에 다른게 아니라 그냥 구조 자체가 다름

자바계열 주로 하다가 와보니 이런 문제가 있네
언어 자체의 문제이기도 하지만…
커뮤니티 리더가 표준을 제시 해 주면 따를텐데 그렇게 하지 못하고 있음

프로젝트 구조가 망가지고 있다.

js 폴더는 어디일까?

  • /app/javascripts

  • /app/assets/javscripts

왜 두개가 같이 돌아가고 있는걸까
sprocket와 importmap, jsbundling, cssbundling …

루비는 애초에 자유로운 프레임워크가 아니다.
구동 속도도 빠르지 않고…

쉽고 빠르게 개발하기 위해 사용하는 기술인데 … 이렇게 복잡해진다???

내 라이브러리는 어디다가 넣어야하나

커뮤니티에 봐도 명확한 답을 가진 사람은 없음

/app/lib? /lib? /app/libs

새로 추가한 라이브러리는 include 해서 써야되는데 불편…
include ‘../.././libs/ ~~

Active Record migration

active record의 migration이 예전에는 루비만의 장점이었지만 이젠 아니다.
spring도 flyway가 있고 다른언어도 비슷한게 다 나왔다.


솔루션의 시대에서 서비스의 시대로 넘어오면서 마이그레이션의 역할이 축소됐다. 서비스 시작부터 모든 히스토리를 가지고 있을 필요가 없어졌다.
오히려 배포 후 롤백의 필요가 없어진 시점에서 코드베이스에서 사라지는게 좋다.

gitlab처럼 고객마다 다른 버전(6.0, 7.5 9.3, 11.5, 13.3, 15.1 …)이 있는 경우 히스토리가 모두 필요하긴 하다. 대부분의 서비스 회사에서는 1가지 버전만 운영된다.

마이그레이션 코드가 설계될 때 up-down 양방향으로 사용되도록 설계되어 있는데 이것도 문제다. 사실 데이터가 들어간 시점부터 서버 버전이 양방향으로 자유롭게 왔다갔다 할 수가 없다.

1.0 -> 2.0 -> 1.0은 가능
1.0 -> 데이터입력 -> 마이그레이션 -> 2.0 -> 1.0은 가능
1.0 -> 데이터입력 -> 마이그레이션 -> 2.0 -> 데이터입력 -> 1.0은 불가능..가끔 가능

그리고 단방향의 업데이트도 변경이 큰 경우에 가끔 오류가 난다.
gitlab도 12 to 15 업그레이드시에 문제가 발생한 사례가 많다.

이제 다른데서도 다 되는 레일즈의 장점

  • active record 마이그레이션

  • active record orm

  • 관용적 설정

  • active admin

이런데도 바득바득 쓴다고?

예전부터 RoR을 써온 사람들에게는 생산성 높은 기술일 것 같다.
하지만 그 사람들이 node로 전향하면 더 생산성이 높아지겠지…

RoR로 만든 서비스들 (초기서비스만 한 경우도 많음)
-> 대부분 전환 완료 또는 전환

글로벌

twitter, github, gitlab 등등 많은 회사가 사용중?? 사용했었나?
gitlab은 아직 쓰는데

국내

  • 잡플래닛

  • 마이리얼트립

  • 당근마켓

  • 왓챠

  • 업비트

  • 리멤버

대체재

react-next, nest, svelte 등등

Tags:

Updated: