개요
혁신은 오늘날의 경쟁 환경에서 새로운 통화입니다. 라이드 쉐어링, 스트리밍 콘텐츠, 자율 주행 자동차 및 기타 서비스는 사람들의 일상 리듬을 근본적으로 바꾸어 놓았으며 시장을 거꾸로 뒤집고 경쟁 환경이 물리적 자산에서 디지털 환경으로 어떻게 이동했는지를 보여 줍니다.
이러한 유형의 우수한 디지털 환경은 잘 확립된 기업이 혁신하고 고객에게 더 빨리 가치를 제공할 수 있는 기업의 치열한 경쟁에 직면하는 혼란을 이끌고 있습니다. 경쟁하고 혼란을 피하기 위해 기업은 혁신 문화를 구축하고 가장 적합한 도구와 클라우드 서비스를 사용해야 합니다.
GitHub는 회사에서 다음을 수행할 수 있는 다양한 기능을 제공합니다.
- Azure 서비스 및 기능을 활용합니다.
- 그들의 관행을 현대화합니다.
- 이 문화적 변화 중에 더 민첩하고 혁신적이 되십시오.
회사는 오픈 소스 커뮤니티에 대한 GitHub의 연결성을 활용하고 Azure 서비스를 성공적으로 채택한 조직에서 수천 개의 반복적이고, 향상되고, 즉시 배포할 수 있는 클라우드 솔루션 예제를 찾을 수 있습니다. 이러한 솔루션을 손쉽게 빌려서 반복하여 비즈니스 요구에 맞게 조정할 수 있습니다.
GitHub를 사용하면 조직에서 팀 내에서 쉽게 공유할 수 있으므로 다음 애플리케이션 또는 워크로드를 더 빠르게 현대화하고 배포할 수 있습니다. 기업은 혁신의 핵심 신조인 InnerSource를 통해 오픈 소스 커뮤니티에서 공유 및 재사용, 협업 및 커뮤니케이션 등의 모범 사례를 빌려 조직 내에 적용할 수 있습니다.
오픈 소스 패키지의 보안에서 매일 작성된 지적 재산권에 이르기까지 전체 소프트웨어 공급망을 보호하는 것이 모든 회사의 주요 우선 순위가 되어야 합니다. 이 목표를 위해서는 전체 수명 주기 동안 통합 및 자동화할 수 있는 고급 보안 기술이 필요하며, GitHub 고급 보안 및 GitHub Actions와 같은 네이티브 GitHub 기능은 이러한 유형의 유연성을 제공합니다.
오픈 소스 자산 활용
매우 효과적인 조직은 OSS(오픈 소스 소프트웨어)를 최신 소프트웨어 개발의 필수 소프트웨어와 선택 사항으로 인식합니다. 이들은 의존하는 개발자 커뮤니티에 참여하고 안전한 플랫폼을 사용하여 OSS에 전략적으로 투자합니다. 결과적으로 이러한 조직은 신속하게 혁신을 경험하고, 경쟁업체를 능가하며, 위험을 최소화하면서 비용을 절감합니다.
OSS는 애플리케이션에 통합된 패키지, 라이브러리, 스크립트 및 종속성으로 구성됩니다. OSS에는 IaC(Infrastructure as Code), 설명서 및 잘 정의된 Azure 아키텍처에 대한 지침의 형태로 수천 개의 오픈 소스 자산이 포함되어 있습니다. Microsoft, 파트너, 공급업체, 고객 및 개인은 이러한 패키지를 OSS 커뮤니티에 기여합니다. GitHub에서 찾아서 수정, 재사용 및 특정 Azure 환경에 배포할 수 있습니다.
코드로서의 인프라
IaC는 설명 모델에 네트워크, 가상 머신, 부하 분산 장치 및 연결 토폴로지가 포함된 인프라를 관리하는 것입니다. IaC는 DevOps 팀이 소스 코드에 사용하는 것과 동일한 버전 관리 시스템을 사용합니다. 예를 들어 DevOps 팀은 동일한 소스 코드가 동일한 이진 파일을 생성한다는 원칙을 따릅니다. 또한 IaC 모델은 해당 원칙을 따르고 모델을 적용할 때마다 동일한 환경을 생성합니다. IaC는 CD(지속적인 업데이트)와 함께 사용할 수 있는 주요 DevOps 사례입니다.
IaC는 릴리스 파이프라인에서 환경 드리프트 문제를 해결하기 위해 발전했습니다. 이 기능이 없으면 팀은 개별 배포 환경의 설정을 유지해야 하며, 환경 간의 불일치로 인해 배포 중에 문제가 발생합니다. 모든 환경은 결국 자동으로 재현할 수 없는 고유한 구성인 눈송이가 됩니다. 눈송이를 사용하면 인프라 관리 및 유지 관리에는 오류에 기여하고 추적하기 어려운 수동 프로세스가 필요합니다. IaC를 사용한 인프라 배포는 반복 가능하며 구성 드리프트 또는 누락된 종속성으로 인한 런타임 문제를 방지합니다.
IaC를 사용하면 팀은 환경 설명을 변경하고 구성 모델의 버전을 변경합니다. 일반적으로 JSON과 같은 잘 문서화된 코드 형식입니다. 자세한 내용은 Azure Resource Manager 템플릿을 참조하세요. 개발자는 애플리케이션 소스 코드와 동일한 GitHub 리포지토리에서 IaC 코드를 호스팅하여 워크플로를 간소화하고 GitHub Actions에서 제공하는 IaC에 대해 동일한 CI(연속 통합) /CD 사례를 채택할 수 있습니다.
다양한 Azure 범위에서 사용자 지정 Resource Manager 템플릿을 배포하는 방법에 대한 예제는 AzOps GitHub 작업을 참조하세요. Resource Manager 템플릿 또는 IaC를 접하는 경우 GitHub에서 리포지토리를 찾아보 azure-quickstart-templates
고, 배포할 템플릿을 찾고, Azure에 배포 단추를 선택하여 작동 방식을 테스트할 수도 있습니다.
클라우드 패턴 구성 요소 및 모범 사례
다음 아키텍처 다이어그램은 GitHub DevSecOps 환경의 GitHub 및 Azure 구성 요소에서 실행되는 보안 검사를 강조 표시합니다.
GitHub 는 개발자가 오픈 소스 및 InnerSource 프로젝트에서 공동 작업하는 데 사용할 수 있는 코드 호스팅 플랫폼을 제공합니다.
Codespaces 는 온라인 개발 환경입니다. GitHub에서 호스트되고 Microsoft Visual Studio Code에서 제공하는 이 도구는 클라우드에서 완전한 개발 솔루션을 제공합니다.
GitHub 보안 은 여러 가지 방법으로 위협을 제거하기 위해 작동합니다. 에이전트 및 서비스는 리포지토리 및 종속 패키지의 취약성을 식별합니다. 또한 종속성을 현재 및 보안 버전으로 업그레이드합니다.
GitHub Actions 는 리포지토리에서 직접 CI/CD 기능을 제공하는 사용자 지정 워크플로입니다. '러너'로 불리는 컴퓨터가 이러한 CI/CD 작업을 호스팅합니다.
Microsoft Entra ID 는 Azure 및 Microsoft 365 및 GitHub와 같은 다른 클라우드 애플리케이션에 대한 액세스를 제어하는 다중 테넌트 클라우드 기반 ID 서비스입니다.
Azure App Service 는 웹앱을 빌드, 배포 및 크기 조정하기 위한 프레임워크를 제공합니다. 이 플랫폼은 기본 제공 인프라 유지 관리, 보안 패치 및 크기 조정을 제공합니다.
Azure Policy 는 팀이 클라우드 리소스에 대한 규칙을 적용할 수 있는 정책 정의를 통해 IT 문제를 관리하고 방지하는 데 도움이 됩니다. 예를 들어 프로젝트가 인식할 수 없는 SKU를 사용하여 가상 머신을 배포하려는 경우 Azure Policy는 문제에 대한 경고를 보내고 배포를 중지합니다.
클라우드용 Microsoft Defender는 하이브리드 클라우드 워크로드 전반에 걸쳐 통합 보안 관리 및 고급 위협 보호를 제공합니다.
Azure Monitor 는 성능 메트릭, 활동 로그 및 기타 애플리케이션 원격 분석을 수집하고 분석합니다. 이 서비스는 불규칙한 조건을 식별할 때 애플리케이션 및 담당자에게 경고합니다.
InnerSource
InnerSource 개요
많은 회사에서 InnerSource 라는 용어를 사용하여 엔지니어링 팀이 코드에서 함께 작동하는 방식을 설명합니다. InnerSource는 엔지니어가 Kubernetes 또는 Visual Studio Code와 같은 대규모 오픈 소스 프로젝트의 모범 사례를 사용하여 독점 소프트웨어를 빌드하는 개발 방법론입니다.
대규모 오픈 소스 프로젝트에는 수천 명의 참가자에 대한 조정 및 팀워크가 필요합니다. 가장 성공적인 프로젝트는 속도, 안정성 및 기능과 같은 미래 및 일상적인 사용자 요구에 대한 비전에 의해 구동됩니다. 이러한 프로젝트가 운영되는 규모는 몇 가지 교훈을 제공하며 회사가 InnerSource를 사용하여 더 빠르게 더 나은 소프트웨어를 빌드하는 데 도움이 될 수 있습니다.
GitHub의 끌어오기 요청 및 문제를 통해 협업 및 코드 검토는 개발 프로세스에 기본 제공됩니다. 내부 및 아웃소싱 팀은 작업을 공유하고, 변경 내용을 논의하고, 모든 피드백을 한 곳에서 얻을 수 있습니다. 이를 통해 조직은 내부적으로 전문 지식을 공유하고 다른 프로젝트에 대해 개발된 현장 테스트 솔루션을 재창조하지 않도록 방지할 수 있습니다.
InnerSource 프로젝트의 해부학
개인, 팀 및 리소스의 적절한 조합은 프로젝트의 성공을 보장할 수 있습니다. 많은 오픈 소스 프로젝트는 조직이 InnerSource 프로젝트를 관리하기 위해 기능 간 팀을 설정하는 데 도움이 되는 유사한 조직 구조를 따릅니다. 일반적인 오픈 소스 프로젝트에는 다음과 같은 유형의 사용자가 있습니다.
유지 관리자: 이러한 기여자는 비전을 추진하고 프로젝트의 조직 측면을 관리하는 역할을 담당합니다. 코드의 원래 소유자 또는 작성자가 아닐 수도 있습니다.
참여자: 이 사람들은 프로젝트에 무언가를 기여한 모든 사람들입니다.
커뮤니티 구성원: 이들은 프로젝트를 사용하는 사람들입니다. 대화에 적극적으로 참여하거나 프로젝트의 방향에 대한 의견을 표현할 수 있습니다.
더 큰 프로젝트에는 도구, 심사 및 커뮤니티 조정과 같은 다양한 작업에 초점을 맞춘 소위원회 또는 작업 그룹이 있을 수도 있습니다. InnerSource 프로젝트는 비슷한 구조를 따를 가능성이 높습니다. 많은 엔지니어링 조직은 개발자를 애플리케이션 엔지니어링, 플랫폼 엔지니어링 및 웹 개발과 같은 팀으로 분류합니다. 이러한 방식으로 조직을 구조화하면 자격을 갖춘 사람을 제외하는 사각지대를 남길 수 있습니다. 조직 전체에서 팀에서 지원하는 핵심 의사 결정 그룹을 구성하면 문제를 더 빠르게 해결하는 데 필요한 전문 지식을 규합하는 데 도움이 될 수 있습니다.
기업 내에서 기여자는 회사 전체의 개발자이며, 유지 관리자는 프로젝트의 리더이자 주요 의사 결정자입니다.
유지 관리자: 프로젝트의 비전을 추진하고 일상적인 기여를 관리하는 회사 내의 개발자, 제품 관리자 및 기타 주요 의사 결정자입니다.
참여자: 소프트웨어를 발전시키는 데 도움이 되는 회사 내의 개발자, 데이터 과학자, 제품 관리자, 마케터 및 기타 역할 기여자는 직접 프로젝트 팀의 일원이 아니라 코드 기여, 버그 수정 제출 등을 통해 소프트웨어를 빌드하는 데 도움이 될 수 있습니다.
자세한 내용은 백서 InnerSource 소개를 참조하세요.
자동화
GitHub Actions를 사용하면 사용자가 GitHub 리포지토리에서 직접 사용자 지정 워크플로를 만들 수 있습니다. 사용자는 작업을 검색, 생성 및 공유하여 CI/CD를 비롯한 모든 작업을 수행하고 완전히 사용자 지정된 워크플로에서 작업을 결합할 수 있습니다. 또한 다양한 프로그래밍 언어로 작성된 프로젝트를 빌드하고 테스트하는 CI 워크플로를 만들 수도 있습니다. 예제는 GitHub Actions 가이드에서 사용할 수 있습니다.
GitHub Actions는 IaC 개념과 CI/CD 사례를 결합하여 반복 가능한 방식으로 대상 환경을 프로비전하거나 업데이트하고 애플리케이션 자체를 패키징 및 배포하는 등 전체 엔드투엔드 배포 수명 주기를 자동화하는 데 사용할 수 있습니다.
예제:
Azure용 GitHub Actions는 Azure App Service, Azure Kubernetes Service, Azure Functions 등과 같은 Azure 서비스를 대상으로 하는 배포 프로세스를 자동화하는 방법을 간소화하기 위해 빌드되었습니다. Azure 시작 작업 워크플로 리포지토리에는 모든 언어 및 에코시스템의 웹앱을 빌드하고 Azure에 배포하는 엔드투엔드 워크플로가 포함되어 있습니다. GitHub 마켓플레이스를 방문하여 사용 가능한 모든 작업을 확인합니다.
안전
GitHub의 시프트 레프트 보안 기능
개발의 첫 번째 단계부터 DevSecOps는 보안 모범 사례를 준수합니다. DevSecOps는 왼쪽 이동 전략을 사용하여 보안 포커스를 리디렉션합니다. 마지막에 감사를 가리키는 대신 처음부터 개발로 이동합니다. 강력한 코드를 생성하는 것 외에도, 이 빠른 접근 방식은 문제를 쉽게 해결할 수 있을 때 조기에 해결하는 데 도움이 됩니다.
많은 보안 기능을 통해 GitHub는 DevSecOps 워크플로의 모든 부분을 지원하는 도구를 제공합니다.
- 기본 제공 보안 확장이 있는 브라우저 기반 IDE
- 보안 권고를 지속적으로 모니터링하고 취약하고 오래된 종속성을 대체하는 에이전트
- 소스 코드에서 취약성을 검사하는 검색 기능
- 개발, 테스트 및 배포의 모든 단계를 자동화하는 작업 기반 워크플로
- 보안 위협을 비공개로 논의하고 해결한 다음 정보를 게시하는 방법을 제공하는 공간
- Azure의 모니터링 및 평가 능력과 결합된 이러한 기능은 보안 클라우드 솔루션을 빌드하기 위한 뛰어난 서비스를 제공합니다.
예제:
GitHub DevSecOps 설치는 많은 보안 시나리오를 다룹니다. 가능한 사례는 다음과 같습니다.
- 보안 기능을 제공하는 미리 구성된 환경을 활용하려는 개발자.
- 영향을 받는 코드 및 제안된 수정 사항에 대한 세부 정보와 함께 up-to날짜, 우선 순위가 지정된 보안 보고서를 손쉽게 사용하는 관리자
- 코드에 비밀이 노출될 때 자동으로 새롭고 손상되지 않은 보안 장치를 획득해야 하는 간소화된 조직.
- 최신 또는 더 안전한 버전의 외부 패키지를 사용할 수 있게 되면 자동 업그레이드를 활용할 수 있는 개발 팀입니다.
자세한 내용은 다음을 참조하세요.
- GitHub의 DevSecOps: Azure 솔루션 아이디어
- Azure DevOps 파이프라인 내에서 GitHub 고급 보안을 사용하여 GitHub 리포지토리를 검사하는 코드
- 소프트웨어 공급망에 DevSecOps 적용
다음 단계
- 구현 팀(일반적으로 개발자 관리자 및 관리자로 정의된 몇 명의 개발자)을 선택하고 GitHub를 배포합니다.
- GitHub를 사용하는 방법을 향상시키기 위해 일반 및 고급 Git 워크플로에 대해 알아봅니다.
다음 링크는 GitHub에 대한 자세한 정보를 제공합니다.