회사에서 파이썬Python 활용사례와 관련한 발표를 진행하게 되었습니다. 비즈니스 분석가로 파이썬을 업무의 데이터 수집, 전처리, 분석까지 다양한 측면에서 활용하고 있습니다. 그러다가 최근 Chatgpt와 함께 사내에 AI 및 자동화와 관련된 바람이 불면서, 업무 자동화(Robotic Process Automation, RPA) 적용 사례를 발표하게 되었습니다.
최근 업무 자동화가 매우 중요해졌습니다. 우선 노코드 툴처럼 코딩을 하지 않아도, 웹/앱과 관련한 작업을 도와주는 수단이 크게 증가했습니다. 또한, 노코드가 아닌 코드를 사용할 때도 Chatgpt 등을 활용해서 필요한 코드를 작성하고, 오류를 수정하는 것들이 훨씬 쉬워졌습니다. (그리고 개발 공부를 해보면 알겠지만, 대부분의 비즈니스 실무자 입장에서 고민하는 수준의 자동화는 한글로 구글에 검색해도 찾을 수 있습니다.)
더 나아가, 자연어 처리 기술의 수준이 크게 올라가면서 '그래도 이건 사람이 해야지 ㅎㅎ'라고 했던 영역들까지도 자동화를 하는 것이 가능해졌습니다. 대표적으로 아마존은 쇼핑몰의 리뷰를 요약해서, 고객의 상품 구매와 관련된 허들을 낮췄습니다. 이전의 자연어 처리 기술로는 텍스트를 자동으로 요약하는 것이 쉽지 않았지만, 인공지능 기술 등이 발달하면서 이것이 가능해진 것입니다.
특히 비즈니스 분석가의 경우, ETL(추출, 변환, 적재) 프로세스를 자동화하거나, 예측 모델 및 모니터링을 자동화하는 등 업무에서 자동화를 적용할 수 있는 영역이 꽤나 많습니다. 이런 단순 반복되는 일들을 자동화해서, 집중할 수 있는 곳에 온전히 집중할 수 있습니다.
다만, 자동화를 적용하는 것에서 허들 중 하나는 '어떤 영역을 자동화 시킬 것인가'에 대한 부분이라고 생각합니다. 그래서 이번 아티클에서는 어떻게 업무 자동화를 시도할 것인지에 대해 정리해봤습니다.
우선 이 업무가 반복되는 업무인지 확인하는 것이 필요하다. 일회성 요청으로 처리하거나, 발생빈도가 지나치게 낮은 업무들이 있습니다. 예를 들면, 명절에 택배사가 파업한 이후에 필요한 대응 업무들을 자동화한다고 가정해 보겠습니다. 경우에 따라서 처리할 것이 많다면, 코드를 작성해서 처리하는 것이 빠를 수 있습니다.
하지만, 생각보다 코드 작성이 어렵고 오래걸릴 것 같다면, 빠르게 문제를 수기로 처리하는 것이 훨씬 효과적일 수 있습니다. 특히, 1년에 두 번 있는 명절 중에 파업할 가능성이나 매번 같은 시나리오가 발생하는 것은 아니기 때문입니다.
따라서 반복되는 업무인지 확신이 없는 상태라면, 자동화할 생각보다는 우선 그 업무를 빠르게 해결하면서 관련 내용을 나중에 다시 볼 수 있도록 기록해 주는 정도로 진행하는 것이 낫습니다.
문제는 뭐냐면 리셀 플랫폼이 돈이 엄청나게 많이 들어요. ... 플랫폼들이 다 진품 가품을 검증하는데 혈안이 되어 있단 말이죠. 거래금액 대비 (진가품 검증에 대한) 지급수수료가 8% 정도가 나오기 때문에, 그럼 플랫폼 수수료도 8%보다 높아야한다. ... 신발은 공장이 다르기 때문에 같은 제품을 만들어도, 공장이 다르면 디테일이 조금 다를 수 있다. 그리고 워낙 다품종이라 자동화해서 학습하기도 힘들고, 매년 새로운 모델이 나온다.
출처: 유튜브, 머니그라피Moneygraphy - B주류경제학
업무가 반복된다고 모두 자동화하는 것도 능사가 아닙니다. 반복은 되지만, 이걸 처리하는 프로세스를 명확하게 정의내리기 어려운 것들이 있습니다. 사람의 판단이 일정 부분 필요한 이슈들입니다.
위의 사례는 한정판 스니커즈 거래로 유명한 네이버의 플랫폼 크림에 대한 이야기입니다. 우리가 네이버 영수증 리뷰를 올릴 때를 생각해 보면, 네이버가 특정 이미지를 인식하는 기술력은 나쁘지 않을 것입니다. 또한 데이터나 이를 처리하는 다른 IT 관련 기술 수준도 말할 것 없이 높을 것입니다.
그럼에도 크림을 포함한 명품(리셀링) 업체들은 이런 진가품을 검증하는 것에서 비용이 지속적으로 상승하고 있다고 합니다. 경쟁이 심해질수록, 진가품 판별 전문가를 구하는 비용이 높아지기 때문입니다. 기술력이 있음에도 자동화가 쉽지 않은 이유는 제품의 패턴이 일관되지 않기 때문입니다. 다품종인 것도 문제지만, 공장마다 나오는 디테일이 조금씩 다르면 오차범위를 설정한다고 가정해도, 자동으로 판별하기에 어려운 부분이 생길 수 밖에 없습니다.
이처럼 매번 반복되는 사례에서 어느 정도 입력값이나 결과값이 일관된 형태로 나타나는지 확인해야합니다. 만약에 매번 변경을 필요로 한다면, 개발이 익숙하지 않은 사람에게는 이것이 더 일이 될 수 있습니다. 만약에 반복되는 일인데, 패턴을 발견하기 어렵다면 업무에서 가능한 부분까지라도 자동화를 하는 방향이 오히려 현명할 수 있습니다.
사실 이걸 1단계로 보는게 맞을 것 같기도 합니다만, 여기서는 개발 진행 전 마지막 검토 차원으로 보면 좋을 것 같습니다. 직접 개발을 뛰어들기 전 마지막 점검으로, 다른 활용가능한 대안이 있는지 찾는 것입니다. 요즘 세상이 좋아져서 내가 만드려는 자동화보다, 훨씬 더 성능이 좋은 툴이 많기 때문입니다.
예를 들면, 내가 어떤 사이트를 직접 크롤러를 개발해서 고생하는 것보다 Listly 같은 서비스를 활용하는 것이 더 수월하게 일을 할 수 있습니다. 크롤러를 개발하는 것이 크게 어려운 일은 아니지만, 여러 사이트에 적용되는 크롤러를 개발한다거나, 특정 사이트의 구조가 변경될 때마다 크롤러를 새로 개발하는 것은 번거롭기 때문입니다.
또한, 이걸 통해서 간접적인 테스트도 시도할 수 있습니다. 만약 이런 서비스를 전문적으로 만드는 업체에서도 크롤링을 못하는 사이트가 있다면, 비개발자인 내가 개발해서 크롤링을 성공할 확률은 극히 낮다고 볼 수 있습니다. 해보지도 않고 포기하라는 뜻은 아니지만, 그 시간에 더 가치있는 일들을 할 수 있기 때문에 작업의 가능 여부 측면을 검토해보는 쪽으로도 이런 것들을 활용해보는 것이 좋습니다.
다만, 이런 솔루션을 존재하지만 사용료를 회사에 청구하거나 개인이 지출하기에 애매한 부분이 생길 수 있습니다. 그때 직접 개발을 시도해 봐도 늦지 않을 것이다.
프로덕트 개발에서 이야기하는 것 중 최소 기능 제품(Minimum Viable Product, 이하 MVP)이라는 용어가 있습니다. 시장에서 어느 정도 고객 호응을 얻을 수 있을지 반응을 보면서, 최소 기능만 담아서 빠르게 만드는 제품을 주로 의미합니다. 예를 들면, 직접 복잡한 앱을 개발하기 전에 간단한 모집 웹페이지로 수요만 있는 것을 보는 방식이 대표적입니다.
비개발자의 자동화 개발도 이런 마인드로 시작해야 합니다. 처음부터 완벽한 결과물을 염두에 두면, 하다가 지쳐버리거나 막상 만들어 낸 결과물이 생각보다 별로일 수 있습니다. 지속적으로 피드백을 받으면서, 조금씩 개선해 가는 것이 좋습니다.
제 사례를 예로 들면, 처음부터 리포팅 자동화를 개발할 때, 처음부터 차트 이미지를 함께 전송하거나, Prophet으로 예측치를 산출해서 보내는 것은 생각하지는 않았습니다. 우선 python으로 Slack창에 기초적인 데이터를 확인해서 간단한 메시지나 보낼 수 있는 것을 만들었습니다. 여기에 Airflow를 활용해서 주기적으로 스크립트를 실행하는 것이 가능하다는 것을 파악한 이후에, 모니터링 지표를 받는 사용자들의 피드백을 반영해서 이를 개선시켰습니다.
물론 반복되지 않고, 패턴이 없는 일이라도 일단 개발을 해보는 것도 나쁘지 않습니다. 직접 이런저런 라이브러리를 찾아보고, 시도해 보면서 배우는 것들도 분명 많기 때문입니다.
최근 ChatGPT 열풍에서 느껴진 것은, 직무의 경계가 더욱 흐릿해진다는 점입니다. 예를 들면, 사업관리 같은 제너럴리스트의 직군에서 개발, 디자인처럼 기존 스페셜리스트가 담당하던 영역 중 일부를 맡아서 하는 경우는 많아지고, 자동화의 가치는 높아질 것입니다. 이런 시대에서 본인의 업무 효율화를 고민하고 있을 분들에게 이 글이 조금이나마 도움이 되길 바란다.