brunch

You can make anything
by writing

C.S.Lewis

by 특허법인BLT May 12. 2023

특허법인의 디지털 트랜스포메이션 #3


들어가며


그 동안 여러가지 내부 프로젝트를 진행해왔는데, 그 중에서 한 가지 기억에 남는 프로젝트를 소개하고자 한다. 

지난 칼럼에서 언급한 것처럼, 특허법인은 다양한 사건과 고객을 관리하기 때문에, 일반적인 법인에서 회사 자원을 관리하는 ERP와 같은 관리솔루션을 특허법인도 사용하고 있다. IP 관련 소프트웨어 시장이 아직 크지 않다보니 시장 내 출시된 제품의 다양성은 조금 부족한 편이다. 우리 특허법인은 내부적으로 PATMATE 라는 관리 소프트웨어를 사용하고 있고, 다양한 사건과 고객에 대한 정보가 이 소프트웨어를 통해 관리되고 있다.


노션과의 연동


지금은 여러가지 기능이 추가되고, 실적 분석, 비용 분석, 수익율 분석 등 재무적인 분석 기능이 추가 개발되고 있는데, 3년 전만 하더라도 이 특허 관리 솔루션만으로는 고객분석이나 사건에 대한 데이터 정리를 하는데 조금 아쉬운 측면이 있었다. 그래서, 쉽게 쓸 수 있는 보조적인 툴을 알아보다가 데이터베이스 기능을 가지고 있고 다양한 API도 지원하고 있는 노션을 활용해보기로 했다. 사내 매뉴얼 작업 때문에 노션을 이미 사용하고 있었기 때문에, 비엘티안들의 추가적인 학습이 없이 접근할 수 있다는 강점이 있었다. 여담이지만 여러 사건(?)을 통해 노션 API가 불안정하다는 점을 알게 된 지금이라면 다른 선택과 판단을 했을 수도 있을 것 같다.



그 무렵 내부 업무 프로세스가 슬랙을 통해 진행되고 있었는데, 어느 순간 새로운 고객에 대한 정보가 슬랙을 통해 전달되고 해당 정보를 받아서 그대로 관리솔루션에 재입력하는 중복 프로세스가 발생하고 있었다는 사실을 인지하게 되었다. 전술한 것처럼 고객에 대한 데이터를 노션으로 옮겨서 다양한 속성값에 따라 고객을 분석하기 위해 노션을 사용하기로 결정한 시점이었기 때문에, 이 두 가지 이슈를 한 번에 해결할 수 있는 방법에 대해 고민하기 시작했다.


슬랙과 노션과 관리솔루션의 연결


방법을 찾다가 슬랙에 다이알로그를 띄우는 기능이 있다는 것을 알게 되었다. 다이알로그 창에서 사건이나 고객 정보를 입력받아서, 서버로 보내면 서버에서 관리솔루션 DB와 노션 DB페이지에 동시에 업데이트를 진행하도록 하면 중복 프로세스도 해결되고 노션에도 데이터가 자연스럽게 쌓일 것이기 때문에 이 방향으로 문제를 해결해보기로 가닥을 잡았다.

[https://api.slack.com/dialogs 페이지 참고]


슬랙 API 설명 페이지를 참고하여, 슬랙에서 호출할 API 서버에 함수를 하나 만들고 SLACK SDK에서 제공하는 WebClient.dialog_open() 함수를 활용해서 다이알로그를 띄우는 것까지는 어렵지 않게 구현할 수 있었다. 슬랙 슬래시커맨드 동작 구조상 인터랙션이 발생할 때 다시 서버로 호출하는 함수가 한 가지로 고정되어 있기 때문에, callback ID로 구분하여 상황에 맞는 후속 프로세스를 구현하는 방식이 처음엔 조금 낯설었다. 지금은 여러 가지 커스텀 슬래시커맨드가 붙은 상태여서 callback ID를 5가지 정도로 구분해서 나름 잘 사용하고 있다.


알 수 없는 오류는 발생하는데 실행은 잘 된다?


인터랙션이 발생할 때 호출되는 공통함수에서 처리해야 할 것이 꽤 많았다. 슬랙 다이알로그 창에서 입력된 데이터를 누가 입력했는지 채널에 로그를 남기기 위해서는 슬랙 사용자의 이름도 별도로 조회하는 기능도 필요했고, 입력된 데이터를 우리 관리솔루션의 DB에 추가하는 기능 뿐 아니라, 노션의 API를 호출하여 DB페이지에 하위 신규 페이지를 만들고 정보를 입력하는 기능까지 구현했다.


[슬랙 다이알로그로 입력하기]


열심히 자료를 찾아가며 구현을 해놨더니 문제는 그 다음에 발생했는데, 노션페이지를 호출하는 기능 전까지는 인터랙션 담당 함수가 잘 동작했는데, 노션 API를 호출하는 기능을 붙인 이후에는 계속 슬랙에서 알 수 없는 오류가 간헐적으로 발생했다. 전문 개발자는 아니다보니 파이썬의 디버깅 모드를 활용하는 방법을 잘 몰라서 아직까지도 옛날 방식에 따라 print 함수로 콘솔에 로그를 출력해서 문제를 파악하곤 하는데, 슬랙에서의 실행 오류는 에러 메시지를 확인하기도 어려웠다. 더 이상한 점은 오류는 발생하지만 노션 API 까지 잘 호출되어 DB페이지에 정상적으로 업데이트가 잘 되고 있다는 점이었다.


문제의 원인은 시간


혼돈 속에서 어렵사리 문제의 원인을 알게 되었는데, 서버 로직의 문제라기 보다는 슬랙이 자체적으로 발생시키는 time out 에 대한 오류였고 슬랙의 슬래시커맨드를 구현할 때 슬랙이 3초 (3000ms) 이내에 서버로부터 응답을 받지 못하면 오류를 발생시킨다는 것을 알게 되었다. 서버에서는 기능이 정상적으로 수행되었지만 슬랙 화면 상에는 오류가 발생했다는 메시지가 뜨는 이상한 상황이었기 때문에, 아무리 내부 구성원들만 쓰는 기능이라고 하더라도 이 문제를 어떤 식으로든 해결해야 했다. 


Timer로 시간도 측정해봤는데, 노션 API 호출 전까지는 넉넉하게 0.5초 이내로 처리가 되고 있었는데, 노션 API 호출만 하게 되면 3초를 맞췄다가 넘겼다가 하는 현상이 반복되었다. 아무리 노션 API 호출시의 페이로드를 가볍게 만들어봐도, 노션 API 자체가 느려서 해결할 수 있는 방법이 없었다. 노션의 컨디션이 좋아서 노션 API 호출에 대한 응답이 빨리 오면 3초 이내에 응답할 수 있기 때문에 좀 더 안정적인 처리방법이 필요했다.



스레딩 방식의 도입


고민하던 차에 예전 닷넷 초장기에 리얼 개발자 시절에 일하던 기억 중에 멀티스레딩(Multi Threading) 처리 방식이 떠올랐다. 코드가 실행될 때 한 줄이 끝나야 다음 줄로 넘어가게 되는데, 스레드를 생성해서 별도 프로세스로 해당 코드를 실행시키고 끝났는지와 무관하게 다음 코드로 넘어가는 방식이다. 사실 멀티스레딩 처리 방식의 원래 취지와는 맞진 않기도 하고, 코드 라인이 순서대로 진행되지 않기 때문에 중간에 오류가 나더라도 알기 어려워서, 가장 좋은 방법이라고 하기는 어렵다. 그렇지만 그 당시로서는 3초 이내에 노션 API로부터 응답까지 받는 것은 불가능한 일이었기 때문에, 스레딩 방식으로 노션 API 부분만 분리해서 처리할 수 밖에 없었다. 이 글을 쓰고 있는 지금도 노션 API는 조금 느린 감이 있은 있고 동일한 방식으로 처리하고 있다.

[https://docs.python.org/ko/3/library/threading.html 문서 참고]

이 방식을 이용해서 슬랙에서 입력된 데이터가 관리솔루션과 노션에 동시에 업데이트 되는 기능을 구현했고, 지금도 내부적으로 데이터 입력 방식으로 활용하고 있다. 내부적으로 여러 유형의 작은 프로젝트들이 여럿 있었지만 슬랙과 노션과 관리솔루션을 모두 잇는 복잡한 처리방식 중 하나여서 아직 기억에 남는다.


One more thing… 


이 이후에도 다양한 외부 API를 활용해서 업무에 필요한 반복작업을 대체하면서 변리사들이 업의 본질인 지식재산 전략을 수립하고 전략을 실행하는데 집중할 수 있는 환경을 갖추기 위해 여러가지 노력을 기울이고 있다. 최근에는 네이버 클라우드 플랫폼의 여러 API 들과, 특허청 관련 API를 활용하여 몇 가지 서비스를 구상하고 있고 이 중 일부는 내부에 적용하기도 했다. 진행했고 지금 진행하고 있는 여러 가지 프로젝트가 많지만 모든 것을 다 소개하기는 어려울 것 같고, 최근 외부 사용자들에게 개방한 서비스가 있어서 이 내용만 소개하고 마무리 하려고 한다.


상표 지정상품검색 솔루션을 무료로 오픈하다


회사 내부적으로 내부 상표담당자들이 지정상품 중 특히 비고시명칭을 검색할 수 있는 내부용 검색엔진을 외부 개발사의 도움을 받아서 구현했었는데, 이 솔루션을 최근 조금 더 고도화하여 외부에 무료로 공개하기로 했다. Markdigger.com 이라는 서비스인데, 상표출원의 걸림돌 중 하나인 지정상품을 검색할 수 있는 엔진이다.


[아직 파일럿 수준이어서 UI는 영 아닌 상태다]


특허청 홈페이지에서 제공하는 상표의 지정상품 명칭을 검색하기가 어려운 측면도 있고, 특히 비고시명칭은 검색이 불가능하기 때문에 일일이 등록상표를 검색해서 상품정보를 찾아봐야 하는 불편함이 있었다. 이번에 공개한 지정상품 검색엔진은 고시명칭 뿐만 아니라 비고시명칭 지정상품도 검색이 가능하도록 구현되어 기존의 불편함을 해소할 수 있을 것으로 생각한다. 상표업무를 담당하는 특허업계의 분들 뿐만 아니라 상표 출원 고객들이나 외부 사용자들도 관련 지정상품을 조금 더 쉽게 검색할 수 있는 환경이 갖춰지기를 바란다.




필자 소개

유철현 대표 변리사는 서울대 재료공학부를 졸업하고 2007년 44기 변리사 시험에 합격했습니다. 스타트업을 발굴하고 직접 투자하는 ‘엑셀러레이터형’ BLT 특허법률사무소를 시작으로, IT와 BM분야의 전문성을 살려 다양한 기술 기반 기업의 지식재산 및 사업 전략 컨설팅을 수행하고 있습니다. 현재 중소벤처기업진흥공단 심의위원과 한국엔젤투자협회 TIPs 사업 심사를 담당하고 있습니다.


특허법인 BLT

누군가는 특허를 만들 때, BLT는 당신의 사업의 성공을 만들어 냅니다. The Only Firm for Your Success!!


#디지털 #DT #디지털트랜스포메이션 #디지털전환 #혁신 #슬랙 #노션 #시프티 #OKR #개발 #파이썬 #냉동인간 #해동 #다시 #개발자 #포트폴리오 #IP #비즈니스 #특허 #상표 #지정상품 #상표출원 #서비스표 #business #지식재산 #BLT #비엘티 #특허법인 #특허제도 #상표제도 #기업가치 #상장 #코스피 #나스닥 #비공개 #스타트업 #금융 #투자 #밸류에이션



작가의 이전글 스마트폰 뭐 사지?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari