AWS 기술 블로그

현대 무벡스, AWS Glue with SAP RFC를 활용한 SAP데이터 손쉽게 활용하기

회사 소개

현대무벡스는 글로벌 종합 물류 자동화 사업과 현대그룹사 IT 서비스 제공을 하고 있습니다.

현대무벡스는 30년이상 국내외 물류자동화 분야에서 독창적인 시스템 엔지니어링 업무를 성공적으로 수행해오고 있으며 물류 자동화 시스템의 컨설팅, 설계, 제작 및 설치, 유지보수까지 다양한 산업분야의 시스템 구축 사례와 시공 경험을 바탕으로 최적의 서비스를 제공하는 종합 물류 전문 기업입니다.

물류 사업분야 뿐만 아니라 IT 사업도 같이 진행하고 있으며 AWS 공식 컨설팅 파트너로서 AWS 컨설팅, 시스템구축, MSP 서비스를 제공하고 있습니다.

  1. 프로젝트 소개

현대무벡스 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 데이터를 비롯한 다양한 소스의 데이터를 효율적으로 추출, 변환, 로드할 수 있는 환경을 구축하고자 했습니다.

  1. 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 시스템으로 부터 노출된 레코드를 가져오고, 생성하고, 업데이트할 수 있는 기능을 제공합니다. 주요 특징은 다음과 같습니다:

AWS Glue with SAP RFC

AWS Glue는 서버리스 데이터 통합 서비스로, SAP PyRFC 라이브러리 및 SAP OData API를 사용하여 애플리케이션 수준의 데이터 레코드를 가져오고, 생성하고, 업데이트할 수 있는 기능을 제공합니다. 주요 특징은 다음과 같습니다:

왜 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 방식을 채택하게 되었습니다.

  1. 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을 수행하였습니다.
# pyrfc_read_table.py 에 rowCount 값을 SAP 환경에 맞게 적절하게 조정
# 1.4 extracting table name and option
tableName = "DD03L"
delimiter = '`'
rowCount = 500000 #Adjust
Python

< 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 >

for fieldname in field_name:

if(field_data[fieldname] == 'N'):

pd_result[fieldname] = pd_result[fieldname].astype('int',errors='ignore')

elif(field_data[fieldname] == 'F'):

pd_result[fieldname] = pd_result[fieldname].astype('float',errors='ignore')

elif(field_data[fieldname] == 'I'):

pd_result[fieldname] = pd_result[fieldname].astype('float',errors='ignore')

elif(field_data[fieldname] == 'P'):

pd_result[fieldname] = pd_result[fieldname].astype('double',errors='ignore')

elif(field_data[fieldname] == 'D'):

pd_result[fieldname] = pd.to_datetime(pd_result[fieldname], format='%Y%m%d', errors='coerce')
Python
  • 수행 후 특정 필드 Data 공백 처리

수행 후 특정 필드에 공백이 포함되어 있는 경우, Amazon Athena에서 쿼리 수행 시 에러가 발생하였습니다. 아래와 같이 Python strip() 메소드를 호출하여 공백을 제거하는 스크립트를 추가하여 간단하게 해결 하였습니다.

raw_data = line["WA"].strip().split(Table_Delimiter)
Python
  • 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 프로세스 개선에 대한 주요 내용을 요약하면 다음과 같습니다:

  1. 비용 효율성:
    • AWS Glue의 Data Catalog를 통해 S3 기반의 경제적인 데이터베이스 구성
    • Amazon Athena와 Power BI 연동으로 비용 효율적인 데이터 분석 및 시각화
  2. 운영 편의성:
    • AWS Glue의 Connection 설정, Crawler를 통한 스케줄 관리 등 간편한 운영
    • AWS Glue Studio를 통한 시각적 ETL 작업 생성, 실행 및 모니터링
    • 시간 기반 또는 이벤트 기반 스케쥴링 지원으로 ETL 작업 자동 실행
    • AWS Glue Data Catalog 기반의 메타데이터 관리로 복잡한 SAP 데이터 관리 용이
  3. 데이터 품질 향상:
    • AWS Glue DataBrew 기능을 활용한 효과적인 데이터 정리 및 정규화
    • 코딩 없이도 데이터 탐색 및 정리 가능한 시각적 인터페이스 제공
  4. 확장성:
    • 다른 AWS 서비스(Athena, EMR, Redshift Spectrum 등)와의 원활한 통합
    • 효율적인 데이터 파이프라인 구축 및 데이터 기반 의사결정 지원

이러한 개선을 통해 현대무벡스는 비용 효율적이고 확장 가능한 데이터 처리 및 분석 환경을 구축하여 데이터 기반의 의사결정 능력을 크게 강화할 수 있었습니다.

< Figure 6. 전체 구성도 >

이름

문현철 매니저

그룹사 Cloud 설계, 구축, 운영을 전반적으로 담당하고 았는 Cloud 파트 리더로, AWS Governance 수립 및 Cloud 운영 표준 확립 경험을 바탕으로 보안, 비용 최적화, 운영 효율성 강화를 위한 조직의 클라우드 전략을 설계하고 있습니다.

이름

이재혁 매니저

그룹사 Cloud 설계, 구축, 운영을 전반적으로 담당하고 았는 Cloud 파트에서 그룹사의 안정적인 AWS 서비스 제공을 위해 Cloud MSP 운영 업무를 메인 업무로 담당하고 있습니다. 또한 SAP on AWS 환경에 구축되어 있는 SAP 시스템의 BC 역할 또한 같이 수행하며, 안정적인 SAP 서비스 제공 및 확장을 위한 활동을 같이 진행하고 있습니다.

Yonghwan Kim

Yonghwan Kim

김용환 솔루션즈 아키텍트는 제조, 모빌리티, 건설 고객들의 AWS Cloud 여정을 위한 최적의 아키텍트를 구성하고 지원하는 역할을 하고 있습니다. AI/ML 관련 기술 커뮤니티에서 활동하며 기술 도입을 지원하고 있습니다.

Sejun Kim

Sejun Kim

김세준 SAP 솔루션즈 아키텍트는 15년 이상의 SAP, IT인프라, 클라우드 경헙을 바탕으로 SAP와 AWS 서비스를 결합하여 비즈니스 혁신을 하려는 고객 분들에게 도움을 드리는 역할을 하고 있습니다.

Seungjae Lee

Seungjae Lee

이승재 SAP 파트너 솔루션즈 아키텍트는 AWS에서 직접 SAP 워크로드를 구축했던 경험과 다년간 IT 운영 경험을 바탕으로 파트너사들에서 SAP 마이그레이션/구축 시에 모범사례를 기반으로 구성과 SAP 기반 혁신을 할 수 있도록 파트너사들에게 교육, 핸즈온 워크샵 등을 통하여 기술적인 지원과 도움을 드리고 있습니다.

Thuan Bui Thi

Thuan Bui Thi

Thuan Bui Thi, SAP 솔루션 아키텍트로서 SAP와 클라우드 컴퓨팅 분야에 경험이 있습니다. SAP 데이터와 AWS 서비스를 통합하기 위한 아키텍처 지침을 제공하여 고객들의 SAP 환경 현대화와 비즈니스 혁신을 가속화할 수 있도록 돕고 있습니다.