Close

소스 코드 관리

소스 코드 관리(SCM)는 소스 코드 리포지토리의 수정 사항을 추적하는 데 사용됩니다. SCM은 코드베이스의 변경 실행 기록을 추적하고 여러 기여자의 업데이트를 병합할 때 충돌을 해결하는 데 도움이 됩니다. 또한 SCM은 버전 제어와 같습니다.

소프트웨어 프로젝트의 코드 라인과 기여자 인원이 늘어남에 따라 커뮤니케이션 오버헤드와 관리 복잡성으로 인한 비용도 증가합니다. SCM은 개발 비용 증가로 인한 조직 차원의 부담을 완화하는 데 중요한 도구입니다.


소스 코드 관리 도구의 중요성


여러 개발자가 공유 코드베이스 내에서 작업할 때 공유 코드를 편집하는 것은 흔한 일입니다. 각각의 개발자가 겉으로는 분리된 것처럼 보이는 기능을 개발하고 있을 수 있지만 이 기능은 공유 코드 모듈을 사용할 수도 있습니다. 따라서 기능 1을 작업하는 개발자 1이 편집을 하고 나중에 기능 2에서 작업하는 개발자 2의 편집 내용과 충돌한다는 사실을 알게 됩니다.

SCM을 도입하기 전에 이는 악몽 같은 시나리오였습니다. 개발자들은 텍스트 파일을 직접 편집하고 FTP나 다른 프로토콜을 사용하여 원격 위치로 옮겼습니다. 개발자 1은 편집하고 개발자 2는 자신도 모르게 개발자 1의 작업을 덮어써서 저장하여 변경 사항은 삭제되었습니다. 이 특정 시나리오에 대한 보호 메커니즘으로서 SCM의 역할을 버전 제어라고 합니다.

SCM은 충돌 덮어쓰기로 인한 작업 손실을 방지하기 위해 버전 제어 보호 장치를 도입했습니다. 이러한 보호 장치는 각 개발자의 변경 사항을 추적하고 충돌 영역을 식별하고 덮어쓰기를 방지하는 방식으로 작동합니다. 그러면 SCM이 충돌 지점을 다시 개발자에게 전달하여 안전하게 검토 및 해결이 이루어지도록 합니다.

이러한 기본적인 충돌 방지 메커니즘은 개발 팀에 수동적인 커뮤니케이션을 제공한다는 부작용이 있습니다. 그러면 팀이 SCM에서 모니터링하는 진행 중인 작업을 모니터링하고 논의할 수 있습니다. SCM은 코드 베이스에 대한 전체 변경 기록을 추적합니다. 이를 통해 개발자는 버그 또는 회귀를 유발할 수 있는 편집 내용을 검사 및 검토할 수 있습니다.

Git 로고
관련 자료

Git 치트 시트

Bitbucket 로고
솔루션 보기

Bitbucket Cloud에서 Git에 대해 알아보기

소스 코드 관리의 이점


버전 제어 외에도 SCM은 공동 작업 중심의 코드 개발을 보다 사용자 친화적인 경험으로 만들어주는 여러 유용한 기능을 제공합니다. SCM이 시간 경과에 따른 프로젝트의 모든 변경 사항을 추적하기 시작하면 프로젝트 수명에 대한 자세한 기록이 만들어집니다. 그런 다음 이 기록을 사용하여 코드베이스에 대한 변경 사항을 '실행 취소'할 수 있습니다. SCM은 코드베이스를 이전 시점으로 즉시 되돌릴 수 있습니다. 업데이트에 대한 회귀를 방지하고 실수한 사항을 실행 취소하는 데 매우 유용합니다.

프로젝트 수명 기간 동안의 모든 변경 사항에 대한 SCM 보관은 프로젝트의 릴리스 버전 정보에 대한 중요한 기록을 제공합니다. 깔끔하게 유지 관리된 SCM 기록 로그는 릴리스 정보와 서로 바꿔서 사용할 수 있습니다. 최종 사용자 또는 개발 분야 이외의 팀과 공유할 수 있는 프로젝트 진행률에 대한 인사이트 및 투명성을 제공합니다.

SCM은 팀의 커뮤니케이션 오버헤드를 줄이고 릴리스 속도를 높입니다. SCM이 없으면 기여자가 릴리스의 중복되지 않는 개발 시퀀스를 계획하기 위해 추가적인 노력을 기울여야 하기 때문에 개발 속도가 느려집니다. SCM을 통해 개발자는 기능 개발의 개별 브랜치에서 독립적으로 작업하여 결국에는 함께 병합할 수 있습니다.

전반적으로 SCM은 엔지니어링 리소스가 더 효율적으로 활용되도록 하여 개발 비용을 낮추는 엔지니어링 팀에 상당한 도움이 됩니다. SCM은 최신 소프트웨어 개발 시대에 반드시 필요합니다. 전문 팀은 버전 제어를 사용하며 여러분의 팀도 마찬가지로 사용해야 합니다.

소스 코드 관리의 모범 사례


자주 커밋

커밋은 비용이 저렴하며 만들기 쉽습니다. 코드베이스에 대한 업데이트를 캡처하려면 자주 만들어야 합니다. 각 커밋은 필요한 경우 코드베이스를 되돌릴 수 있는 스냅샷입니다. 커밋을 자주 하면 작업을 되돌리거나 실행 취소할 수 있는 기회가 많습니다. 개발 로그를 명확히 하기 위해 rebase를 사용하여 커밋 그룹을 하나의 커밋으로 결합할 수 있습니다.

최신 버전에서 작업 중인지 확인

SCM을 사용하면 여러 개발자가 빠르게 업데이트할 수 있습니다. 코드베이스의 로컬 복사본이 전역 복사본보다 뒤처지기 쉽습니다. 업데이트하기 전에 최신 코드를 git pull 또는 가져와야 합니다. 이렇게 하면 병합 시 충돌을 방지하는 데 도움이 됩니다.

자세한 메모 작성

각 커밋에는 해당하는 로그 항목이 있습니다. 커밋을 만들 때 로그 항목은 메시지로 채워집니다. 설명이 포함된 커밋 로그 메시지를 남기는 것이 중요합니다. 커밋 로그 메시지에서는 커밋의 콘텐츠를 포함하는 “이유”와 “내용”을 설명해야 합니다. 이러한 로그 메시지는 프로젝트 개발의 정식 기록이 되며 향후 기여자가 검토할 수 있는 기록을 남깁니다.

커밋하기 전에 변경 사항 검토

SCM은 '스테이징 영역'을 제공합니다. 스테이징 영역은 편집 그룹을 수집한 다음 커밋에 기록하는 데 사용할 수 있습니다. 커밋 스냅샷을 만들기 전에 스테이징 영역을 사용하여 변경 사항을 관리하고 검토할 수 있습니다. 이러한 방식으로 스테이징 영역을 활용하면 커밋의 콘텐츠를 구체화하는 데 도움이 되는 버퍼 영역이 제공됩니다.

브랜치 사용

브랜칭은 개발자가 별도의 개발 라인을 만들 수 있게 해주는 강력한 SCM 메커니즘입니다. 브랜치는 빠르고 비용이 저렴하기 때문에 자주 사용해야 합니다. 브랜치를 사용하면 여러 개발자가 별도의 개발 라인에서 동시에 작업할 수 있습니다. 이러한 개발 라인은 일반적으로 서로 다른 제품 기능에 해당합니다. 브랜치에서 개발이 완료되면 개발의 메인 라인에 병합됩니다.

워크플로에 대한 동의

기본적으로 SCM은 매우 자유로운 형태의 기여 방법을 제공합니다. 팀이 공동 작업의 공유 패턴을 설정하는 것이 중요합니다. SCM 워크플로는 브랜치 병합을 위한 패턴과 프로세스를 설정합니다. 팀이 공유 워크플로에 동의하지 않으면 브랜치를 병합할 때 비효율적인 커뮤니케이션 오버헤드가 발생할 수 있습니다.

요약


SCM은 최신 소프트웨어 개발에 아주 중요한 도구입니다. 최고의 소프트웨어 팀은 SCM을 사용하며 여러분의 팀도 SCM을 사용해야 합니다. SCM은 새로운 프로젝트에 설정하기가 매우 쉽고 투자 수익이 높습니다. Atlassian에서는 시작하는 데 도움이 되는 몇 가지 세계 최고의 SCM 통합 도구를 제공합니다.


이 문서 공유
다음 토픽

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

도구로 가득한 벽을 사용하여 협업하는 사람들

Bitbucket 블로그

DevOps 일러스트레이션

DevOps 학습 경로

Atlassian 전문가와 함께 하는 Demo Den 기능 데모

Bitbucket Cloud가 Atlassian Open DevOps와 작동하는 방법

DevOps 뉴스레터 신청

Thank you for signing up