ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 조각모음 ] - squelize의 장단점과 package-lock.json
    기타 2020. 12. 16. 00:50

    안녕하세요. 이번 글은 시퀄 라이즈와 package-lock.json에 대하여 포스팅하고자 합니다.

    나중에 sequelize와 package.json에 관한 포스팅을 하게 되면 따로 분리할 예정입니다. 

     

     


    참고: package.json

    npm을 가지고 모듈(패키지)을 설치하다 보면 package.json 파일을 마주치게 됩니다.

    package.json은 해당 프로젝트가 사용하고 있는 패키지에 관한 정보와 의존 중인 버전에 관한 정보를 담고 있습니다. 

    쉽게 말해 github와 같은 원격 저장소에서 프로젝트를 다운로드받고 npm install을 하게되면 프로젝트를 실행하기 위한 패키지들을 다운로드받게 되는데, 패키지에 관한 정보들이 package.json 파일에 있습니다.

    해당 파일을 이용하여 npm 명령어(script)를 추가할 수도 있습니다. 

     

    패키지의 버전은 메이저, 마이너, 패치로 구성이 되어있으며 package.json의 설정에 따라 최신 버전이 나온다면 설정에 따라서 해당 패키지를 업데이트하게 됩니다. ( 설치하는 시점에 따라 패키지 버전이 다르게 설치될 수 있다. )

     


    package-lock.json

    package-lock.json는 시간에 따라 패키지 버전이 다르게 설치되는 것을 막아줄 수 있습니다.

    즉, package-lock.json은 패키지가 설치되는 시점에 대한 정보들을 가지고 있습니다.

     

    설치되는 시점에 대한 정보들을 가지고 있는 것은 중요합니다. 왜냐하면 패키지가 새로운 버전이 나오고 나서 npm install을 하게 된다면 

    이전 프로젝트와 현재 프로젝트의 패키지 버전이 달라져 문제가 발생할 수 있습니다.

     

    예를 들어 개발자 A, B가 있다고 가정합니다. 
    개발자 A는 1년 전, 개발자 B는 한달 전 프로젝트를 착수하였다고 가정합니다. 

    ( 개발자 A의 express 버전은 4.17.1 / 개발자 B의 express 버전은 4.5.1 )

    서로 다른 버전으로 개발을 하게 되면 정상적으로 프로젝트가 잘 동작할 수도 있지만 예기치 못한 문제가 발생할 수 있습니다.

    프로젝트를 최신화하는 것도 중요하지만, 팀원들과 동일한 환경(버전)에서 개발하는 것 또한 중요합니다.

     


    squelize 

    시퀄라이즈를 사용하다 보면 실제로 제가 느끼는 장점은 다음과 같습니다.

    1. 직관적이다.

    2. 재사용 및 유지 보수가 편리하다.

       - 메서드들을 만들어 놓고 재사용하고, 메서드들끼리 트랜잭션을 처리하는게 편하게 다가왔습니다. / 체이닝

    3. DBMS에 대한 종속성이 줄어든다. 
      ( 프로젝트의 데이터베이스를 바꾸게 되는 경우는 흔치 않습니다. 실제로도 바꾸적은 없었습니다. )

     

     

    시퀄라이즈를 단점은 다음과 같습니다.

    1. 쿼리문보다 퍼포먼스가 느리다.
       ( logging을 true로 해봐도 실제로 내가 요청하는 것 이상으로 데이터를 처리하여 반환하는 경우가 있다. )

       => 개인적인 의견은 시퀄라이즈를 사용함으로써 일정한 퍼포먼스를 내는 것 또한 장점인 셈입니다. 
            DBA 전문가가 아닌 이상 쿼리 성능을 측정하여 튜닝을 한다는 것은 난이도가 높은 작업을 요구할 수 있습니다.
            초보자들이 잘못된(?) sql문을 작성하는 것보다 시퀄라이즈를 사용하는게 오히려 성능면에서 나을 수 있다는 생각이 듭니다.

    2. 서비스가 복잡해질수록 orm으로 할 수 있는 작업의 범위가 한계가 있다. 



    참고   :

    medium.com/riipen-engineering/limitations-of-sequelize-f131ecf50c3a
    blog.logrocket.com/why-you-should-avoid-orms-with-examples-in-node-js-e0baab73fa5/

     

     

     

     

    감사합니다.

     

    " 한때 자신을 미소 짓게 만들었던 것에 

    대해 절대 후회하지 마라. "

     

     엠버 데커스

     

     

     

     

     

Designed by Tistory.