현상: 손으로 켜면 잘 접속되는 프로그램이 uipath의 start command, cmd, powershell로 켜면 접속이 실패됨

조치1.

task manager에서 권한 문제인지 확인. trigger된 경로, 실행 주체가 손으로 켠 것과 모두 동일했음

조치2.

uipath로 더블클릭 했을 때는 실행 및 접속됨

조치3.

uipath로 '실행'을 켜서 경로를 입력하면 실행 및 접속됨

 

결론

CMD, powershell로 trigger 하는 것과 win+r, 더블클릭 실행의 차이가 뭐지? 하다가

혹시 시작위치 차이인가? 해서 경로를 가서 실행했더니 정상 실행 및 접속됨

 

추정원인

MFC에서 파일 리소스 check를 할 때, 설치된 경로로 부터의 상대 경로를 입력해 놓은 것으로 보임

따라서 시작 위치까지 지정하지 않으면 해당 내부 로직에서 파일을 찾을 수 없게 되어 auth가 실패함

'RPA 종합' 카테고리의 다른 글

ROI 산정 v0.9  (0) 2023.07.07
RPA Meetup 짤막 소감  (3) 2023.03.02
NeverSleep 대체 코드  (0) 2023.02.23
플로우차트와 시퀀스  (2) 2022.10.07
업무 타입 분류  (0) 2022.09.08

최근에 RPA 오픈채팅방에서 Meetup이 있었다.

3가지 주제가 가장 메인이었던 거 같다.

1. RPA의 미래는?

2. RPA 개발자의 미래는?

3. RPA의 현재 고충

-----------------------------------------------------------------------------------------------------------

1. RPA의 미래는?

장소를 빌려주신 분이 AI쪽에 관심이 많은 대표님이셔서 ChatGPT와 MS 라인에 대한 이야기를 많이 했다.

MS Teams 같은 툴들에 ChatGPT가 적용되고[챗봇화], 그에 따른 수행을 Power Automate가 하게 된다면,

다른 RPA툴들이 따라올 수 없을 거 같다는 의견에 모두들 그럴 듯하다는 반응이었다.

기술적인 측면에서는 Document Understanding, 문서 인식 기능의 발전이 저변을 굉장히 많이 넓힐 것이라 봤다.

역시나 여러 고객사를 가봤을 때, OCR 과제가 요청되지만 대부분 컷됐던 걸 많이 목격하신 분들이 많았다.

현재까지 RPA 과제가 진행된 것보다 훨씬 크고 많은 과제들이 문서 인식이라는 기술 아래에 묻혀있고,

또 여러가지 AI모델들도 RPA가 수행할 수 있는 scope에 포함될 수 있을 것이라 봤다.

다만 기업들이 RPA를 메인으로 가져간다기 보다는,

AI를 하는 과정에서 그것을 체계적으로 수행할 수 있는 툴을 찾는 과정에서 RPA가 확장될 것이라는 의견이 많았다.

 

2. RPA 개발자의 미래는?

자리에 RPA 개발하시는 분들이 많아서 묘하게 조심스러운 분위기가 있었던 거 같다.

여러 의견이 있었는데,

내 의견은 'RPA 개발자라는 포지션은 결국 개발 기획 및 프로세스 통합, 교육에 특화될 가능성이 높다'였다.

또, 라이브러리가 고도화 되면서 low code, no code 트렌드에 따라 개발들이 현업에 돌아갈 것이라 봤다.

어떤 분은 개발이 현업에 돌아가지 않을 것이라고 봤다.

아무리 low code, no code라 해도 개발에 익숙하지 않은 현업이 개발에 뛰어들지 않을 것이라는 의견이었다.

실제로 현재 한국에서는 citizen developer[각주:1]가 제대로 활성화된 곳이 몇 군데 없다.

오히려 중간 단계없이 chatGPT 같은 AI들이 프로세스를 듣고 자동화 코드를 짜게 되지 않을까 라고 예측하셨다.

결국 이런 의견 저런 의견을 다 종합해 봤을 때,

RPA 개발자는 툴을 다루는 기술만 익혀서는 미래가 없고,

아키텍쳐 관리 및 프로세스 도메인, 기획, PI에 대한 역량을 키워야 한다는 의견이 지배적이었다.

 

3. RPA의 현재 고충

고충들은 대부분 기술적인 문제라기 보다는 커뮤니케이션의 문제였다.

현업 입장에서의 요구사항, 수행 실패 시 예상 대응이 개발자가 실제로 가능한 운영 capacity와 괴리가 있었다.

리스크가 높은 과제, 실시간성이 있는 과제 등을 어떻게 운영할 것인가에 대한 의견, 현상 자체가 논의됐다.

큐 베이스로 운영하는 사이트의 개발자분도 계셨는데 중간에 울분(?)을 토하셨던 게 기억이 난다.

어떤 분이 '그래도 할만하지 않아요?' 하니까 '해보실래요?' 하셨는데,

분명 욕이 없었는데 모두가 욕을 들었다고 생각했다.

 

------------------------------------------------------------------------------------------------------------------

쇼파가 너무 편해서 돌아다니지 않고 이야기가 된 게 아쉬웠다.

다음에 또 하면 더 다양하게 이야기를 들어보고 싶다.

  1. Uipath가 이 용어를 잘못 갖다 쓰고 있다면서 짜증을 내셨던 기억이 난다 [본문으로]

'RPA 종합' 카테고리의 다른 글

[Case] 시작 위치에 따라 실행이 달라지는 프로그램(MFC 기반 프로그램)  (0) 2023.11.23
ROI 산정 v0.9  (0) 2023.07.07
NeverSleep 대체 코드  (0) 2023.02.23
플로우차트와 시퀀스  (2) 2022.10.07
업무 타입 분류  (0) 2022.09.08

RDP Lock 이슈가 많은데 사실 화면을 안 켜는 RPA 봇에서 '화면보호기'가 있을 이유가 없다

그래서 안 잠기게 하는 걸 선호한다.

Neversleep을 쓸 수도 있지만 외부 프로그램이라 백신이 잡아버리는 경우가 있었다.

다음과 같은 내용의 vbs 파일을 만들자

 

Set ws = CreateObject("WScript.shell")
Do

 Wscript.Sleep 60000 '1초는 1000, 60초는 60000'

 ws.SendKeys "{SCROLLLOCK}{SCROLLLOCK}"

Loop

 

그냥 실행해보면 1분마다 스크롤락을 눌러주기 때문에 화면이 Lock이 걸리지 않는다.

시작 - 실행을 켜서 shell:startup을 치면 시작프로그램이 나오는데

만든 vbs를 시작프로그램 폴더에 넣어주면 PC 재부팅을 하는 경우에도 알아서 켜진다.

 

'RPA 종합' 카테고리의 다른 글

ROI 산정 v0.9  (0) 2023.07.07
RPA Meetup 짤막 소감  (3) 2023.03.02
플로우차트와 시퀀스  (2) 2022.10.07
업무 타입 분류  (0) 2022.09.08
[RPA] RPA 4년차 개발자가 보는 RPA 시장 넋두리  (6) 2022.08.23

RPA 솔루션을 쓰면 플로우차트, 시퀀스 모두를 지원하거나 혹은 하나만 지원하는 경우를 볼 수 있다.

이번 포스트에서는 플로우차트, 시퀀스의 장단점을 한번 정리해볼까 한다.

 

다음과 같은 프로세스를 상정하자. [각 알파벳은 시퀀스 집합]

a -> if a has error : a | else : b -> if b has error : b | else : c -> if Return of c is nothing : a | else : d

- a를 실행한다

- a에 에러가 있다면 a를 실행한다

- a에 에러가 없다면 b를 실행한다

- b에 에러가 있다면 b를 실행한다

- b에 에러가 없었다면 c를 실행한다

- c의 Return이 없다면 a를 실행한다

- c의 Return이 있다면 d를 실행한다

 

 

1. 시퀀스

직관적이다. 처음부터 눈에 보이는 순서대로 실행된다.

특별한 고려없이 처음부터 그대로 읽으면 돼서 가독성이 좋다.

유닛테스트 하기도 편하다.

다만 특정 컨디션에서 아래의 코드에서 다시 위의 코드로 돌아가야 할 때 소스가 복잡해진다.

Try Catch 혹은 for each 같은 컨디션으로 구현은 할 수 있다. (다만 어색하다)

a

if a has error:

  a

else:

 b

 if b has error:

  b

 else:

  c

  if c() is nothing:

   a

  else:

   d

이렇게 되면 스텝이 늘어날 수록 중복코드를 쓰거나 재시도 횟수만큼 매번 같은 모듈을 그 순서에 다시 소환해야 한다.

그렇지 않기 위해서 for each - try catch 조합을 쓴다.

for each enumerable.range(1, 3)

 try

  비지니스 로직

 catch

  if idx = 2:

   throw

  else :

   프로세스 초기화

end for each

아이러니하게도 이렇게 묶을수록 시퀀스의 장점은 사라지고 프로세스 초기화 기준으로 모든 시퀀스가 모이게 된다.

그래야 논리적인 결합을 통해 에러 시 재시도가 가능하기 때문이다.

즉, 복잡하고 길어질수록 시퀀스로만 처리하기엔 가독성이 떨어진다.

웬만한 쉬운 과제들은 시퀀스로 처리해도 무리가 없다.

특히 대부분은 시스템을 한번 방문하면 되도록 다시 방문하지 않도록 짤 거기 때문에

초기화점이 흩어지지 않기 때문이다.

 

2. 플로우 차트

플로우차트는 양날의 검이다.

잘못짜면 소스가 아니라 미로다.

그루핑된 테스트는 잘 된다. start node만 잘 옮겨두면 되기 때문이다.

잘 짜면 스텝 컨트롤이 굉장히 용이해진다.

그냥 화살표만 갖다 놓으면 되기 때문이다.

대표적인 예시가 REFramework다

이거 시퀀스로 짤려면 일단 각 State Machine을 모듈화 시켜야 정리가 될 거 같다.

Process 단에서 위의 프로세스 개발에 Flowchart를 활용한다면 아래의 느낌이다.

시퀀스는 그림을 잘 그려야 한다.

여기서 여러 시퀀스에 대해 array를 반복해야 한다면 True일 때 그 Array를 위로 밀어가면서 쓸 수 있다.

리스트 올려가면서 쓰는 예

이렇게 하면 각각 의미단위로 나눠진 시퀀스라 할지라도 가독성을 최대한 직관적으로 살리면서

각 스텝별 오류처리를 다르게 하기도 쉽다.

[ex. 1스텝은 안 되면 재시도, 2스텝은 재시도 하면 안 됨, 3스텝은 에러나면 1스텝부터 재시도]

 

 

 

3. 결론

사실 플로우차트에 대한 협의나 이해가 잘 이뤄지지 않기 때문에,

무조건 시퀀스를 초기화 시스템 기준으로 모듈화해서 개발하시는 분도 많다.

이것도 결국 장단점이 있지만 RPA 솔루션의 특성상 다른 과제에 재사용할 게 아닌 소스까지

모듈화를 너무 많이 하는 것을 권하지 않는다.

각 모듈 파일을 만날 때마다 다시 로드하기 때문에 눈에 띄게 느려지기 때문이다. [각주:1]

요컨대 둘 중 하나만 쓸 수는 없고, 프로세스 특성에 맞춰 쓰기를 권한다. [생산성이 좋은 방향으로]

이런 관점이 생기면 프로세스를 정리하고 컨설팅할 때도,

이 스텝에서 틀어도 되는지 아닌지, 재시도 해도 되는지 같은 것까지 수집하게 된다.

  1. 이런 이유로 퍼포먼스가 필요한 몇몇 과제들은 프레임워크를 쓰지 않고 개발한다. 트랜잭션 받으러 왔다갔다 하는 게 한 싸이클만큼 길어버리기 때문이다. [본문으로]

목차

1. RPA 개발자가 불안한 이유

2. RPA의 생산성 극대화

3. RPA 개발자로서 필요한 자질

---------------------------------------------------------------------------------------

RPA 개발자가 불안한 이유 참고자료

1. RPA 개발자가 불안한 이유

  RPA 개발을 6개월 이상하고 다음 스텝을 생각하다 보면 불안해 하는 경우가 많다. RPA 개발자는 다른 개발자들에 비해 진입장벽이 낮고, 기간이 지남에 따라 성장성이 뚜렷하게 보이지 않기 때문이다. 실제로 전반적으로 개발 역량이 떨어지는 분들이나 개발에 적성이 맞지 않는 분들이 IT로는 가고 싶은데 마땅한 분야가 없어 RPA로 시작하는 케이스도 많이 존재한다. 개발자 입장에서 노동시장에서 수요는 엄청 늘진 않아 보이는데 공급이 대단히 많이 늘 것으로 보인다.특히 개발자들 스스로가 '개발자'라는 포지션은 '대체가 어려운 기술자'여야 된다는 생각이 강하다.

  본질적으로 이런 사고의 흐름이 아주 잘못되었다고는 보지 않는다. RPA의 벤더사들에서도 최대한 개발자가 쉽게 프로세스를 구성하고 빠르게 수행될 수 있다는 점을 강조하고 있고, Attended User에 대한 수요를 실제 Business Demand로 만들기 위해 현업용 Tool을 따로 개발하는 추세다. 이런 과정에서 'IT 개발자' 포지션에 있던 사람들은 기술에서 멀어지고 궁극적으로 Tutor나 Server Manager 혹은 Module supplier가 되는 것으로 보인다.

  이 이야기를 먼저 해보자. IT가 보수를 많이 받는 이유는 무엇일까? 숙련 노동자의 수요 대비 공급이 적기 때문이기도 하지만 한계 생산성[각주:1]이 높기 때문이다. 다른 분야에서는 1명이 3~4명분을 하려면 슈퍼맨이어야 하지만, IT에서는 실력이 뛰어나다면 10명분 이상도 가능한 경우가 심심찮게 보인다. 또 일반적으로 IT분야에서 제공하는 서비스와 Product의 경우 한계비용이 매우 낮기 때문에, 마케팅과 서비스의 수준에 따라 기하급수적으로 생산성이 높아질 수 있다.

  그렇다면 RPA는 어디서 생산성이 날까? RPA의 장점은 '프로세스 단위당 생산이 빠르고 유지, 관리비용이 적다'이다. 프로세스 단위 개발이 빠르고 유지, 관리 비용을 적게 하기 위한 기술적, 구조적 구성을 해야 한다. RPA 개발자들은 그런 구성에 필요한 것들을 스스로 찾아보고 숙련될 필요가 있다. 그러나 RPA 개발자들 대부분은 Studio 안에 갇혀, 현업이 얘기하는 요구사항을 drag&drop으로 당장 구성하기에 바쁘다. Project Manager라고 들어온 사람들은 대부분 Project Management에 관심이 없다. 고객사의 심기를 거스르지 않기 위해 고군분투한다. 그런 과정에서 R&R도 명확하지 않고, 분명하지도 않은 요구사항을 받아가며 개발을 하다보니 기술적인 문제가 아닌 업무 프로세스 문제에서 고통받는다.

  결국 '생산성이 나지 않는' 프로젝트 진행으로 인해 몸값은 낮아지고, 고객사 입장에서도 RPA의 가성비가 떨어진다. 이에 따라 RPA 개발자 노동 시장이 소위 '레몬 시장'이 된다. 상대적으로 대우가 떨어지기 때문에 기술적인 역량이 좋은 사람일수록 RPA에서 멀어지려고 하고, 이는 RPA 개발자의 노동시장을 더더욱 '레몬 시장'으로 만든다. 이런 시장 상황에서 보통 SI에서 요구하는 역량을 채우는 개발자들은 미래가 불안해 진다.

  특히 한국에 있는 대부분의 공급사들, 그 의사결정자들 또한 RPA 비지니스를 어떻게 이끌어 갈 것인가에 대해 제대로된 아이디어가 없다. 관리 명목으로 라이선스를 팔 때 발생하는 마진에 만족한다. 그나마 계속 사업을 유지할 생각이 있는 측에서는 개발자를 투입하지 않아도 판매가 가능한 AR이 더 폭넓게 배포될 날을 기다리거나, 공통 domain이 될 수 있는 소스를 만들어 한계 개발 비용이 0에 가까운 그런 영업을 하려고 한다. 물론 그게 아주 틀린 생각은 아니다. 문제는 본질적으로 제공하는 RPA 거버넌스의 퀄리티에 대한 생각이 결여돼 있다는 것이다. 어차피 개발자들 몸값도 높고 구하기도 힘든 상황에서 퀄리티를 높여봤자 교육, 관리에 리소스만 투입되지 회수를 못 한다는 근시안적인 사고도 깔려 있다.

  따라서 생산성을 위한 구성이 아예 없거나 규모 대비 퀄리티가 너무 낮아, RPA 개발자들이 낮은 수준의 데이터 체킹이나 프로세스 정의 체크, 사막에서 바늘 찾는 느낌의 디버그 등을 하며 인간 RPA가 된다. 아직 한국에서는 이 업계의 효율성에 대해 많은 관심이 없고, 정보 비대칭 때문에 상당 수의 RPA PM들은 프리시장의 레몬들이며 그마저도 PM 경험 자체가 거의 없다. 고도화 되지 않은 업계 아키텍쳐, 스킬 Set에 좋지 않은 PM들의 조합 아래 RPA 개발자들은 자신의 IT 적성을 의심한다.

  게다가 RPA는 다른 IT분야와는 달리 현업과 관리자, 개발자 모두 역할을 명확하게 인지하고 적극적으로 참여해야 생산성이 높다. 이걸 고객사 혹은 내부 관리자, 결정권자들이 이해를 해야 개발, 구축 과정에 대한 인센티브도 조직할 수 있는데 이걸 이야기하는 영업도 거의 없고 관리자도 없다. 결국 순전히 개발자 입장에서는 현업을 최대한 귀찮지 않게 하면서 최대한 Studio 내부에서 문제를 해결할 수밖에 없는 상황이 자주 온다. '기술자'로서는 해결하기 어려운 상황들에 지치다보면, (적어도 주니어 입장에서는) 상대적으로 기술로 대부분이 해결되는 다른 IT분야로 눈이 돌아갈 수밖에 없다.

 2. RPA의 생산성 극대화

  RPA는 시스템의 빠른 변화 혹은 시스템의 부재에 손쉽고 빠르게 대응하기 위한 자동화 시스템이다. RPA 관점에서 진행되는 업무는 '프로세스 도출, 적용 검토, 프로세스 표준화, 설계 및 개발, 운영 안정화, 리소스 관리'[각주:2] 등이 있다. 각각의 단계에서 최적화 할 수 있는 예시, 기술적인 발전 방향 등을 간략히 보자.

1) 프로세스 도출

  - 이 단계에서는 먼저 현업이 'RPA'의 개념을 알고 있는지, 모른다면 어떻게 전달해야 할지 체크해야 한다.

  - 기대효과, 사례 등등을 모은 문서, 영상자료가 있으면 좋다.

  - AS-IS를 어떻게 바라보고 정리할지 가이드 해줄 수 있는 PDD나 시나리오 기술 문서 등도 같이 제공하면 좋다.

2) 적용 검토

  - 적합도 필터링 기준 양식을 통해 우선순위 선정을 하는 단계이다.

  - 기준에는 ROI나 시스템 접근 가능성, 셀렉터 명확성, 시스템 안정성 등을 정량데이터로 지수화하여 포함시킨다.

  - 가능하다면 이때 프로세스를 최종 선택하면서 프로세스를 프리징하면 좋다.

  - JIRA나 Confluence 같은 업무 관리 툴이 있다면 최종 선정된 과제에 대해 티켓을 발행하여 관리하면 좋다.

  - 회의를 한다면 요구사항의 디테일을 살려 회의록을 꼭 작성해야 한다.

  - 이 단계와 관련해 현재 Uipath에서는 Automation Hub라는 공간이 있으나 국내에선 자주 활용되진 않는다. [각주:3]

  - 기술적으로는 클라우드로 옮겨가면서 다른 앱과의 연동 및 연결 시스템 확장이 계속 쉬워지고 있는 추세이다. [각주:4]

3) 프로세스 표준화

  - 선정된 프로세스를 시스템간의 데이터 교환으로 치환해 다른 부서에도 비슷한 업무가 있는지 체크하는 단계이다.

  - 프로세스 자체에 살을 붙이거나 혹은 특정 부분이 제거될 수도 있다.

  - 이를 위해선 체크해야 하는 정보를 각 담당자로부터 얻을 수 있는 관리자와 Contact이 필요하다.

  - 이 과정에서 사용할 수 있는 모듈도 함께 체크하면 좋다.

  - 과제 리소스 관리 리스트나 모듈 관리 리스트, Repository 혹은 설명서 등을 만들어 관리해야 규모가 커지는 것에 대비할 수 있다.

  - 이 단계는 각 RPA 벤더들의 Marketplace에서 기본적인 것들을 제공하려고 하고 있고, 규모의 경제가 있는 부분이다. 한국의 RPA SI업체들은 이런 부분에서 빠른 기업 솔루션을 제공하는 형태를 고려하고는 있지만, 구체적으로 진행되는 곳은 아직 못 봤다. 기업 전반의 업무에 대한 도메인 지식이 많이 필요하리라 본다.

4) 설계 및 개발(테스트 포함)

  - 이 단계에서는 설계 및 개발을 한다.

  - 설계 전에 이 프로세스의 시스템을 확인하고 관련 모듈이 있는지 체크한다.

  - 설계문서는 초보일수록 웬만하면 전수 작성하는 것이 좋다. 조각설계도 안 되는데 프로세스 전체를 설계없이 진행할 수는 없기 때문이다. 특히 설계 과정에서 프리징이 필요한 사안들이 꽤 나오기 때문에 앞선 단계에서 프로세스 프리징을 못 했다면 여기서 진행해야 한다.

  - 간단한 커스텀 설계문서 양식(https://jnaul.tistory.com/220)

 

RPA 개발 시 쓸 수 있는 간단 설계서

과제번호 : 과제명 : 프로세스명 : 사용 시스템 : 접속 URL : ID: password:  // 마스터 파일 : (예시 : 수신자 마스터(갈음 필요), 일일 마스터(갈음 필요)) 수신인 : 첨부 : 제목 : 본문 : 1건 기준 :.

jnaul.tistory.com

  - 양식 내용을 채우다가 채워지지 않는 부분이 있다면, 빠르게 문의해야 하는 항목들을 양식에 추가한다.

  - 기술적으로는 테스트 라이선스 및 테스팅 할 수 있게 구조가 되어 있으나 아직까진 이걸 적극적으로 활용해보진 않았다.

  - 개발 관련 스킬, 패키지에 대한 사안은 https://jnaul.tistory.com/218 혹은 각 게시물로 업데이트 하는 중

  - 커스텀 프레임워크가 있으면 좋다. 같은 프로젝트에 투입될 인원 또는 같은 회사 개발자들끼리 논의를 거쳐 필요한 사안들을 정하고 구현되게 하는 걸 추천한다. RE프레임워크는 비지니스 관점에서는 모자란 측면이 꽤 있다.

  - 모듈은 각 개발자별로 시스템 접근 소스나 보편적으로 쓸만한 것들을 등록, 관리할 수 있게 Repository를 만들자.

  - 1년 미만 개발자들이 많으면 1주일에 한번, 2주일에 한번 세션을 열어 서로 자주 쓰는 패키지, 팁 등을 공유하면 좋다.

  - 현업 검증 후 개선이 필요할 수 있으므로 진행상황에 따라 빠르게 현업과 소통해야 한다.

5) 운영 안정화

  - RPA 프로세스를 운영에 등록하고 수행을 관리하는 단계이다.

  - 보통 각 과제 운영에 대한 히스토리 문서를 두면 좋다. 각각 둘 필요는 없고 하나의 엑셀로 과제별 시트를 만들어 관리하는 게 합리적이다. 과제의 난이도나 복잡성에 따라 차이는 있지만 대략 1인당 30~60개 정도를 관리하는 편이다.

  - 각 Bot Device의 세팅 및 특이성에 대해 기록해야 하고 관리해야 한다.

  - 주기적으로 변경되는 Credential에 관해 최근 변경 기록을 관리하면 사전에 어느 정도는 대응을 할 수 있다.

  - Bot에 대한 트러블 슈팅, 프로세스에 대한 트러블 슈팅을 각각 해줘야 한다.

  - 과제별 '우선순위' 관리를 해주는 것이 효율적이다.

  - OCR의 경우 오케스트레이터 같은 곳에서 기준 스코어에 따라 사용자가 데이터를 확정해주는 케이스도 있을 수 있다.

6) 리소스 관리

  - 라이선스가 얼마나 필요한가, Device는 얼마나 필요한가, Credential의 추가 발급 혹은 삭제가 필요한가 등 연결된 리소스 관리를 하는 단계이다.

  - 특별히 운영 이후의 단계라기 보다는 전반적으로 시스템을 유지하기 위한 단계이다.

  - 운영에 적절한 리소스를 공급해줘야 추가 개발이 운영으로 마이그레이션 되는 과정을 스무스하게 연결할 수 있다.

  - 특히 우선순위가 높은 과제들을 스케줄 표에서 신경써서 배치해야 한다.

  - R&D를 통해 운영에 적용하고 개발 Cost를 줄일 수 있는 부분이 있는지 체크도 필요하다. [주기적인 Docs, 릴리즈 노트 체크, 신기능 구현 등]

 

3. RPA 개발자로서 필요한 자질

  RPA 개발자는 위와 같은 과정 전체를 주관할 수 있게끔 성장해야 한다. 다른 IT분야와 마찬가지로 기본적인 스킬 set을 갖춰야 하지만 그 최소 기간이 다른 분야에 비해 짧은 편이므로, 전체 아키텍쳐와 개발 환경, 개발 과정에서의 커뮤니케이션에 신경을 쓸 필요가 있다. RPA 전체의 프로세스를 인식하고 빠르게 성장하면, 퀄리티는 크게 높지 않더라도, 2년 정도 충실히 갈고 닦으면 위의 과정들을 어느 정도 구성할 수 있지 않을까 싶다.

  RPA가 구축된 대부분의 사이트는 위의 관리포인트, 개발포인트들을 제대로 체크하지 않고 관리한다. 제대로 일을 관리하는 환경이 아니다. [각주:5] 제대로된 개발을 하기 힘든 상태라면 RPA 프로세스에서 어떤 부분이 문제인지, 해결할 수 있는 부분이 있는지를 체크하고 최대한 정상화를 시키자고 제안할 용기도 필요하다. 그 과정에서 위의 프로세스를 인지하고 하나씩 채워나가면서 자신이 해보지 않은 빈 부분을 서서히 메꿔가는 게 좋다. RPA는 어디까지나 다른 시스템을 활용하는 조직에 가깝다. 

  RPA 개발은 생각보다 아무나 할 수 있지 않다. 생각보다 다른 분야와도 호환성이 높아서, 개발 잘하는 사람이면 RPA에 들어와서도 금방 적응하고, RPA 개발을 잘하는 사람은 다른 언어에도 꽤 빠르게 적응한다. 어디까지나 문제를 잘 해결하려면 현황을 인식하고 원인을 추정, 해결을 기획해야 한다. 이걸 당장 코드로 구현할 수 있느냐보다 문제 해결과 재발 방지에 얼마나 빠르게 도달하느냐를 염두에 두고 성장하면 좋다. 결국 비지니스적으로 어떤 성과를 낼 수 있을지를 고민하면서 요구사항을 받아들여야 코드 몽키가 아닌, 유망한 개발자가 될 수 있고 이건 어느 분야든 마찬가지인 거 같다.

  1. 여기서 한계 생산성이란 고용 1단위에 대해 추가로 발생하는 최종생산물의 부가가치이다. [본문으로]
  2. 전사 관점에서는 KPI나 연결 조직 관리도 포함되나 이건 결정권을 가진 C레벨에서나 따로 이야기할 수 있는 사안이다. 어디까지나 RPA 개발자 측면에서는 이런 흐름으로 진행된다. [본문으로]
  3. 개인적으로 2021년 초반에 체크해봤을 땐 기준들을 뭉뚱그려 놓은 느낌이라 커스텀 기준을 활용하고 소통하는 데 큰 장점이 있어 보이진 않았다. [본문으로]
  4. 대표적으로는 Uipath의 Integration Service가 있다. 아웃룩을 사용한다면 메일 체크 프로세스는 따로 만들지 않아도 되는 상태. 각 시스템에서 과제를 트리거링하기 더 쉬워졌다. [본문으로]
  5. 물론 이건 RPA만 그렇다고 보긴 어렵다. 다만 RPA가 유독 심한 것은 사실이다. 실질적으로 몸값이 3년 전 대비 반값 수준이기 때문이다. [본문으로]

설계와 개발을 하다보면 바로 정보를 가져올 수 없거나 인식 기점을 직접적으로 가져올 수 없는 경우가 있다.

혹은 직접적으로 가져오는 경우 예외 케이스가 많아지는 경우도 있다.

그 경우 Proxy 연상이 필요하다.

 

예시1)

조회 후 로딩이 끝나면 엑셀 다운로드를 눌러 파일을 다운로드 하는 진행에서

로딩이 언제 끝나는지 체크가 되지 않거나 힘든 경우를 가정하자.

그럼 보통은 delay를 주고 로딩 이미지 exist를 찍었다가 false면 진행시키려고 했다가

로딩 이미지 인식이 제대로 안 되거나 움직이거나 하는 케이스들로 고생하는 경우가 많다.

position attribute 등으로 직접적인 커버를 할 수도 있으나

기본적으로는 로딩 자체가 모달 팝업같은 형태를 띄기 때문에

로딩 중에는 화면 내 input이 작동하지 않는다.

따라서 그냥 엑셀 다운로드를 누르고 다운로드 창이 뜨는지 retry scope으로 체크해도 같은 효과를 볼 수 있다.

 

 

예시2) 

가령 RPA가 수행될 때 녹화가 수행되도록 하기 위해 녹화 프로그램의 단축키를 누르는 상황이 있다고 하자.

이 경우 녹화 프로그램을 켜고 단축키를 눌렀을 때,

폴더에 녹화를 위한 새 파일이 생겼는지를 체크하는 게 직접적이다.

이때 가장 정확한 방식은 기존 폴더의 최신 파일이름과

녹화 단축키 버튼 Send 후 폴더의 최신 파일이름을 비교하는 방식일 수 있다.

그걸 비교하기 위해서는 기존 폴더의 최신 파일이 없이 이번 녹화파일이 해당 폴더의 첫 파일인 경우 등을 고려해야 한다.

그러나 단축키 send 직전 폴더의 파일 개수를 세고 그보다 늘었는지를 체크하기는 쉽다.

 

 

좋은 개발자라면 위의 예시를 보는 중에 의문이 생길 수 있다.

'로딩이 안 끝나도 클릭이 돼버리면 정합성 문제가 생기는 거 아닌가?'

'그 타이밍에 임시파일 등이 생기면 틀어지는 거 아닌가?'

너무 당연하게도 proxy 연상을 통한 방식은 직접적이지 않기 때문에 틀어질 가능성은 있다.

다만 살짝만 보완해도 직접적인 방식과 거의 같은 수준의 안정성을 보여준다.

가령 임시파일이 생기는 케이스의 경우 확장자를 mp4 같은 영상 확장자로 필터링하면

.dat 같은 임시파일에 대해 신경쓰지 않아도 된다.

 

RPA Studio단에서의 설계는 이런 형태의 Proxy 연상이 빠르게 가능해지면서 성장하는 편이다.

어떤 면에선 '잔머리'라고도 볼 수 있다.

잔머리가 무조건 좋은 건 아니지만 초보 개발자일수록 너무 어렵게 생각해서

개발을 못 하는 케이스가 많아 글을 써본다.(나 포함)

그런 경우 이런 proxy 연상들을 서로 공유하면서 하나의 tip으로 가져가면

현업분들의 요구사항에 대응하는 실력이 빠르게 크는 거 같다.

+ Recent posts