Stored Procedure를 사용하면서 비즈니스 로직이 소스코드와 DB 프로시저 양쪽에 분산되어 관리되기 때문에, 전체 로직을 파악하기 어렵습니다
또한 코드 변경 시 소스코드뿐 아니라 프로시저도 함께 관리해야 하므로 유지보수 비용이 높습니다
DB 서버에 부하가 집중되는 문제가 발생할 수 있다는 단점이 존재합니다
특히, 트래픽이 몰릴 경우, Application 서버는 Auto Scaling으로 쉽게 대응 가능하지만, DB 서버 증설은 복잡하고 어렵습니다
프로시저만 수정하는 경우, 변경이 즉시 반영되어 예상치 못한 버그가 서비스 전체에 영향을 줄 수 있습니다
만약 소스코드에 로직이 있었다면, 일부 인스턴스만 롤백하여 피해를 최소화할텐데, 프로시저는 그렇지 못합니다
프로시저는 여러 서비스에서 호출 가능해 재사용성이 높은 장점이 있으나,
특정 서비스가 과도하게 호출할 경우, 모든 서비스를 위협하는 병목지점이 될 수 있습니다
이를 방지하려면, 프로시저 호출을 중개하는 별도 Data Service 레이어를 만들고,
API 단에서 트래픽을 제어하는 구조가 필요합니다
Stored Procedure는 데이터 접근속도를 향상시킬 수 있고,
서비스 재배포을 최소화해서 비즈니스 로직을 수정할 수 있다는 장점이 있지만
유지보수가 어렵다는 등의 단점도 존재합니다