전직 개발자, 파이썬을 만나다

오래 전에 개발을 그만둔 이후에도 어찌된 일인지 그동안 MySQL이나 MSSQL 같은 데이터베이스의 SQL 쿼리를 그것도 꽤 복잡한 수준에서 다룰 일이 종종 있었다. 특허법인도 일반 기업의 ERP처럼 사내 업무를 관리하는 관리솔루션이 있는데, 이 관리솔루션을 여러 차례 커스터마이징 하는 과정에서 쿼리문을 직접 짜기도 하고 ERD로 테이블 설계도 같이 참여하면서 실오라기 같은 감을 유지해온 것 같다.

슬랙을 도입하면서, 눈여겨본 기능 중에 가장 마음에 들었던 것은 이메일을 채널 내부로 전달해서 이메일 내용에 대해 내부 구성원끼리 편하게 논의할 수 있다는 점이었지만, 앞으로의 확장성 측면에서는 슬래시 커맨드나 웹훅을 이용해서 외부 솔루션과 데이터를 송수신하거나 API 등을 호출해서 실행시킬 수 있다는 점이 더 크게 다가왔다.

슬랙 앱 관리화면

결정적으로, 개인적으로 친분이 있는 팀이 슬랙 내부에서 문자 전송하는 기능을 구현해놓은 것을 본 일이 있는데 그때 당시에는 꽤 충격을 받았다. 우리 사무소 내부에서도 관리팀이 고객에게 문자를 자주 보냈는데, 그 당시만 해도 담당자가 문자발송 기능을 제공하는 홈페이지에 직접 로그인해서 창을 따로 띄워놓고 문자를 발송하고 있었기 때문이다.

당시 문자발송 화면

개인적으로 부탁해서 슬랙 문자발송 기능에 대한 파이썬 소스 코드를 건네 받았는데, 그때 당시만해도 소스를 받아서 슬랙에 설치(?)하면 되는 줄 알았던터라 험난한 서버 세팅 과정이 필요하리라고 생각도 못했고, 소스 코드를 직접 들여다볼 생각도 없었다. 우리 사무소도 슬랙에서 직접 문자를 보내보자고 생각했던게 이 모든 것의 화근이었다.

전직 개발자, 파이썬을 건드리다

BLT의 장점을 어필하는 과정에서 필자가 전직 개발자라는 점을 강조해 왔지만, 개발 관련 경험이 특허 업무 이외에 다시 쓰이게 될 것이라고는 아니 다시 개발을 시작하리라고는 생각도 하지 못했다. 사실 파이썬은 개발자로 일하던 2004년에 회사에 있던 선임 한 분이 소개해줘서 잠깐 다뤄본 일이 있는데, 2004년에 처음 접했던 파이썬과는 많이 달라져 있었다. 그때 당시에는 줄 단위로 실행하는 인터프리터 형태의 언어라고 생각했었는데, 지금은 전 세계의 온갖 개발자들이 공개해둔 패키지도 어마어마하게 많고 자바 계열의 언어와 양대 산맥을 이루는 프로그래밍 언어가 되어 있었다.

그 당시의 목표는 슬랙에서 문자를 보내자는 단순한 것이었기 때문에, 파이썬 소스를 최소한의 범위로 수정해서 기능을 구현하고자 했다. 건네 받은 문자발송 파이썬 소스가 플라스크 웹서버로 되어 있고, 슬랙의 슬래시 명령어가 호출되면 슬랙 앱 관리 페이지에서 설정해둔 서버 주소를 호출하고, 호출된 서버 안에서 문자 관련 API를 호출하고 성공여부를 다시 응답하는 형태로 구성되어 있다는 점을 파악하는데는 꽤 시간이 걸린 것 같다.

Request URL을 호출하도록 슬랙 커맨드 설정

문자 API를 사용하는데 필요한 키값을 변경하고 설정을 완료한 이후에 여러 번의 문자 발송 테스트를 거쳐서 2019년 2월 즈음 문자 발송에 처음 성공했을 때의 쾌감은 경험해 본 사람만이 공감할 수 있을 것 같다. 여기서 순탄하게 마무리 되었다면 좋았겠지만, 문자의 발신자번호를 바꾸는 기능과, 특정 슬랙 채널에서만 발송할 수 있도록 제한하는 기능이 필요했다. 회사 번호로 발송하는 문자인만큼 발송 내용에 대한 관리가 필요했기 때문이다. 문자의 발신자번호야 번호를 찾아서 바꾸면 되겠다 싶었지만, 특정 채널에서만 실행되도록 제한하는 고급진 기능은 어떻게 구현해야 한단 말인가!

이 한 줄을 넣기 위한 길고 긴 여정이 시작된다

전직 개발자, 파이썬을 배우다

소스코드는 최대한 건드리지 않고 슬랙 API 설명 페이지 내에서 채널 제한 기능 구현에 대한 돌파구를 찾아보려고 했으나, 프로그래밍 지식이 백지인 상황에서는 1도 이해할 수 없었다. 슬랙에서 슬래시 커맨드를 호출할 때 서버로 같이 딸려오는 페이로드에 다양한 슬랙 정보가 담겨있고, 그 안에 채널 ID값이 있어서 특정 채널 ID와 일치하는지 비교해서 실행여부를 결정하면 되는 간단한 업무였지만 그 당시의 필자는 그걸 알 리가 없었다. 파이썬에 대한 지식이 없는 상태에서는 아무 것도 할 수 없다는 것을 깨닫고 채널 제한 기능을 포기할 것인지 고민하게 되었다.

파이썬을 활용해서 다양한 프로젝트가 진행되고 있고, 특별히 개인적으로 관심이 많았던 인공지능 프로젝트들도 파이썬을 많이 활용한다는 이야기를 많이 들었기 때문에, 고민에 대한 결론을 내리기까지는 그리 오래 걸리진 않았다. 인공지능 관련 프로젝트는 글을 쓰고 있는 지금 이 순간에도 필자의 가장 큰 관심사다. 이왕 개발을 다시 시작한다고 한다면 텐서플로우나 파이토치 같은 패키지를 활용해서 많은 인공지능 모델이 만들어지고 있는 파이썬을 배우는게 맞다는 생각이 들었다. 누군가에게 개발업무를 요청하거나 발주하더라도 일단 뭐라도 알아야 일을 시키고 관리할 것이 아닌가 하는 생각으로 파이썬을 본격적으로 배워보기로 결심했다.

다만, 문제는 시간이었다. 지금도 너무 바쁜데 새로운 것을 배울 시간을 어떻게 확보할 것인가 하는 것이 가장 큰 숙제였다. 사실 비엘티를 시작한 이후에 관리자동화를 구현하기 위해 여러 차례 다양한 시도를 했지만 번번이 관리프로그램 커스터마이징이나 추가개발 때문에 마음 상하는 일이 많아서 이럴 바에는 내가 직접 개발하는게 낫지 않을까 하는 생각도 자주했다. 그 때마다 개발업무를 다시 배워야겠다는 생각은 여러 차례 했었지만 매번 앞을 가로막았던 것은 시간이었다.

막상 나 아니면 처리할 수 없는 상황이 되니, 시간은 크게 문제되지 않았다. 잠을 줄여가면서까지 없는 시간도 만들어내는(?) 역사를 체험하게 되었다. 퇴근하고 아이들을 재우고 밤 늦은 시간부터 새벽시간까지 그야말로 주경야독의 시간이 계속되었는데, 지금 돌이켜보면 몸은 힘들었지만 정말 오랜만에 뭔가 새로운 것을 배워간다는 점은 정말 오랜만에 느껴본 즐거움과 성취감이었던 것 같다.

전직 개발자, 파이썬에 조금 익숙해지다

파이썬 책을 따로 보진 않았다. 온라인 강의도 따로 듣진 않았다. 파이썬은 가장 인기있는 언어였기 때문에 이미 웹상에는 무수히 많은 파이썬 강의 블로그나 게시물이 넘쳐났다. 그 중에서 무난해보이는 위키독스 게시물을 선택해서 하나씩 배워갔다. 기초 강의를 끝내고 파이썬 기본 문법에 익숙해지는데 두 달 정도는 걸린 것 같다. 확실히 소문대로 초보자들도 배우기 어렵지 않고 패키지 설치를 포함해서 외부 모듈을 가져와 쓰는데도 너무 편하게 되어 있었다. 이래서 파이썬 파이썬 하는구나 싶었다.

물론 개발 관점으로 문제를 접근하고 해결하는 방법을 고민하는 것은 쉽게 생기지는 않는 것 같다. 예전에 초보 개발자로 일했던 경험 중에서 구체적인 문법 같은 지식은 잊어버렸지만 문제를 접근하고 구현하는 과정을 설계하는 어렴풋한 기억은 남아있었던 것 같다. 이 어렴풋한 기억이 필요한 기능을 하나씩 구현해가는 과정에서 정말 큰 도움이 되었다. 나중에 기회가 되면 이야기해보겠지만 우리 비엘티에는 파이썬을 배우고 싶은 사람끼리 모여서 서로 감시하고(?) 독려하는 비코더 라는 모임을 만들었는데, 이 모임에는 개발경험이 1도 없는 구성원들부터 컴퓨터공학 석사 출신까지 정말 다양한 구성원이 모여있다. 이 과정에서 문법을 이해하는 것과 문법을 이용해서 구현하려는 로직을 구현하는 것 사이에는 큰 차이가 있다는 점을 깨닫는 계기가 되었다.

어느 정도 파이썬 문법이 익숙해진 후에야 JSON 형태의 페이로드 구조도 이해할 수 있었고 파이썬 DICT형 데이터를 다루는 법을 이해하고 나니 비로소 슬랙 API 문서를 어느 정도 이해할 수 있게 되었고, 원하던 슬랙의 문자 발송기능을 완전하게 구현할 수 있었다.

전직 개발자, 다시 개발자의 길로

슬랙의 문자 기능은 지금도 꽤 유용하게 쓰이고 있다. 슬랙 도입을 계기로 슬랙이 기본 제공하는 이메일 채널 전달 기능 등을 사용하면서, 업무를 처리하는 과정에서 슬랙 내에서 커뮤니케이션 하는 일이 많아지게 되었다. 내부 커뮤니케이션은 슬랙으로, 외부 커뮤니케이션은 이메일로 기본 방침을 정했다. 슬랙에 머무는 시간이 많아지면서 슬랙에서 이탈하지 않고 슬랙 내에서 더 많은 일을 처리하면 업무가 더 효율적일 수 있겠다는 생각을 했고, 이를 계기로 외부에 산재되어 있는 데이터나 솔루션을 슬랙 중심으로 연결해야겠다는 구상을 하게 되었다.

꾸준히 개발자를 채용해서 개발역량을 비엘티 내부로 내재화하려는 시도는 했었지만, 배민이나 토스 같은 유니콘 레벨의 스타트업이 개발자를 엄청 뽑기 시작할 무렵이라 채용은 불가능한 상황이었다. 외부 투자없이 살림을 꾸려가는 특허법인의 특성상 개발자 몸값을 감당하기도 어렵기도 했지만, 개발자 중심의 회사 구조가 아니라 개발업무를 통해 변리사와 내부인력의 업무를 효율화하는 보조적인 역할의 한계로 인해 더더욱 개발자를 채용하는 것은 먼 나라의 이야기였다. 이 무렵에 필자는 어렴풋이 온 우주가 나를 다시 개발자로 부르고 있는게 아닌가 하는 생각이 들었고, 이 부르심에 순종해야 하는 내 운명을 받아들여야 하지 않을까 하는 생각을 하게 되었다.

이미 기본적인 파이썬 언어 지식은 생긴 상태였고, 데이터베이스 쿼리는 제법 다뤄왔기 때문에 한 번 해봤던 슬랙 외부 함수 호출을 통해서 사무실 관리프로그램의 데이터베이스와 직접 연결해서 필요한 데이터를 슬랙에서 조회하거나 슬랙에서 입력한 값을 데이터베이스에 반영하는 데이터 연결은 해 볼 법한 프로젝트로 보였다. 돌이켜보면 이 때 멈췄어야 했는데, 이미 너무 멀리 와버린 것 같다. (계속)

원문 : 특허법인의 디지털 트랜스포메이션 #2

필자소개 : 유철현 BLT 변리사 : 유 변리사는 스타트업을 발굴하고 직접 투자하는 ‘엑셀러레이터형’ BLT 특허법률사무소를 시작으로, IT와 BM분야의 전문성을 살려 다양한 기술 기반 기업의 지식재산 및 사업 전략 컨설팅을 수행하고 있습니다. 현재 중소벤처기업진흥공단 심의위원과 한국엔젤투자협회  팁스(TIPs)프로그램 사업 심사를 담당하고 있습니다.