ABAP 교육을 듣고.. ABAP에 대한 생각들

     




 ABAP의 A자도 모르고 살아왔는데 회사에서 우연히 ABAP교육이 있다고 해서 얼른 신청했다. 회사에 들어오기 전까지는 정말 들어보지도 못했던 용어였는데(내가 관심이 없었던 건가..) 회사에 들어오고 나서 SAP이나 ABAP이라는 용어를 접하고 도대체 어떤 솔루션인지 궁금해 검색을 해보았지만, 확실하게 이해할 수 없었다. 따라서 이 교육기회가 ABAP이란 것이 어떻게 생겨먹은 것이며, 어떻게 굴러가는 것인지 알 수 있는 좋은 기회가 될 것 같다.


 일단 ABAP에 대한 사전지식이나 전문적인 지식이 전무한 상태에서 1일차의 교육을 들었다. ABAP에 대한 전반적인 설명이나 흐름 등에 대해 배웠는데, 기존에 사용하던 솔루션들에 비해 확연한 차이가 있음에는 분명했지만, 단순히 솔루션들을 합쳐놓고 편하게 쓰기 위한 '통합 솔루션'이라는 생각이 가장 먼저 들었다.


 무슨 말이냐면, 일단 내가 이해한 바로는, ABAP이라는 프로그래밍 언어는 SAP라는 솔루션 안에서 동작한다. SAP이라는 것은 업무를 도와주는 어플리케이션이라고 생각된다. 엑셀이나 파워포인트같이 특정 업무를 할 때 사용하는 어플리케이션같은 것이다. 하루 동안 체험한 SAP은 데이터베이스에 최적화된 툴이라고 생각한다. 사용자가 요청한 데이터를 데이터베이스에서 뽑아서 보여주는 것이 가장 일반적인 작업인 것 같이 보였다. 하지만 다른 응용프로그램과 다른 점은, SAP에서 직접 DB를 생성하고 관리하며, 서버와 클라이언트가 같이 붙어있는(?) 느낌이다. 


 내가 왜 이런 생각을 하게 되었냐면, 내가 일하고 있는 증권 ITO는 서버와 클라이언트가 독립되어 있다. 서버는 서버대로 돌아가고 클라이언트는 클라이언트대롤 돌아간다. 심지어 둘의 개발된 언어도 다르며 개발 환경도 다르다. 단지 둘 사이에 연결은 패킷을 이용해 주고받는 데이터뿐이다. 반면에 SAP는, 서버와 클라이언트가 한 솔루션 안에 있는 것처럼 보인다. 같은 솔루션에서 디비를 생성하고 디비에 대한 데이터를 추출하는 프로그램을 만들며, 클라이언트로 접속하여 디비에서 원하는 자료를 출력한다. SAP이라는 하나의 솔루션 안에서 데이터베이스를 만들고 데이터를 추출하는 로직을 만들고 사용자가 데이터를 확인하는 일련의 과정이 다른 솔루션에서는 상당히 복잡하다. 


 이런 일련의 과정은 내가 증권에서 하고있는 채널 서버 업무와 비슷하다. 예를 들면 고객에게 기업의 재무데이터를 보여주기 위해 먼저 데이터베이스 서버에서 재무테이블을 생성한다. 이렇게 생성한 데이터베이스 테이블에 데이터를 적재하기 위해 거래소에서 재무데이터를 받는 시세서버에서 데이터베이스 서버에 접속해 테이블에 데이터를 삽입한다. 클라이언트에서 이 데이터베이스에 있는 재무데이터를 불러오기 위해서는 일단 MCI서버(채널통합서버)를 거쳐 시세서버(재무데이터를 관리하는..)에 요청을 보내고, 시세서버는 데이터베이스에서 알맞은 데이터를 꺼내 다시 MCI서버에 보낸후, MCI서버에서 클라이언트로 데이터를 보내게 된다. SAP에 비해 경로가 상당히 복잡하지만, 같은 프로세스에 대한 설명이다.


 그렇다면 여기서 알 수 있는 SAP의 장점은 무엇일까? 가장 큰 장점은 SAP이라는 하나의 툴 안에서 모든 것을 해결할 수 있는 편의성이라고 생각된다. 서버와 클라이언트, DB를 각기 다른 솔루션을 사용하는 일반적인 작업환경에서 개발하는 것과, 획일화된 환경에서 개발하는 것은 마치 국어, 영어, 수학, 과학을 전부 공부해야 하는 것과 한 과목만 공부하면 되는 것의 차이..? 라고 생각된다.



 하지만 SAP이 다른 솔루션들에 비해 효과적인가? 라는 물음에는 아직까지는 '?'라고 대답하고 싶다. SAP의 특징을 보면 편한 디버깅환경, 인터널 테이블의 활용이다. 편한 디버깅 환경이야 개발자의 편의성을 올려주는 것이기에 제외하고(물론 생산성을 증가시켜주긴 하지만, 성능적인 효과는 아니다.) 인터널 테이블은 상당히 위치가 애매하다. 교육을 듣고 이해한 인터널 테이블은 일종의 캐쉬역할을 수행하는 테이블이다. 메인 데이터베이스에서 일부데이터를 이용해 프로그램 내에서 테이블을 만들어, 데이터를 찾을 때 메인 데이터베이스에 접속하는 수고를 덜어주는 역할을 한다. 이 말은, 메인 데이터베이스는 아마 디스크에 생성되어 있고, 인터널테이블은 메모리내에 만들어진 것이라고 추측된다.(교육에서 이것까지 설명해주지는 않았지만, 나의 추측상 그럴 것 같다..) 데이터베이스가 메모리에 있느냐 디스크에 있느냐는 생각보다 중요한 이슈이다. 증권의 시세데이터의 경우 1분 1초로 바뀌는데, 고객이 이 시세 데이터를 조금이라도 늦게보면 금전적인 손해가 발생 할 수 있기 때문에 최대한 빠르게 데이터를 전송해야 한다. 이때 기계적으로 동작하는 디스크에서 데이터를 전송한다면 아무래도 느릴 수 밖에 없다. 따라서 대부분의 증권에서는 'In-Memory DB'를 사용한다. 하지만 이것보다 더한 속도를 요구하는 경우는 아에 메모리 자체에 데이터를 생성해놓고 메모리를 공유하는 방법을 사용한다. (리눅스/유닉스 쉐어드메모리) 따라서 이미 'In-Memory DB' 솔루션이 등장하고 사용되는 가운데 인터널 테이블이 솔루션의 장점이 될 수 있을까? 



 서버, 클라이언트, DB의 획일화된 작업환경 역시 규모가 커진다면 파트별로 나누어 운영하게 되면 그렇게 큰 장점이 되지 않는다.(물론 약간의 장점은 있겠지만..) 하지만 적은 인원으로 효과적인, 특히 데이터관리에 최적화된 운영툴을 사용하기에는 SAP이 편할 수도 있다고 생각된다.


 아직까지 SAP ABAP에 대해 많은 것을 배우지 않았다. 단순히 SAP이 어떻게 생겨먹었는지만 간단하게 들었는데, 기존 솔루션들과 같지만 다른 특이한? 솔루션이란 생각이 든다. 향후 어떻게 발전할 것인지 관심이 가는 솔루션인 것은 확실하다.

반응형

댓글

Designed by JB FACTORY