inflearn logo
강의

Course

Instructor

Equipping Developer Fundamentals - Essential Concepts and Core Theories for Programming Development

The developer's eternal dilemma: ORM vs Stored Procedure

SP를 아직도 사용하나요?

8

exbe

5 asked

0

안녕하세요. 웹/백엔드 JAVA 개발자입니다.

현재 SP를 실제로 사용할까요? (DB Procedure로 이해)

(레거시 시스템 운영 외 현대의 서비스에서)

일반적으로 SP 방식의 경우 강의 내용에서 나온

버전 관리의 문제, 벤더 락인, 부분적 로직 재사용 등의 한계가 있어보여, 저는 줄곧 ORM에 적합한 환경이 아니더라도 SP 보다는 Application 레벨에서 Query를 작성&관리&실행하는 형태로 줄곧 서비스를 운영해왔고, 강의에서 언급된 ORM의 단점도 Application 에서 쿼리를 관리하면 사라지는 단점으로 보여져서, 사실상 SP는 지양해야 할 레거시 방식으로 생각하고 있었습니다.

아직 다른 도메인 영역에서는 SP를 고수하는 분야가 있는걸까요?

아키텍처 컴퓨터-구조 기술면접 소프트웨어-설계 문제해결능력

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. exbe님.

질문해주신 SP(Stored Procedure)의 현대적 사용에 대한 내용은 복잡하고 다양한 의견이 있을 수 있는 주제입니다. SP는 특정 로직을 데이터베이스 내에서 직접 수행하여 네트워크 오버헤드를 줄이거나, 보안성을 높이는 데 도움을 줄 수 있는 장점이 있습니다. 다만, 언급하셨듯이 벤더 락인 문제, 코드의 가독성과 관리 문제 등이 단점으로 지적됩니다.

SP가 사용되는 분야 및 이유:

  1. 데이터베이스 중심 설계: 데이터베이스에 집중하는 시스템에서는 SP가 여전히 유용할 수 있습니다. 대량 데이터 처리나 데이터베이스 연산이 빈번한 곳, 데이터 무결성을 유지해야 하는 경우에 적용되곤 합니다.

  2. 보안의 필요성: 데이터베이스 내에서 직접 로직을 수행함으로써 데이터 접근을 제어할 수 있어 보안상 장점을 가지기도 합니다.

  3. 엔터프라이즈 레거시 시스템: 대규모의 기존 시스템에서는 이미 작성된 SP를 유지보수하는 경우가 많으며, 이를 완전히 대체하기에는 비용과 시간이 많이 소요되기 때문입니다.

  4. 특정 고성능 요구: 응답 속도가 중요한 트랜잭션 작업에 있어 SP의 효율성을 활용하는 경우도 있습니다.

현대적 대안:

많은 최신 개발 프로젝트에서는 SP 대신, 마이크로서비스 아키텍처, RESTful API, ORM 기술 등을 활용하여 시스템을 설계하는 경우가 많습니다. 이를 통해 코드의 재사용성, 유지보수성, 이식성을 개선하려고 합니다.

다음의 게시물을 통해 더 구체적인 내용과 다양한 관점을 살펴보실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

너무 흥미진진합니다..

1

7

1

캐시전략 - Write-behind

0

10

1

실무에서 진행한 쿼리 개선 사례 공유 관련 질문드립니다

0

14

1

일대일 fk 위치

0

21

1

다음 강의는 언제쯤 나올까요?

0

28

2

제 3 정규형 vs BCNF 정규형 차이점?

0

34

3

백준 사이트 서버종료

1

26

0

순위가 동률일 때의 처리에 대해 질문드립니다.

0

41

2

Singleton 관련 질문입니다.

1

50

2

3강 질문

0

42

2

Substack 1년 제공

1

33

3

특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다

0

33

2

2강 nodejs 3단계 설명 질문

0

46

1

회사의 시스템 아키텍처를 포트폴리오에 써도 되나요?

1

54

2

실제 FK제약조건을 설정하지 않는이유

0

54

2

scanf("%d\n") 의미

0

27

1

REST API (Self-descriptive messages)

0

28

1

네트워크 전체 흐름 복습 질문

1

40

3

프로필 사진 세팅과 관련하여 질문 드립니다

1

55

2

라우팅 테이블 설정 중 궁금한게 있습니다.

0

41

1

user-service jwt

0

38

2

애그리거트 질문있습니다!

0

36

2

시스템 엔지니어 관련 질문입니다.

0

53

2

주소 연산자(&) 간접 지정자(*) 반대 개념

0

36

1