이번 GitHub Unverse 24에 참석차 미국 샌프란시스코에 갔다 왔다.
매년 해외 콘퍼런스에 참석하는 편이지만 올해는 6월에 Datadog Dash에 갔다 왔기 때문에 올해는 또 안 나가려고 했지만, 이번이 10주년이라 특별한 이벤트가 될 거라고 해서 참석하기로 했다.(갔다 와 보니 딱히 10주년이라 더 특별했는지는 잘 모르겠다.)
GitHub을 엄청나게 좋아하는 편이라 2015년에 처음으로 GitHub이 기술 콘퍼런스를 한다길래 참석한 후 2018년, 2019년, 2023년을 참석해서 이번에 5번째 참석이다. 총 10번 중의 5번을 참석했으니 많이 가기는 했다. 그래도 작년부터는 GitHub Star에게 재정 지원을 해주어서 작년과 똑같이 $2,000를 지원해 줘서 좀 부담 없이 갔다 왔다. 물론 티켓도 제공해 준다.
Day 0
콘퍼런스는 10월 29~30일이었지만 하루 전인 28일에 GitHub Stars, Microsoft MVP, 오픈소스 메인테이너들을 모아서 프라이빗으로 사전 행사가 있었다. Day 0 행사는 콘퍼런스와는 다르게 샌프란시스코 다운타운에 있는 InterContinental 호텔에서 진행되었다.
이곳에서 콘퍼런스 등록도 바로 할 수 있었다.
GitHub은 3년 전부터 배지와 함께 e-ink로 된 배지를 함께 주고 있는데 개인적으로 이게 무척 마음에 든다. e-ink이므로 배터리가 없이도 화면에 이름이 잘 표시되지만, 글자를 바꾸거나 이미지를 넣으려면 USB-C로 연결해서 프로그램을 통해서 수정하면 된다. Badger 저장소에 조작할 방법이 잘 안내되어 있다.
등록대 뒤를 보면 이렇게 e-ink 배지를 준비해 두고 등록하는 사람에 맞춰서 e-ink 배지에 이름을 설정해서 나눠주고 있다.
사전 행사라서 CEO이 Thomas Dohmke와 CPO인 Mario Rodriguez이 나와서 키노트에서 발표할 내용을 어느 정도 미리 얘기해주고 Q&A 세션 같은 게 있었다. 세션은 ai live 서비스를 이용해서 캡션을 볼 수 있게 제공해 주고 있었는데 서비스 이름과 달리 AI가 해주는 건 아니고 사람이 타이핑하는 것 같았고 질문은 Poll Everywhere라는 서비스를 사용했다. 참고용으로 남겨두긴 하는데 비슷한 류의 서비스에 비해서 크게 좋은지는 잘 모르겠다.
오후에는 커뮤니티 행사가 진행되었다.(다른 곳에서는 파트너 트랙 등이 진행됨)
여러 가지 주제로 서로 얘기해 볼 수 있는 세션이 있었고 난 오픈소스 관련 세션을 들어갔는데 역시 토론식으로 여러 사람이 얘기하는 건 다 따라가기가 어려웠다. 영어 능력에 대한 아쉬움이 느껴지는 순간이었다. 오픈소스 메인테이너도 있어서 다양한 얘기를 할 수 있었고 Open Source Program Office(OSPO)에서 나온 사람들도 꽤 있었다. OSPO는 오스포라고 발음하는데 나는 GitHub에서 몇 년 전에 처음 들었는데 업계에 꽤 많이 자리 잡았는지 대부분 그냥 OSPO라고 하면 다 알아들었다. 조직에서 오픈소스 운영과 관련한 정책 설정과 오픈소스 활동을 하는 사람들에 대한 교육 등을 하는 부서라고 할 수 있다.
마지막에는 GitHub의 여러 리더가 나와서 질문을 받는 시간이 있었다. 다양하게 얘기를 해서 역시 다 따라가지 못했지만, 예전처럼 완전 집중을 하지 못하는 영향도 있을 거 같다. 맨 우측에 계신 분은 직책까지는 모르지만, 시각장애인이시라서 안내견도 같이 무대 위로 올라왔는데 작년에도 GitHub의 접근성에 대한 설명을 해주었는데 직접 접근성의 필요성을 느끼는 분이 리더쉽으로 있으면서 GitHub의 접근성을 개선하는 부분이 대단하게 느껴졌다.
저녁에는 커뮤니티 소셜 파티(?)가 있었다. 이런 곳에서 사람들과 잘 얘기하는 편은 아니지만 저녁을 주기 때문에 술 마시면서 저녁을 해결하고 숙소로 돌아왔다. Day 0에 대한 분위기는 이번에 처음 시도해 본 vlog에서도 볼 수 있다.
Day 1
본격적인 콘퍼런스 시작일이 됐다. 콘퍼런스는 샌프란시스코 북쪽 해안가에 있는 Fort Mason에서 진행이 되었고 이 장소는 과거에는 군부대가 쓰던 시설이었는데 지금은 예술/문화 센터로 운영되고 있는 곳이었다.
숙소를 샌프란시스코 다운타운에 있는 유니온 스퀘어 근처에 있었는데 이쪽에 묵는 사람이 많았기 때문에 Fort Mason까지 하루 종일 셔틀버스를 운행해 주었다. 차로 가도 15분 정도는 걸리는 위치에 있어서 나도 셔틀버스를 같이 이용했다. 사진에서도 2대나 나왔는데 아침에 Fort Mason으로 많이 이동하다 보니 Google의 자율주행 택시인 Waymo를 많이들 타고 왔다. 이곳 주차장이 꽤 복잡한데도 불구하고 Waymo는 운전을 잘했고 이번에 가보면 나도 꼭 타봐야지 하고 생각하고 갔기 때문에 며칠 뒤에 나도 Waymo를 타봤다.
입장을 하면 큰 건물이 2개 있고 그사이는 광장처럼 돌아다닐 수 있는데 바다 쪽으로 이쁜 옥토캣이 세워져 있었다.
광장 중앙에서는 DJ가 음악을 틀고 있고 이번이 GitHub Universe 10주년이라서 지난 10년을 기념하는 내용들이 곳곳에 있었다.
일찍 온 관계로 키노트까지 시간이 좀 남아서 옆 건물에 구경을 갔다. 2층에 GitHub Shop이 있었는데 2층 올라가면 옥토캣 로고가 이쁘게 날 반겨주고 있었다. 콘퍼런스 장소에 대해 궁금하면 vlog에서 전체적인 분위기와 구조를 볼 수 있다.
내가 SWAG을 좋아하는 편이라 남는 시간에 GitHub Shop부터 들렸다. 온라인에서도 살 수 있긴 하지만 가격이 약간 싸고 배송비가 들지 않아서 항상 이것저것 사는 편이다.
이것저것 이쁜 걸 고르다 보니 한가득 사서 에코백에 담아주었다. 너무 아침 일찍부터 산 관계로 하루 종일 들고 다니느라 힘들었다.
키노트
키노트 시간이 다가와서 Festival Pavilion 건물로 갔다. 건물이 앞뒤로 긴 형태의 건물인데 입장하면 플래티넘 스폰서와 골드 스폰서의 부스가 있고 부스를 지나면 키노트가 진행되는 메인 스테이지가 있었다.
3개의 스크린으로 시원한 키노트 장이 나타났다. 이 Fort Mason에서 북쪽으로 바다를 보면 보일듯한 골든 게이트 브리지와 건너편 풍경이 보이면서 모든 스폰서들의 컨테이너를 실은 GitHub Univese 배가 화면에 지나갔다.
Copilot이 가장 핫하기 때문에 영상에서도 GitHub Copilot CLI가 동작하듯이 "골든 게이트 브리지에 색을 추가하려면 어떻게 해?"라거나 "무지개를 추가하려면 어떻게 해?" 같은 질문을 하면 명령어가 나오고 자동으로 화면에 색이나 무지개가 추가되는 식의 영상이 진행되었다.
지난 10년간의 GitHub Universe에서 발표했던 내용이 영상으로 지나가고 "The world's fair of software"라는 문구와 함께 GitHub의 CEO인 Thomas Dohmke가 무대로 등장하면서 키노트가 시작되었다.
AI 시대답게 GitHub 공개 저장소에서 AI 프로젝트가 98%나 증가했다고 한다. 그리고 2014년에 4위였던 Python이 조금씩 올라오면서 항상 1위를 차지하던 JavaScript를 제치고 처음으로 1위를 차지했다. TypeScript의 영향도 있겠지만 아마 AI 프로젝트의 성장으로 Python의 사용량에도 영향을 준 것으로 보이고 많은 사람들이 AI가 개발자를 대체할 것이라고 하지만 데이터를 보면 이미 상당히 성장한 GitHub에서도 유례없을 정도로 전 세계에서 GitHub에 새로 가입하고 있으며 이 중에서 많은 수가 처음으로 오픈소스에 기여하고 있다고 한다.
GitHub Copilot
당연히 첫 번째는 GitHub Copilot 얘기였고 그동안 AI 코드 생성이 Phase 1이었는데 AI-infused, Conversational coding, Multi-model functionality 세 가지 기둥으로 구성되어 있었지만 이제 Phase 2로 넘어간다고 얘기하면서 코딩과 AI를 뗄 수 없는 AI-native, AI agents, Multi-model choice로 넘어간다고 설명했다.
Multi-model choice를 설명하고 바로 이어서 GPT 4o로만 동작하던 GitHub Copilot에 OpenAI o1-preview와 o1-mini가 추가되고 Anthropic의 Claude 3.5 Sonnet도 추가됨을 발표했고, 이어서 Anthropic의 공동 창업자인 Jared Kaplan도 무대에 등장했다. 이는 이미 공개되어서 VS Code 등에서 GitHub Copilot Chat을 사용할 때 모델을 선택할 수 있게 되었다. Google Cloud의 Gemini 1.5 Pro도 추가될 예정이라고 발표했다.
이어서 GitHub의 시니어 디렉터인 Cassidy Williams가 나와서 GitHub Copilot을 시연했다. 간단한 여행 사이트를 데모로 보여주면서 Copilot이 여러 파일에 걸쳐서 수정할 수 있게 된 새 기능을 보여준다.
이 기능은 최근 GitHub Copilot in VS Code 업데이트에 추가된 기능으로 Edit with Copilot에서 Copilot에게 채팅으로 요구사항을 전달하면 Copilot이 제안하는 여러 파일의 코드 변경 사항을 검토하면서 코드를 작성할 수 있게 되었다.
또한, 이제 Copilot에 커스텀 인스트럭션을 지정할 수 있게 되어서 .github/copilot-instructions.md
파일을 만들고 원하는 내용을 적어놓으면 Copilot이 코드를 작성할 때 이 내용을 참고하게 된다. 데모에서는 피처 플래그 서비스인 LaunchDarkly를 이용해서 컴포넌트를 만들 때 피처 플래그를 지정하도록 지시하는 상황을 보여주었다.
그리고 GitHub Copilot for Xcode도 발표했다.
GitHub Models
GitHub의 스태프 프로덕트 매니저인 Tim Rogers이 나와서 간단한 데모구현을 위해서 GitHub Marketplace에서 Copilot에서 어떤 모델이 적합한지 물어보고 Copilot이 추천해 준 모델을 Playground에서 직접 테스트해 보고 모델 간 비교를 해본 뒤에 그 결과를 적용하는 데모를 보여주었다. 이 GitHub Models가 이제 바로 사용할 수 있는 퍼블릭 프리뷰로 공개되었다.
GitHub Copilot Workspace
GitHub의 스태프 리서처인 Eirini Kalliamvakou가 나와서 GitHub Copilot Workspace를 소개했다. GitHub에서 차세대 제품을 연구 개발하는 조직이 GitHub Next인데 Copilot을 비롯한 대부분의 기능이 GitHub Next에서 만들어서 제품까지 된 것이다. GitHub Copilot Workspace는 아직 테크니컬 프리뷰 상태인데 지난번에 이 기능을 소개하는 글을 쓴 적이 있으니 해당 기능이 궁금하면 이전 글을 읽어봐도 된다.
GitHub Copilot Workspace를 공개한 이후 이 기능으로 15,000개 이상의 PR이 생성되었고 그중에 10,000개가 머지되었다. 지금까지 피드백을 통해 100여 가지의 수정이 이루어졌으며 그동안 명세를 세우고 작업 계획을 세운 뒤 구현하는 Spec - Plan - Implement까지만 다루고 있었는데 이제 Brainstorm과 Build & repair까지 담당할 수 있도록 확장되었다.
Brainstorm을 한다는 것은 어떤 기능이나 제품을 만들 때 아이디어 논의부터 Copilot과 함께할 수 있다는 것으로 데모에서는 이미지 업로드를 어떻게 하면 좋을지에 대한 아이디어를 같이 논의하고 이를 통해서 Spec을 정하는 것을 보여주었다. 구현 뒤에 Build 단계가 추가되어서 웹에서 바로 터미널을 열어서 테스트나 빌드를 돌려보면서 문제가 있을 경우 어떻게 고칠 수 있는지도 Copilot이 제안해 주고 테스트나 빌드까지 통과하는 것을 확인할 수 있다. 또한 Copilot Workspace를 이슈에서 열게 되는데 이번 발표에서 Pull Request에까지 확장한다고 발표했다.(정확한 의미는 실제로 좀 써봐야 알 것 같다.)
GitHub Spark
새로운 프로젝트인 GitHub Spark를 Thomas Dohmke가 발표하고 데모를 보여주었다. GitHub Spark는 코드를 작성할 필요 없이 자연어로 원하는 앱을 말하면 이를 만들어주는 서비스로 데모에서는 Tic-Tac-Toe 게임을 만들어주니까 몇 분 뒤에 웹상에 게임을 만들어주고 만들어진 UI를 간단하게 조정하거나 다시 요청해서 기능을 개선할 수도 있고 GitHub Universe 배지의 QR을 카메라로 찍으면 프로필을 보여주는 앱도 데모로 보여주었다. 당연히 React로 된 코드로 받을 수 있다. 현재는 아주 복잡한 앱을 만든다기보다는 마이크로 앱에 최적화되어 있는 것으로 보이지만 품질 등에서 꽤 놀라운 no-code 솔루션이라는 느낌을 받았다.
Keeping score: Deploying OpenSSF Scorecard and GitHub Advanced Security at enterprise scale
이 발표는 Cisco의 오픈소스 아키텍트인 Lelia Bray-Musso의 발표였다. 내 업무가 보안은 아니지만 SRE팀에서 인프라 업무와 함께 개발자 플랫폼 쪽도 하고 있다 보니 자연히 CI 단계에서 해야 하는 일에도 관심이 좀 있는 편이다. GitHub Advanced Security(GHAS)도 테스트를 해봤는데 당시에는 기대보다 별로였고 SonarQube도 쓰는데 내 기준으로는 기대보다 별로였다. 이런 보안 도구들이 대동소이한 편이라서 최근에는 도구보다는 도입 방법에 더 관심을 가지게 되어 이 발표를 듣게 되었다.
Humans don't like having privileges reduced or removed without explanation
Absent clear communication, new rules and restrictions will not be well-received
처음에는 보안 정책 적용에 관해 얘기했는데 보안 정책을 적용할 때는 충분히 설명해야만 하고 각 팀에서 보안 관련해서 키를 쥐고 있는 사람을 잘 찾아서 커뮤니케이션해야 한다는 점을 강조했다.
Define the security outcomes you want, then shape policy around that
Apply your policy to a narrow group, gather feedback, revise the policy, then deploy widely
영향도가 크면서 노력이 적게 되는 부분에 먼저 집중해야 하는데 보안을 강화한다고 같은거 말고 구체적인 목표를 정의하고 그에 따른 정책과 도구를 정해야 하고 작은 조직에 먼저 적용하고 개선한 뒤에 점점 넓게 적용해야 한다는 부분은 상당히 동의하였고 요즘 생각하던 부분과도 어느 정도 이어졌다.
이후에는 GHAS의 시크릿 스캐닝이나 CodeQL, Dependabot을 조직에서 활용하는 법을 설명하고 GitHub의 Custom Property를 사용해서 조직에 정책을 적용하는 부분은 꽤 맘에 들었다.
Open Source Security Foundation(OSSF)에는 보안 정책에 대한 점수를 매긴 Scorecard를 만들어서 관리하고 있는데 이를 활용하기 위해 scorecard-action와 scorecard-monitor을 이용해서 조직의 점수를 관리할 수 있고 dependency-review-action에서 의존성에 대한 Scorecard 점수도 표시하게 설정할 수 있다. Scorecard도 버전이 올라가면서 유연성을 더 많이 제공하고 있고 Allstar을 만들면 이러한 부분을 더 쉽게 관리할 수 있다.
OpenSSF에 대해서 잘 몰랐는데 꽤 많은 준비가 되어 있다고 느껴졌고 아무래도 경험이 누적되어 있을거라서 OpenSSF에서 제공하는 Scorecard를 좀 테스트해 봐야겠다는 생각이 들었다.
Found means fixed: Addressing security debt at scale
이 발표는 GitHub Advanced Security(GHAS)의 Autofix에 대한 발표로 비슷한 제목의 글이 올해 초에 퍼블릭 베타를 하면서 Found means fixed: Introducing code scanning autofix, powered by GitHub Copilot and CodeQL로 올라온 적이 있다.
간단히 말하면 그동안 취약점이나 보안 위험을 탐지하는 것에 중점을 두었지만 이제 AI가 있으므로 자동으로 수정까지 해주겠다는 의미이다. 아까도 말했지만, 이전에 GHAS에 한번 실망한 적 있지만 가장 큰 개발 협업 플랫폼을 가지고 있으면서 강력한 AI를 가진 GitHub이 보안 관점에서 GHAS로 가장 좋은 방향으로 가고 있지 않는지 하는 생각이 들었다. Found means fixed라니 영어권에서 이런 말을 잘 만들어내기도 하지만 "찾았으면 고쳐진 것이다"라니 참 멋지다고 생각했다.
시크릿 스캐닝을 그동안 지원했지만, API 토큰은 발견하기 그나마 쉽지만, 비밀번호는 문자열만 가지고 진짜인지 아닌지를 탐지하기가 쉽지 않다. 하지만 이제는 주변 코드를 이해해서 해당 문자열에 할당된 비밀번호 문자열이 진짜 위험한지 아니면 가짜인지를 판단해서 false positive를 줄일 수 있게 되어 오탐률도 절반 가까이 줄였다고 한다. 이는 GHAS Copilot Secret Scanning을 키면 바로 사용할 수 있다.
GHAS Copilot Autofix는 이번에 모든 GHAS 사용자와 공개 저장소에서 바로 사용할 수 있게 풀렸다. 그리고 이어진 데모에서는 XML을 다루는 코드에서 CodeQL이 취약점을 발견해 주는데 이전에는 이게 왜 취약점이 되고 어떻게 수정해야 하는지 찾아봐야 했지만 이젠 Copilot Autofix가 바로 수정 사항을 올려주므로 이를 확인하고 수락만 하면 된다. 이는 Pull Request뿐 아니라 Security 탭에서 기존 코드에서 발견한 취약점에서도 동일하게 적용되고 Autofix를 적용한 후 수정하는 데 걸리는 시간이 3배 이상 빨라졌다고 한다. 꽤 비싼 GHAS 뿐 아니라 오픈소스 메인테이너들을 위해서 공개 저장소에도 제공한 것은 아주 좋다고 생각한다.
작년 GHAS에 Custom Security Configuration을 발표했는데 거기에 이어서 Security Campaigns를 발표했다. 모든 조직에는 수백, 수천 개의 보안 알림이 존재하기 마련인데 Security Campaigns은 그중에 집중해야 할 몇 개를 각 팀이 해결할 수 있도록 기간을 정해주고 집중할 수 있게 해주는데 괜찮아 보이면서도 결국 각 팀이 바쁜 와중에 이 부분을 고칠 수 있게 될 수 있을지 고민되기는 했다.
Autofix 기능은 여기서 끝나지 않았는데 앞에서 CodeQL로 찾아서 자동 수정하는 것을 보여줬지만 찾았으면 고쳐졌다는 맥락에서 어떻게 찾았는지는 중요하지 않으므로 Copilot Autofix for Partners를 발표하고 첫 파트너로 ESLint, JFrog, BlackDuck를 공개했다. 즉, 이러한 도구들로 찾은 취약점이나 오류도 Autofix로 수정해 주겠다는 의미다.
GitHub은 Dependabot이라고 프로젝트의 의존성을 업데이트 Pull Request를 자동으로 만들어주면서 릴리스 노트 등의 정보를 알려주는 기능이 있다. 하지만 이때 업데이트가 메이저 버전처럼 호환성이 깨진 업데이트라면 코드를 일일이 수정해야 해서 쉽게 적용하기 어려운데 이제는 호환성이 깨진 수정도 Autofix가 자동으로 수정된다면서 Lodash 3.10에서 4.17로 한 번에 버전을 올리면서 deprecated된 API를 새로운 API로 수정 사항을 보여주는 기능을 보여주었다. 이 Copilot AUtofix for Dependabot은 아직 private preview 상태라 신청하고 승인받아야 사용할 수 있는 상태인데 정확도를 봐야겠지만 이런 부분까지 수정해 주고 프로젝트 CI에 테스트 구성이 잘 되어 있다면 정말 쉽게 버전을 올릴 수 있겠다는 생각이 들었다.
세션 듣는 중에 돌아다니면서 제공되는 음료도 마셨는데 나는 이렇게 음료나 컵에도 GitHub 로고가 있는 걸 좋아하는 편이라 이 음료도 무척 마음에 들었다. 몇 년 동안 온라인으로만 얘기 나누던 GitHub 직원인 Bryant Son이 마침, 발표 때문에 오셔서 인사도 하고 소개받은 다른 한국인 GitHub 직원인 Jeongsoo Lee님도 만나서 다양한 얘기를 나누었다.(영어 압박 속에 있다가 한국말 하면 너무 좋다.)
부스 중에 Akuity도 왔는데 Argo를 만든 3명이 다 왔는데 마침 부스에 Jesse Suen이 있어서 Akuity에 대한 다양한 설명을 듣고 같이 사진도 찍었다. ㅎㅎ
보통 해외 콘퍼런스에서는 저녁에 파티가 있는 편이고 이날도 여러 스폰서 회사가 각자의 장소에서 준비한 저녁 파티들이 있었다. 개인적으로는 한 공간이 특정 회사의 홍보를 독차지할 수 있어서 좋다고 생각하지만, 국내에는 거의 없는 문화라서 아쉬운 부분이기도 하다.(물론 저녁을 식사 대신 핑거푸드로 대체해도 큰 문제 없는 서양 문화 때문에 가능하다고 생각하기도 한다.) 미리 신청한 곳들이 승인이 안 나기도 했고 피곤하기도 한데다가 숙소에서 멀어서 그냥 셔틀 타고 빨리 숙소로 귀가했다.
이 글은 2편으로 이어질 예정이다.
Comments