프로시저를 사용한 프로젝트의 유지보수를 1년 가까이 진행하고 있다.
개인적으로 느끼는 프로시저의 장점과 단점을 정리해 보겠다. 경험을 기억하기 위해 기록하는 것이니 참고 바란다. 내가 작성한 프로시저는 아니기에, 프로시저 구현 방법에 따라 장점과 단점이 달라질 수 있음을 유의해주길 바란다. CS 적인 측면에서의 장점은 말할 수 없다 ..모르니까!
참여한 프로젝트의 전체적인 개요는 .. 자바는 프론트와 프로시저의 연결고리로만 사용되어있고 체감 99% 프로시저로만 기능이 구현되어 있다. 예로, 화면에서 조회, 수정 등을 해야할 경우 따로 판매 추가 등의 모듈화가 되어있는 것이 아닌, 조회 기능의 프로시저. 수정 기능의 프로시저 이런식으로 구현이 되어있다.
갓 경력이 1년 지난 주니어 개발자라 뭐가 맞는지는 모르겠다. 다만 프로시저가 600줄이 넘어가니 ... 쉽지 않다는 건 느꼈다.
MairaDB 를 사용하고 있다.
프로시저
프로시저의 개념과 사용법은 아래 글에서 자세히 확인할 수 있다.
https://skylarcoding.tistory.com/191
프로시저 장점
- Mybatis 에 작성하기에 긴 프로시저를 따로 파일로 관리할 수 있다.
- CTE 사용 없이 select 로 값을 조회하고 변수에 담아 프로시저 내부에서 사용할 수 있다. (물론 CTE 사용하기도 함)
- 야근없이 로직 수정 및 배포가 가능하다. (자바나 프론트에서 배포해야 하면 야근 확정)
- 프로시저 만으로도 기능 구현이 가능하다.
프로시저 단점
- 디버깅하기 너무너무너무너무너무 어렵다. 어디서 값이 안나오는건지, 쿼리문 전체 돌려봐야 한다. 장점2번에 적힌게 사용된다? 그거 다 하나하나 확인해야 한다.
- 영향도 확인이 어려움. 인텔리제이에서 ctrl + shift + F 로 해당 테이블을 어떤 프로시저 파일에서 사용하는지 확인해야 한다 ...
- 프로그램 흐름을 알기 어렵다. 자바는 프로그램의 흐름이 대략적으로라도 보이는데, 프로시저는 그런거 없다. 걍 테이블별로 어떤 기능을 하는지, 컬럼은 어떤 기능을 하는지 다 알고 있어야 한다. 주석 없으면 죽음뿐.
- 전체가 프로시저로 기능이 구현되어 있으니 처음에 미쳐버릴 뻔 했다. 초반에 진짜 개개개개많이 울었음. 리터럴리 울었음. 말 그대로 울었음. 퇴근하고 너무 힘들어서 한시간동안 울었음.
물론 .. 나는 사수없이, 인수인계 없이 3개월만에 이 프로젝트를 덜컥 맡아서 더 힘들었던 것도 있다. 상황에 따라 다르니 너무 겁먹지 말것 ... 우선 나는 내 상황을 아는 모든 사람이 내 연차에 맡기에 버거운 일을 맡았다고 말한다. 심지어 대표마저도. 근데 고객사랑 계약때문에 어찌할 수가 없다 ... 그리고 누구 사람 붙여줘도 그 사람까지 내가 관리해야해서 어차피 다 내 일임 ..
프로시저는 기술적 어려움에 불과할 뿐. 업무적인 어려움도 많다. 내가 힘들어서 울었던건 100퍼 프로시저 때문은 아니라는거. 사람때문도 있다. 지금은 걍 막나가는 주니어 개발자 1이다.
프로시저 분석/디버깅하는 방법
솔직히 분석은 노가다이다. 왕도가 없다고 느껴진다. 하다보니 요령이 생기는 것 뿐 .. 내가 참여한 프로젝트의 프로시저에만 국한되는 요령일 수도 있다.
우선 프로시저는 자바처럼 에러가 나는 위치에 대한 디버깅이 안된다. 프로시저 내용 전부를 콘솔에 옮겨줘야 한다. 그리고 파라메터와 변수 값을 하나하나 ctrl + R로 변경해줘야 한다..
어쨌든 내가 최근에 터득한 요령을 말하자면. 모든 파라메터 값을 이렇게 콘솔 변수로 선언해주는 것이다.
그럼 여러 케이스를 조회해야할 경우 변수값만 변경해주면 된다.
SET @iParam = '';
콘솔 변수에 대한 자세한 내용은 여기에서 확인하길.
누군가에게 도움이 되길 바란다.
끝.