GitHub

13 개의 포스트

github.blog/engineering

태그로 필터

github

GitHub Enterprise Server에서 고가용성을 (새 탭에서 열림)

제공해주신 내용은 GitHub의 검색 엔지니어 데이비드(David)의 약력으로 확인됩니다. 그가 주도적으로 작성한 **GitHub의 새로운 코드 검색 엔진인 'Blackbird'의 기술적 설계와 아키텍처**에 관한 블로그 글을 바탕으로 요약해 드립니다. 깃허브는 기존 검색 엔진의 한계를 극복하고 수십억 개의 파일에 대해 전례 없는 속도와 정확도를 제공하기 위해 Rust 기반의 새로운 검색 엔진 'Blackbird'를 자체 구축했습니다. 일반적인 텍스트 검색과 달리 코드의 특성을 깊이 있게 이해해야 하는 요구사항을 충족하기 위해, 인프라 계층부터 랭킹 알고리즘까지 모든 과정을 코드 검색에 최적화된 방식으로 재설계했습니다. 이를 통해 깃허브는 대규모 코드베이스에서 복잡한 쿼리를 밀리초 단위로 처리할 수 있는 강력한 검색 경험을 구현했습니다. **기존 범용 검색 엔진의 한계** * Elasticsearch와 같은 기존의 범용 엔진은 대규모 코드 검색에서 발생하는 특수 문자 처리와 정규 표현식 쿼리에 최적화되어 있지 않습니다. * 코드 데이터의 양이 기하급수적으로 늘어남에 따라 기존의 N-gram 인덱싱 방식은 인덱스 크기가 너무 커져 저장 비용과 검색 성능 면에서 효율성이 급격히 떨어지는 문제를 겪었습니다. * 다양한 프로그래밍 언어의 구문과 구조를 이해하지 못하는 일반적인 정보 검색 방식으로는 개발자가 원하는 정확한 검색 결과를 도출하는 데 한계가 있었습니다. **Blackbird: 코드 특화 검색 엔진 아키텍처** * **Rust 기반의 고성능 설계**: 시스템의 안정성과 메모리 효율성을 극대화하기 위해 Rust 언어를 사용하여 엔진을 밑바닥부터 직접 구현했습니다. * **Sparse N-gram 인덱싱**: 모든 데이터를 인덱싱하는 대신 유의미한 코드 패턴을 효율적으로 찾는 '희소(Sparse)' 인덱스 기술을 도입하여 인덱스 크기를 획기적으로 줄였습니다. * **Content-addressable Storage**: 코드의 중복을 제거하고 데이터 무결성을 보장하기 위해 콘텐츠 주소 지정 저장 방식을 사용하여 수 페타바이트의 데이터를 효율적으로 관리합니다. **샤딩 및 분산 처리 전략** * 수십억 개의 파일을 수천 개의 샤드(Shard)로 분할하여 관리하며, 각 샤드는 독립적으로 쿼리를 처리할 수 있도록 설계되었습니다. * 쿼리가 들어오면 오케스트레이터가 관련 있는 샤드들에 작업을 분산시키고 결과를 취합하는 분산 컴퓨팅 구조를 통해 동시 사용자가 많아도 낮은 지연 시간을 유지합니다. * 특정 리포지토리의 가시성 변화나 코드 수정 사항이 실시간에 가깝게 검색 결과에 반영될 수 있도록 고안된 파이프라인을 갖추고 있습니다. **관련성(Relevance) 엔지니어링** * 단순한 키워드 일치를 넘어 코드의 품질, 해당 리포지토리의 별(Star) 개수, 최근성 등을 종합적으로 고려한 랭킹 알고리즘을 적용했습니다. * 사용자의 의도를 파악하여 함수 정의, 변수 사용처 등 코드의 구조적 맥락을 반영한 검색 결과를 상단에 배치합니다. 대규모 시스템에서 범용 솔루션이 성능의 병목이 될 때, 도메인 특화(Domain-specific) 엔진을 직접 설계하고 구현하는 것이 서비스의 질을 한 단계 높이는 결정적인 차별점이 될 수 있음을 보여줍니다. 코드와 같이 특수한 구조를 가진 데이터를 다룰 때는 그 데이터의 본질에 맞춘 인덱싱 기법과 언어 선택이 성능 최적화의 핵심입니다.

github

입문자를 위한 GitHub: GitHub 이슈 (새 탭에서 열림)

제공해주신 텍스트는 해당 블로그 글의 작성자인 Kedasha(GitHub의 Developer Advocate)에 대한 **소개 문구(Bio)**입니다. 요청하신 "소프트 삭제"나 "트리거 기반 보관"과 같은 기술적 내용을 요약하기 위해서는 블로그의 **본문 내용**이 필요합니다. 사용자께서 예시로 들어주신 "소프트 삭제의 문제점" 등의 키워드로 미루어 보아, Kedasha가 작성한 **"Soft deletes are bad; do this instead(소프트 삭제는 나쁘니 대신 이렇게 하세요)"**라는 글을 요약하고자 하시는 것으로 이해됩니다. 해당 글의 핵심 내용을 바탕으로 요청하신 형식에 맞춰 요약해 드립니다. --- 데이터베이스 설계 시 관행적으로 사용되는 '소프트 삭제(is_deleted 플래그)'가 시스템 복잡성과 성능 저하를 초래한다는 점을 지적하며, 이를 대체할 수 있는 더 깨끗하고 효율적인 데이터 관리 방안을 제시합니다. 궁극적으로 소프트 삭제 대신 별도의 이력 테이블이나 아카이빙 전략을 사용할 것을 권장합니다. ### 소프트 삭제의 문제점 * **인덱스 및 성능 저하**: 삭제된 데이터가 테이블에 계속 남아 인덱스 크기를 키우고, 쿼리 시 `WHERE deleted = false` 조건을 항상 포함해야 하므로 실행 계획의 효율성을 떨어뜨립니다. * **유니크 제약 조건 충돌**: 특정 필드(예: 이메일)에 유니크 제약이 있을 경우, 소프트 삭제된 행이 존재하면 동일한 값으로 새 데이터를 삽입할 수 없는 논리적 오류가 발생합니다. * **쿼리 복잡성 증가**: 모든 조회 쿼리에 삭제 여부 필터를 적용해야 하므로, 개발자가 이를 누락할 경우 삭제된 데이터가 사용자에게 노출되는 버그가 발생할 위험이 큽니다. ### 트리거 기반의 보관(Archiving) * **별도 테이블 이동**: 본 테이블(Main Table)에는 활성 데이터만 남기고, 삭제된 데이터는 트리거(Trigger)를 통해 별도의 보관용 테이블(Archive Table)로 자동 이동시키는 방식을 제안합니다. * **무결성 유지**: 이 방식을 통해 본 테이블의 유니크 제약 조건을 깨끗하게 유지할 수 있으며, 인덱스 성능 또한 최적으로 관리할 수 있습니다. * **성능 최적화**: 운영 쿼리가 훨씬 적은 양의 데이터만 탐색하게 되어 전반적인 애플리케이션 응답 속도가 향상됩니다. ### 감사 로그(Audit Logs)의 활용 * **상태 변경 추적**: 단순 삭제 여부만 저장하는 대신, 누가 언제 왜 데이터를 변경/삭제했는지 기록하는 감사 로그 시스템을 구축하는 것이 장기적으로 데이터 거버넌스 측면에서 유리합니다. * **데이터 복구 용이성**: 단순 플래그보다 더 풍부한 맥락 정보를 담고 있어, 필요 시 데이터를 복구하거나 이력을 추적하는 데 훨씬 효과적입니다. 단순히 플래그 하나로 삭제를 처리하기보다는, 데이터의 생명 주기를 고려하여 **운영 데이터와 아카이브 데이터를 물리적으로 분리**하는 설계가 확장성 있는 시스템 구축의 핵심입니다. 만약 다른 본문의 요약을 원하신다면 전체 텍스트를 다시 제공해 주세요.

github

GitHub Copilot 코딩 에 (새 탭에서 열림)

10년 이상의 개발자 도구 분야 경력을 보유한 GitHub의 Senior Developer Advocate 안드레아(Andrea)는 복잡한 엔지니어링 개념과 실제 구현 사이의 가교 역할을 수행하며 첨단 기술의 접근성을 높이는 데 주력하고 있습니다. 군 복무와 건설 관리직에서 소프트웨어 개발자로 전향한 그녀의 독특한 이력은 기술적 깊이와 실무적 적용을 결합하는 데 중요한 밑바탕이 됩니다. 현재 그녀는 글로벌 오픈 소스 이니셔티브를 통해 혁신을 주도하며 전 세계 개발자 커뮤니티의 성장을 지원하고 있습니다. ### 기술적 전문성과 경력 배경 * GitHub의 시니어 개발자 애드보킷으로서 10년 넘게 개발자 도구(Developer Tools) 분야에서 전문성을 쌓아왔습니다. * 미 육군 복무 및 건설 관리직에서 소프트웨어 엔지니어링으로 전향한 이색적인 경력을 통해 문제 해결에 대한 다각적인 시각을 보유하고 있습니다. * 이러한 배경은 복잡한 기술적 난제를 실무 중심의 언어로 풀어내고, 고급 기술을 더 넓은 사용자 층이 쉽게 수용할 수 있도록 돕는 기반이 됩니다. ### 기술 접근성 향상 및 오픈 소스 활동 * 추상적이고 복잡한 엔지니어링 개념을 실제 구현 가능한 단계로 연결하는 것을 핵심 미션으로 삼고 있습니다. * GitHub의 글로벌 이니셔티브에 참여하여 오픈 소스 생태계를 활성화하고, 개발자들이 최신 도구를 효과적으로 활용할 수 있도록 혁신을 추진합니다. * 온라인 채널(@acolombiadev)을 통해 기술 지식을 공유하며, 실무 환경에서 마주하는 엔지니어링 복잡성을 낮추는 데 기여하고 있습니다. 다양한 배경에서 비롯된 실무 중심의 기술 전달 능력은 복잡한 도구와 기술이 쏟아지는 현대 개발 환경에서 매우 중요한 가치를 지닙니다. 기술의 깊이를 유지하면서도 이를 대중화하려는 안드레아의 접근 방식은 복잡한 시스템을 설계하고 운영하는 엔지니어들에게 실용적인 통찰력을 제공합니다.

github

멀티 에이전트 워크 (새 탭에서 열림)

제공해주신 '글 내용'은 저자(Gwen Davis)의 프로필 정보(Bio) 한 문장뿐입니다. 이 내용만으로는 요청하신 '소프트 삭제'나 '기술적 디테일'이 포함된 상세 요약을 작성하기에 정보가 부족합니다. 요약하시려는 **블로그 글의 본문 전체**를 다시 붙여넣어 주시면, 요청하신 지침과 형식에 맞춰 완벽하게 요약해 드리겠습니다. 만약 제공된 문장(Gwen Davis의 전문 분야)을 바탕으로 그녀가 주로 다루는 주제들을 요약해 드려야 한다면, 다음과 같이 정리할 수 있습니다. --- Gwen Davis는 GitHub의 시니어 콘텐츠 전략가로서 **

github

AI가 개발자의 선택을 (새 탭에서 열림)

GitHub의 시니어 개발자 애드보케이트인 Andrea는 10년 이상의 개발자 도구 분야 경험을 바탕으로 복잡한 공학 개념을 실용적인 구현 단계로 연결하는 데 주력하고 있습니다. 그녀는 군 복무 및 건설 관리라는 독특한 이력을 기술에 접목하여 고급 기술을 누구나 더 쉽게 접근할 수 있도록 만드는 미션을 수행 중입니다. 이를 통해 전 세계적인 기술 혁신을 주도하고 오픈 소스 생태계를 지원하는 데 기여하고 있습니다. **기술적 깊이와 접근성 강화** * 10년이 넘는 기간 동안 개발자 도구 분야에서 쌓아온 전문성을 바탕으로 시니어 개발자 애드보케이트로서 활동 * 단순한 기술 전달을 넘어, 복잡하고 고도화된 엔지니어링 개념의 진입 장벽을 낮추어 더 많은 개발자가 기술을 활용할 수 있도록 지원 * GitHub의 글로벌 이니셔티브를 통해 오픈 소스 프로젝트의 혁신을 장려하고 커뮤니티의 성장을 도모 **커리어 전환을 통한 차별화된 관점** * 군 복무(Army service) 및 건설 관리(Construction management)라는 비전형적인 배경을 소프트웨어 개발에 융합 * 현장 중심의 관리 경험을 기술적 문제 해결에 적용하여, 이론에 매몰되지 않는 실용적인 엔지니어링 시각을 제공 * 서로 다른 산업 영역의 가교 역할을 수행하며 복잡한 시스템을 보다 효율적이고 실무적인 방식으로 구조화 **실무적인 결론** Andrea의 사례는 기술적 전문성만큼이나 다양한 산업적 배경이 개발자 관계(DevRel)와 기술 대중화에 얼마나 중요한지를 보여줍니다. 복잡한 기술을 다루는 팀일수록 현장 경험과 공학적 깊이를 동시에 갖춘 접근 방식을 채택함으로써, 기술의 실용적 가치를 극대화하고 사용자 접근성을 높일 수 있을 것입니다.

github

GitHub 에이전틱 워크플 (새 탭에서 열림)

제공해주신 내용은 특정 기술 블로그의 본문이 아닌, GitHub Next 수석 연구원의 프로필 및 주요 연구 분야를 요약한 정보로 파악됩니다. 해당 내용을 바탕으로 이 연구원이 지향하는 기술적 방향성과 전문성을 정리해 드립니다. GitHub Next의 수석 연구원은 AI 에이전트가 주도하는 소프트웨어 엔지니어링의 미래와 현대 프로그래밍 언어의 기술적 심화를 핵심 연구 과제로 제시합니다. Copilot을 필두로 한 AI 도구의 진화와 C#, F# 등 언어적 특성을 결합하여 개발 생산성을 근본적으로 혁신하는 데 초점을 맞추고 있습니다. 기술적 깊이와 AI의 결합이 차세대 소프트웨어 개발의 핵심 동력이 될 것임을 보여줍니다. **에이전트 중심 소프트웨어 엔지니어링과 Copilot** - 단순한 코드 완성을 넘어, 자율적으로 문제를 진단하고 해결책을 제시하는 AI 에이전트 기반의 개발 패러다임(Agentic Software Engineering)을 연구합니다. - GitHub Copilot의 기능을 고도화하여 소프트웨어 수명 주기 전반에 걸친 자동화와 지능화를 추구하며 개발자의 워크플로우를 재정의합니다. **현대적 프로그래밍 언어 및 비동기 패러다임** - C#과 F#의 강력한 타입 시스템과 언어적 기능을 활용하여 안정적이고 효율적인 엔터프라이즈 시스템을 설계하는 방안을 다룹니다. - 특히 `async/await` 패턴으로 대표되는 비동기 프로그래밍에 대한 깊은 이해를 바탕으로, 현대 애플리케이션에서 필수적인 고성능 동시성 제어 및 리소스 최적화 기술을 강조합니다. **실용적인 결론** AI 에이전트의 활용 능력을 키우는 동시에 언어 내부의 동작 원리(비동기 처리, 타입 시스템 등)를 깊게 이해하는 것이 차세대 엔지니어링 환경에서 경쟁력을 갖추는 핵심이 될 것입니다. 특히 C#이나 F# 사용자라면 최신 비동기 프로그래밍 기법을 숙지하여 AI가 생성한 코드의 품질과 성능을 직접 검증하고 최적화할 수 있는 역량을 갖추기를 권장합니다.

github

실무에서의 지속적인 AI: 에 (새 탭에서 열림)

GitHub은 개발자 경험(DX)을 최우선으로 하는 세계 최고의 개발 플랫폼으로, 인공지능(AI) 기술과 강력한 보안 기능을 워크플로우 전반에 통합하여 제공합니다. 개발자는 이를 통해 복잡한 보안 위협이나 인프라 환경에 대한 고민 없이, 오직 코드 혁신과 가치 창출에만 집중할 수 있는 환경을 누리게 됩니다. **세계 최상의 개발자 경험(DX) 구축** * 개발자의 생산성을 극대화하기 위해 직관적이고 효율적인 작업 환경을 제공하며, 개발 생태계 내에서의 원활한 협업을 지원합니다. * 코드 작성부터 배포까지의 과정을 단순화하여 개발자가 본연의 업무인 '혁신'에만 전념할 수 있도록 돕습니다. **AI 기반의 지능형 개발 플랫폼** * 플랫폼의 모든 단계에 AI 기술을 내재화하여 코드 작성 보조, 자동화, 문제 해결 등 개발 주기의 전 과정을 스마트하게 개선합니다. * AI를 단순한 보조 도구를 넘어, 개발 프로세스의 속도와 품질을 동시에 높이는 핵심 엔진으로 활용합니다. **개발 전 단계에 통합된 보안 체계** * 보안을 별도의 단계로 분리하지 않고, 코드 설계부터 최종 배포까지 모든 과정에 보안 기능을 기본적으로 포함(Security incorporated into every step)합니다. * 개발자는 플랫폼 내에서 제공되는 보안 가이드를 통해 취약점을 조기에 발견하고 대응함으로써, 더욱 신뢰할 수 있는 소프트웨어를 개발할 수 있습니다. GitHub은 AI와 보안이 결합된 통합 생태계를 지향합니다. 개발 효율성을 높이고 보안 사고를 미연에 방지하고자 하는 팀에게 GitHub은 단순한 저장소 이상의 강력한 혁신 도구가 될 것입니다.