
내 인생의 첫 컨퍼런스, PyCon Korea 2025(이하 파이콘)에 다녀온 소감을 정리해보자.
Python(이하 파이썬)은 내가 고등학생 때 C와 함께 처음 접한 프로그래밍 언어이다.
대학생 때에도 강의와 졸업작품, 학술제를 함께했으며 며칠 전, 오랜만에 다시 사용했던 언어이다.
나의 첫 개발과 지금을 있게 해준 소중한 언어이다.
네이버 부스트캠프를 진행하면서, 커뮤니티에서 함께 성장한다는 의미를 깨달을 수 있었다.
다른 동료들의 블로그의 컨퍼런스 후기를 보면서 나도 언젠가 개발과 관련된 컨퍼런스를 가보고 싶다는 생각이 들기 시작했다.
다른 사람들의 경험을 통해 나의 지식과 경험치도 끌어올리면서 네트워크를 넓혀갈 수 있을 것 같았다.
그렇게 나는 행사가 개최되기 며칠 전에 파이콘 티켓을 구매했고, 참석했다.
파이콘이 시작하기 하루 전 날이다. 그런데 왜 TimeLine에 넣었을까?
사실 이 날, 나는 서울에서 시간을 보내고 있었다.
일정을 마무리할 때쯤에 파이콘 인스타그램 계정에 한 피드가 업로드되었다.
피드의 내용은 파이콘 굿즈를 준비하는 "백인서트" 과정을 함께할 참가자 여러분을 모집한다는 내용이었다.
마침 위치도 근방이기도 했고, 버스 시간 전까지 빠르게 도와드리고 귀가하면 좋겠다는 생각이 들어 함께하기로 결정했다.
올해 파이콘은 동국대학교에서 개체되었다.
처음에는 동대입구역으로 가려 했으나, 지도상 충무로역에서 가는 것이 더 빠른 것을 확인하여 경로를 수정했다.
물론 해당 위치는 역에서 도보로 10분 정도를 더 가야 도착할 수 있었기에 시작 시각인 3시 전에 도착하기 위해 발을 굴리기 시작했다.
정말 더웠다 보니 땀이 계속 흘렀지만, 내 머릿속은 조금이라도 일찍 가서 최대한 많이 도와드릴 생각으로만 가득했다.
나는 이번 방문이 첫 동국대 방문이다.
그래서 건물 바깥을 여러 번 둘러보며 올바른 건물이 맞는지 확인한 다음 금방 들어올 수 있었는데,
문제가 어느 층에서 백인서트를 진행하는지를 몰랐던 것이다.
다행히 이 문제도 엘리베이터 근처에 있던 표지판을 보고 해결할 수 있었다.
그렇게 6층으로 올라갔지만, 사실 백인서트 위치는 6층이 아니라 3층이었던 것이다!!
얼른 다시 엘리베이터를 잡고 버튼을 눌러 이동했다.
예상 시간보다 늦게 도착해서 어쩌나 싶은 마음과 함께 헐떡이며 백인서트 위치에 도착했다.
그럼에도 많은 준비위원회 여러분 및 함께 백인서트에 동참한 참가자 여러분께서 밝게 맞아주셔서 너무 감사했다.
시원한 물과 부채를 받아 잠시나마 더위를 식힐 수 있었다.
식사를 하고 오셨냐는 질문도 해주셨다. 말씀만 들어도 마음이 배불렀다.
잠시 쉬다가 백인서트를 어떻게 진행해야 할 지 의논했다.
가방을 드는 파트와 굿즈를 넣는 파트를 나누어서, 가방을 든 사람이 이동하면 각 굿즈를 해당 파트분들이 가방에 넣으면서 진행하는 방식으로 하면 좋겠다는 의견으로 수렴되었다.
나는 누구보다 튼튼한 신체를 가지고 있었다고 생각했기에, 가방을 들면서 이동하는 파트에 지원했다.
(이 때까진 내가 튼튼했다 생각했다. 정말로.)
여럿이서 가방을 차례대로 들면서 굿즈를 준비하기 시작했다.
중간에 노래도 틀어주셨는데, 조금씩 버벅거리다 보니 뭔가 이상했다. latency가 조금 있다는 멘트가 압권이었다.
처음에는 가방을 하나씩 들었는데, 조금 지나서 다들 가방을 두 개씩 들면서 듀얼 코어로 멀티스레드를 돌리기 시작했다.
백인서트를 진행하면서 다른 분들도 조금씩 오셔서 함께하다 보니 생각보다 일의 진척이 빨라져서 Shortest Path가 조금씩 만들어지고 있었다.
나중 가니까 가방의 흐름이 조금 버벅여서 여기서도 Race Condition이 있다는 이야기와
가방이 부족해지니 resource가 바닥났다는 멘트를 들을 수 있었다.
(역시 개발자 아니랄까봐...!)
그렇게 대부분의 백인서트 과정이 마무리되었고, 시간을 확인해보니 조금 여유가 있었다.
그래서 해당 층에 행사 진행에 필요한 책들을 옮기고 가기로 결정했다.
책도 생각보다 많다 보니 박스가 많이 필요했는데, 쓸만한 박스가 생각보다 많지 않아서 여러 번 왕복하며 옮겨야 했다. 그래도 2~3번만에 빠르게 옮길 수 있었다.
이제 짐을 챙기고 귀가하려던 찰나, 준비위원회의 한 분께서 내 이름을 여쭤봐주셨다.
크게 한 것도 없는데 이름까지 여쭤봐주시다니, 너무나도 큰 감동이었다.
그렇게 내 이름을 말씀드리고, 내일 뵙겠다고 인사드린 뒤에 건물을 나와 집으로 가는 버스를 탔다.
서울로 올라가는 고속버스를 타기 위해 아침 일찍 일어나 준비했다.
다행히 이 날은 오프닝 시각보다 일찍 도착할 수 있었고, 참가자 등록을 마친 뒤 대강당에 입장했다.
그렇게 파이콘 오프닝이 시작되었다. 파이콘 2025 의장을 맡은 미르님께서 맡아주셨다.
파이콘의 소개와 후원사, 행동 강령을 들을 수 있었다.
행동 강령은 파이콘이 끝나고 나서도 여러 번 읽어보며 앞으로 커뮤니티에서 어떻게 행동하면 좋을지 고민할 수 있었다. 개인적으로 정말 유익했다 느꼈기에 링크를 걸어두겠다.
이후 바로 첫 번째 키노트가 시작되었다. 파이썬 코어 팀에서 근무하시는 나동희님께서 맡아주셨다.
파이썬 운영위원회를 소개하며, 파이썬을 더 빠르게 동작시키기 위해 진행하는 두 개의 프로젝트를 소개해주셨다.
내가 알지 못하는 용어들이 너무 많이 나와서 자세한 부분까지는 이해하기 어려웠고,
관련 지식을 더 알았더라면 지금보다 더욱 깊게 즐길 수 있었겠다고 생각했다.
그럼에도 불구하고 최대한 쉽게 풀어주셔서 대략적인 흐름은 파악할 수 있었다.
이어서 두 번째 키노트가 시작되었다. 이진석님께서 맡아주셨다.
파이썬의 오픈 소스 웹 프레임워크인 Django(이하 장고)를 소개하며 AI 어플리케이션을 개발할 때 어떻게 활용하면 좋은지 이야기해주셨다.
Django의 간단한 설치 및 사용, 세션 인증, CBV(Class-Based View, 클래스 기반 뷰),
HTMX의 소개 및 AI 채팅 구현 방법과 관련된 내용을 들을 수 있었다.
나는 이전까지 프레임워크를 사용해본 경험이 없었기에,
기반 지식을 잘 갖춘 다음에 프레임워크를 활용하면 더 효율적인 서비스를 개발할 수 있겠다는 생각이 들었다.
2시간 가량의 점심 시간이 주어졌다.
나는 근처의 서울카츠라는 곳에 가서 식사를 때웠고, 행사장으로 복귀해서 여러 부스를 구경했다.
이 때도 함께 백인서트를 준비하신 분께서 날 알아봐주셨다. 준비하러 가길 잘 했다는 생각이 들었다.
하루개발님의 손금 신점을 보는 부스를 체험했다.
OpenCV를 활용하여 사전에 설정된 운세를 출력하는 형태의 부스였다.
첫째 날에는 노란색 종이에 출력하고, 둘째 날에는 파란색 종이에 출력해서 파이썬의 색깔을 맞추었다는 디테일을 엿볼 수 있었다.
lablup이라는 회사의 부스에서는 해당 이미지와 유사한 이미지를 생성하는 프롬프트를 입력하여, 높은 유사도를 도출해내면 선물을 받는 이벤트를 진행하고 있었다.
이미지 생성 경험이 적다 보니 50%대의 유사도까지만 뽑아낼 수 있었다.
첫 오후 세션이 시작되었다. Noa님께서 맡아주셨다.
첫 번째 키노트 설명에서도 알 수 있듯, 나는 알고 있는 지식이 많지 않고 실전 경험은 0에 가까웠다.
그래서 전공과 같은 배경에 상관없이 경험이 더 많은 사람의 이야기를 듣고 싶었다.
실제로 "꺾여도 그냥 하는 마음"과 같은 여러 이야기를 통해 나도 할 수 있다는 용기를 받을 수 있었다.
Noa님의 이전까지의 개발 스토리와 파이썬을 접하고 나서의 이야기를 들을 수 있었다.
질문으로 "작업과 휴식의 밸런스의 기준"을 여쭤보았고, 답변으로 스케줄을 세워 작업과 휴식을 분리해서 관리할 수 있겠다는 답변을 들을 수 있었다.
사실 무언가를 진정으로 즐기다 보면 휴식을 취해야겠다는 생각이 크게 안 날 때가 있기 마련인데,
Noa님도 비슷한 멘트를 같이 남겨주셨다.
진정으로 개발을 즐길 수 있는 레벨까지 올라가보고 싶다는 목표가 새롭게 생겼다.
물론 과거에도 학교 과제를 하며 즐겼던 순간이 없진 않았지만, 모든 순간을 온전히 즐기진 않았기에
작업과 휴식을 분리하는 데에 얽매이지 않고 받아들일 수 있으면 좋겠다는 생각이 들었다.
이어서 20분간의 쉬는 시간을 지나 다음 세션의 발표를 들을 수 있었다. 김대현님께서 맡아주셨다.
해당 세션의 주제는 내가 예전부터 구상해오던 어플리케이션에 활용할 수 있다면 좋을 것 같은 아이디어였기에
최대한 집중하며 들으면서 내용을 이해하려 노력했다.
컴퓨터 비전과 자연어 처리를 모두 할 수 있는 VLM(Visual Language Model)의 소개와 등장하게 된 배경,
방금 언급한 두 기능의 학습 관련 차이, VLM의 Input과 Output 및 처리 과정 학습 전략과
VLM을 활용한 프로그램 개발기를 들을 수 있었다.
Multimodal Fusion과 관련된 내용을 새롭게 알 수 있었고,
프로그램을 개발하던 중 발생한 문제점을 보완하기 위한 트러블슈팅 과정도 정말 인상적이었다.
배경이 크게 있지 않던 나도 이해할 수 있는 난이도로 쉽게 풀어 설명해주셨다고 생각한다.
덕분에 VLM의 이해도를 높일 수 있었으며, VLM을 만들 때 고민해야 할 부분을 알 수 있어서 유익했다.
어느새 3시가 되어 다음 세션이 진행되었다. 이채승님께서 맡아주셨다.
해당 세션의 주제도 위와 마찬가지로 내가 언젠가 도전해볼 수 있는 어플리케이션의 주제와 동일했기 때문에 쉽게 이해하며 들을 수 있었다.
처음은 AWX Support Bot과 LLM(Large Language Model, 대규모 언어 모델)과 RAG(Retrieval-Augmented Generation, 검색 증강 도구)의 소개,
Embedding과 Vector Search의 설명, RAG를 활용한 AWX Support Bot Workflow, 마지막으로 Demo 시연 영상을 볼 수 있었다.
여기서 정말 인상적이었던 것은, LLM을 그대로 신뢰할 수 없는 이유와 한계 및 RAG의 필요성을 설명해주신 부분이었다.
LLM은 사전 학습된 DL(Deap Learning, 딥러닝) 모델이며 Input에 맞게 적절한 Output을 "생성"하는 기계이고,
학습된 데이터가 방대하기 때문에 올바른 답변을 내놓을 수 있지만
위와 같은 이유로 인해 답변의 진위 여부가 불투명하다는 것을 깨달을 수 있었다.
이러한 LLM에게 질문과 함께 Context(관련 문서나 데이터)를 전달하여 마치 오픈북 시험을 치듯 신뢰할 수 있는 답변을 생성하게 돕는 역할인 RAG를 사용하여 보완한다고 말씀해주셨다.
이때의 설명 덕분에 왜 AI를 곧이곧대로 신뢰할 수 없는지, RAG가 왜 등장했는지 단박에 이해할 수 있었다.
함께 문의를 담당하던 동료분께서 퇴사하시고 나서, RAG 봇을 개발하여 업무를 해결하고자 한 점이 정말 멋있었다.
상황이 더 힘들어져도 기술적으로 극복하려는 모습이 멋있게 다가왔다.
4시에 세션이 시작되었다. 김민석님께서 맡아주셨다.
서비스 장애가 발생 시, 기존의 대시보드와 명령어를 사용하여 해결하는 방식이 아닌
자연어를 활용한 대화 기반으로 해결하는 "바이브" 운영을 주제로 MCP(Model Context Protocol, 모델 컨텍스트 프로토콜) 개발기를 들려주셨다.
명령어/대시보드/대화 기반의 특징을 비교하며 왜 대화 기반으로 운영하는 게 편리한지 들을 수 있었고,
Kubernetes의 MCP 서버를 활용하여 해결하는 시나리오를 들을 수 있었다.
LLM 어플리케이션과 외부 데이터 소스 및 도구 간 원활한 통합을 가능하게 하는 모든 프로토콜이 MCP이고, 이를 USB-C 타입으로 편하게 여러 장비와 연결할 수 있다는 비유법으로 명쾌하게 설명해주셨다.
또한 MCP의 특징과 구조 및 동작 원리를 먼저 소개하며, MCP Python SDK을 활용해 Kubernetes MCP 서버를 구축하는 과정을 설명해주셔서 왜 이렇게 만들어졌는지 이해하기 편했다.
마지막으로 미래의 대화형 인프라의 비전을 상상하며 어떤 대응을 할 수 있을지에 대한 이야기와 함께 세션이 마무리되었다.
RAG와 더불어, LLM을 개발하거나 활용할 때 함께 사용하면 좋은 도구를 하나 알게 되어 유익했다.
토요일의 마지막 세션이 시작되었다. 강성우님께서 맡아주셨다.
제목에서도 알 수 있듯, RAG를 개발할 때 텍스트를 나누는 Chunking 방식을 어떻게 최적화할 수 있는지에 대하여 설명해주셨다.
초반부에서는 RAG과 Chunking의 정의를 필두로 LLM이 어떻게 대화를 기억하고, 대화가 길어질수록 생기는 제한 구간에 대한 이야기를 들을 수 있었다.
LLM은 입력된 대화 내역(프롬프트에 포함된 Context)을 바탕으로 답변을 생성하는 전략을 사용하고,
일부 시스템에서는 캐싱 전략을 통해 이전 맥락을 추가로 활용해 생성하기도 한다는 것을 알 수 있었다.
이때 대화 맥락 관리의 책임은 모델 자체가 아니라, 이를 설계하고 사용하는 인간 또는 시스템에 있으며, Context 길이가 길어질수록 답변이 원하는 초점에서 벗어날 수 있다는 점도 짚어주셨다.
또한 답변 생성 시 입력한 텍스트나 문서 전체를 그대로 사용하는 것이 아니라, 적절히 분리해 작은 단위로 나누는 과정을 Chunking이라고 소개해주셨다.
이렇게 나뉜 Chunk들은 검색 과정을 통해 관련성이 높은 것만 선별되어 Context에 포함되며, 이를 통해 검색 증강(RAG)이 효과적으로 이루어질 수 있음을 알 수 있었다.
이러한 Chunking의 전략의 종류인
위의 세 가지 Chunking 종류의 특징과 각 전략에서 고려해야 할 점들을 알 수 있었다.
다음으로 Chunking의 고도화 및 최적화 기법들을 설명해주셨다.
도메인별로 최적화된 Chunking 프로세스를 만들고 라우팅하는 것도 좋지만,
문서의 정보를 최대한 추출하여 메타데이터로 만들어 LLM에 넘겨 사용하게 하는 것도 좋다고 이야기해주셨다.
또한 답변에서 겹치는 부분이 생기고 할루시에이션이 발생하는 현상을
인접한 Chunk 검색 시 merging 과정을 통해 겹치는, 즉 불필요한 정보를 삭제하며 토큰을 아끼면서 방지할 수 있다고 말씀해주셨다.
Chunking 전략 중, Long Document를 모델 입력에 우선 넣은 다음에 임베딩, 이후에 Chunking을 하여 개별 청크 임베딩에 주입하는 전략인 Late Chunking을 활용하는 것도 고도화 및 최적화에 도움이 된다고 이야기해주셨다.
마지막으로 현재 재직중인 회사와 직무에 대한 짧은 이야기로 세션이 마무리되었다.
ML 백엔드라는, 내가 만든 모델이 어떻게 동작하고 사용자가 어떻게 사용하는지 피부로 직접 느낄 수 있는 직무를 처음 알게 되었다.
그리고 이 날은 파이콘에 참석하지 않았다. 아니, 못했다.
마치 슬램덩크의 북산엔딩 장면처럼, 지나친 야외활동으로 인해 몸이 뻗어버려 집에 있어야만 했다.
낮잠도 아침 저녁으로 2번을 자며 내 체력을 회복해야만 했다.
너무 아쉬웠다. 일요일에도 내가 관심을 가지고 듣고 싶던 세션들이 많았기 때문이다.
파이썬 개발자가 쌓아야 할 비파이썬적 소양, 병원에서의 개발 이야기, 생성형 AI와 컨테이너를 활용한 파이썬 개발 등...
체력 관리를 평소에 더 해둘 걸 그랬다는 생각이 드는 하루였다.
그렇게 내가 챙겨온 굿즈들을 정리하면서 쉬는 하루를 보냈다.
생각보다 굿즈 종류와 개수가 꽤 많아서 왜 큰 가방을 준비했는지 알 수 있었다.
파이콘 개최 전날에 함께 행사를 준비할 수 있는 기회를 통해 조금이나마 행사 준비에 도움을 드릴 수 있어 감사했다.
내가 준비했던 것은 단지 정말 일부분에 가깝고, 준비위원회 여러분은 그보다 더 많은 활동과 준비를 오래 전부터 구상하고 진행하셨으리라 생각한다.
나는 어떤 것이든 간에 제가 누리고 있는 것들이 당연히 존재하는 것이 아닌,
보이지 않는 노력 덕분에 존재한다고 생각하기 때문에 위와 같은 생각이 자연스레 들었다.
덕분에 행사 당일에도 이 행사를 원활하게 즐길 수 있었다고 믿어 의심치 않는다.
그래서 내가 경험했던 준비 과정을 최대한 자세하게 풀면서 준비위원회 측의 노력이 얼마나 컸는지 표현하고자 했다.
또한, 이번 파이콘 세션 덕분에 나의 파이썬의 관심도를 유지하며 VLM, RAG, MCP와 같은 AI와 관련된 개념들을 다시 한 번 익히면서 실제 활용 사례들을 들을 수 있었다.
이미지와 비디오와 같은 비정형 데이터를 벡터로 변환하여 활용하여 머신러닝이나 벡터에 특화된 DBMS를 활용하여 AI 서비스를 제공한다는 이야기를 들은 적이 있다 보니, 이 부분은 이해하기 쉬웠다.
나중에 데이터 분석이나 AI 서비스를 구현한다고 하면, Python을 꼭 숙지해서 활용해야겠다는 생각이 강해졌다.
한 가지 아쉬움이 있다면. 지식의 부재나 컨디션 관리 소홀로 인해 나의 위치가 아직은 파이콘을 온전히 즐길 준비가 되지 않았다는 것이다.
모든 콘텐츠를 온전히 즐기지 못해, 키노트와 세션 발표자 여러분, 준비위원회 여러분이 준비해주신 것들을 모두 맛보지 못한 게 마음에 걸렸다.
다음에 참석하게 된다면 경험치를 더욱 쌓아 나를 개선하여 더 많은 것들을 즐기며 다른 참석자들에게 도움을 주고 싶다.
세션 발표자 여러분을 포함한 오픈 소스에서 활동하는 분들이 더 나은 오픈 소스 생태계를 위해 기여해온 것처럼.
그리고 준비위원회 여러분이 행사를 준비하며 침석자들이 충분히 즐길 수 있게 노력했던 것처럼.
PyCon Korea 2025를, 제 인생 첫 컨퍼런스를 재밌게 즐길 수 있게 도와주신 파이콘 한국 준비위원회 및 자원봉사자 여러분, 그리고 발표자 여러분께 진심으로 감사하다는 이야기와 함께 글을 마친다.