엘지에너지 멕시코 몬테레이 폐수처리장 SCADA 프로젝트 회고


엘지에너지 멕시코 몬테레이 폐수처리장 SCADA 프로젝트는 각종 계측기와 모터 설비 데이터를 수집하고 표출하는 SCADA 시스템 개발 프로젝트입니다.
프로젝트의 시작
지인의 연락
과거 함께 프로젝트를 진행했던 PM 한 분이 멕시코로 이민을 가게 되었습니다. 이후 소프트웨어 개발과 관련해 저에게 연락을 주셨고 새로운 프로젝트를 하나 제안해 주셨습니다.
하드웨어는 현지에서 조달하고 저는 소프트웨어 개발만 담당하는 방향으로 이야기가 정리되었습니다. 그렇게 멕시코 현지의 폐수처리장 SCADA 프로젝트를 시작하게 되었습니다.
고객이 원하는게 무엇일까?

PM 님은 사실 IT, 소프트웨어에 대해 전문적인 지식이 있는분이 아닙니다.
이런 경우 무엇을 원하는지는 처음부터 명확하게 드러나지 않는 경우가 많습니다. 마치 양파처럼 이야기를 하나씩 벗겨내야 비로소 그 안에 있는 진짜 요구사항이 보이기도 합니다.
많은 시간과 노력을 들여 소프트웨어를 만들어도 고객이 만족하지 못한다면 무슨 의미가 있을까요? 최악의 경우 자기만족이 되버릴수도 있습니다. 이미 그런 경험은 수도없이 했기에 반복하지 않으려고 의식했습니다. 개발자로서 고객이 정말로 원하는 기능과 기대하는것이 무엇인지 파악하고자 노력하였습니다.
이제 만들어보자!
어떤 방식으로 통신할까?
이제 인터페이스 협의를 해야합니다. 내 프로그램이 어떤 장비들의 데이터를 어떤 방식으로 읽어야할지 파악해야합니다. 다행히 설비업체는 국내업체라 의사소통은 편했습니다.
파악해보니 대부분 LS 산전 PLC 지만 딱 하나의 장비만 지멘스 PLC가 들어가는것으로 확인이 되었습니다.
이제 고민인건 인터페이스 프로토콜입니다. 각 PLC 제조사마다 고유 프로토콜이 존재합니다. (지멘스 X7, LS 산전 XGT, 미쯔비시 MC Protocol 등) 이번 프로젝트는 고속 대용량 메모리 스캔 (Batch Read) 이 필요치 않았고 유지보수 측며에서도 공통으로 가는게 났다고 판단하여 공통으로 Modbus TCP 로 통신하기로 협의하였습니다.
다운 샘플링
시계열 데이터를 본격적으로 다뤄본 경험은 많지 않았습니다. 이 분야에 대한 경험과 노하우가 충분했던 것은 아니지만 과거 프로젝트에서 데이터가 계속 쌓이면서 조회 성능이 떨어졌던 경험이 있었기 때문에 처음부터 데이터의 보관 방식을 고민할 필요가 있었습니다.
설비에서 수집한 데이터는 우선 1분 단위로 임시 버킷에 저장하고 48시간이 지난 데이터는 삭제하도록 구성했습니다. 별도의 스케줄러를 두어 임시 버킷에 있는 데이터를 15분 단위로 집계한 뒤 해상도를 낮춰 영구 보관용 아카이브 버킷에 저장했습니다.
현장은 언제나 다이나믹해

폐수처리장이다 보니 현장에 모기가 정말 많았습니다. 게다가 공사가 지연이 되어 벽조차 제대로 갖춰지지 않은 상태였습니다. 인터넷은 스타링크를 사용하고 있었지만 쥐가 단말기의 케이블을 갉아먹는 일이 발생하며 연결마저 불안정했습니다.
뒤에서는 그라인더가 돌아가고 망치질 소리도 들립니다. 어느 현장이나 그렇듯 집중하기엔 결코 좋은 환경은 아닙니다. 현장에선 급하게 테스트 위주로 진행하고 대부분의 수정과 작업은 퇴근하고 숙소에서 많이 진행했었습니다.
개인적으로는 현장에 나가서 작업할 땐 평소 자신의 기량이 100 이라면 그중 40도 제대로 발휘하기 어렵다고 생각합니다. 그만큼 개발자의 주변 환경은 업무의 집중도와 생산성에 큰 영향을 미칩니다.
어쩌면 좋은 개발 환경이란 좋은 장비 외에도 온전히 집중할 수 있는 환경도 꽤 크다고 생각합니다.
마치며
과거 프로젝트를 함께했던 PM 과의 인연 덕분에 멕시코에서 재밌는 프로젝트를 경험할 수 있었습니다. 미국에서의 12시간 레이오버, 장시간의 비행, 매콤하고 맛있는 멕시코 음식 돌이켜보면 모든 순간이 좋은 추억으로 남아있습니다.
이번 프로젝트를 통해 다시한번 느낀것은 소프트웨어 개발에서 환경은 작지않은 영향을 끼친다는 것입니다.