AI 에이전트를 사용하여 .NET 사용자 그룹의 18년 역사를 복구한 방법
요약
AI 에이전트를 활용하여 18년간 분산된 .NET 사용자 그룹의 웹사이트 아카이브와 기록을 복구한 과정을 설명합니다. 이 글은 Wayback Machine, Meetup 페이지, 소셜 미디어 등 다양한 출처를 AI가 조사하고 검증하는 방법을 제시하며, 실제 소프트웨어 엔지니어링에 에이전트 활용 사례를 보여줍니다.
핵심 포인트
- AI 에이전트를 이용해 분산된 아카이브 데이터를 통합적으로 수집 가능
- Wayback Machine, Meetup 등 다양한 출처의 데이터 파싱 및 검증 방법 제시
- 단순 스크래핑을 넘어 JSON 데이터와 이메일까지 활용하는 심층 조사 기술
- AI 에이전트가 복잡한 정보 결합과 신뢰도 평가에 강점 발휘
저는 Wrocław .NET 사용자 그룹의 웹사이트인 wrocnet.org을 운영하고 있습니다. 이 그룹은 2007년부터 모임을 가져왔지만, 그 18년간의 역사가 한곳에 보존된 적이 없습니다. 저는 모든 회의, 발표, 연사들이 출처가 명확하고 오래도록 유지될 수 있는 곳에 기록된 진정한 아카이브를 원했습니다. 여기에 도달하기 위해서는 오래된 웹사이트, 포럼 게시물, 아카이브 페이지 등을 뒤져야 했고, 저는 AI 에이전트를 사용하여 대부분의 탐색 작업을 수행했습니다. 이 글에서는 제가 에이전트를 사용하여 출처를 조사한 방법, 그 발견 내용을 어떻게 검증했는지, 그리고 최종 숫자들이 무엇을 의미하는지 설명합니다.
제가 아카이브된 웹사이트, 이벤트 페이지, 소셜 미디어, 이메일 및 프로젝트 기록 전반에 걸쳐 수행한 조사를 통해 다음 사항들을 밝혀냈습니다:
- 18년의 커뮤니티 역사
- 170회의 회의와 32개의 추가 이벤트
- 185명의 연사
- 300건의 발표
실제 소프트웨어 엔지니어링에 AI 에이전트를 활용하세요.
저는 .NET 아키텍처, 성능 및 프로덕션 시스템에 대한 깊은 경험을 바탕으로 팀들이 연구, 코딩, 리뷰 및 자동화에 AI를 적용하도록 돕습니다.
모든 플랫폼 이동은 그룹의 일부 역사를 전진시키고 일부는 뒤에 남겼습니다.
이러한 시스템 중 어느 것도 자체 역사의 완전하고 깨끗한 사본을 유지하지 못했고, 이를 자동으로 연결해 주는 것은 아무것도 없었습니다. 저는 이 반복적인 작업을 에이전트에게 맡겼습니다. 에이전트는 Wayback Machine 스냅샷을 열고, 동일한 URL의 타임스탬프를 비교했으며, Meetup 이벤트 페이지를 다운로드하고, Jekyll 포스트에 어떤 내용을 작성하기 전에 하나의 날짜를 세 개의 관련 없는 출처와 대조했습니다.
공백의 실제 크기 파악하기
저장소에는 이미 이전 버전 웹사이트인 wrocnet.github.io의 아카이브 스냅샷에서 가져온 오래된 회의에 대한 기본적인 목록이 있었습니다: 번호, 날짜, 그리고 한 줄 요약 주제입니다. 이 스냅샷에는
- Wayback Machine에서
wroc.net.isvclub.com과 초기wrocnet.org의 보관된 페이지를 가져왔으며, 여기에는 회의 계획, 행사 후 보고서, 사진 갤러리, 포럼 스레드, 투표 결과 등이 포함되어 있습니다. - Meetup 이벤트 페이지를
curl로 다운로드하고, 보이는 HTML을 스크래핑하는 대신 작은 Node.js 스크립트로 임베디드된 JSON 데이터를 파싱하여 이벤트 제목, 날짜, 장소, 설명을 신뢰성 있게 추출했습니다. - 그룹의 오래된 Twitter/X 프로필이 내보내기된 HTML 복사본을 검토하여, 처음에 그룹에게는 공백 기간처럼 보였던 회의 20회부터 32회까지를 복구했습니다.
- 공개 웹 페이지와 완전히 다른 유형의 출처인, 2008년 "Heroes {Community} Launch" 컨퍼런스를 복구하기 위해 내보내진 이메일 초대장을 읽었습니다.
- 원본 공지 페이지에 살아남은 스냅샷이 없을 경우 GoldenLine, 오래된 포럼 스레드, 사진 갤러리 인덱스 등을 확인했습니다.
이 출처들 중 어느 것도 단독으로 전체 이야기를 말해주지는 않습니다. 갤러리는 회의가 열렸다는 것을 증명하지만, 그곳에서 무엇이 논의되었는지는 아무것도 알려주지 않습니다. 포럼 스레드는 사람들이 특정 날짜에 대해 이야기하고 있었다는 것만 보여줄 뿐, 실제로 회의가 개최되었다고 확증하지는 못합니다. 대부분의 작업은 모든 정보를 하나의 자신감 있는 답변으로 결합하는 것이 아니라, 각 출처를 얼마나 신뢰해야 할지 판단하는 과정이었습니다.
에이전트가 따라야 했던 규칙들
연구가 유용했던 이유는 우리가 증거에 대해 엄격했기 때문입니다. 매 세션마다 반복된 몇 가지 규칙들이 있었습니다:
– 발표는 회의가 열렸다는 것이 아니라 계획이 있다는 것을 확인시켜 줄 뿐입니다. 실제로 개최되었음을 확인하는 것은 사후 보고서, 갤러리 또는 투표입니다.
– 회의 번호만으로는 단지 단서일 뿐입니다. 확정된 '회의 18'이라는 기록이 '회의 19'가 열렸음을 보장하지는 않습니다.
– 두 출처가 의견이 다를 경우, 그 불일치점을 기록하십시오. 더 보기 좋은 버전을 조용히 선택해서는 안 됩니다.
– 날짜, 슬러그(slug), 또는 연사 이름은 절대 추측하지 마십시오. 출처에 언급되어 있지 않다면, 게시물에는 대신 '알 수 없음(unknown)'이라고 적어야 합니다.
– 추정된 날짜는 데이터에서 명시적으로 표시하고(date_estimated: true), 더 강력한 출처가 이를 확인하기 전까지는 이 플래그를 제거하지 마십시오.
이러한 규칙들 덕분에 작업 속도는 느려졌지만, 이것이 오늘날 제가 결과를 신뢰할 수 있는 이유입니다.
저 혼자만 이렇게 한 것은 아니었습니다
기여자 Tymoteusz Wojnarowski는 Claude Code를 독립적으로 사용하여 PR #40 (2007년부터 2011년까지의 회의 및 발표, 연사 개인 사이트, 오래된 Wayback 기록, GoldenLine을 기반으로 구축됨), PR #41 (BlogEngine.NET 시대의 16개 회의), 그리고 PR #52 (회의 9, 11, 34 및 이전 병합 과정에서 누락된 두 개의 게시물) 등 초기 역사의 큰 부분을 복구하는 데 사용했습니다.
저는 에이전트 지원 풀 리퀘스트(agent-assisted pull requests)를 사용하여 직접 작업을 계속했고, 그 결과 회의 54부터 170까지, 가장 초기의 회의(1번부터 11번), 그리고 트위터 아카이브의 20~32 구간 등을 복구했습니다:
- PR #53 - Meetup에서 가져온 54회부터 170회까지의 회의 기록과 열 개의 해변 모임
- PR #56 - Twitter 아카이브에서 가져온 20회부터 32회까지의 회의 기록
- PR #57부터 PR #60까지 - 가장 초기의 회의 기록, 1회부터 11회
- PR #74 및 PR #76 - 가장 오래된 회의 기록에 대한 후속 상세 복구
GitHub의 자동화된 Copilot 코드 리뷰는 저의 검토와 함께 이러한 풀 리퀘스트(pull requests) 중 다수를 확인했으며, 반복적으로 작지만 실제적인 문제들—오타가 난 거리 이름, 누락된 아카이브 링크, 그리고 첫 언급 시 굵게 처리되어야 할 기술 이름 등—을 잡아냈습니다.
정보의 출처 (Where the information came from)
이 연구는 거의 모든 세션에서 재사용된 몇 가지 유형의 자료에 의존했습니다:
-
사이트의 모든 과거 버전에 대한 스냅샷을 제공하는 Wayback Machine과, 아카이브된
wrocnet.github.io인덱스(https://web.archive.org/web/20241125161720/https://wrocnet.github.io/)를 포함하여 -
1회부터 4회까지의 회의 기록을 다루는 가장 첫 번째 사이트인
wroc.net.isvclub.com: 1회 계획, 2회 확인을 위한 홈페이지 스냅샷, 3회 사후 보고서, 그리고 4회 사진 갤러리 -
보관된 Wroc.NET Twitter/X 프로필 (https://web.archive.org/web/20131218215546/https://twitter.com/wrocnet)와 해당 기간을 다루는 동일 프로필의 내보낸 HTML 사본
-
Meetup (https://www.meetup.com/wrocnet/), 그룹의 현재 플랫폼이자 2013년 이래 강연 및 장소의 주요 출처
-
그룹이 참석자를 등록하는 데 사용했던 보관된 GoldenLine (https://web.archive.org/web/20120426200208/http://www.goldenline.pl:80/spotkanie/xvi-spotkanie-wroclawskiej-grupy-net) 등록 페이지
-
날짜별 자체 강연 목록을 유지했던 발표자의 개인 사이트, gasior.net.pl (https://gasior.net.pl/)
-
다른 곳에서는 보관되지 않은 단일 이벤트를 위한 Crossweb (https://crossweb.pl/wydarzenia/118-spotkanie-wroclawskiej-grupy-net/) 페이지
-
그룹 자체 과거 사이트에 호스팅된 오래된 포럼 스레드, 사진 갤러리 및 설문조사
-
프로젝트의 GitHub에 있는 pull requests (https://github.com/lukasz-pyrzyk/wrocnet.org/pulls)와 issues (https://github.com/lukasz-pyrzyk/wrocnet.org/issues). 여기에는 발견된 모든 사실과 미해결 질문이 출처와 함께 문서화되어 있습니다.
제가 얻은 교훈
코드를 작성하는 것은 이 프로젝트에서 비교적 작은 부분이었습니다. 대부분의 노력은 리서치에 투입되었습니다. 서로 의견이 다른 출처를 찾고, 어떤 것을 신뢰할지 결정하며, 단순히 사실일 때
실제 소프트웨어 엔지니어링에 AI 에이전트 활용하기.
저는 팀들이 .NET 아키텍처, 성능 및 프로덕션 시스템에 대한 깊은 경험을 바탕으로 연구, 코딩, 리뷰 및 자동화에 AI를 적용하도록 돕습니다.
이 포스트의 일러스트레이션은 GPT로 생성되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기