LINE Corporation이 2023년 10월 1일부로 LY Corporation이 되었습니다. LY Corporation의 새로운 기술 블로그를 소개합니다. LY Corporation Tech Blog

Blog


LINE 개발자 3인의 파이콘 한국 2019 방문기

들어가며

LINE은 국내에서 가장 큰 파이썬 컨퍼런스인 파이콘 한국에 어느덧 4년째 후원하고 있습니다. 

파이콘 한국 2019에서 LINE 부스를 운영하면서 여러 재미있는 이벤트도 진행했는데요. 이벤트에 대한 자세한 이야기는 추후 풀어보겠습니다.

이번 글에서는 파이콘 한국 2019에 다녀온 세 명의 LINE 개발자의 생생한 후기를 전합니다.

키노트, 라이트닝 토크, '머신러닝 및 데이터 과학 연구자를 위한 파이썬 기반 컨테이너 분산 처리 플랫폼 설계 및 개발'

안녕하세요. LINE 클라이언트 팀에서 일하고 있는 차영호입니다. 저는 파이콘 한국 2019에서 관심있게 들었던 키노트와 라이트닝 토크, 인상 깊었던 세션 한 가지를 공유하고자 합니다.

키노트

올해 파이콘의 키노트에는 파이썬과 관련해서 다방면으로 활동하시는 네 분이 연사로 나왔습니다. 그중 제일 기억나는 반병현 님의 키노트를 소개하겠습니다. 한때 '코딩하는 공익'이라는 블로그로 인터넷 스타로 떠오르신 반병현 님이 첫 번째 키노트를 열었습니다. 지방 관공서의 사회복무요원으로 근무하는 반병현 님은 자신의 블로그에 다음과 같은 업무 개선사항을 공유했습니다.

위 글들은 국내 유명 커뮤니티에서 상당한 인기를 끌면서 여러가지 의미로 많은 파장을 일으켰습니다. 저는 처음에 블로그의 글만 읽고는 재밌는 분이라는 정도로 인식했었는데요. 키노트를 듣다보니 사회복무요원이라는, 공무원 사회에서 가장 목소리 내기 힘든 위치에서 대한민국 정부를 개선하겠다는 큰 목표를 가지고 하나하나 치밀하게 계산된 행위를 정리한 글이었다는 데서 크게 놀랐습니다. 특히 업무 자동화의 경우 제가 LINE 클라이언트 팀에서 근무하면서 관심을 갖고 있는데요. 병현 님 수준에 이르기 위해 꾸준히 노력해야겠다고 느꼈습니다.

라이트닝 토크

라이트닝 토크는 파이콘에서 가장 기대되는 행사인데요. 참가자가 행사 당일에 신청해서 5분 이내에 자신의 경험담이나 주장을 펼칠 수 있고, 심지어는 파이썬과 관련 없는 이야기를 해도 됩니다.

대부분 인상 깊고 재미있었지만 그 중에서도 박조은 님의 라이트닝 토크(참고)를 공유하고자 합니다. 박조은 님은 본인이 개설한 '오늘코드'라는 파이썬 학습용 유튜브 채널 운영을 하면서 여러가지 어려운 환경 속에서도 꾸준하게 성장하는 모습을 자랑스럽게 소개하셨습니다. 완벽한 것 보다는 지금 당장 시작하는 것에 대해 강조했는데요. LINE에서 추구하는 미션 중 하나인 'Stay a Step Ahead(한 발 차이: 완벽한 계획보다 빠른 시도가 더 중요하다)'와도 비슷하다고 생각했습니다.

머신러닝 및 데이터 과학 연구자를 위한 파이썬 기반 컨테이너 분산 처리 플랫폼 설계 및 개발

과학자를 위한 클라우드 서비스인 backend.ai를 제작하고 있는 신정균 님의 세션(참고)을 인상 깊게 들었습니다. 사실 저는 파이콘에 올 때마다 신정균 님의 세션은 꼭 듣고 있는데요. 올해는 컨테이너 기반의 머신러닝 플랫폼을 개발하면서 겪었던 여러가지 어려움에 대해서 공유하는 세션이 진행되었습니다. 제가 한때 'GPU를 공유하는 가상머신'을 구현해 본 경험이 있어서 정균 님이 겪고 있는 여러가지 어려움에 깊이 공감할 수 있었습니다.

이번 발표는 2015년 파이콘에서 발표했던 내용(참고)의 회고 형식으로 진행되었는데요. 고객의 요구사항과 기술 트렌드 사이에서의 고민, 플랫폼을 기초부터 만들면서 겪게 된 수많은 어려움, 그 외 여러가지 난관들과 해결 방안을 요약하여 공유해주셨습니다.

• 끊임없이 변화하는 컨테이너 환경에 대응하기
• TensorFlow나 PyTorch등의 기반 플랫폼 버전 변화로 발생한 비호환성에 따른 개발 부하
• 병렬화 및 고객의 요구사항에 따른 구 파이썬 버전 지원 추가 구현
• GraphQL 기반의 여러가지 언어용 API 지원 및 엔터프라이즈 고객을 위한 오프라인 환경 지원 추가
• GPU 가상를 이용한 성능 개선

슬라이드 하나하나가 전문적인 내용을 포함하고 있어서 한 시간짜리 세션에서 내용을 제대로 전달하기 쉽지 않았을 텐데 명료하고 재미있게 요약해 주어서 즐겁게 경청할 수 있었습니다.

'법률을 디버깅하다'

안녕하세요. 저는 LINE 클라이언트 팀에서 DevOps와 테스트 자동화 업무를 맡고 있는 김유빈입니다. 저는 Day2에서 가장 인상 깊었던 김재윤 님의 '법률을 디버깅하다' 세션을 소개하려고 합니다. 

발표자는 대한민국 헌법을 70년의 역사를 가진, 그리고 수많은 개발자의 반복되는 입사와 퇴사의 역사가 들어있는 하나의 거대한 프로젝트라고 소개하며 발표를 시작하였습니다. 실제 사례를 바탕으로 법률에 대해 아래 3가지 분석을 진행하였고, 분석 결과를 공유하는 시간을 가졌습니다.

분석1. 법률 간 충돌 자동 검사

첫 번째 분석에서는 과거에 '부담금관리 기본법'에 언급된 별표에 규정된 법률인 '집단 에너지사업법'이 실제 존재하지 않아 소송 사례로 이어진 상황을 예시로 들며 법률 간 충돌 자동 검사에 대한 필요성을 언급했는데요. 이와 같은 기존 법률의 오류 사항을 수정하기 위해 아래의 분석 단계를 거쳐 실제 존재하는 오류 사례를 추출했다고 합니다.

  1. 국가법령정보 사이트의 한글주소 서비스를 활용하여 각 법률 HTML 소스에 접근하여 법률 본문만 읽어옴
  2. 특례 조항의 경우 적어도 하나의 필수 키워드가 포함되어야 하며, 키워드 포함 여부에 따라 각 조항의 정상과 비정상 여부를 판단
  3. 비정상 결과를 눈으로 확인하는 과정을 거쳐 결과의 오류를 검수

분석 결과 인용 연결 오류 30건, 누락 특례 18건을 발견하였고, 오류에 대한 수정은 2019년 9월에 게재 예정이라고 발표하였습니다.  

분석2. 형벌 규정 전수조사

두 번째 분석에서는 '박나래 수제향초 사건'을 예로 들며, 현재 과잉범죄화 때문에 형법 규정이 증가하고 과잉형벌화 때문에 처벌의 강도가 증가하고 있는 문제를 언급하였습니다. 이러한 문제의 발단은 실제 규정은 존재하지만 해당 규정에 대한 통계 조사가 존재하지 않거나, 사례 연구나 샘플 조사 단계에서 전수조사하지 않았기 때문에 발생한 현상임을 지적하였습니다. 발표자는 파이썬을 이용하여 '크롤링 → 전처리 → 추출 → 분석' 과정을 거쳐 이러한 현상을 가시화하였습니다.

  • 크롤링: 모든 법률의 텍스트를 얻어옴
  • 전처리: 크롤링 단계에서 가져온 텍스트를 문장별로 분리하여 형벌 조항만 추출 
  • 추출: 형벌 규정이 규칙성을 갖는 점에 착안하여 정규식을 이용하여 키워드 위치를 찾음. 이를 활용하여 징역 기간 값을 추출하고 float형태로 저장. 
  • 분석: 추출 단계에서 얻은 데이터 셋을 인자로 두고 선행연구에서 얻은 공식을 적용, 형벌지수를 계산하고 그 결과를 그래프로 나타냄. 

분석3. 법률 네트워크 분석

발표자는 2018년 파이콘 발표 당시 '30년 간의 우리나라 법률 간 인용관계 데이터 구축'에 대한 발표를 하였으나, 당시 완성하지 못했던 법률 간의 네트워크 가시화 및 추측성 결론에 대해 명확히하는 시간을 가졌습니다. 법률을 네트워크 노드로, 법률 간 인용을 연결로 보고 네트워크를 분석하였습니다. 아래 왼쪽의 법률 네트워크를 나타낸 이미지를 보면 주황색의 노드가 높은 밀도로 모여있는데 이는 법률이 서로 복잡하게 얽혀있다는 걸 나타냅니다. 다음으로는 각 법률 간의 인용 상관 관계를 그래프로 그려 국내 특별법의 특수성을 나타내고자 하였습니다. 우측의 그래프는 상법과 시민법이 상위 랭킹을 차지하고 있는 이상적인 법률 간의 인용 관계를 나타내고 있습니다. 

마지막으로 발표자는 20년 전 Guido van Rossum의 'Computer Programming for Everybody'를 언급하며 법률가 스스로 프로그래밍을 할 수 있는 미래에 대해 언급했습니다. 

저는 해당 세션을 청강하기 전까지 법률 분야, 더 나아가 일상 전반에서 프로그래밍이 이렇게 유용한 데이터를 생산할 수 있다는 것을 잠시 잊고 지냈습니다. 해당 강연을 통해 프로그래밍의 장벽이 다른 직종 종사자에게도 많이 낮아지고 있다는 걸 느낄 수 있었고, 조금만 관점을 달리하여 일상을 바라보면 우리가 가공해서 얻을 수 있는 유용한 정보가 무한하다는 것을 느낄 수 있었습니다. 

'Advanced Python testing techniques', 'gRPC와 파이썬을 활용한 마이크로서비스 개발'

안녕하세요. LINE에서 LINK 체인 메인넷 개발 업무를 맡고 있는 이상엽입니다. 저는 Day2에 부스 운영을 도우던 중 짬을 내어 관심 있던 세션 두 개를 들을 수 있었습니다.

Advanced Python testing techniques

이번 세션에선 안재만 님이 아래와 같은 파이썬 테스트 테크닉에 대해서 설명해주셨습니다.

이미 알고 있던 개념도 있었지만 좀 더 깊은 내용과 함께 파이썬에서 활용할 때의 팁을 얻을 수 있었습니다. 안재만 님은 코드 변경 자동 감지 및 테스트 성공 여부를 실시간으로 알려주는 'pytest-convey'라는 웹 UI 툴을 개발 중이라고 했는데요. 릴리스된다면 프로젝트에 한번 적용해 보고 싶은 생각이 들었습니다.

gRPC와 파이썬을 활용한 마이크로서비스 개발

이번 세션에선 송지형 님이 gRPC의 개념과 문제점과 함께 마이크로서비스 아키텍처 구축에 gRPC를 어떻게 적용했는지 발표해주셨는데요. 저희 팀의 프로젝트에서도 gRPC를 이용하고 있던 터라 주의 깊게 들었습니다. 

기존 gRPC가 관리와 빌드가 어렵다는 문제점이 있어서 송지형 님의 팀에서 직접 gRPC 파이썬 프레임워크를 개발했다고 합니다. 관리와 배포가 간편하고 각 모듈별로 기능이 잘 나뉘어 있어 gRPC가 아닌 다른 메시지 프로토콜에도 적용시킬 수 있을 것 같았습니다. 이것 역시 개발한지 얼마 되지 않았지만, 향후 오픈소스로 공개할 예정이라고 하니 기대됩니다.

마치며

LINE에서는 파이썬과 관련된 여러 분야에서 채용을 진행 중입니다. 관심 있는 분들의 많은 지원 바랍니다.