[ABAP] CDS vs ABAP 퍼포먼스 비교

JIHUN LEE·2024년 5월 28일
1

프로젝트를 진행하던 중 궁금증에 빠졌다.

Core Data Service(CDS)를 활용하는 법도 배웠고, S/4HANA는 인메모리 DB이기 때문에 DB단에서 연산을 해서 Application으로 값을 보내주는 Code To Data 방식의 효율이 좋다는 것도 배웠다. 과연 진짜 그럴지에 대한 사소한 궁금증에서부터 마침 HANA DB환경에서 실험을 해볼 수 있었기에 이 실험이 시작되었다.

먼저 아래 그림으로 HANA DB와 CDS의 관계 및 CDS의 발전에 대해서 이야기를 해보아야겠다.

간단히 CDS 관점에서의 메모리를 보았을 때, 우리가 개발에 필요한 메모리를 사용하는 주체는 2곳이 있다.

Application Program Model과 Database 두 곳에서 개발에 필요한 메모리를 사용하여 프로그램을 실행할 수 있는 것이다.

S4/HANA DB의 탄생으로 인메모리 DB의 이점을 충분히 끌어 올려야 한다.

S/4HANA DB이전에는 DB의 부하를 줄여줘야 했기에 Application Program Model에서 로직을 수행하고 메모리를 사용했어야 한다.

하지만 S/4HANA DB의 등장으로 DB의 부하보다는 DB의 활용도를 높여야 했고, S/4HANA DB의 퍼포먼스가 좋았기 때문에 기존에 Application단에서 수행했던 로직들을 DB단에서 수행이 가능해졌고, 오히려 더 빠르다는 이점이 있다.

문득 궁금해졌다. 진짜 빠를까?

실험 해보자.

나름 연산에 메모리를 많이 잡아먹는다고 생각한 Join문을 가져왔다. 그래야 차이가 보이지 않을까 하는 마음에 생산오더의 Header 테이블과 Item테이블을 Join해서 보여주는 Select문이다.

검색하는 결과값이 같게 나오도록 같은 테이블, 같은 조건, 같은 필드를 출력하도록 통제하였다.

또한 테이블을 보여주는 로직 역시 CL_DEMO_OUTPUT=>DISPLAY_DATA을 CDS와 ABAP의 차이만을 보기 위해 프로그램을 2개 만들어서 진행하였다.

1. ABAP Program

코드는 다음과 같이 간단하게 작성하였다.

2. CDSView

CDS View는 ABAP Development Toolkit(ADT)를 활용하여 이클립스 환경에서 구현하였다.

3. 결과 : Single Transaction analysis(T-code : ST12)


두 프로그램의 퍼포먼스를 비교하기 위해 어떻게 하면 좋을까 구글링을 해보니 Transaction의 퍼포먼스를 비교할 수 있는 Tcode가 있었다! 주저하지 않고 두 프로그램의 퍼포먼스를 비교해 보았다.

생각보다 놀라운 결과 였다.

우리가 중점적으로 봐야할 부분이 Duration ABAP Trace(ms)이다.

Duration ABAP Trace(ms)은 Transaction이 수행되는데 사용하는 시간이다.

ABAP Program 단에서 Join연산을 수행하였을 경우 150ms,
CDS View를 활용해 DB단에서 Join연산을 수행하였을 경우에는 98ms가 소요되었다.

CDS View를 활용해 DB단에서 Join연산을 수행했을 때, ABAP Program 단에서 Join연산을 수했을 때 보다 150% 이상의 효율이 발생한 것이다.

물론 단위가 ms이기도 하고, 복잡한 로직이 아니었다는 점을 감안하고 봐도 놀라운 결과였다.

위 첫번째 사진은 ABAP Program에서 Join을 한 경우이고, 두번째 사진은 CDS View에서 Join을 한 경우이다.

위 분석 결과를 해석 해보자면,

ABAP단에서 소요 시간은 각각 88,869μs84,775μs 이다. 근소한 차이지만 대부분 CDS View를 활용한 프로그램에서의 84ms의 대부분은 CL_DEMO_OUTPUT=>DISPLAY_DATA을 실행하면서 사용된 것이라고 추측이 된다.

DB단에서 소요된 시간은 56,560μs9,177μs였다. 이부분이 가장 충격적인 부분이었다. CDS View의 Join연산을 DB에서 진행을 해도 Data-To-Code 방식인 ABAP Program에서 Join을 한 경우보다 소요 시간이 더 적었던 것이었다.

마무리

왜 기업들이 S/4HANA로 Conversion을 하는지 이해가 되는 부분이었다.

물론 Conversion을 하는 이유가 이 뿐만이 아니라 다양하겠지만, 이런 단편적인 부분만 봐도 충분히 S/4HANA DB가 놀라운 퍼포먼스를 내고 있다는 점을 확인 할 수 있었다.

결과를 보고 과정을 추측한 것 이었고, Trasaction Analysis 부분에서 오류가 있었을 수 있다. 혹시라도 이 글을 읽고 과정의 오류나 결과 해석의 오류가 있으면 댓글이나 메일을 부탁드립니다..!

RAP(ABAP RESTful Application Programming Model)방식을 사용하여 개발해 보았는데 이 과정은 CDS를 통해 HANA DB의 성능을 활용하여 사용할 수 있는 방안이다. 위 분석은 어떻게 보면 단편적인 이야기일 수 있다. 하지만 기업의 전사적인 리소스 관리 차원에서 바라본다면 소프트웨어 최적화, 성능 극대화를 꿈꿀 수 있지 않을까 라는 생각이 들었다.

profile
Hello I'm Jihun

1개의 댓글

comment-user-thumbnail
2024년 6월 23일

흥미로운 실험결과네요. CDS View를 사용하는 이유를 잘 배웠습니다 ^^

답글 달기