조직에서 Git을 사용해야 하는 이유
중앙 집중식 버전 제어 시스템에서 Git으로 전환하면 개발 팀이 소프트웨어를 만드는 방식이 달라집니다. 또한 미션 크리티컬 애플리케이션을 위해 자사 소프트웨어에 의존하는 회사의 경우 개발 워크플로를 변경하면 전체 비즈니스에 영향을 미칩니다.
개발자용 Git
기능 브랜치 워크플로
Git의 가장 큰 장점 중 하나는 브랜칭 기능입니다. 중앙 집중식 버전 제어 시스템과는 달리 Git 브랜치는 비용이 저렴하고 병합하기 쉽습니다. 따라서 많은 Git 사용자에게 인기 있는 기능 브랜치 워크플로입니다.
관련 자료
Git 치트 시트
솔루션 보기
Bitbucket Cloud에서 Git에 대해 알아보기
분산 개발
SVN에서 각 개발자는 하나의 중앙 집중식 리포지토리를 가리키는 작업 복사본을 받습니다. 하지만 Git은 분산된 버전 제어 시스템입니다. 각 개발자는 작업 복사본 대신 전체 커밋 기록이 포함된 자체 로컬 리포지토리를 갖게 됩니다.
전체 로컬 기록이 있으면 Git의 속도가 빨라집니다. 네트워크 연결이 없어도 커밋을 만들거나, 파일의 이전 버전을 검사하거나, 커밋 간에 diff를 수행할 수 있기 때문입니다.
또한 분산 개발을 통해 엔지니어링 팀을 더 쉽게 확장할 수 있습니다. 누군가가 SVN에서 프로덕션 브랜치를 중단하면 수정될 때까지 다른 개발자가 변경 사항을 확인할 수 없습니다. Git에서는 이런 종류의 차단이 발생하지 않습니다. 모두가 자신의 로컬 리포지토리에서 작업을 계속할 수 있습니다.
기능 브랜치와 마찬가지로 분산 개발은 더 안정적인 환경을 만듭니다. 개발자가 자체 리포지토리를 없애더라도 다른 개발자의 리포지토리를 복제하여 새로 시작할 수 있습니다.
풀리퀘스트
Bitbucket과 같은 많은 소스 코드 관리 도구는 풀리퀘스트로 Git 핵심 기능을 향상시킵니다. 풀리퀘스트는 다른 개발자에게 브랜치 중 하나를 리포지토리에 병합하도록 요청하는 방법입니다. 이렇게 하면 프로젝트 리더가 변경 사항을 더 쉽게 추적할 수 있을 뿐만 아니라 개발자가 나머지 코드베이스와 통합하기 전에 작업에 대한 토론을 시작할 수 있습니다.
기본적으로 기능 브랜치에 첨부된 댓글 스레드이기 때문에 풀리퀘스트의 기능은 매우 다양합니다. 한 개발자가 어려운 문제에 직면하면 풀리퀘스트를 열어 나머지 팀원들에게 도움을 요청할 수 있습니다. 또는 후임 개발자들은 풀리퀘스트를 공식 코드 검토로 취급하여 프로젝트 전체를 망치고 있지 않는다는 확신을 가질 수 있습니다.
커뮤니티
많은 분야에서 Git은 새로운 프로젝트에 대해 기대하는 버전 제어 시스템이 되었습니다. 팀에서 Git을 사용하는 경우 신규 직원이 이미 분산 개발에 익숙할 것이기 때문에 워크플로에 대해 교육할 필요가 없을 가능성이 큽니다.
또한 Git은 오픈 소스 프로젝트에서 인기가 많습니다. 타사 라이브러리를 활용하고 다른 사용자가 자신의 오픈 소스 코드를 포크하도록 유도하기가 쉽습니다.
더 빠른 릴리스 주기
기능 브랜치, 분산 개발, 풀리퀘스트, 안정적인 커뮤니티로 얻을 수 있는 궁극적인 결과는 더 빠른 릴리스 주기입니다. 이러한 기능은 애자일 워크플로를 지원하여 개발자들이 작은 변경 사항을 더 자주 공유하도록 권장합니다. 결과적으로 중앙 집중식 버전 제어 시스템에서 흔히 볼 수 있는 모놀리식 릴리스보다 배포 파이프라인에서 변경 사항을 더 빠르게 푸시할 수 있습니다.
예상대로 Git은 지속적 통합과 지속적 제공 환경에서 아주 잘 작동합니다. Git Hooks를 사용하면 리포지토리 내에서 특정 이벤트가 발생할 때 스크립트를 실행할 수 있으므로 원하는 콘텐츠에 대한 배포를 자동화할 수 있습니다. 특정 브랜치에서 다른 서버로 코드를 구축하거나 배포할 수도 있습니다.
예를 들어, 누군가 풀리퀘스트를 병합할 때마다 개발 브랜치에서 가장 최근 커밋을 테스트 서버에 배포하도록 Git을 구성할 수 있습니다. 이러한 빌드 자동화와 동료 검토를 결합하면 코드가 개발에서 스테이징, 프로덕션으로 이동할 때 코드에 대해 큰 확신을 가질 수 있습니다.
마케팅용 Git
Git으로의 전환이 회사의 마케팅 활동에 어떤 영향을 미치는지 이해하기 위해 개발 팀이 향후 몇 주 안에 완료할 예정인 3가지 주요 변경 사항이 있다고 가정해 봅시다.
- 팀 전체는 지난 6개월 동안 작업해온 획기적인 기능을 마무리하고 있습니다.
- Mary는 기존 고객에게만 영향을 미치는 작고 관련성이 없는 기능을 구현하고 있습니다.
- Rick은 사용자 인터페이스에 절실히 필요한 업데이트를 수행하고 있습니다.
중앙 집중식 VCS에 의존하는 기존의 개발 워크플로를 사용한다면 이러한 모든 변경 사항은 하나의 릴리스로 합쳐지게 될 것입니다. 마케팅 팀은 획기적인 기능에 주로 초점을 맞춘 한 가지 발표만 할 수 있으며 나머지 두 업데이트의 마케팅 잠재력은 사실상 무시됩니다.
Git을 사용하면 개발 주기가 더 짧아져 이 모든 변경 사항을 개별 릴리스로 나누기가 훨씬 쉽습니다. 이를 통해 마케터들은 더 많은 내용을 더 자주 전달할 수 있게 됩니다. 위의 시나리오에서 마케팅 팀은 각 기능을 중심으로 하는 세 개의 캠페인을 구축하여 매우 구체적인 시장 부문을 타겟팅할 수 있습니다.
예를 들어, 획기적인 기능에 대한 대규모 PR 푸시, Mary의 기능에 대한 기업 블로그 게시물 및 뉴스레터 안내문을 준비하고 Rick의 기본적인 UX 이론에 대한 게스트 게시물을 준비하여 외부 디자인 블로그에 보낼 수도 있습니다. 이 모든 활동을 별도의 릴리스와 동기화할 수 있습니다.
제품 관리용 Git
제품 관리 팀에서 누리는 Git의 이점은 마케팅 팀과 거의 동일합니다. 릴리스 빈도가 높을수록 고객 피드백을 더 자주 받을 수 있으며 그 피드백에 대해 신속하게 업데이트할 수 있습니다. 지금부터 8주 후에 있을 다음 릴리스를 기다리는 대신 개발자가 코드를 작성하는 즉시 고객에게 솔루션을 푸시할 수 있습니다.
기능 브랜치 워크플로는 우선 순위가 변경될 때 유연성도 제공합니다. 예를 들어, 릴리스 주기 중간까지 진행했는데 시간 제약이 있는 기능을 위해 한 기능을 연기하려는 경우 문제가 되지 않습니다. 해당 초기 기능은 엔지니어링 팀이 돌아와 다시 작업할 때까지 자체 브랜치에 남아 있을 수 있습니다.
이와 동일한 기능을 통해 혁신 프로젝트, 베타 테스트, 신속한 프로토타입을 독립 코드베이스로 손쉽게 관리할 수 있습니다.
용 Git
기능 브랜치는 신속한 프로토타이핑에 적합합니다. UX/UI 디자이너가 완전히 새로운 사용자 흐름을 구현하거나 단순히 일부 아이콘을 바꾸려고 하든, 새 브랜치를 체크아웃하면 샌드박스 환경이 제공됩니다. 따라서 디자이너들은 기존 기능을 손상시킬 위험 없이 제품의 실제 작업 복사본에서 변경 사항이 어떻게 보일지 확인할 수 있습니다.
이와 같이 사용자 인터페이스 변경 사항을 캡슐화하면 다른 이해 관계자에게 업데이트를 쉽게 보여줄 수 있습니다. 예를 들어, 엔지니어링 부서의 책임자가 디자인 팀이 어떤 작업을 해왔는지 보고 싶다면 책임자에게 해당 브랜치를 체크아웃하라고 하기만 하면 됩니다.
풀리퀘스트는 한 단계 더 나아가 이해 관계자들이 새 인터페이스에 대해 논의할 수 있는 공식적인 공간을 제공합니다. 디자이너는 필요한 사항을 변경할 수 있으며 결과 커밋은 풀리퀘스트에 표시됩니다. 이렇게 하면 모두가 반복 프로세스에 참여하게 됩니다.
브랜치를 사용한 프로토타이핑의 가장 좋은 점은 변경 사항을 프로덕션에 병합하기가 변경 사항을 버리는 것만큼 쉽다는 사실입니다. 둘 다 해야 한다는 부담이 없습니다. 따라서 디자이너와 UI 개발자들은 최고의 아이디어만 고객에게 전달하도록 보장하는 동시에 실험도 해볼 수 있습니다.
고객 지원용 Git
고객 지원 팀과 고객 성공 팀은 업데이트에 대한 이해가 제품 관리자와 다른 경우가 많습니다. 고객이 전화하는 경우는 보통 어떤 문제가 발생했다는 뜻입니다. 해당 문제가 회사의 소프트웨어로 인해 발생한 경우 가능한 한 빨리 버그를 수정해야 합니다.
Git의 간소화된 개발 주기는 다음 모놀리식 릴리스까지 버그 수정을 연기하지 않도록 합니다. 개발자는 문제를 패치하고 프로덕션에 직접 푸시할 수 있습니다. 수정 속도가 빨라지면 고객 만족도가 높아지고 반복적인 지원 티켓이 줄어듭니다. 고객 지원 팀은 “죄송합니다. 바로 처리하겠습니다”라는 말 대신 “이미 해결했습니다!”라고 대답할 수 있습니다.
HR용 Git
소프트웨어 개발 워크플로에 따라 채용할 대상이 어느 정도 결정됩니다. 조직의 기술과 워크플로에 익숙한 엔지니어를 채용하는 것이 항상 도움이 되지만 Git을 사용하면 다른 이점도 얻을 수 있습니다.
직원들은 경력 성장 기회를 제공하는 회사에 마음이 끌리며, 크고 작은 규모의 조직에서 Git을 활용하는 방법을 이해하는 것은 모든 프로그래머에게 큰 도움이 됩니다. Git을 버전 제어 시스템으로 선택하는 것은 미래 지향적인 개발자들을 유치하는 결정을 내리는 것과 다름없습니다.
예산 관리자용 Git
Git은 효율성을 무엇보다 중요시합니다. 개발자의 경우 네트워크 연결을 통해 커밋을 전달하는 데 낭비되는 시간부터 중앙 집중식 버전 제어 시스템에 변경 사항을 통합하는 데 필요한 작업 시간까지 많은 시간을 절약할 수 있습니다. 또한 후임 개발자에게 안전한 작업 환경을 제공하여 인력을 더 효율적으로 활용할 수 있습니다. 이 모든 결과는 엔지니어링 부서의 수익에 영향을 미칩니다.
하지만 이러한 효율성은 개발 팀 이외의 팀으로도 확장됩니다. 마케팅 팀은 인기 없는 기능에 대한 자료에 에너지를 쏟는 일을 방지할 수 있습니다. 디자이너들은 적은 수준의 오버헤드로 실제 제품에서 새로운 인터페이스를 테스트할 수 있습니다. 또한 고객의 불만 사항에도 즉시 대응할 수 있습니다.
애자일은 무엇이 효과가 있는지 가능한 한 빨리 찾아내고, 성공한 노력을 확대하며, 성공하지 않은 노력은 제거합니다. Git은 모든 부서가 업무를 더 효율적으로 수행할 수 있도록 하여 모든 비즈니스 활동을 배가시키는 역할을 합니다.
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.