Oct 11, 2023
PyCon KR 2023 Improving Debuggability of Complex Asyncio Applications - 김준기
김준기
창업멤버 / CTO
Oct 11, 2023
PyCon KR 2023 Improving Debuggability of Complex Asyncio Applications - 김준기
김준기
창업멤버 / CTO
Overview
디버깅에서 가장 중요한 것은 관찰 가능성과 재현 가능성입니다. asyncio 표준 라이브러리의 꾸준한 개선에도 불구하고, 실제 프로덕션 수준의 복잡한 asyncio 애플리케이션 내부에서 무슨 일이 일어나는지 들여다보는 것은 여전히 어려운 문제입니다. 특히 내가 제어할 수 없는 여러 3rd-party 라이브러리와 프레임워크가 혼용되어 돌아갈 때, 조용하게 삼켜진 cancalleation 신호나 어떤 외부 코드 내부에서 임의로 만들어진 콜백과 코루틴 작업들 때문에 발생하는 리소스 문제는 굉장히 디버깅하기 어렵습니다. 게다가 이런 문제들은 개발 환경보다는 실제 워크로드가 있는 프로덕션 환경에서만 발생하곤 합니다.
이 발표에서는 기존에 공개되어 있던 aiomonitor 라이브러리를 더욱 개선한 aiomonitor-ng 라이브러리를 선보입니다. 기존 라이브러리가 간단한 telnet 서버와 REPL을 기반으로 현재 실행 중인 asyncio 프로세스를 들여다보는 것을 도와주었고 실제 프로덕션 디버깅에서 도움을 받기도 합니다. 하지만 1년 이상 써오면서 부족한 기능들을 절감하게 되었고 직접 task 생성 및 취소·종료 스택 체인을 추적하는 기능을 포함하여 다양한 기능 추가를 직접 진행하게 되었습니다. 사용 편의를 위한 자동완성이 지원되는 터미널 UI도 추가하였죠.
aiomonitor와 이렇게 개선한 aiomonitor-ng를 활용하여 실제로 다수의 프로덕션 이슈들을 발견하고 분석하는 데 활용할 수 있었습니다. 이 경험을 여러분들도 보다 안정적으로 동작하는 asyncio 애플리케이션을 만드는 데 활용할 수 있기를 바랍니다.
김준기
현재 Lablup ("래블업") CTO를 맡아 Backend.AI를 개발하고 있으며, 다양한 규모의 백엔드 시스템에 대한 분석 및 구현 경험을 가지고 있습니다. 오픈소스 활동을 통해 Textcube, iPuTTY, CPython, DPDK, pyzmq, aiodocker, aiohttp 등의 프로젝트에 기여해왔습니다.