Golang으로 Ruby(On Rails)를 대체해보자

|

Rails의 MCV (Model, Controller, View) 모델로 데이터를 입력하고, sqlite3로 저장될 데이터 DB의 스키마를 마이그레이션 파일로 관리하며, Rake의 build 기능으로 C++ 코드를 제너레이션하는 기존의 코드가 있다. 당연히 windows 환경이나 linux 환경에서도 잘 돌아가고. 이걸 개인적으로 비슷하게 구현하려고 하다 보니 Ruby를 쓰고 싶지 않아 대체재를 찾아보았다.

1. node.js

많은 MCV 모델이 있고, 충분히 검증되긴 한듯. 원하는 모델에는 Sails가 가장 근접한듯 하나 Waterline으로 sqlite3가 붙을 수 있을지가 명확하지 않아서 일단 보류. 마이그레이션이 Koa에서도 koc-mvc라는 MVC 모델이 있긴 한데, 레퍼런스가 많은 것 같지가 않다.

Makefile에서 사용할 수 있는 component라는 모듈이 있는데, html만 지원하는 것 같다. node-rake가 있긴 한데 Ruby의 Rake 같지 않은 것 같고, jakejs라는게 있는데 어떻게 쓰는지 모르겠고 이걸 더 파고 싶지 않게 생겄다. grunt라는 것이 있고 node.js의 이쪽 분야에서는 가장 파워풀하고 응용에 따라 사용이 가능해 보인다.

데이터베이스 마이그레이션 툴은 flyway를 가장 많이 쓰는듯.

그런데 사실 난 node.js에 선입견이 많은 편이다. 자바스크립트 자체를 그다지 좋아하지 않는다. 자료형이 명확하지 않은 것부터 많이 별로고, callback, await로 점철되어야 하는 구조나, class 구조가 어디 lua에서 쓰는 오브젝트마냥 되어 있는것도 별로다. 맞다. 자바스크립트도 스크립트니.. 조금만 더 자바스러웠으면 좋을뻔 했다.

일단 할 수는 있을 것 같으나, 개인적인 선입견으로 보류.

2. php

찾아보니 symfony라는 강력한 MCV 모델이 있는 것 같다. 데이터베이스 마이그레이션으로는 phinx를 많이 쓰는것 같고, rake 형식의 툴도 없진 않은 것 같고. php도 예전에 끄적거리던 시절보다는 많이 발전했겠지만, 굳이 이제와서 다시 php를 꺼내 써야 할까 하면 그건 또 모르겠고.

그리고 php라면 무겁다는 이미지가 있고, 이왕 하는김에 안보던걸 해볼까 하고 일단은 보류.

3. golang

그래서 여기까지 왔다. go의 웹 프레임워크는 echo, beego, gin, revel등을 고려해봤는데, 오히려 제약이 많다는 점 때문에 revel 쪽이 낫겠다 싶다. 제약이 많다는건 자동으로 해주는게 많은거고, 백엔드에 시간을 많이 할애하고 싶지 않거든. 게다가 rails의 정신을 이어받았다는 문구가 마음에 들었다. 그렇다고 rails를 좋아하는건 아닌데. (revel에 ORM이 없다고 하는데 이게 무슨 소리인지 모르겠다. rails는 ActiveRecord의 강력함이 사용성의 절반 이상을 차지한다 보는데. 이게 안되면 다른쪽을 선택하는게 나을지도... gorm, entgo까지 포함해서 고려해보고, 아니면 beego를 고려해보는걸로.)

rakefile은 사실 template로 코드를 찍어내는 편의성때문에 쓰는건데, 사실상 어떻게든 되지 않겠어? (사실 좀 새로운걸 만져보고 싶었을지도 모르지. 언제 원하는 모델이 완성될지 모르겠지만 일단 revel 부터 시작해보자.)

'프로그래밍 > Golang' 카테고리의 다른 글

Golang을 설치해 보자  (0) 2021.03.09

And