개발 수명 주기에서 GitHub가 어떤 단계에 적합한지 알아보기
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- 최신 개발자 툴킷의 필수 도구를 나열할 수 있습니다.
- 소프트웨어 개발 수명 주기(SDLC) 내에서 Git과 GitHub를 함께 작동하는 방법을 설명할 수 있습니다.
- 소프트웨어 개발 협력체계의 중심에 있는 GitHub의 위치에 대해 설명할 수 있습니다.
Git과 GitHub의 차이점
Git과 GitHub는 이름과 사명을 공유하지만 동일한 것은 아닙니다. Git과 GitHub의 차이를 정확히 구분하는 데는 시간이 약간 걸릴 수 있지만 괜찮습니다. 이전 유닛에서 두 가지에 대해 알아보았지만, 어떻게 함께 작동하는지 이해하기 위해 보다 자세히 배워보겠습니다.
Git은 버전 관리 애플리케이션입니다
즉, Git은 시간이 지남에 따라 프로젝트의 변경 사항과 관련된 모든 것을 추적하는 애플리케이션입니다. 몇 가지 주요 용어를 정의하는 것으로 시작하겠습니다.
-
저장소: 프로젝트를 컴파일링하는 데 사용되는 소스 파일 모음입니다.
-
커밋: 특정 포인트에 있는 프로젝트의 스냅샷입니다. 프로젝트에서 작업할 경우 커밋을 만들어 구분된 작업 단위를 추가하거나 제거할 때 포인트를 표시합니다.
-
브랜치: 시간이 지남에 따른 프로젝트의 변경 사항을 나타내는 일련의 커밋입니다. 모든 저장소에는 프로덕션에 준비된 버전의 코드를 포함하는 기본 브랜치가 있습니다. 새로운 기능을 개발하거나 버그를 수정하거나 프로젝트를 변경할 때 브랜치를 추가로 만들어 보세요. 이러한 브랜치는 테스트를 마친 프로덕션 코드와 별도로 실험 코드를 유지합니다.
-
병합: 두 개 이상의 브랜치가 병합된 내역입니다. 대부분의 경우 기능을 프로덕션으로 이동하기 위해 기능 브랜치를 저장소의 기본 브랜치 또는 배포 브랜치로 병합합니다.
-
태그: 이벤트에 대한 지속적인 참조를 제공하는 특정 커밋에 대한 포인터입니다. 일반적으로 태그는 애플리케이션이 출시된 시점을 나타내기 위해 시맨틱 버전 관리와 함께 사용됩니다.
GitHub는 협업 플랫폼입니다
GitHub는 코드 변경 사항을 적용하고 테스트할 수 있는 협업 기능이 있는 Git 저장소용 호스트입니다. Git 용어의 경우 GitHub는 원격으로 제공되므로 개발자에게 공유된 작업에 대한 신뢰할 수 있는 액세스 가능한 소스를 제공합니다. GitHub는 저장소에 대한 모든 Git 데이터에 액세스할 수 있을 뿐 아니라 GitHub에는 다음과 같은 몇 가지 핵심 용어가 있습니다.
-
Issues(문제): 프로젝트에 대해 일반적인 토론을 하고, 새로운 기능에 대한 플랜을 수립하고, 버그에 대해 논의합니다. 문제에서는 토론만 할 뿐, 코드에 대한 실제 변경 사항은 발생하지 않습니다.
-
Pull requests(풀 요청): 풀 요청은 기본 브랜치에 병합을 요청하는 커밋 패키지입니다. 풀 요청을 통해 제안한 변경 사항에 대해 논의하고 다른 팀 구성원을 초대하여 의견을 제시하고 코드 검토를 완료할 수 있는 기회를 제공할 수 있습니다. 또한 풀 요청은 자동화된 테스트 및 기타 다양하고 훌륭한 통합 결과를 확인하는 데 도움이 됩니다.
GitHub은 개발자가 작업을 가장 효율적으로 수행할 수 있도록 매우 투명하고 맥락을 확인할 수 있는 적합한 환경을 제공하도록 설계되었습니다.
다시 말해 Git은 버전 관리를 처리하고 GitHub는 협업을 처리합니다.
최신 개발자 툴킷
Git과 GitHub는 최신 개발자 툴킷의 핵심 부분입니다. Salesforce 앱과 마찬가지로 수백 명의 통합자가 사용자의 선호에 따라 GitHub의 기능을 사용자 정의하고 확장할 수 있는 도구를 개발했습니다. 이 성장하는 협력체계는 프로젝트 관리, 지속적인 통합 테스트, 배포, 코드 검토 등과 같은 필수 작업을 수행합니다. 개발자는 GitHub를 매일 사용할 수 있지만 사용되는 유일한 도구는 아닐 수도 있습니다.
다음은 몇 가지 주목할 만한 예입니다.
Github에는 변경하기 위한 간단한 UI가 포함되어 있지만 대부분의 개발자는 통합 개발 환경(IDE)에서 로컬로 작업하는 것을 선호합니다. Sublime Text, Salesforce Extensions가 있는 VSCode와 같은 최신 텍스트 편집기는 단순한 텍스트 편집과 사용자가 만든 수천 개의 패키지를 결합하여 워크플로를 개선하고 맞춤화할 수 있는 동일한 맞춤형 접근 방식을 적용함에 따라 사용성이 증대하고 있습니다.
지속적인 통합(CI) 및 지속적인 배포(CD) 애플리케이션은 워크플로에 추가할 수 있는 가장 강력한 도구입니다. GitHub를 사용하면 이러한 CI 및 CD 통합이 저장소에 저장된 사양을 기반으로 프로젝트를 테스트, 빌드 및 배포합니다. 이러한 통합을 통해 수동 테스트에 걸리는 시간과 스트레스, '내 컴퓨터에서는 작동하는 것'과 같은 불일치성, 다른 사람들이 간단한 검토 또는 테스트를 수행하는 동안의 대기 시간을 줄일 수 있습니다.
GitHub와 연동할 수 있는 다른 유형의 통합은 코드 품질 검사 도구, 의존성 관리, 심지어 자동화된 보안 검사에 이르기까지 무수히 많습니다. GitHub의 API와 웹후크를 사용하면 개발자가 필요로 하는 어떤 방식으로든 새로운 통합 기능을 쉽게 추가하고 맞춤화할 수 있습니다.
요구에 맞게 워크플로 맞춤화하기
무한하다고도 볼 수 있는 옵션을 갖춘 GitHub는 각 프로젝트의 세세한 요구나 취향에 맞게 맞춤화할 수 있습니다. GitHub의 기본 제공 프로젝트와 같은 가벼운 프로젝트 관리 솔루션이 필요하거나 ZenHub 통합과 같은 완전한 기능을 선호하는 경우에도 GitHub 협력체계에 다양한 옵션을 활용할 수 있습니다. 다음 유닛에서는 기본 GitHub 플로를 살펴보겠습니다. 하지만 해당 플로를 활용하는 방법은 여러분에게 달려 있습니다!