AWS 기술 블로그
현대 무벡스, AWS Glue with SAP RFC를 활용한 SAP데이터 손쉽게 활용하기
회사 소개
현대무벡스는 글로벌 종합 물류 자동화 사업과 현대그룹사 IT 서비스 제공을 하고 있습니다.
현대무벡스는 30년이상 국내외 물류자동화 분야에서 독창적인 시스템 엔지니어링 업무를 성공적으로 수행해오고 있으며 물류 자동화 시스템의 컨설팅, 설계, 제작 및 설치, 유지보수까지 다양한 산업분야의 시스템 구축 사례와 시공 경험을 바탕으로 최적의 서비스를 제공하는 종합 물류 전문 기업입니다.
물류 사업분야 뿐만 아니라 IT 사업도 같이 진행하고 있으며 AWS 공식 컨설팅 파트너로서 AWS 컨설팅, 시스템구축, MSP 서비스를 제공하고 있습니다.
- 프로젝트 소개
현대무벡스 Cloud파트는 그룹사의 ‘데이터 기반의 의사결정 고도화’라는 비전을 실현하기 위해 SAP Data Warehouse Cloud 및 SAP Analytics Cloud를 기반으로 구축되어 있는 기존 데이터 분석 시스템의 문제점을 보안하여 표준 데이터 통합 플랫폼 구축을 위한 프로젝트의 PoC에 참여하였습니다.
그리고 이번에 소개 드리는 AWS 기반의 데이터 분석 서비스를 구축하여 고객사에게 제안하였습니다. 기존의 데이터 분석 시스템은 SAP ERP 시스템과의 높은 호환성을 바탕으로 데이터 통합을 추진했으나, 여러 가지 문제점에 직면하게 되었습니다. SAP 클라우드를 사용하면서 서비스 안정화가 미흡했고, 잦은 서비스 변경으로 오류가 빈번히 발생했습니다. 국내 사례 부족으로 기술 정보 획득과 문제 해결에 어려움을 겪었으며, 익숙하지 않은 사용자 인터페이스도 문제였습니다.
특히 Data Warehouse의 핵심 기능인 다양한 시스템과의 데이터 통합에서 SAP 이외 시스템과의 유연성 부족을 겪었습니다. 이는 데이터 기반 의사결정 고도화를 위한 종합적인 데이터 분석을 제한하는 요인이 되었습니다. 또한 SAP Cloud의 높은 사용료는 비용 효율성 측면에서 부담으로 작용했습니다.
이러한 상황에서 현대무벡스는 데이터 저장 및 분석 플랫폼의 개선이 시급했습니다. 안정성과 확장성을 갖춘 새로운 데이터 플랫폼으로의 전환을 통해 다양한 시스템과의 원활한 데이터 통합, 사용자 편의성 향상, 비용 효율화를 달성하고, 궁극적으로 데이터 기반의 의사결정 역량을 강화할 수 있는 방안을 모색해야 했습니다.
현대무벡스는 AWS의 강력한 데이터 통합 및 ETL(Extract, Transform, Load) 자동화 도구인 AWS Glue와 Amazon AppFlow 등의 AWS 서비스를 활용하기로 결정했습니다. 이들 서비스를 통해 SAP 데이터를 비롯한 다양한 소스의 데이터를 효율적으로 추출, 변환, 로드할 수 있는 환경을 구축하고자 했습니다.
- AWS Managed 서비스를 이용한 SAP Data 통합
SAP 지원 메커니즘(예: OData, ODP, SAP RFC 등)을 사용하여 SAP Data 를 통합할 수 있는 AWS Managed 서비스는 Amazon AppFlow 와 AWS Glue 가 있습니다. 아래 아키텍처 다이어그램(Figure 1)은 SAP 시스템을 Amazon AppFlow 와 AWS Glue 를 활용하여 수집하는 위 패턴 옵션을 보여 줍니다.
< Figure 1. SAP OData connector for Amazon AppFlow >
Amazon AppFlow SAP OData 커넥터는 OData API를 통해 SAP RISE, AWS 또는 온프레미스 시스템에서 호스팅 된 SAP 시스템으로 부터 노출된 레코드를 가져오고, 생성하고, 업데이트할 수 있는 기능을 제공합니다. 주요 특징은 다음과 같습니다:
- SAP ODP(Operational Data Provisioning)-Based Extraction via OData 의 내장된 변경 데이터 캡처 기능 활용 가능
- 실시간 또는 배치 모드로 데이터 추출 가능
- 소스 SAP 시스템에서 OData 서비스 구성 후 간단히 연결 설정
AWS Glue with SAP RFC
AWS Glue는 서버리스 데이터 통합 서비스로, SAP PyRFC 라이브러리 및 SAP OData API를 사용하여 애플리케이션 수준의 데이터 레코드를 가져오고, 생성하고, 업데이트할 수 있는 기능을 제공합니다. 주요 특징은 다음과 같습니다:
- SAP PyRFC 라이브러리를 활용하여 SAP function 호출
- 사용자 정의 변경 데이터 캡처 설계 가능
- 데이터 변환 작업 수행 (조인, 통합, 집계, 필터링 등)
왜 AWS Glue with SAP RFC 선택하게 되었는지?
SAP OData API 를 사용하려면 SAP 내에 OData 서비스를 구성해야 합니다. 하지만 AWS Glue with SAP RFC 방식의 경우 SAP Standard RFC 함수(RFC_READ_TABLE2)를 이용하면 별도 서비스 구성없이 SAP Table 단위로 데이터 레코드를 가지고 올 수 있고, SAP RFC는 이전부터 시스템 인터페이스를 위해 사용해 오던 방식이라 접근하기 쉬워 AWS Glue with PyRFC 방식을 채택하게 되었습니다.
- AWS Glue with SAP RFC 구현
SAP RFC to S3 using AWS Glue를 참조하여 AWS Glue with SAP RFC Python 스크립트를 작성하였습니다. PyRFC 호출을 위해 추가 Glue의 Python module 을 생성하고 스크립트를 테스트 환경에 맞게 SAP Connection 정보, Amazon Bucket S3, SAP Table Name 만 바꾸면 바로 활용이 가능하였습니다. 하지만 커스터마이징 및 대용량 테이블 수행 시 몇가지 이슈가 발생하여 아래와 같이 트러블슈팅 작업을 수행하였습니다.
< Figure 2. SAP RFC to S3 using AWS Glue >
- SAP 메모리 관련 덤프
AWS Glue에서 SAP RFC 를 이용한 “/SAPDS/RFC_READ_TABLE2” 호출 시 row count를 크게 설정할 경우 “TSV_TNEW_PAGE_ALLOC_FAILED” 덤프가 발생하였습니다. Application Server의 메모리 크기에 맞춰 Dialog 프로세스 메모리 값을 20GB 제한해 두었기 때문에 row count 변수를 테이블 별로 적절하게 조절 하여 Glue job을 수행하였습니다.
< Figure 3. SAP 메모리 관련 덤프 >
- ABAP Data Type 별 변환 이슈
호출 결과를 json 및 parquet 파일 타입으로 변환하고, 대규모 데이터 처리를 효율적으로 수행하기 위해 Pandas를 사용하였습니다. ABAP 데이터 타입과, Pandas 데이터 타입 차이로 인하여 특정 필드는 원하는 형태로 변환이 안되었습니다. 아래 표를 참고하여 Pandas의 astype 메소드를 활용하여 원하는 타입을 명시적으로 지정하고 변환 작업을 수행하였습니다.- ABAP Type 참고 자료
ABAP Type | Desc | Standard Data Type | 비고 |
D | Date | ABAP Format: YYYYMMDD | |
T | Time | ABAP Format: HHmmSS | |
I | Integer | Int | |
F | Float | float | |
C | Character | char | |
N | Numeric Text | Int | |
P | Packed Num | double |
< Figure 4. ABAP Data Type >
- 수행 후 특정 필드 Data 공백 처리
수행 후 특정 필드에 공백이 포함되어 있는 경우, Amazon Athena에서 쿼리 수행 시 에러가 발생하였습니다. 아래와 같이 Python strip() 메소드를 호출하여 공백을 제거하는 스크립트를 추가하여 간단하게 해결 하였습니다.
- AWS Glue DataBrew 이용한 데이터 정제
AWS Glue 를 이용해서 데이터 추출 후 Glue Crawler로 Data Catalog를 자동으로 생성하였는데, 특정 데이터 필드들이 파일별로 서로 다른 타입을 가지고 있어, 이후 분석 작업에서 어려움을 겪었습니다. 이를 해결하기 위해서는 Glue Crawler를 사용하지 않고 수동으로 Table Schema를 정의하거나, 복잡한 ETL 작업을 수행해야 하는데, AWS Glue DataBrew 를 사용하여 코드 없이 데이터를 쉽게 정제할 수 있었습니다. Glue DataBrew는 코드 작성 없이도 250개 이상의 사전 빌드 된 변환 구성을 제공하여 데이터 준비 작업을 자동화할 수 있게 해줍니다.
Summary
< Figure 5. Summary >
- SAP 데이터 추출: SAP RFC to S3 using AWS Glue를 참조하여 AWS Glue Job을 생성 후 Application Layer에서 테이블 단위 데이터 추출
- 데이터 정제: AWS Glue DataBrew의 시각적 인터페이스를 통해 데이터를 정리하고 정규화합니다. 특히 파일별로 다른 필드 타입을 통일하는 작업을 수행합니다.
- 변환 자동화: 정제 과정에서 생성된 변환 구성을 저장하여 향후 유입되는 새로운 데이터에도 자동으로 적용할 수 있습니다.
- AWS Glue 작업과 통합: AWS Glue Studio Visual ETL 작업을 통해 Glue DataBrew 레시피를 가져올 수 있습니다. 이를 통해 대규모 데이터 처리와 확장성을 확보할 수 있습니다.
마무리
AWS Glue를 활용한 현대무벡스의 데이터 통합 및 ETL 프로세스 개선에 대한 주요 내용을 요약하면 다음과 같습니다:
- 비용 효율성:
- AWS Glue의 Data Catalog를 통해 S3 기반의 경제적인 데이터베이스 구성
- Amazon Athena와 Power BI 연동으로 비용 효율적인 데이터 분석 및 시각화
- 운영 편의성:
- AWS Glue의 Connection 설정, Crawler를 통한 스케줄 관리 등 간편한 운영
- AWS Glue Studio를 통한 시각적 ETL 작업 생성, 실행 및 모니터링
- 시간 기반 또는 이벤트 기반 스케쥴링 지원으로 ETL 작업 자동 실행
- AWS Glue Data Catalog 기반의 메타데이터 관리로 복잡한 SAP 데이터 관리 용이
- 데이터 품질 향상:
- AWS Glue DataBrew 기능을 활용한 효과적인 데이터 정리 및 정규화
- 코딩 없이도 데이터 탐색 및 정리 가능한 시각적 인터페이스 제공
- 확장성:
- 다른 AWS 서비스(Athena, EMR, Redshift Spectrum 등)와의 원활한 통합
- 효율적인 데이터 파이프라인 구축 및 데이터 기반 의사결정 지원
이러한 개선을 통해 현대무벡스는 비용 효율적이고 확장 가능한 데이터 처리 및 분석 환경을 구축하여 데이터 기반의 의사결정 능력을 크게 강화할 수 있었습니다.
< Figure 6. 전체 구성도 >