개발자로서 살아남기

프로시저와 여러 의견들

코드 살인마 2022. 10. 17. 20:18
728x90

프로시저란(Stored procedure)?

저장 프로시저는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다.
DB에 대한 일련의 작업을 정리한 절차를 RDBMS에 저장한 것으로, 영구저장모듈이라고도 불린다.

장점

  • 하나의 요청으로 여러 SQL 문을 실행할 수 있는데, 이런 경우 네트워크 부하를 줄일 수 있다.
    • 만약 JAVA 환경에서 10번의 쿼리를 실행한다고 가정한다면,
      JDBC를 통해 DB에 10번 request 해야한다.
      하지만 프로시저를 이용한다면 DB에서 10번의 SQL 실행문을 구현하고 1번만 호출하면 된다.
  • 개발 업무를 구분하여 더 효율적으로 프로젝트를 운용할 수 있다.
    • 애플리케이션만 개발하는 조직과 DB만을 관리하는 조직이 따로 있다면,
      애플리케이션 개발자는 JAVA와 같은 언어로 개발에 집중하고, DB 개발자는 DB 프로시저만 관리하면 된다. (현업에서도 필요한 프로시저가 있으면 어떤 방법이 더 효율적일지 협의 후, DBA 분께 요청한다.)
  • 애플리케이션 서버를 내리지 않아도 된다.
    • 프로시저 수정만으로 가능

단점

  • 코드 유지보수 , 재사용 면에서 좋지않다.
    • SQL 로직이 길어질 경우 이후 유지보수가 힘들 것 이고, 디버깅도 되지 않는다. 또한 프로시저는 여러 SQL문으로 만들어졌기 때문에 재사용성도 낮은 편이다.
  • 형상관리가 전혀 되지 않는다.
    • 버전관리나, 형상관리가 되지않아, 여러 DB을 사용하는 애플리케이션 같은 경우 DB관련 이슈가 발생해도, 원인을 찾기 쉽지 않다.

결론

프로시저 관련해서 여러 자료들과 의견들을 취합해봤을 때, 기업의 방향성에 따라 프로시저의 활용성에 대해 많이 갈리는 것 같다.

 

예를들어 관공서, 은행, 제조업과 같이 데이터 처리양이 많아 퍼포먼스를 내야하는 경우나, 애플리케이션 수정 후 배포가 껄끄러운 경우는 프로시저를 많이 이용하는 것 같다.

 

그와 반대로 형상관리를 중요시 하고, 애플리케이션 개발자가 많은 IT 기업은 데이터 처리량이 많은 경우에만 프로시저를 사용하는 것 같다. (뇌피셜..)

참조

위키 - https://ko.wikipedia.org/wiki/%EC%A0%80%EC%9E%A5_%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80

스콘 프로시저란? - https://deseul.tistory.com/m/entry/%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80PROCEDURE%EB%9E%80