node.js 로 개발 중입니다. DB 사용시 Sequelize(ORM) 를 사용할 때 안할 때 유리한 점?

조회수 2627회

node.js로 개발 중입니다. 저는 mssql 2년 경험이 있습니다.

처음에는 db 부분을 mysql 모듈을 사용하여 개발했습니다.

그런데 Sequelize.js 라는 것을 알게 되어서 사용 해왔는데요.

아무래도 쿼리로 다루는게 아니다보니 약간 어렵긴 했지만 사용했습니다.

그런데 개발이 깊어질수록 이 부분에 대해 Sequelize.js를 사용하는 것과 안하는 것에 대한 궁금증이 생겼습니다. 실무에서는 어떤 방법을 추구하는지, 각 장단점이 어느 것이 있는지 궁금합니다.

경험 있으신 선배님들 조언 구합니다!

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    개발자들 마다 많이 호불호가 갈리는 편입니다.

    ORM을 굉장히 싫어한는 분들도 많이 있고, 열광하시는 분들도 많이 있습니다.

    임피던스 불일치라고 불리는 ORM을 사용함으로서 생기는 모델링의 상이점(객체 관계 <-> RDB)과 성능 저하 때문입니다.

    ORM은 벤더(mysql, oracle, pgsql) 종속을 피하는 방향으로 디자인 되기 때문에 각 벤더에 맞는 최적 쿼리가 아니라 공통 상위 형태로 구현됩니다.

    물론 아주 잘 디자인 된 ORM툴 이라면 이런 부분을 많이 벗어날 수 있습니다.

    저는 사용을 권하는 편인데 간단한 CRUD연산은 매우 반복적인 코드를 만들어 내기 때문에(테이블명이나 컬럼명만 다른) 중복이 많이 생기고 그에 따라서 리펙토링의 어려움이나 사용자의 실수가 개입되기 쉽습니다.

    Sequelize의 문제를 떠나서 모든 프레임워크/라이브러리 사용은 공통적인 문제를 지니게 됩니다.

    장점

    • 반복되는 코드를 제거해서 빠른 개발속도를 얻을 수 있다
    • 단순 문자열(sql)로 관리되지 않기 때문에 리펙토링 도구의 도움을 받을 수 있다
    • 특정 벤더에 종속되지 않기 때문에 DB를 쉽게 변경할 수 있다
    • 잘 관리된 라이브러리라면 내가 짜는 것 보다 버그가 적을 것이다

    단점

    • 상대적으로 덜 최적화된 쿼리문의 생성(N + 1 쿼리 등)으로 성능이 저하될 수 있다
    • 프레임워크/라이브러리가 커버하지 못하는 문제가 생기는 경우 예외 처리가 어렵다
      • 라이브러리가 더 이상 관리되지 않는다면 어떻게 할가? (인기없는 경우 사라질 수 있습니다)
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 원하던 답변이었습니다. 다시 생각해봐야겠네요 소중한 경험담 고맙습니다. 상남자 2016.9.25 16:49

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)