Respect Diversity! 2016년 8월 13~15일 한국에서 열리는 세 번째 파이콘에 참여했습니다. 2015년에는 파이썬에 입문한 지 얼마 안 되었던 때라 파이콘에 참가해서도 그렇게 막 즐겁다는 생각이 없었는데, 2016년 올해 파이콘은 알아들을 수 있는 부분도 많고, 다양한 세션들과 함께 평소에 바빠서 많이 볼 수 없었던 사람들을 만나서 정말로 즐거웠습니다. 다양성에 대한 존중이 아쉬운 사회에서 다양성을 존중한다는 Respect Diversity 슬로건도 정말 마음에 들었습니다. 참가자 이름으로 만들어진 포토월을 보면서 ‘누워도 여기서 누워야지’하고 생각했는데, 편히 누울 수 있게 빈백도 가져다 놓아주셨더군요. 대단했습니다.
후원사 부스
다 돌아보지는 않고 몇몇 곳만 봤습니다. 1일차에 파이콘 등록대 앞에서 한빛미디어와 인싸이트가 책을 판매하고 있길래 한빛미디어에서 평소 읽고 싶었던 전문가를 위한 파이썬을 샀습니다. 그런데 집에 와서 보니 다른 책이더군요-_-. 2일차에 교환할 수 있냐고 물어봤더니 당연히 교환 가능하다고 흔쾌히 이야기해 주셔서 교환받고 왔습니다.
데브시스터즈는 쿠키런 피큐어를 주고 있었습니다. 작년에는 12개를 뭉텅이로 주더니 올해는 하나씩 주고 있었습니다. 저는 필요 없으니 동생을 가져다 주었습니다. JetBrains는 추첨을 통해서 PyCharm 라이센스를 준다고 하더군요. 얼마나 당첨되는지는 아직 결정된 것이 없다고 했었습니다. 이야기하다가 ‘아이디이’는 보통은 글자 그대로 ‘IDE’라고 쓴다고 했더니 혹시 문구 자체가 잘못 번역되었냐고 물어보더군요. 그건 아니라고 말하니 다행인 표정을 지었던 것으로..
도도포인트의 스포카에서는 투명 가방하고 노트를, 원티드에서는 뱃지를, 스마트스터디에선 사진찍고 물병을, eBrain에서는 와인을 받았습니다. 꽤 괜찮은 와인이라 한 쪽에 모셔두고 홀짝하려 합니다.
들었던 세션
잠이 많아서 키노트는 영상으로 대체한 Jacob것 밖게 못봤습니다.
1일차
Jacob 키노트
장고 창시자 Jacob의 키노트였습니다. 장고는 좋아하는 프레임워크라 jacob을 보고 싶었는데 사정이 생겨서 오지 못하고 영상으로 봤습니다. Django 유저 그룹에 대해서 이야기했습니다. django를 사용하는 사람, 컨트리뷰터, 코어 컨트리뷰터, 테크니컬 보더(특정 기술에 대해서 비중 있게 이슈를 다루는 사람), 장고 소프트웨어 재단에 속해있는 사람들의 역할에 대해서 이야기했습니다. 기술 방향에 대해서는 커뮤니티가 원하는 방향하고 컨트리뷰터가 원하는 부분과 테크니컬 보더의 의사결정에 따라서 종합적으로 고려된다고 했습니다. 장고는 보수적인 집단이라 트랜드를 분석하는데 시간을 들이는 편이라 단순히 ‘새로운’것이라고 바로 시도하지는 않는다 합니다.
그러면서 두가지 트랜드를 이야기 했는데, 하나는 마이크로서비스하고 다른 하나는 리치 프론트앤드를 말했습니다.
하나의 큰 웹보단 작은 컴포넌트를 쪼개서 개발하며, 작은 서비스로 분리시켜서 호환성과 보안을 확보하는 마이크로 서비스 아키텍쳐 스타일의 일환으로서 Channels에 대해서 간단히 언급했습니다. django 1.10 로드맵에 포함되어 있는 것으로 알고있었는데 연기된 그 Channels에 대한 것으로 알아들었습니다. 앞으로 나올 버전에 어떠한 방식으로 포함할지 논의 중이라고 합니다.
리치 프론트엔드에서는 제대로 알아듣지 못했지만 Django Rest Framwork에 대해서 이야기하면서 django로 포함될 가능성을 시사했습니다. 장고 코어팀은 보수적인 집단이고 시간이 걸릴 수 있다는 것과 함께요.
django를 개발하는 사람들이 어떠한 사람들이고, 향후 어느 방향으로 갈 건지에 대해서 간략하게 들었던 시간이었습니다.
문자열? 그런 달달한 것이 남아있긴 한가?
매번 헷갈리는 유니코드와 인코딩을 재미있게 설명해주셨습니다. 유니코드는 문자의 집합이고 UTF-8이나 UTF-16은 인코딩/디코딩을 나타냅니다. ASCII가 나온 경위와 CJK의 역습으로 python 3에서는 유니코드와 UTF-8을 기본으로 사용한다고 알려주셨습니다.
TOROS: Python Framework for Recommender System
카카오에서 추천 시스템에 python이 어떻게 적용되어있는지 보았습니다. 퍼포먼스에 대해서는 단순 CPU바운드의 문제보다는 네트워크, 디스크 I/O가 보통이므로 멀티프로세싱보단 message queue를 이용해서 해결했다고 하십니다. 정말로 CPU 연산이 병목이면 엄마인 C/C++의 도움을 받는 것을 고려해보라고 했습니다. 캐시에 대해서는 RocksDB를 사용하는 것이 자유도 높은 설정과 메모리 관리에 이점이 있다고 하네요.
Introduction into aiohttp
비동기 라이브러리인 aiohttp에 대해서 asyncio의 커미터이자 aiohttp 메인테이너인 Andrew Svetlov가 세션을 진행했습니다. aiohttp는 asyncio를 바탕으로한 비동기 HTTP client/server입니다. 주로 사용법에 대한 설명과 코드의 동작 과정, 테스팅과 디버깅시 주의할점, 글로벌 오브젝트를 사용하지 말아야한다는 이야기를 했습니다.
Boost Maintainability
‘유지보수성을 증가시키기위해 변수명을 잘 지어야한다’가 발표의 주된 내용이였습니다. result
와 data
같은 변수 사용을 지양하고 response
나 parsed_dict
같이 type을 좀 더 추론할 수 있는 변수명을 지으면 좋다고 했습니다. 느끼기에 괜찮은 변수명 규칙들은 따라서 해봐야겠다는 생각을 했습니다.
High-performance Networking with Python
발표의 도입 부분이 기억에 남습니다. 아무래도 한국에서 열린 컨퍼런스이다 보니 한국어로 진행을 해도 되는지 알아보고자 참가자를 조사했고, 몇몇 외국인(슬쩍 둘러보기에 5명이 채 안되었던 것으로 기억합니다.)이 손을 들자 이번 파이콘 기본 기조인 Respect Diversity에 따라 모든 참가자를 존중하여 원래대로 영어로 진행한다는 이야기를 했습니다. 어찌보면 당연한데 정말 감명받았습니다.
C10K문제와 함께 멀티플랙싱과 멀티쓰레드를 사용한 네트워크의 문제점에 대해서 화두를 던지며 코루틴에 대한 이야기를 했습니다. python 3.3에서 도입된 yield from과 3.4에서의 asyncio 패키지, 3.5에서의 신택스 슈거인 async와 await과 함께 간단한 사용법과 팁을 알려주었습니다.
2일차
Django vs Flask, 까봅시다!
장고와 플라스크를 살펴보는 세션이었습니다. 암시적이지만 많은 것을 가진 장고와 명시적이지만 간소한 플라스크라 정의했습니다.(장고도 충분히 명시적이라 생각하지만 상대적으로..)
“Flask가 Micro Web Framework이라고 해서 초보자들이 하기 쉽다는 뜻은 아니라고 생각합니다. 작다는 것이 쉽다는 뜻은 아니니까요. 자유도가 높은 반면, 내가 조립을 해야 된다는 것이, 처음 시작하시는 분들께는 어려움이 있을 수 있습니다.”
검색 로그 시스템 with Python
다음카카오 검색로그셀에서 검색에 대한 로그를 취합, 정제, 배포하는 시스템에 대해서 설명했습니다. 모든 작업은 다음으로 밀리지 않게 1분이라는 타임 리밋을 가지고 있고 이를 어떻게 해결했는지에 대한 과정을 함께 보여줬습니다. 검색을 수집하고, 분석해서 어뷰저를 걸러내고 필터링 한 다음에 저장하는 구조로 되어있는 시스템에서 멀티프로세싱을 활용해서 시간을 단축시켰다고 했습니다.
(재발표) Creating AI chat bot with Python 3 and Tensorflow
첫날 한국어로 발표할 것을 제안받고 하셨다가 논란이 되면서 2일차에 영어로 재발표하셨던 신정규님의 발표입니다. 머신러닝으로 애니메이션 캐릭터의 말투를 따라 하는 챗봇의 설계와 과정을 설명하는 세션이었습니다. 이 세션 시간에 바로 옆에서 검색 추천 시스템 TOROS를 듣고 있었는데 웃음이 끊이질 않았던 세션으로 기억하고 있어서 기대하면서 들었는데, 정작 듣는 제가 머신러닝에 대해서 아는 것이 없어서 따라가기 힘들었습니다. 머신러닝을 공부하게 된다면 나중에 발표자료를 다시 확인하러 와야겠다는 생각을 했습니다. 그리고 아이돌마스터의 미키라는 캐릭터가 귀엽다는 것을 알게 되었습니다.
Python Profiling and Performance Tuning
엉엉 말이 너무 빨라서 알아듣기가 힘들었습니다. 핀터레스트에서 gevent를 사용하면서 느린 성능을 개선하기 위해 사용했던 프로파일링 툴에 대한 공유였습니다. pstats 모듈과 Line Profiler 그리고 Sampling Profiler를 사용해서 개선하는 내용이었던것같습니다.
파이썬 삼총사
Tox, Travis CI, Coveralls를 사용해서 테스팅을 효과적으로 하고 나의 오픈 소스가 신뢰도를 얻을 수 있는지 이야기했습니다. 다양한 파이썬 런타임에서 테스트를 하게 해주는 Tox. 다른 사람이 작성한 코드도 테스트 할 수 있고 통과 했다는 뱃지를 달 수 있는 Travis CI. 그리고 테스트 커버리지를 확인할 수 있는 Coveralls. 이 세 개를 왜 써야 하는지를 잘 풀어서 설명해주셨습니다.
9XD
O.S.T에 번개같이 뜬 9X년생 개발자 모임에도 잠깐 참석했습니다. 모인 사람들이랑 간단히 인사 나누고 자기소개하니까 세션 시작시간이네요. 행사를 보조하고 있는 스태프들도 많았습니다. 목적 없이 이렇게 많이 모인 것이 신기합니다. 사진은 진유림님이 찍어주셨습니다.
정리
15일날 하는 튜토리얼과 스프린트는 신청이 꽉 차 못 갔었습니다. aiohttp나 Tox, Travis 그리고 Coveralls 실습하기에 관심이 있었는데 아쉽게 되었네요. 그날만이 날이 아니라고 말씀하셨던 파이썬 삼총사의 발표자 박현우님의 말씀에 따라 개인적으로 공부를 더 해보고자 합니다.
PyCon을 준비한 모든 자원봉사자와 운영진분들께 감사드립니다. 축제 같은 분위기에 즐거웠습니다. 그리고 미리 2017년을 준비할 분들께도 감사합니다. 저 역시 더욱 성장해서 보탬이 될 수 있었으면 좋겠습니다.