Microsoft

11 개의 포스트

devblogs.microsoft.com/engineering-at-microsoft

태그로 필터

microsoft

마이크로소프트 규모의 멀 (새 탭에서 열림)

대규모 프로덕션 환경에서 멀티모달 에이전트의 사후 학습(Post-training)은 표준적인 강화학습 알고리즘이 예상하지 못한 지점에서 실패하는 경우가 많으며, 특히 전체 보상 지표가 상승함에도 불구하고 실제 성능은 퇴보하는 '침묵하는 실패'가 빈번하게 발생합니다. Microsoft Copilot 팀은 이러한 문제를 해결하기 위해 정책 경사 추정치(Policy gradient estimator)의 정보력을 유지하는 데 초점을 맞춘 공학적 및 알고리즘적 개입 방법을 개발했습니다. 이를 통해 수백만 명의 사용자를 대상으로 하는 복잡한 도구 조작 및 멀티모달 추론 태스크에서 성능 안정성과 모델의 견고성을 확보할 수 있었습니다. ### 단계적 목적 함수 커리큘럼을 통한 조기 전문화 방지 * **문제점**: 단순한 스칼라 보상을 최적화할 경우, 모델은 달성하기 쉬운 지표에만 매몰되어 장기 실행 능력이나 견고성이 필요한 복잡한 행동을 포기하는 조기 전문화(Premature specialization) 현상이 나타납니다. * **검증 및 선호 신호 분리**: 보상 신호를 '검증 가능 신호(도구 구문, 형식 준수 등)'와 '선호도 신호(품질 등)'로 분리하고, 학습 초기 30% 구간에서는 검증 가능 신호에만 집중하여 기본기를 다지게 합니다. * **엔트로피 하한선(Entropy Floor)**: 단순한 엔트로피 보너스 대신, 정책의 엔트로피가 특정 임계값 아래로 떨어질 때만 활성화되는 KL 페널티 형태의 '하한선'을 도입하여 학습 후반부까지 정책의 다양성을 강제로 유지합니다. ### 추정치 건강도에 따른 적응형 커리큘럼 * **ESS(유효 샘플 크기) 모니터링**: 전체 배치 중 실제로 유의미한 그래디언트 업데이트에 기여하는 궤적의 비율인 ESS를 실시간으로 추적합니다. ESS가 20% 미만으로 떨어지면 향후 학습 정체가 일어날 것임을 미리 예측할 수 있습니다. * **근접 실패(Near-miss) 주입**: ESS 수치가 위험 수준에 도달하면 저장소 버퍼에서 '근접 실패' 궤적을 학습 배치에 주입합니다. 이는 모델이 정답과 오답 사이의 미세한 차이를 학습하게 하여 배치 내 결과의 대비(Contrast)를 복구합니다. * **동적 KL 페널티 조절**: 추정치의 건강도가 낮아질 때 일시적으로 KL 페널티를 높여 정책의 급격한 변화를 방지하고, 에스티메이터가 회복될 시간을 확보합니다. ### 구조적 변산성을 고려한 분산 교정 정규화 * **문제점**: 표준적인 태스크별 정규화는 태스크 내의 변산성 구조를 무시합니다. 특히 100토큰 내외의 짧은 궤적과 2000토큰 이상의 긴 궤적 사이에는 거대한 분산 차이가 존재하며, 긴 궤적이 전체 그래디언트 신호를 왜곡하는 현상이 발생합니다. * **길이 기반 보정**: 궤적의 길이에 따라 변산성이 선형적으로 증가하는 특성을 반영하여 정규화 로직을 개선함으로써, 특정 유형의 작업이 전체 학습 방향을 독점하지 않도록 조정합니다. 실제 운영 환경에서의 AI 에이전트 학습은 대시보드상의 요약 지표와 실제 사용자 경험 사이의 괴리를 줄이는 것이 핵심입니다. 특히 ESS와 같은 추정치 건전성 지표를 상시 모니터링하고, 학습 초기 단계에서 모델이 기본 형식을 먼저 마스터할 수 있도록 보상 신호의 투입 시점을 제어하는 전략이 대규모 멀티모달 시스템의 안정적인 배포에 결정적인 역할을 합니다.

microsoft

Microsoft Learn MCP 서버 구축기 (새 탭에서 열림)

Microsoft Learn MCP(Model Context Protocol) 서버는 AI 에이전트가 신뢰할 수 있는 최신 기술 문서를 실시간으로 활용할 수 있도록 설계된 원격 서버입니다. 기존의 복잡한 API 통합 방식 대신 표준화된 프로토콜을 채택하여 에이전트가 런타임에 도구를 스스로 발견하고 실행하게 함으로써, 개발자가 브라우저 이동 없이 개발 환경 내에서 정확한 기술 가이드를 받을 수 있도록 지원합니다. ### MCP 도입 배경과 서버 방식의 이점 * **에이전트 네이티브 표준:** MCP는 에이전트가 기능을 실시간으로 협상하고 결과를 스트리밍하는 표준을 제공하여, 수동 검색이나 별도의 임베딩 관리 없이도 최신 데이터를 활용할 수 있게 합니다. * **통합의 단순화:** 클라이언트가 개별 API의 인증, 요청 형식, 에러 처리를 직접 구현할 필요 없이 MCP 호환 에이전트라면 서버 연결만으로 도구 스키마를 자동 인식하고 사용할 수 있습니다. * **지식 서비스의 재사용:** "Ask Learn" 서비스와 동일한 벡터 저장소 및 지식 서비스를 백엔드로 사용하여, RAG(검색 증강 생성) 기반의 높은 정확도와 최신성을 보장합니다. ### 핵심 도구 및 아키텍처 * **제공 도구:** 문서 제목과 URL을 찾는 `microsoft_docs_search`, 전체 문서 내용을 가져오는 `microsoft_docs_fetch`, 언어별 코드 예제 검색에 최적화된 `microsoft_code_sample_search`를 제공합니다. * **시스템 구조:** Azure App Service에 호스트된 C# SDK 기반의 원격 서버로 운영되며, Streamable HTTP Transport를 통해 클라이언트와 통신합니다. * **에이전트 워크플로우 최적화:** LLM 에이전트가 익숙한 '검색 후 읽기' 패턴을 따를 수 있도록 내부 API의 복잡한 파라미터를 직관적인 도구 운영 방식으로 압축하여 제공합니다. ### 운영 및 설계상의 주요 교훈 * **도구 설명이 곧 사용자 경험:** AI 모델에게 도구와 파라미터 설명은 매뉴얼과 같습니다. 단어 선택의 미세한 차이가 도구 활성화율에 직접적인 영향을 미치므로 데이터 기반의 지속적인 최적화가 필요합니다. * **도구 조합의 시너지:** 검색 도구로 최적의 일치 항목을 찾은 후 전체 문서를 읽어 답변의 근거를 강화하는 '도구 조합' 방식을 명시적으로 가이드하여 인용 품질을 개선했습니다. * **분산 시스템으로서의 운영:** 공용 MCP 서버는 다중 지역 배포, 동적 확장, CORS 관리 등 일반적인 상태 비저장(Stateless) 서비스와 동일한 운영상의 복잡성을 가집니다. * **방어적 스키마 진화:** 동적 발견 구조임에도 불구하고 파라미터를 하드코딩하는 클라이언트를 위해, 명칭 변경 시 기존 이름을 병행 지원하는 유예 기간을 두는 등 안정적인 서비스 진화 전략이 중요합니다. ### 실용적인 활용 및 기대 효과 개발자는 이제 브라우저를 열고 검색 결과를 훑어보는 번거로운 과정 대신, 선호하는 AI 에이전트에 Learn MCP 서버를 연결하여 Microsoft 기술 문서를 코드 맥락에 즉시 적용할 수 있습니다. 이는 개발 워크플로우 내에서 정확한 공식 문서를 기반으로 한 자동화된 코딩 지원과 문제 해결을 가능하게 합니다.

microsoft

프로덕션 규모 에 (새 탭에서 열림)

Hugging Face는 장기 실행되는 에이전트 시스템과 지속적으로 적응하는 RL(강화학습) 파이프라인을 위해 '사후 훈련 툴킷(Post-Training Toolkit, PTT)'을 TRL 라이브러리에 공식 통합했습니다. 이 툴킷은 기존의 전역 지표로는 포착하기 어려운 도구 사용 에이전트의 '후기 단계 불안정성(Late-phase instability)'을 진단하고 제어하는 데 중점을 둡니다. 이를 통해 개발자는 운영 환경에서 에이전트가 도구 호출 이후 겪는 미세한 성능 저하를 조기에 발견하고 대응할 수 있는 폐쇄 루프 모니터링 체계를 구축할 수 있습니다. **도구 호출로 인한 분산 증폭 현상** - 도구 사용 에이전트의 학습 상태 분포는 일반 텍스트 상호작용과 도구 조건부 상호작용의 혼합으로 구성됩니다. 학습이 진행됨에 따라 도구 사용 비중이 늘어나며 상태 분포의 변화가 발생합니다. - 특히 도구 호출 이후의 맥락(Post-tool context)은 참조 정책(Reference policy)이 낮은 확률을 할당하는 영역인 경우가 많아, 중요도 샘플링 가중치가 급격히 커지는 현상이 발생합니다. - 이로 인해 전역 손실(Loss)이나 보상(Reward) 지표는 안정적으로 보임에도 불구하고, 도구 조건부 맥락에서만 특정 업데이트의 분산이 폭발하며 시스템이 서서히 붕괴되는 '꼬리 부분의 성장(Tail growth)' 현상이 나타납니다. **정밀한 진단을 위한 데이터 슬라이싱과 지표** - PTT는 전체 평균값에 매몰되지 않도록 상호작용 모드(텍스트 전용 vs 도구 이후)별로 진단 지표를 분리하여 계산합니다. - 핵심 지표인 '로그 비율의 95백분위수(95th percentile of |r|)'를 통해 평균적인 행동이 아닌 꼬리 부분의 이상 징후를 추적합니다. 실험 결과, 텍스트 전용 맥락은 안정적이어도 도구 이후 맥락에서는 이 수치가 지속적으로 상승하는 것이 확인되었습니다. - 가중치 집중도를 나타내는 '유효 샘플 크기(Effective Sample Size, ESS)'를 보조 신호로 활용하여, 특정 샘플이 업데이트를 주도하며 학습의 질을 떨어뜨리는지 감시합니다. **실패 사례의 오인과 대응** - 이러한 불안정성은 대개 비대칭적이고 지연되어 나타나기 때문에, 개발자들은 이를 최적화 알고리즘(Optimizer)의 문제나 전역적인 분산 제어 부족으로 오해하는 경우가 많습니다. - 단순히 배치 크기를 키우거나 베이스라인을 개선하는 것만으로는 참조 정책과의 지지 집합(Support) 불일치 문제를 근본적으로 해결할 수 없습니다. - PTT는 도구 호출이 외부 전이를 주입함으로써 발생하는 특수한 분산 증폭을 독립적인 실패 모드로 식별하며, 이를 조기에 시각화하여 운영자가 개입할 수 있는 근거를 제공합니다. 도구 사용 에이전트를 운영 환경에서 훈련시킬 때는 전역 보상이나 엔트로피에만 의존해서는 안 됩니다. TRL에 통합된 PTT를 활용해 도구 호출 전후의 지표를 분리 모니터링하고, 특히 로그 비율의 백분위수 변화를 주시하여 분포의 꼬리가 길어지는 현상을 조기에 차단하는 '드리프트 인식(Drift-aware)' 설정을 도입할 것을 권장합니다.

microsoft

상호작용이 모든 것을 (새 탭에서 열림)

마이크로소프트는 단순한 도구로서의 AI를 넘어, 개발 생명 주기 전반에서 함께 기획하고 분석하며 실행하는 ‘지능형 협업자’로서의 에이전트 활용 모델을 제시했습니다. 특히 수백 개의 리포지토리에 걸친 Entra SDK v1에서 v2로의 복잡한 마이그레이션 프로젝트에서, 에이전트를 팀원의 정체성을 가진 파트너로 대우함으로써 4~6주가 소요되던 작업을 2시간 이내로 단축하고 80~90%의 높은 정확도를 달성했습니다. 기술적 자동화의 한계를 극복하기 위해서는 AI에게 단순한 지시 사항을 나열하기보다 판단력을 발휘할 수 있는 역할과 맥락을 부여하는 프레임워크가 핵심입니다. ### 단순 자동화 사고방식의 한계 복잡한 기술적 마이그레이션은 단순히 기계적인 단계의 반복이 아니며, 맥락에 따른 판단과 보안 경계에 대한 세심한 평가가 필수적입니다. * 기존의 체크리스트나 스크립트 방식의 자동화는 모호한 상황이나 문서화되지 않은 커스텀 로직에 직면했을 때 반복적으로 실패했습니다. * 복잡한 작업에는 상황에 따른 판단(Judgment)이 필요하며, 이는 단순한 자동화 대상이 아니라 지능적인 협업을 통해 해결해야 할 영역입니다. * AI에게 단순히 "이 단계를 따르라"고 명령하는 방식은 에이전트가 예외 상황에서 잘못된 추측을 하거나 조용히 실패하게 만드는 원인이 됩니다. ### 지시를 넘어선 정체성 부여의 힘 성공적인 협업의 전환점은 AI 에이전트에게 단순한 작업 목록이 아닌, 구체적인 팀 내 역할과 미션을 부여했을 때 나타났습니다. * 에이전트를 '스크립트 실행자'가 아닌 '공동 창작 엔지니어(Co-creative engineer)'로 정의함으로써 문제 해결 능력이 극대화되었습니다. * 정체성이 부여된 에이전트는 단순한 패턴 매칭을 넘어 보안 경계를 인식하고, 불확실한 상황에서는 임의로 처리하는 대신 사람에게 질문을 던지기 시작했습니다. * 이러한 접근법은 에이전트가 작업의 중요성을 이해하고 우선순위가 충돌할 때 적절한 판단을 내릴 수 있는 심리적·맥락적 토대가 되었습니다. ### 공동 창작 파트너십 프레임워크의 8가지 요소 마이크로소프트가 실제 프로젝트에 적용한 프레임워크는 AI 에이전트가 인간과 같은 수준의 판단력을 발휘하도록 설계되었습니다. * **정체성과 미션(Identity & Mission):** 에이전트가 누구인지, 왜 이 일이 중요한지 설명하여 목표가 충돌할 때 우선순위를 정할 수 있게 합니다. * **목적과 의도(Purpose & Intent):** 속도보다 보안, 완료보다 정확성 같은 핵심 가치를 명시하여 판단의 기준을 제공합니다. * **우선순위가 지정된 목표(Key Goals):** 1차 목표부터 품질 목표까지 순위를 매겨 에이전트가 트레이드오프 상황에서 최선의 결정을 내리게 돕습니다. * **판단 지침이 포함된 단계별 가이드:** 단순한 행동 지침뿐만 아니라, 무엇을 보존해야 하는지 그리고 어떤 경우에 인간에게 에스컬레이션(보고)해야 하는지를 구체적으로 명시합니다. 복잡한 기술 부채 해결이나 대규모 아키텍처 변경을 고민하고 있다면, AI를 단순한 자동화 봇으로 활용하는 단계에서 벗어나야 합니다. 800줄의 상세 로직보다 더 중요한 것은 에이전트에게 팀의 일원으로서의 책임과 권한을 부여하는 프레임워크입니다. AI가 판단력을 발휘할 수 있도록 명확한 역할과 가치 기준을 제공할 때, 비로소 인간 개발자는 단순 코더가 아닌 '에이전트 오케스트레이터'로 거듭날 수 있습니다.

microsoft

AI 기반 코드 리뷰를 통한 대 (새 탭에서 열림)

마이크로소프트는 사내 풀 리퀘스트(PR)의 90% 이상에 AI 코드 리뷰 어시스턴트를 도입하여 매월 60만 건 이상의 리뷰를 처리함으로써 개발 생산성과 코드 품질을 획기적으로 높였습니다. 이 시스템은 단순 반복적인 리뷰 작업을 자동화하여 엔지니어가 아키텍처나 보안 등 고차원적인 문제에 집중할 수 있게 돕고, PR 완료 시간을 최대 20% 단축하는 성과를 거두었습니다. 마이크로소프트 내부에서 검증된 이 혁신 모델은 현재 깃허브 코파일럿(GitHub Copilot)의 PR 리뷰 기능으로 확장되어 전 세계 개발 생태계에 기여하고 있습니다. ### 기존 PR 리뷰의 페인 포인트 해결 * **저부가가치 피드백의 과중:** 리뷰어가 구문 오류나 명명 규칙 같은 단순 작업에 시간을 쏟느라 정작 중요한 설계상의 결함이나 보안 취약점을 놓치는 문제를 해결하고자 했습니다. * **리뷰 지연 및 컨텍스트 부족:** PR 규모가 크면 맥락 파악이 어려워 리뷰가 며칠씩 지연되기도 하는데, AI가 즉각적인 피드백을 제공하여 병목 현상을 제거했습니다. * **휴먼 에러 방지:** 수천 명의 개발자가 참여하는 대규모 환경에서 발생할 수 있는 일관성 없는 리뷰 품질을 AI를 통해 일정 수준 이상으로 상향 평준화했습니다. ### AI 리뷰어의 핵심 기능과 작동 방식 * **자동화된 체크 및 코멘트:** 스타일 불일치부터 널 참조(Null Reference), 비효율적인 알고리즘 등 논리적 오류를 식별하며, 예외 처리나 민감 데이터 포함 여부 등의 카테고리로 분류된 코멘트를 남깁니다. * **코드 수정 제안 (Apply Change):** 단순한 지적에 그치지 않고 구체적인 수정 코드를 제안하며, 개발자가 승인 버튼을 클릭하면 즉시 반영되는 워크플로우를 제공해 투명성과 책임성을 유지합니다. * **PR 요약 및 대화형 Q&A:** 복잡한 코드 변경 사항을 한눈에 알 수 있게 요약해 주며, "이 매개변수가 왜 필요한가?"와 같은 구체적인 질문에 AI가 답하는 인터랙티브 기능을 통해 코드 이해도를 높입니다. * **워크플로우 통합:** 별도의 UI나 도구 설치 없이 기존 PR 스레드 내에서 동료 개발자와 대화하듯 AI와 상호작용할 수 있도록 설계되었습니다. ### 품질 향상과 개발 속도 가속화 * **리뷰 사이클 단축:** 약 5,000개의 저장소 데이터를 분석한 결과, AI 도입 후 PR 완료 시간 중앙값이 10~20% 개선되었습니다. * **코드 품질의 상향 평준화:** 런타임 에러를 유발할 수 있는 API 호출 순서 오류 등을 미리 잡아내어 실제 배포 후 발생할 수 있는 사고를 미연에 방지합니다. * **멘토링 효과:** AI가 코드 한 줄마다 개선 방향과 이유를 설명해 주므로, 특히 신입 개발자들이 조직의 코딩 표준과 베스트 프랙티스를 빠르게 학습하는 데 큰 도움을 줍니다. ### 맞춤형 설정 및 에코시스템으로의 확장 * **팀별 맞춤 가이드라인:** 각 팀의 특성에 맞는 리뷰 프롬프트를 설정할 수 있어, 과거의 크래시 패턴을 분석하거나 특정 배포 게이트(flight gates) 준수 여부를 확인하는 등 특화된 리뷰가 가능합니다. * **1P-3P 선순환 구조:** 마이크로소프트 내부(1P)에서 검증된 기능은 2025년 4월 정식 출시된 깃허브 코파일럿의 PR 리뷰 기능(3P)으로 이식되었으며, 외부 사용자들의 피드백이 다시 내부 도구의 발전으로 이어지는 구조를 확립했습니다. 개발 조직의 규모가 커질수록 리뷰의 일관성을 유지하고 속도를 높이는 것이 큰 과제입니다. 마이크로소프트의 사례처럼 AI를 단순한 도구가 아닌 '첫 번째 리뷰어'로 워크플로우에 깊숙이 통합한다면, 단순 반복 업무는 AI에게 맡기고 인간 개발자는 창의적인 설계와 비즈니스 로직에 더 집중할 수 있는 환경을 구축할 수 있을 것입니다.

microsoft

마이크로소프트 엔지 (새 탭에서 열림)

마이크로소프트는 자사 엔지니어들이 대규모 AI 애플리케이션을 구축하는 실제 방법론을 공유하기 위해 'How Microsoft engineers build AI' 비디오 시리즈를 새롭게 공개했습니다. 첫 번째 에피소드에서는 'Copilot for Azure' 내의 'Ask Learn' 플러그인 개발 사례를 통해 검색 증강 생성(RAG) 기술을 안정적으로 구현하고 확장하는 핵심 전략을 다룹니다. 이를 통해 개발자들은 기업 내부 데이터와 대규모 언어 모델(LLM)을 결합하여 정확하고 맥락에 맞는 AI 서비스를 구축하는 실질적인 통찰력을 얻을 수 있습니다. ### RAG 기술의 핵심과 활용 차별화 * RAG(검색 증강 생성)의 기본 개념을 정립하고, 모델의 가중치를 직접 수정하는 파인튜닝(Fine-tuning) 기술과 비교하여 RAG가 가진 차별적 우위를 설명합니다. * Copilot in Azure뿐만 아니라 Microsoft Security Copilot, Dynamics 365 Business Central 등 마이크로소프트의 주요 제품군에 RAG가 실제로 어떻게 적용되어 비즈니스 가치를 창출하는지 사례를 제시합니다. * 단순한 이론을 넘어, 실제 서비스 환경에서 LLM이 고유 데이터에 접근하여 답변의 신뢰도를 높이는 메커니즘을 상세히 다룹니다. ### 엔지니어링 단계에서의 도전 과제와 해결책 * RAG 시스템 구축 시 직면하는 주요 난관인 콘텐츠 선택, 데이터 전처리(Preprocessing), 그리고 성능 평가(Evaluation) 과정을 체계적으로 관리하는 방법을 공유합니다. * 플러그인이 사용자에게 최신 상태의 정확한 정보를 실시간으로 전달할 수 있도록 보장하는 혁신적인 엔지니어링 솔루션을 소개합니다. * 프로토타이핑 단계에서 흔히 발생하는 실수들을 짚어보고, 이를 방지하기 위한 데이터 관리 및 운영상의 베스트 프랙티스를 제안합니다. ### Ask Learn 플러그인 구현 사례 분석 * Azure 개발자들이 작업 흐름을 방해받지 않고 몇 초 만에 답을 얻을 수 있도록 설계된 'Ask Learn'의 실제 작동 시연을 포함하고 있습니다. * 제품 관리자(PM)와 수석 소프트웨어 엔지니어링 매니저 등 실제 개발 주역들의 인터뷰를 통해, 대규모 스케일에서 RAG 솔루션을 안정화하기 위해 사용된 구체적인 기술 스택과 의사결정 과정을 공개합니다. * 사용자의 질문 의도에 가장 적합한 문서를 검색하고 이를 기반으로 맥락에 맞는 답변을 생성하는 구체적인 워크플로우를 학습할 수 있습니다. 성공적인 AI 애플리케이션 구축을 위해서는 Microsoft Learn의 관련 문서와 가이드를 참고하는 것이 좋습니다. 또한, 현재 무료로 제공되는 GitHub Copilot이 포함된 Visual Studio IDE를 활용하면 RAG 기반 앱 개발을 더욱 효율적으로 시작할 수 있습니다.

microsoft

Dev Box 즉시 코 (새 탭에서 열림)

마이크로소프트는 개발 환경 설정 및 유지보수 시간을 단축하여 개발자 생산성을 높이기 위한 Microsoft Dev Box의 팀 맞춤화(Team Customizations) 및 이미지 생성 기능을 발표했습니다. 이 기능은 마이크로소프트 내부의 1ES(One Engineering System) 팀이 구축한 'Ready to Code' 환경을 기반으로 하며, 현재 3만 5천 명 이상의 내부 개발자들이 이를 통해 표준화된 고성능 개발 환경을 사용하고 있습니다. 결과적으로 복잡한 설정 과정을 자동화하고 팀별 요구사항에 맞춘 유연한 환경 구축이 가능해짐에 따라 기업 전반의 엔지니어링 효율성이 크게 향상될 것으로 기대됩니다. **Ready to Code 환경의 구현과 기술적 이점** * **보안 강화**: Azure 관리 ID(Managed Identity)를 활용하여 이미지 생성 과정에서 필요한 자산에 안전하게 접근하며, 승인된 소스의 아티팩트만을 사용하여 검증된 환경을 구축합니다. * **성능 최적화**: Dev Drive를 사전 구성하고, 보안을 유지하면서도 개발 성능에 최적화된 Windows Defender 설정을 적용하여 빌드 및 작업 속도를 높입니다. * **일관성 및 신뢰성**: 스마트 기본값(Smart Defaults)을 제공하는 템플릿을 통해 팀 간 환경 편차를 줄이고, "내 PC에서는 잘 된다"와 같은 파편화 문제를 해결합니다. * **유지보수 편의성**: Azure Bicep을 사용하여 이미지 정의를 코드화함으로써 복잡한 로직을 모듈화하고, Azure Pipelines를 통해 이미지 업데이트 및 트러블슈팅을 간소화합니다. **1ES 팀의 이미지 관리 및 배포 전략** * **엄격한 테스트**: 템플릿 업데이트 시 PR 완료 전 테스트 이미지를 빌드하고, 실제 고객 환경을 모방한 대규모 이미지 세트를 생성하여 안정성을 검증합니다. * **단계적 출시**: 내부 도그푸딩(Dogfooding)을 시작으로 단계별 릴리스를 진행하며, Bicep 모듈 레지스트리의 경로 태그를 활용해 릴리스 단계를 구분하고 긴급 패치를 신속하게 배포합니다. * **중앙 집중식 개선**: 1ES와 같은 중앙 엔지니어링 팀이 템플릿을 관리함으로써, 회사 전체의 'Ready to Code' 환경에 개선 사항을 일괄적으로 적용할 수 있습니다. **외부 확산 및 실용적인 활용 예시** * **샘플 템플릿 제공**: 마이크로소프트는 내부 템플릿의 핵심 기능을 오픈 소스 저장소(MSBuildSdks, eShop, Axios 등)에 적용해 볼 수 있는 샘플과 가이드를 공유했습니다. * **자동화된 워크플로우**: Git 저장소 복제, 패키지 복원, 빌드, 데스크톱 바로가기 생성 등을 선언적으로 정의할 수 있으며, MSBuild 및 dotnet 프로젝트를 기본적으로 지원합니다. * **이미지 체이닝**: 기본 이미지를 기반으로 파생 이미지를 만드는 '이미지 체이닝' 기능을 통해 반복적인 빌드 시간을 줄이고 효율적인 이미지 계층 구조를 설계할 수 있습니다. * **스마트 환경 설정**: 윈도우 OS 최적화, 긴 경로(Long Path) 활성화, 불필요한 저장소 기능 비활성화 등을 통해 개발 시나리오에 최적화된 환경을 자동으로 구성합니다. 개발 팀은 제공된 Azure Bicep 모듈과 샘플 파이프라인을 활용하여 자신만의 'Ready to Code' 환경을 구축하는 것을 권장합니다. 이를 통해 인프라 설정에 소요되는 리소스를 최소화하고 코드 작성에 더 집중할 수 있는 환경을 마련할 수 있습니다.

microsoft

일반적인 주석이 달린 (새 탭에서 열림)

마이크로소프트는 보안 토큰의 탐지 효율을 높이고 오탐을 최소화하기 위해 '식별 가능한(Identifiable)' 키 형식인 CASK(Common Annotated Security Standard) 표준을 공개했습니다. 이 표준은 고정된 시그니처와 체크섬 기술을 활용하여 소스 코드 내 보안 키를 즉각적으로 식별하고 차단할 수 있도록 설계되었으며, 엔지니어의 생산성을 저해하지 않으면서도 시스템의 보안 태세를 강화하는 것을 목표로 합니다. 마이크로소프트는 이 표준을 오픈소스로 공개하여 서비스 제공자들이 공통된 규격의 보안 키를 생성하고 생태계 전반의 보안 수준을 높일 것을 권장하고 있습니다. ### CASK 표준의 기술적 특징 * **특수 문자 배제**: CASK 키는 오직 알파벳과 숫자로만 구성된 Base62 문자열을 사용합니다. 이를 통해 별도의 이스케이프(Escaping)나 인코딩 과정 없이 모든 프로그래밍 환경과 컨텍스트에서 안전하게 전송 및 처리가 가능합니다. * **강력한 엔트로피 제공**: 각 키는 약 310비트 수준의 엔트로피를 보유한 52자의 무작위 데이터를 포함합니다. 이는 현재의 컴퓨팅 환경은 물론, 향후 양자 컴퓨팅 시대의 무차별 대입 공격(Brute-forcing)에도 대응할 수 있는 충분한 보안 강도입니다. * **이중 시그니처 구조**: 표준 자체를 나타내는 공통 시그니처인 `JQQJ`와 서비스 제공자를 식별하는 고정 시그니처(예: Azure DevOps의 경우 `AZDO`)를 함께 사용합니다. 이를 통해 스캐닝 도구는 단 한 번의 규칙 검사만으로도 키의 존재 여부와 출처를 매우 빠르고 정확하게 판별할 수 있습니다. ### 보안 운영 및 관리 최적화 * **생성 타임스탬프 내장**: 모든 CASK 키에는 생성된 월과 연도 정보가 포함되어 있습니다. 이 정보는 보안 사고 발생 시 대응 우선순위를 정하거나, 조직의 정기적인 키 순환(Rotation) 정책을 자동으로 강제하는 데 유용하게 활용됩니다. * **전용 테스트 키 정의**: 실제 보안 키를 외부에 노출하지 않고도 시스템 기능을 테스트할 수 있도록 예약된 테스트용 키 세트를 제공합니다. 개발자는 이를 통해 보안 제어 장치가 제대로 작동하는지 안전하게 검증할 수 있습니다. * **플랫폼별 확장성**: 표준 규격 내에 서비스 제공자가 자체적인 메타데이터를 인코딩할 수 있는 예약 공간을 유지합니다. 마이크로소프트는 이를 활용해 Azure 서비스에 특화된 추가 정보를 포함하고 있으며, 다른 제공자들도 이를 유연하게 확장할 수 있습니다. 보안 사고의 주요 원인인 비밀번호 및 키 유출을 근본적으로 방지하기 위해 서비스 제공자들은 CASK 표준 도입을 적극적으로 검토해야 합니다. 식별 가능한 키 형식을 채택하면 보안 스캔 도구의 비용을 낮추고 개발 워크플로우 내에서 실시간 차단이 가능해져 전체 소프트웨어 공급망의 안전성을 크게 향상시킬 수 있습니다.

microsoft

관리형 DevOps 풀 – 탄생 비 (새 탭에서 열림)

마이크로소프트는 전사적으로 파편화되어 있던 5,000개 이상의 자가 호스팅 Azure DevOps 풀을 '1ES 호스팅 풀(1ES Hosted Pools)'이라는 단일 서비스로 통합하여 인프라 효율성과 보안성을 극대화했습니다. 이 시스템을 통해 인프라 비용을 60% 이상 절감하고 개발자들이 인프라 관리 대신 제품 개발에 집중할 수 있는 환경을 구축했으며, 내부적인 성공을 바탕으로 최근 외부 고객을 위한 '관리형 데브옵스 풀(Managed DevOps Pools, MDP)'을 출시했습니다. ### 분산된 자가 호스팅 환경의 문제점 * **중복 투자와 비효율:** 수천 개의 팀이 각자 유사한 인프라 관리 도구를 구축하는 데 개발 자원을 낭비했으며, 자동 스케일링 기능 부재로 사용하지 않는 자원에 비용이 지출되었습니다. * **낮은 신뢰성 및 지원 체계:** 팀 규모에 따라 지원 수준이 달라 장애 발생 시 CI/CD 파이프라인 복구 속도에 차이가 발생했습니다. * **보안 및 규정 준수의 어려움:** 인프라가 파편화되어 있어 보안 패치 여부를 추적하기 어렵고, 전사적인 보안 정책이나 컴플라이언스 기준을 일괄 적용하고 감사하는 데 막대한 시간이 소요되었습니다. ### 1ES 호스팅 풀의 핵심 기술적 기능 * **유연한 네트워크 및 이미지 구성:** 사설 네트워크 연결을 지원하여 내부 패키지 저장소나 비밀 관리자에 안전하게 접근할 수 있으며, 팀별 맞춤형 이미지를 베이스 이미지 위에 구축해 사용할 수 있습니다. * **상태 유지 및 성능 최적화:** 기본적으로는 작업마다 새 에이전트를 생성하는 상태 비저장(Stateless) 방식이지만, 로컬 캐시 활용이 필요한 경우 상태 유지(Stateful) 옵션을 제공하며 디스크 공간에 따른 자동 리사이클링을 지원합니다. * **지능형 리소스 관리:** 다양한 Azure SKU 선택은 물론, 과거 데이터를 기반으로 한 에이전트 사전 예열(Standby Agents) 기능을 통해 파이프라인 시작 시간을 단축했습니다. * **비즈니스 연속성 보장:** 특정 지역의 장애에 대비해 여러 지역에 백업 풀을 구성하여 에이전트를 즉시 가동할 수 있는 체계를 갖추었습니다. ### 표준화 시스템 도입의 성과 * **비용 절감:** Azure SPOT VM 활용과 워크로드에 최적화된 SKU 선택, 데이터 기반의 자원 활용도 개선을 통해 인프라 비용을 60% 이상 줄였습니다. * **보안 강화 및 중앙화:** Confidential VM, Trusted Launch, SecureTPM 등 고급 보안 기능을 모든 풀에 일괄 적용했으며, 일관된 텔레메트리 데이터를 통해 규정 준수 여부를 즉각적으로 확인할 수 있게 되었습니다. * **개발 생산성 향상:** 수천 개의 자가 호스팅 풀이 수십 개로 줄어들면서 인프라 관리 부담이 사라졌고, 팀 간 이동 시에도 동일한 도구를 사용하게 되어 개발 환경 적응 기간이 단축되었습니다. 현재 자체적으로 VM 확장 집합(Scale Set)이나 자가 호스팅 에이전트를 운영하며 관리 부담을 느끼고 있다면, 마이크로소프트의 내부 운영 노하우가 집약된 **Managed DevOps Pools(MDP)**로 전환하는 것을 추천합니다. 이를 통해 보안 수준을 높이는 동시에 운영 비용과 관리 오버헤드를 획기적으로 줄일 수 있습니다.

microsoft

마이크로소프트에서 접근성을 (새 탭에서 열림)

마이크로소프트는 '세계 접근성 인식의 날(GAAD)'을 맞아 모든 개발자가 장애 여부와 상관없이 누구나 기술을 누릴 수 있도록 돕는 접근성 도구와 방법론을 제안합니다. 개발자는 복잡한 전문 지식 없이도 'Accessibility Insights'와 'Visual Studio'의 통합 도구를 활용해 개발 수명 주기 내에서 접근성 테스트를 손쉽게 수행할 수 있습니다. 궁극적으로 이러한 도구들은 단순히 규정을 준수하는 것을 넘어, 모든 사용자에게 공평하고 만족스러운 디지털 경험을 제공하는 것을 목표로 합니다. **FastPass를 통한 신속한 고부하 이슈 탐지** * Accessibility Insights for Web의 'FastPass' 기능을 활용하면 5분 이내에 사용자 경험에 큰 영향을 미치는 핵심 접근성 문제를 식별할 수 있습니다. * 오픈소스 엔진인 axe-core를 기반으로 한 자동화 체크를 통해 UI 코드를 작성하는 과정에서 즉각적인 피드백을 제공합니다. * 탭 정지(Tab Stops)와 같은 키보드 내비게이션 테스트를 포함하여, 스크린 리더나 확대 도구 사용자에게 혼란을 줄 수 있는 잘못된 포커스 순서를 바로잡도록 돕습니다. **Visual Studio 통합 접근성 검사기 활용** * Visual Studio 2022(버전 17.5 이상)에 내장된 접근성 검사기를 통해 별도의 도구 이동 없이 IDE 내에서 직접 문제를 발견하고 수정할 수 있습니다. * Accessibility Insights for Windows와 동일한 'Axe-Windows' 엔진을 사용하여 데스크톱 애플리케이션의 일반적인 접근성 오류를 정밀하게 감지합니다. * 개발 흐름을 유지하면서 동시에 접근성 스캐닝을 병행할 수 있어 개발 생산성과 포용성을 동시에 확보할 수 있습니다. **Quick Assess를 통한 정밀한 보조 테스트** * 자동화 도구로 감지하기 어려운 심층적인 이슈를 해결하기 위해 30분 이내로 수행 가능한 10가지 보조 테스트(Assisted tests)를 제공합니다. * 최근 업데이트를 통해 최신 웹 접근성 표준인 WCAG 2.2 기준에 대한 테스트 지원 및 안내 가이드를 도입했습니다. * 헤딩 레벨(Heading Levels) 검사 등 각 테스트 항목마다 해당 이슈가 왜 중요한지(Why It Matters)에 대한 설명과 함께 구체적인 수정 사례 및 리소스를 연결해 줍니다. 접근성 개선은 단순히 체크리스트의 항목을 지우는 작업이 아니라, 기술을 통해 모든 사람에게 평등한 기회를 제공하는 혁신의 과정입니다. 지금 바로 Accessibility Insights와 Visual Studio의 최신 기능을 개발 프로세스에 도입하여, 작은 단계부터 사용자 경험의 질을 높여보시길 권장합니다.

microsoft

Copy-on-Write 성능 및 디 (새 탭에서 열림)

Windows 11의 Dev Drive와 Copy-on-Write(CoW) 링크 기능은 대규모 코드베이스의 빌드 성능을 최대 43%까지 향상시키며, 특히 프로젝트 간 종속성이 깊은 C# 환경에서 탁월한 효율을 발휘합니다. 이 기술은 파일 데이터를 물리적으로 복제하는 대신 동일한 디스크 블록을 참조하는 방식을 통해 I/O 부하를 획기적으로 줄이며, Windows Server 2025 및 Windows 11 24H2에 기본 기능으로 탑재될 예정입니다. 개발자는 전용 도구를 통해 CoW 링크 상태를 모니터링하고 참조 누수를 관리함으로써 최적의 개발 성능을 유지할 수 있습니다. **레포지토리 빌드 성능 테스트 결과** - **C# 및 마이크로서비스 이점:** 프로젝트 간 종속성이 깊어 어셈블리 복사가 빈번한 C# 프로젝트나, 빌드 출력 시 대규모 마이크로서비스 레이아웃을 구성하는 환경에서 최소 10%에서 최대 43%의 빌드 시간 단축 효과가 확인되었습니다. - **언어별 차이:** C++ 프로젝트는 상대적으로 적은 수의 대용량 파일을 생성하고 복사 빈도가 낮아 C#에 비해 성능 향상 폭이 적었으나, 파일 복사 과정이 포함된 경우에는 여전히 이득을 보였습니다. - **병렬성 영향:** 빌드 초기 단계의 병렬 처리는 빨라지지만, 마지막 단계에서 거대 프로젝트들이 선형적으로 빌드되는 구조의 레포지토리는 전체 빌드 시간 단축 효과가 희석될 수 있습니다. **CoW 링크 및 블록 클론 식별 방법** - **참조 상태 확인:** `fsutil file queryExtentsAndRefCounts` 명령어를 사용하여 특정 파일이 CoW 링크인지, 즉 블록 클론(Block Clone) 상태인지 확인할 수 있습니다. - **Ref 카운트의 의미:** 출력 결과 중 `Ref: 0x4`와 같은 값은 해당 디스크 볼륨 내에서 4개의 파일 엔트리가 동일한 물리적 데이터 블록을 공유하고 있음을 나타냅니다. - **메타데이터 관리:** 각 클론된 파일은 참조 추적을 위해 최소 하나 이상의 클러스터를 별도로 사용하여 메타데이터를 관리합니다. **분석 도구(ProcMon, Xperf) 사용을 위한 필터 설정** - **필터 드라이버 허용:** Dev Drive는 보안과 성능을 위해 필터 드라이버 연결을 제한하므로, `fsutil devdrv setfiltersallowed` 명령을 통해 분석 도구 전용 필터를 허용 목록에 추가해야 합니다. - **Xperf 사용 시 주의사항:** 성능 측정을 위해 `FileInfo` 필터를 허용한 경우, 측정이 끝난 후에는 반드시 목록에서 제거하고 드라이브를 재마운트해야 합니다. 이를 방치하면 드라이브 성능이 지속적으로 저하될 수 있습니다. - **상시 허용:** ProcMon 필터와 같은 도구는 실제 분석 도구가 실행 중일 때만 부하를 주므로, 필요에 따라 허용 목록에 상시 유지해도 무방합니다. **참조 누수(Leaked References) 탐지 및 복구** - **클론 한계치:** Dev Drive의 기반인 ReFS는 데이터 블록당 최대 8,176개의 클론을 허용하며, 이를 초과할 경우 복사 오류(`STATUS_BLOCK_TOO_MANY_REFERENCES`)가 발생할 수 있습니다. - **관리 도구 활용:** 장기간 빌드를 반복하여 고립된 참조나 누수가 의심될 경우, 관리자 권한으로 `refsutil leak <드라이브명> /s` 명령을 실행하여 누수된 클러스터를 스캔하고 복구할 수 있습니다. - **사전 감지:** `/d` 파라미터를 사용하면 실제 수정 없이 누수 여부만 미리 파악할 수 있어 시스템 안정성을 점검하는 데 용이합니다. **실용적인 결론 및 제언** 대규모 프로젝트를 운영하는 팀은 Dev Drive 도입 시 NuGet 패키지 캐시를 소스 코드와 동일한 파티션에 배치하여 CoW 이득을 극대화해야 합니다. 또한, 빌드 성능 분석을 위해 필터 드라이버 설정을 변경했다면 성능 유지를 위해 분석 완료 후 불필요한 필터를 반드시 정리하는 습관이 필요합니다.