Case Study

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

통계적 공정 관리(SPC)와 DW 시스템 성능 개선안 찾아, OLTP는 24배, DW는 22배 성능 향상

Case Study
DBMS별 분류
Etc
작성자
dataonair
작성일
2015-01-09 00:00
조회
2406











통계적 공정 관리(SPC)와 DW 시스템 성능 개선안 찾아

OLTP는 24배, DW는 22배 성능 향상



“검사 항목이 많은 통계적 공정 관리 시스템의 경우 트랜잭션이 상당하다. SQL Server 2014의 OLTP 인메모리 기능을 평가해 보면서 데이터 입출력이 급증해도 데이터베이스 잠김(Lock & Latch) 현상이 없다는 것과 잠김 없이 데이터 일관성 보장이 가능하다는 것이 매우 인상적이었다. OLTP 처리 속도는 인메모리 컴파일러를 통해 네이티브 코드를 만들었을 때 24배 가까이 빨라졌다. 그리고 평소 느리다는 소리를 듣던 조회 시스템도 CCI(Clustered Columnstore Indexes)를 적용해보니 처리 속도가 22배나 증가했다”
- 삼성전기 생산기술연구소 MES그룹김명수 수석



삼성전기는 주요 제품 군 별로 통계적 공정 관리(SPC: Statistical Process Control) 시스템과 SPC용 데이테웨어하우스(DW)를 운영하고 있다. SPC와 DW는 제품 생산 공정 과정에서 일어날 수 있는 각종 품질 이슈에 대한 신속한 파악 및 근본적인 문제 해결을 지원하는 시스템이다. 삼성전기는 2000년대부터 주요 제품 군에 SPC와 DW를 적용하며 불량률 제로 달성에 도전해 왔다. 이런 가운데 삼성전기는 2013년 신규 공정을 대상으로 SPC와 DW를 투입하였다. 새로 개발한 SPC는 7,000여개 이상의 검사 항목을 다루다 보니 OLTP 차원에서의 성능 확보가 쉽지 않았다. 더불어 SPC의 데이터를 바탕으로 구성된 DW 환경 역시 대용량 데이터를 처리하는 특성으로 빠른 조회 속도 보장이 어려웠다. 점점 더 기능이 강화되고 데이터의 양이 커지는 SPC DW의 개발 및 운영 추이에 비추어 볼 때 데이터베이스 성능 개선에 대한 근본적인 방안 마련이 필요하다고 판단한 삼성전기는 SQL Server 2014 사전 평가 프로젝트를 추진하였다. 삼성전기는 이번 프로젝트를 통해 전통적인 관계형 데이터베이스로는 풀기 어려웠던 OLTP, OLAP 환경에 대한 근본적인 성능 개선 가능성을 SQL Server 2014의 인메모리 OLTP 기능과 CCI(Clustered Columnstore Indexes)를 통해 확인할 수 있었다. 실제로 평가 모델로 선정된 SPC와 DW를 기준으로 볼 때 SQL Server 2014로 업그레이드 할 경우 OLTP 작업은 24배, OLAP 작업은 22배 가량 성능이 개선되었다.


Business Needs

삼성전기가 통계적 공정 관리(SPC: Statistical Process Control) 시스템 성능 극대화에 대한 새로운 해법을 찾았다. SPC 시스템은 양산 단계에서 품질 균일성을 확보하는 데 있어 중추 역할을 한다. 대형 장치 기반 제조 업체에게 있어 품질 보장과 직결된 중요함 임무를 맡고 있는 시스템인 것이다. 삼성전기는 2000년대부터 SPC 활동을 주요 제품 단위로 시스템 차원에서 확대해 가며 노하우를 쌓아왔다. 그리고 이런 경험은 새로운 제품 생산 현장에 투입하기 위해 SPC 시스템을 개발할 때마다 비즈니스 로직으로 구현되어 녹아 들어갔다. 한 마디로 삼성전기의 SPC 시스템들은 세대를 거듭하면서 더욱 정교하고, 지능화된 모습으로 발전해가고 있는 것이다.


SPC 시스템 운용의 중요성이 커지고 더불어 시스템에 적용되는 비즈니스 로직이 복잡해 지면서 삼성전기는 새로운 도전에 직면하게 되었다. 데이터베이스 성능 확보가 중요 과제로 등장한 것이다. 삼성전기가 SPC 시스템 관련해 데이터베이스 성능 확보의 중요성을 느끼기 시작한 것은 2013년의 일이었다. 당시 신규로 개발한 SPC 시스템의 성능 확보가 용이하지 않았던 것이다.


성능에 대한 아쉬움은 두 가지 부문에서 나타났다. 하나는 SPC 시스템의 OLTP(Online Transaction Processing) 속도였다. 다른 생산 공정에 투입한 SPC 시스템들과 달리 2013년에 개발한 시스템은 제품 하나가 만들어 지는 공정 전반에서 확인해야 하는 검사 항목이 7,000개 이상이 되었다. 일반적인 제품 생산에 투입한 SPC 시스템보다 검사 항목이 많을 뿐 아니라 가장 최근에 개발되다 보니 비즈니스 로직 역시 복잡했다. 이런 특징으로 인해 이 시스템은 복잡한 이벤트 처리 시 디스크 입출력(I/O)이 과도했고, 이는 곧 데이터베이스 성능 저하로 이어졌다.


이런 이유로 삼성전기는 당초 개발한 비즈니스 로직을 모두 사용하지 못하였다. 일례로 공정 과정에서 제품이 표준 사양을 넘어서는 한계치에 가까워 지면 SPC 시스템은 경계 경보를 내리고 다음 공정으로 넘어가는 것을 중지시킨다. 이런 비즈니스 로직이 반영되어야 실시간에 기반한 예방적 품질 관리가 가능하다. 하지만 삼성전기는 성능 확보의 어려움으로 비즈니스 로직을 모두 반영하기 보다 검사 항목 별 측정 값 처리 중심으로 시스템을 운영해왔다. 공정 내 장비에 센서 통해 측정되는 각종 검사 기록을 데이터베이스 성능 저하 없이 처리하는 데 운영 전략의 초점을 맞춘 것이다.


다른 성능 이슈는 SPC 통계 데이터 조회 부문에서 일어났다. 삼성전기는 배치 작업을 통해 SPC 시스템에서 데이터를 가져와 협업 부서 사용자들이 생산 실적이나 품질 실적을 조회할 수 있도록 다양한 리포트를 제공하는 데이터웨어하우스(DW)도 운영한다. 이 환경 역시 대량 데이터 처리에 따른 조회 시간 지연 문제가 있었다. 2013년 개발한 SPC 시스템의 경우 다른 공정에 배치된 SPC 시스템들에 비해 다루는 데이터가 많다 보니 DW 역시 빠른 속도 보장에 어려움이 컸던 것이다. 이런 이유로 성능 향상 방안 마련이 필요하던 삼성전기는 2014년 1월 SQL Server 2014 사전 평가를 통해 새로운 가능성을 찾게 된다.


Solution

삼성전기는 SQL Server 2014의 인메모리(In-Memory) OLTP 기능, CCI(Clustered Columnstore Indexes)에 대한 사전 기술 검증(PoC; Proof of Concept) 프로젝트 제안을 마이크로소프트로부터 받고 곧 바로 행동에 들어갔다. 삼성전기는 인메모리 OLTP가 SPC 시스템의 성능 극대화에 딱 맞고 CCI는 DW 시스템의 데이터 처리 속도 개선에 있어 최선이 될 것이란 기대를 가지고 테스트에 들어갔다. 2014년 1월 초 2주 간의 일정으로 이루어진 이번 PoC를 위해 삼성전기는 실제 운영 서버와 유사한 조건으로 테스트 서버를 꾸렸다. 그리고 SPC 시스템의 데이터베이스와 DW 시스템의 데이터베이스를 각각의 인스턴스로 서버에 올렸다. 또한 데이터 조회 서비스에 대한 부하를 측정을 위해 클라이언트들을 테스트 서버에 직접 연결하였다.


평가 준비를 마친 삼성전기는 SQL Server 2014 상에 SPC 시스템을 올렸을 때 어떤 변화가 있는지를 두 가지 관점에서 살폈다. 첫 번째 검토 대상은 성능 개선폭이었다. 이를 위해 삼성전기는 TSQL로 작성한 기존 스토어드 프로시져(Stored Procedure)를 그대로 쓸 때와 인메모리 환경을 위한 네이티브 스토어드 프로시져를 재컴파일 했을 때의 차이를 비교하였다. 두 번째 평가 항목은 성능 부족이 우려되어 사용하지 않던 SPC 시스템의 다양한 기능들을 모두 활성화 시켰을 때 시스템에 가해지는 부하가 어느 정도인지에 대한 것이었다.


두 실험은 모두 만족스러운 결과가 나왔다. 디스크에 테이블과 인덱스가 저장되는 데이터 구조에 기존 스토어드 프로시져를 그대로 써도 SQL Server 2014의 인메모리 OLTP 적용 전과 후 성능 차이는 확연하였다. 기존 스토어드 프로시져를 인메모리 구조에 최적화 하기 위해 변환한 경우 성능은 운영 환경 대비 24배 가까이 차이가 났다. 이렇게 확보된 성능 상의 여유가 어느 정도인지 확인하기 위해 시행된 SPC 시스템의 모든 비즈니스 로었다. 2013년 당시 개발했던 모든 기능을 다 올렸음에도 센서를 통해 올라오는 검사 결과 값 처리에 집중하던 현행 운영 환경보다 여유로운 성능을 보여 주었다. 인메모리 OLTP를 쓴 덕에 디스크 입출력(Input/Output) 작업이 준 것도 이유지만 디스크 상에 테이블을 기록할 때와 달리 메모리 버퍼풀 관리 부담이 없다 보니 CPU에 걸리는 부하도 함께 낮아진 것이다.


SPC 관련 조회 서비스는 SQL Server 2012 당시 큰 관심을 모았지만 컬럼스토어 인덱스는 Insert, Update, Delete 등 테이블 업데이트에 제약이 있었다. 삼성전기는 SQL Server 2014의 CCI가 기존 컬럼스토어 인덱스의 데이터 업데이트 제약을 넘어선다면 충분히 운영 시스템에 쓸 수 있다고 보고 그 가능성을 타진해보았다. 그리고 기존에 제약 사항이라 여기던 것들이 모두 없어졌음을 확인하였다. 컬럼스토어 인덱스를 통한 속도 개선의 이점은 여전했다. 이번 프로젝트를 통해 삼성전기는 현재 운영 중인 DW와 비교해 볼 때 SQL Server 2014의 CCI를 적용한 환경의 데이터 조회 속도 차가 22배 이상 난다는 사실을 알게 되었다. 이외 삼성전기는 CCI의 압축 기능도 살폈다. SPC 시스템과 연결된 DW 시스템의 경우 1TB 이상 되는 크기의 테이블도 많다 보니 압축률만 충분하다면 스토리지 절감까지 가능하다는 점을 놓치지 않은 것이다.


Benefits


OLTP는 24배, DW는 22배 성능 향상

SQL Server 2014에 대한 개념 검증 작업을 통해 삼성전기는 데이터베이스를 업그레이드 할 경우 SPC 시스템와 SPC용 DW의 성능 향상 폭이 어느 정도인지에 대한 구체적인 결과 값을 얻을 수 있었다. 이와 관련해 삼성전기 관계자는 “검사 항목이 많은 통계적 공정 관리 시스템의 경우 트랜잭션이 상당하다”라며 “SQL Server 2014의 OLTP 인메모리 기능을 평가해 보면서 데이터 입출력이 급증해도 데이터베이스 잠김(Lock & Latch) 현상이 없다는 것과 잠김 없이 데이터 일관성 보장이 가능하다는 것이 매우 인상적이었다”고 말했다는 그는 또한 “OLTP 처리 속도는 인메모리 컴파일러를 통해 네이티브 코드를 만들었을 때 24배 가까이 빨라졌다”라며 “평소 느리다는 소리를 듣던 조회 시스템도 CCI(Clustered Columnstore Indexes)를 적용해보니 처리 속도가 22배나 증가했다”라고 덧붙여 설명했다.


새로운 시대로의 점진적인 전환

SQL Server 2014의 OLTP 인메모리 기능이 갖는 장점 중 하나로 삼성전기는 점진적인 전환이 가능하다는 점을 꼽고 있다. 관계형 데이터베이스를 인메모리 환경으로 바꾸는 것은 일반적으로 대대적인 작업이 뒤 따르게 된다. 모든 것을 바꾸는 그런 일이다 보니 설계부터 개발, 운영까지 상당히 많은 부분에 손이 가게 된다. 반면에 SQL Server 2014의 OLTP 인메모리 기능은 구조적으로 점진적인 전환이 가능하다는 점에서 차이가 난다. 사용 중이던 스토어드 프로시져를 수정하지 않고도 인메모리의 이점을 일정 부문 취할 수 있으며 최상의 성능을 위해 점진적으로 네이티브 코드로 단계적인 전환을 할 수 있다는 소리다.


데이터베이스 확장의 새로운 기준 마련

SQL Server 2014 사전 도입 검토는 삼성전기가 향후 주요 업무 시스템 관련 데이터베이스 성능 확보의 새로운 기준점을 마련하는 계기가 되었다. 삼성전기는 용량 산정부터 성능 최적화 그리고 운영 효율화 관점이 앞으로 달라질 것으로 예상하고 있다. 관계형 데이터베이스의 한계를 뛰어 넘어 새로운 데이터베이스 시대가 열리고 있음을 이번 PoC를 통해 실감한 것이다. 이와 관련해 삼성전기 관계자는 “성능이 부족할 경우 좀 더 좋은 장비를 들여오는 스케일업 방식의 확장을 해야 했다”라며 “하지만 이제 시대가 바뀌어서 인메모리 기능을 활용할 경우 메모리 증설로 성능을 늘려갈 수 있는 스케일아웃 방식으로도 대응이 가능해졌다”라고 말했다. 하루가 다르게 낮아지는 메모리 가격을 놓고 볼 때 메모리 증설 차원의 스케일아웃 확장이 갖는 비용 대비 효율성이 점점 높아지고 있다는 소리다. 바꾸어 말해 OLTP 업무용 데이터베이스 성능 이슈의 주요 원인인 디스크 입출력 병목 대응 비용을 인메모리 기능으로 현저히 낮출 수 있다는 것이다.


삼성전기는 OLTP 업무용 데이터베이스로 SQL Server 2014를 사용할 경우 확장성 면에서 Windows Server가 주는 이점도 누릴 수 있을 것으로 기대하고 있다. 이번 프로젝트의 경우 SQL Server 2014 Enterprise 버전이 사용되었다. 이 버전의 경우 메모리 지원은 운영체제가 지원하는 최대 크기를 쓸 수 있다. Windows Server 2012의 경우 Standard와 Datacenter 에디션 모두 최대 물리적 메모리를 4TB까지 지원한다. 전용 어플라이언스나 대용량 병렬 처리 구조(MPP)를 띈 고성능 장비가 아닌 일반 x86 서버로도 충분한 메모리 확장을 통한 성능 확보가 가능한 것이다.


실시간 예방적 품질 관리 시대 예고

삼성전기는 향후 SQL Server 2014로 SPC 시스템과 DW의 데이터베이스를 업그레이드 하면 품질 관리에 새로운 혁신이 일어날 것으로 기대하고 있다. 이번 SQL Server 2014 사전 평가 대상 시스템으로 정해진 SPC 시스템은 예방적 품질 관리를 위해 다양한 비즈니스 로직이 반영되었다. 하지만 1초 이내 응답 시간을 유지해야 하다 보니 성능 유지를 위해 개발해 둔 모든 기능을 쓰기 보다 주로 검사 항목 별로 마련해 둔 표준 사양을 벗어나는지 아닌지에 대한 정보를 공정 흐름에 맞추어 처리하는 기능만 사용하였다. 대용량 데이터를 실시간에 가깝게 처리하는 OLTP 시스템이다 보니 복잡한 이벤트 처리보다는 안정적인 속도 확보에 무게를 둔 것이다.


삼성전기는 이번 프로젝트를 통해 OLTP 인메모리 기능을 쓰면 모든 비즈니스 로직을 가동해도 1초 이내 응답 속도 유지가 가능함을 확인하였다. 이를 통해 성능 보장이 가능하다면 SPC 시스템의 사용 가치를 더욱 높일 수 있다는 확신도 갖게 되었다. 실제로 이번 평가를 통해 7,000여개 검사 항목 별 사양(Specification) 값이 한계치를 넘어가면 바로 경계 경보를 발행하여 공정이 진척되는 것을 잠시 중단 시키고 바로 즉각적인 불량 요인 추적 분석이 이루어질 정도의 자동화되고 지능화된 수준으로 SPC 시스템 운영이 가능함을 확인하였다.