PyCon Korea 2019 2일차 참관기

image1.jpg PyConKr2019 가 진행되고 있는 COEX Grand Ballroom 전경

참석 배경

올해 PyCon Korea 2019 행사에 참석하게 되었습니다. Python 개발자 임에도 불구하고 금번 PyCon 이 첫번째 Python 관련 첫번째 컨퍼런스 였습니다. 개인적으로 많은 사람이 붐비는 장소에 가는것으로 좋아하지 않기에 PyCon 같은 대형 컨퍼런스 참석을 하지 않는 편 이었습니다. 그러나 올해 우연히 다른 개발자 컨퍼런스에 참석하게 되면서 오프라인으로 개발자 분들이 모이는 행사가 굉장한 지식과 자극을 준다는 점을 새로이 알게 되었습니다. 이러한 점이 저를 티켓 매진 등 난관이 있었음에도 PyCon 에 참석하도록 했습니다.

또한 다양한 주제로 진행되는 세션 또한 PyCon 참석 동기가 되었습니다. 다양한 주제로 (아래에 기술) 진행된 50여개의 세션들을 통해 현재 제가 겪고 있는 기술 절벽 등반에 대한 노하우를 얻기 위하여 참석했습니다.

PyCon Korea 2019

image2.png PyCon Korea 2019 웹사이트에서 갈무리

PyCon?

image3.jpg pycon.org 에서 갈무리

PyCon 은 International Python Community 에서 운영하는 국제 컨퍼런스 입니다. PyCon US 를 중심으로 전세계 각국에 Regional PyCon 이 개최됩니다. 한국의 경우 파이콘 한국 준비위원회 에서 주관하고 있으며 메인 이벤트인 PyCon 과 연중 크고 작은 세미나/컨퍼런스를 개최하고 있습니다.

발표 세션

PyCon Korea 2019은 다양한 부대행사를 포함하여 총 5일간 진행 되었습니다. 특히 메인 행사라고 할 수 있는 컨퍼런스는 Python 과 관련된 다양한 주제에 대한 세션을 포함해 8월 17일/18일 양일간 개최되었습니다. 올해 진행된 세션의 주제는 아래와 같았으며 초/중/고급 으로 난이도가 구분되었습니다. 연구분야에서도 다양하게 활용되는 Python Conference 답게 Data Science, DL 등 의 분야가 눈에 띕니다.

  • Python Library
  • Python Core & Fundemental
  • Life/Social
  • Data Science
  • Data Analytics
  • Web Service
  • Development Method with Python
  • Deep Learning & AI
  • Python Community

Booth Review

image4.jpg COEX 로비 정중앙에 위치한 뱅크샐러드 부스. (워난 많은 분들이 참여하고 계서서 초상권 보호를 위해 과감한 크롭을 진행했습니다.)

COEX 로비 정중앙에 위치한 뱅크샐러드 부스. (워난 많은 분들이 참여하고 계서서 초상권 보호를 위해 과감한 크롭을 진행했습니다.)

PyCon이 개최된 COEX Grand Ballroom 앞 로비에 다양한 부스가 개설되었습니다. 올해 PyCon 메인 스폰서인 뱅크샐러드를 포함해 Bagel Code, Programmers, HYPER CONNECT, Delivery Hero, SCATTER LAB 등 많은 업체가 있었습니다. 저는 세션 참여야 집중하느라 많은 부스를 방문하지 못해 전체적인 감상으로 대신 하려고 합니다.

부스를 개설한 업체는 다양한 목적으로 PyCon 에 후원하고 부스를 개설했을 것 입니다. 개발자 컨퍼런스 부스 답게 다양한 굿즈 로 파이썬 개발자들의 부스 방문을 유도하는 모습이 눈에 띄었습니다. ELASTIC의 경우 대형 모니터를 통해 APM 을 시연하시면서 경품 추첨 이벤트를 같이 진행하고 있었습니다. 뱅크샐러드의 경우 메인 스폰서 답게 경품 추첨을 위한 별도 게임을 제작하여 눈길을 끌었습니다. Delivery Hero 의 경우 퀴즈 이벤트를 진행하였습니다.

PyCon 에 참여한 부스들을 둘러보며 느꼈던 점은 특정 제품의 홍보 보다 인재 채용을 목적으로 참여하고 있다는 점 이었습니다. 일반적인 국제 전시회의 경우 부스 개설을 통해 참석한 국내외 바이어의 이목을 끌어 계약을 이끌어 내거나 일반인 참석자들에게 자사 제품을 홍보하려는 의도가 크다고 할 수 있습니다. 하지만 본 행사의 참여 업체들의 경우 PyCon 과 같은 한 언어를 대표하는 대형 컨퍼런스라는 점, 전국의 Python 개발자들이 모인다는 점 등으로 인해 이들 중 인재를 발굴하여 채용하려는 목적이 크다고 할 수 있습니다.

Session Review

image5.jpg 세션 시간표

올해 PyCon 참석의 주요 목표였던 발표 세션에 참석했습니다. 저는 양일간 일정 중 두번째 날의 세션에 참석하게 되었습니다. 대부분의 세션이 70% 정도의 좌석 점유율을 보였으며 세션 종료 후 질문 행렬이 이어지는 등 각 분야에 대한 Python 개발자들의 뜨거운 관심을 느낄 수 있었습니다. 본 후기에서는 제가 참석했던 세션들에 대한 간략한 리뷰를 통해 소감을 전달 하고자 합니다.

Real World Async I/O

Real-world asyncio

김준기 님 께서 발표를 진행해주신 세션입니다. 실제로 프로덕션 환경에서 asyncio 를 써 오셨다고 합니다. 첫번째로는 asyncio 의 기본적인 개념을 과 더불어 Cancellation 에 대한 시행착오 및 팁을 전달 해주셨습니다. Cancellation 의 일반적인 활용 방법도 도움이 많이 됬지만 특히 올바른 Exception 처리에 대한 내용이 도움이 많이 됬습니다. 워크샵에서 우연하게 발견한 문제점을 해결해 나가는 과정도 흥미로웠습니다.

Cancellation 의 연장선에서 cancellation 이 불가능한 몇몇 상황과 이에 대한 해결책을 찾아나가는 과정 또한 흥미로웠습니다. 특히 Sheilding 이라고 표현한 부분은 asyncio 를 넘어 일반 Python 코딩에서도 참조할만한 내용이었습니다.

시간이 모자라서 마지막 부분을 빠르게 넘어가게 되어 아쉬웠지만 이부분은 공유된 슬라이드를 참조하여 더 공부해봐야 할거 같습니다. 특히 비동기적 프로그래밍을 잘 하기 위해 구조적 프로그래밍 및 type 검사가 필수라는 부분은 꼭 새겨가야 할 부분입니다.

한국어 띄어쓰기 프로그램 도전기

한국어 띄어쓰기 프로그램 도전기

최태균 님 께서 발표를 진행해주신 세션입니다. 자연어를 다루고 있다는 점에서 제목부터 흥미를 끄는 세션이었습니다. 비록 직접 AI 개발을 담당하지는 않고 있지만 시스템 아키텍처를 담당하고 있는 상황에서 어떠한 기능을 AI 를 이용해 풀어나가는 과정이 궁금하여 세션에 참석했습니다.

세션을 아우르는 목표는 한국어 띄어쓰기 모델 개발 입니다. 이를 위해 모델을 설계하고 분석할 데이터를 마련하며 이를 분석할 방법론을 연구합니다. 마지막으로 결과 분석을 통해 최적화된 모델을 결정합니다. 이러한 과정에서의 프로그램 설계, 코딩, 문제를 풀어나가는 과정 모두 많은 도움이 되었습니다. 특히 너드팩토리 에서도 이용중인 BERT 모델이 등장하여 반가웠습니다.

Advanced Python Testing Techniques

Advanced Python Testing Techniques

안재만 님 께서 발표를 진행해주신 세션 입니다. 저에게 직접적으로 많은 도움이 될 것으로 예상되는 세션입니다. 평소 프로젝트에 TDD 를 도입하고 이를 질/양적으로 훌륭하게 코딩하기 위해 노력해 왔으나 경험부족으로 인해 시행착오가 많았습니다. 제가 겪어왔떤 난관에 대한 해답을 어느정도 찾을 수 있었던 세션입니다. 저에게 도움이 된 키포인트를 정리하면 아래와 같습니다.

  1. pytest 라이브러리를 이용한 TDD

    저의 경우 python unittest 를 이용해 테스트케이스를 작성해 왔습니다. raw python library 이다 보니 테스트케이스 작성에 번거로운 점이 많았던 것이 사실입니다. 본 세션을 통해 pytest 라이브러리를 이용해 효율적인 테스트케이스를 작성할 수 있으며 작성 시간이 줄어들고 가독성이 높아진다는 점을 배웠습니다.

  2. BDD 를 이용한 직관적인 개발

    TDD 의 경우 개발자들 끼리만 통하는 테스트케이스를 작성할 수 밖에 없었습니다. 하지만 BDD 를 통해 설계 부터 테스트케이스를 계획할 수 있으며 비즈니스 요구사항이 그대로 테스트케이스가 되어 프로덕션 까지 이어질 수 있음을 배웠습니다.

  3. HTTP Mocking, Monkey Pathching 등 테스트코드 꿀팁

    테스트케이스 작성시마다 문제가 되었던 테스트 환경, 프로덕션 환경의 분리가 생각보다 간단히 이루어질 수 있음을 알게 되었습니다.

py2exe를 구현하는 기술과 원리

py2exe를 구현하는 기술과 원리

이정훈 님이 발표를 진행해주신 세션 입니다. 평소 AIVORY 를 패키징 하기위해 다양한 시도를 하고 있었던 찰나에 발견하게 된 세션 입니다. 결론부터 말하자면 py2exe 와 같은 방식으로 컴파일러 언어 수준의 패키징을 제공할 방법은 없어 보인다. 입니다. 실제로 세션을 다 듣고 질문까지 했던 어떤 질문자 분의 결론은 C 로 리팩토링 하나, py2exe, pyInstaller 등으로 패키징을 진행하나 비슷한 시간이 걸릴것으로 예상된다. 였습니다.

  1. 적절한 버전의 파이썬 런타임 설치
  2. 필요한 패키지 설치
  3. 적절한 방법으로 코드 실행

본 세션에서는 위 과정을 진행하면서 겪었던 여러가지 상황을 소개하고 있습니다. 이를 요약하자면 아래와 같습니다. 제 지식이 부족하여 적절하지 못하게 요약했을 수 도 있으니 정확한 내용은 위 링크를 참조 부탁드립니다.

  1. 위 과정 진행
  2. modulefinder 를 이용해 모듈 찾기
  3. dll 형식의 pyd 형태로 모듈 임포트
  4. 모듈을 zip 으로 묶고 사용하기

너드팩토리의 경우 리눅스를 주요 플랫폼으로 이용 중이며 클라이언트 프로그램이 존재하지 않기 때문에 직접적인 연관이 없을 수 도 있는 내용입니다. 하지만 다른 세션과 마찬가지로 문제에서 답을 찾아 나가는 과정이 흥미로웠으며 패키징에 대한 전반적인 지식이 늘어난 거 같아 좋았습니다.

image6.jpg Real World of Asyncio 세션 중

Conclusion

image7.jpg 내년에 다시 만나요 PyConKR

제 생애 첫 PyCon 이었던 PyCon Korea 2019 는 전체적으로 저에게 만족스러운 컨퍼런스 였습니다. 하지만 완벽이란 이루기 쉽지 않듯 아쉬운 점도 눈에 띄었습니다. 마지막으로 올해의 PyCon 에 대한 좋았던 점과 아쉬웠던 점을 작성해 보았습니다.

좋았던 점

  • 저와 다른 영역에서 어떻게 Python 이 잘 활용되고 있는지 경험할 수 있었습니다.
  • 발표 세션의 퀄리티가 대체적으로 좋았습니다. (많은 도움이 되었습니다.)
  • 다른 개발자들의 경험과 통찰을 들을 수 있었습니다.
  • 굿즈를 따로 챙겨주셔서 좋았습니다. 비록 티셔츠의 경우 저에게 맞는 사이즈가 떨어졌지만.. 스티커가 있으니 :)

아쉬웠던 점

  • 단일 언어에 대한 컨퍼런스여서 한계가 있을 수 있습니다. 하지만 최근 Python 사용 인구가 늘어나고 있기 때문에 내년에는 컨퍼런스 티켓을 더 많이 오픈하길 기대합니다. 모든 티켓이 매진된 컨퍼런스 였지만 행사장에서는 사람이 많아서 힘들다는 생각은 거의 하지 못했습니다.

이번 PyCon 참석 경험을 바탕으로 더 열심히 공부하여 내년에는 발표에 도전해봐야겠다는 생각을 하게 되었습니다. 본 포스트를 빌어 PyCon 주최자 및 자원봉사자 분들에게 감사하다는 인사를 드리고 싶습니다.