모니터링 자동화 - 구상

2023. 12. 17. 11:10개발/C#

재직 과정에서, 비효율적인 업무를 진행하게 됐다.

 

수용가 관리 업무인데,

수용가 별 데이터 수신율, 장비 상태 등을 보고서로 작성하는 업무다.

 

가장 불만이었던 건, 업무 소요시간이 수용가 수에 비례증가 한다는 것

수용가가 10곳이면 당연히 금방 하겠지만

수용가가 1200곳이면, 나 혼자서 감당 가능한가? 계속 되물었던 것 같다.

 

다른 업무에 밀리고 밀리다, 회사의 성장속도에 맞게

이 업무도 빨리 자동화되어야 겠다 싶어서 ( 사실 내가 바빠서 힘들어질까봐 )

시간을 내서 자동화 하기로 결심했다.

 

목적은 딱 한가지에 초점을 두고있다.

10분 전에 입사한 신입사원도 진행할 수 있는 업무를 만들자.

 

회사 규모가 커지고, 수용가가 5000곳이 넘어갔을 때,

신입사원이 수용가 관리가 가능한가? 에 중점을 두고 제작한다.


애로사항

 

보고서는 대충 이렇게 생겼다.

수용가 별, 데이터 수신율, 장비 수, 이슈사항 등을 정리하고

지사 분들께 확인요청을 드린다.

 

수용가 별로 실제 데이터 건수는 제각각이라

수신율도 꼼꼼히 확인해야한다.

 

사내에서 사용하는 모니터링 페이지에서,

수용가 별 데이터를 일일이 눈으로 확인하고, 엑셀에 적고 해야한다.

 

해당 과정을 자동화하기 위해 몇가지 방법을 생각해봤다.

 

해결방안

  • 웹 크롤링
  • API 요청
  • DB 직접 조회

1. 웹 크롤링

사내에서 사용하는 모니터링 페이지에서, 

화면에 뿌려주는 데이터를 크롤링해서 저장 후, 관리.

 

2. API 요청

API 생성 요청하여,

모니터링 페이지의 모든 데이터를 받아오기.

 

3. DB 직접 조회

데이터들이 저장된 DB에 직접 조회하여,

필요한 데이터 Query 로 가져오기.

 

2, 3번은 다른 파트에 협업요청을 해야했고

1번은 파트 도움없이 직접 진행할 수 있었다.

 

당시 요청해야하는 파트가 다른 업무가 많았었고,

어쨋든 내 수고를 덜자고 진행하는 것이니

나 스스로 끝까지 해보고, 안되면 도움을 요청하자~ 해서 1번을 채택했다.


C# 웹 크롤링 라이브러리

 

나는 Selenium 웹 드라이버를 사용했다.

해당 라이브러리는, chrome driver를 필요로 하며

chrome driver 를 사용해 브라우저를 열고,

원하는 사이트로 이동하거나, 이벤트처리가 가능하다.

 

https://chromedriver.chromium.org/home

 

 

ChromeDriver - WebDriver for Chrome

WebDriver is an open source tool for automated testing of webapps across many browsers. It provides capabilities for navigating to web pages, user input, JavaScript execution, and more. ChromeDriver is a standalone server that implements the W3C WebDriver

chromedriver.chromium.org

 

위 사이트에서, chrome driver 프로그램을 다운받고

현재 프로젝트 디렉토리에 추가한다.


화면 구성

 

최대한 단순하게, 10분 전 입사한 신입사원도 할 수 있게

딱 봐도 파일 찾고 시작하게 그런 느낌으로 만들었다.

 

로컬에 보고서 파일을 미리 다운받고,

해당 파일을 선택만 하면 준비는 끝난다.


뭔가 자동화 구조가 잡히는 것 같다.

웹 크롤링 후 데이터만 가져올 수 있으면

정말 좋은 프로세스가 될 것 같다.

 

잘 만들어서, 사내에서 평생 써먹을 프로그램을 만들것이다.

나같은 신입사원이 고생하지 않도록 ㅠ