스크립트 개발이라는 역동적인 환경에서 빈번한 업데이트와 협업 속에서 효율성과 일관성을 유지하는 것은 쉽지 않습니다. 본 발표에서는 Git 소프트웨어가 스크립트 협업 작업에 얼마나 강력한지 보여주고, 실수로 인한 삭제, 버전 관리, 수동 백업의 번거로움과 같은 일반적인 문제에 대한 해결책을 제시합니다.
Git은 팀워크에 필수적인 도구로, 여러 개발자가 동시에 프로젝트를 진행할 수 있도록 지원합니다. Git을 사용하면 모든 변경 사항이 자동으로 버전 관리되어 강력한 변경 이력을 제공하고, 이를 통해 팀은 손쉽게 변경 사항을 추적, 되돌리기, 검토할 수 있습니다. 또한, Git의 자동 백업 기능은 실시간으로 작업 내용을 안전하게 보호하여 데이터 손실 위험을 줄이고 전반적인 생산성을 향상시킵니다.
이 프레젠테이션에서는 Git의 구조와 설정 및 사용 방법을 설명한 후, 스크립트를 개발하는 방법을 보여줍니다.
Git 기반 JMP는 저희가 적극적으로 홍보하고자 하는 실천 방안입니다. 제 이름은 브리타 실버삭이고, 로슈 진단 부서에서 근무하고 있습니다. 저는 JMP 스크립팅 솔루션을 통해 과학자들을 지원하는 업무를 맡고 있습니다. 이 일을 시작하면서 로슈 컨설턴트로 일하던 베른트를 만났고, 이번에 다시 만나 이 프레젠테이션을 준비하게 되었습니다.
제 이름은 베른트 하이넨입니다. 예전에 JMP 선임 시스템 엔지니어로 일했던 저를 아시는 분들도 계실 겁니다. 지금은 컨설턴트로 활동하며 고객들이 통계를 이해하고 적용하는 것을 돕거나 JSL 코칭을 해드리고 있습니다. 얼마 전 브리타를 만났는데, 프로그래밍에 대해 이야기를 나누다가 JSL 개발에 Git 저장소를 활용하는 것을 장려하면 좋겠다는 생각을 하게 되었습니다.
Git이란 무엇일까요? Git은 분산 버전 관리 시스템입니다. JSL 스크립트를 Git 관리자 폴더에 저장하면, 스크립트 관리에 도움이 되는 다양한 기능을 활용하여 작업을 더욱 편리하게 할 수 있습니다. Git은 스크립트의 여러 시점을 스냅샷으로 저장하고, 백업, 버전 관리, 협업, 문서화 등을 체계적으로 관리할 수 있도록 지원합니다.
혼자서 프로그래밍 작업을 할 때도 Git의 모든 장점을 누릴 수 있습니다. 굳이 많은 인프라를 구축할 필요도 없죠. 백업을 위해 원격 서버에 복사본을 저장하는 것은 권장됩니다. Git의 진정한 힘은 협업 환경에서 발휘됩니다. 팀 구성원들은 같은 프로그램을 함께 작업하고, 각자의 버전을 저장소에 푸시한 후, 최종적으로 작업을 통합할 수 있습니다. Git은 모든 것을 가능하게 하는 핵심 도구이며, 기본적으로 명령줄 인터페이스를 통해 작동합니다. 하지만 Git에 GUI를 제공하고 기능을 확장해주는 다양한 추가 기능들도 존재합니다.
Git의 전형적인 워크플로우를 보여주는 짧은 영상을 제작했습니다. 이 영상은 Git 교육용 영상이 아니라 Git 사용자의 동기 부여를 위한 것입니다. Git과의 협업을 보여주기에 충분하면서도 간결하고 유익한 내용을 담았습니다. JSL 프로그래밍, Git에 스크립트 등록, 스냅샷의 개념, 저장소의 역할, 그리고 동일한 스크립트의 여러 버전을 병합하는 방법 등을 간략하게 소개합니다.
먼저 브리타의 노트북 화면을 보겠습니다. 그녀는 GitLab Cloud(Git 호스팅 옵션 중 하나)에 접속합니다. 'Take It Easy'라는 새 그룹을 만들고 저를 포함한 사람들을 초대합니다. 몇 번의 클릭만으로 가능합니다. 이 그룹에서 그녀는 'TryGit'이라는 빈 프로젝트를 새로 생성합니다. 기본 설정을 입력하고 프로젝트를 생성한 다음, 링크를 복사해서 노트북으로 돌아가거나 노트북에서 로컬로 작업합니다. 이 예제에서 사용하는 Git Extensions(다양한 확장 프로그램이 있습니다)를 이용해 링크를 붙여넣고 저장소를 복제하거나 복사합니다. 이렇게 하면 노트북에 빈 작업 공간이 생성됩니다.
이제 그녀는 당연히 JMP에서 JSL 스크립트를 작성하기 시작합니다. 작성이 끝나면 Git으로 관리되는 폴더에 저장합니다. 그런 다음 커밋(스냅샷)을 생성하고 현재 상태를 GitLab의 웹 저장소에 푸시하거나 업로드합니다.
이제 베른트의 노트북을 살펴보겠습니다. 그는 GitLab에서 원격으로 작업합니다. 제가 작업 그룹을 만들었을 때 베른트는 Git에서 이메일을 받았습니다. 그는 궁금해서 링크를 따라 원격 저장소로 이동했습니다. 프로젝트를 찾아봤는데, 당시에는 아직 아무 내용도 없었습니다. 그는 링크도 복사했습니다. 그리고 같은 절차를 따랐습니다. SSH로 암호화된 URL에서 저장소를 복제하고, 노트북의 어느 위치에 복제본을 저장할지 결정했습니다. 저장소에서 사용한 이름으로 폴더를 만들고 저장소를 열었습니다.
예상대로 빈 작업 공간만 표시됩니다. 안타깝게도 급한 전화가 또 와서 베른트에게 작업을 계속해달라고 부탁했습니다. 제가 JSL 코드를 업로드하자 베른트는 프로젝트의 현재 상태를 가져오거나 다운로드합니다. 그는 JMP에서 프로젝트를 열고 프로그램을 확장합니다. 변경 사항을 같은 파일에 저장한 후, Git 확장 프로그램으로 전환하여 새 브랜치를 생성합니다. 이렇게 하면 Git이 변경 사항을 추적할 수 있습니다. 현재 상태를 커밋하거나 저장하면 베른트는 프로그램이 추가된 위치를 확인할 수 있습니다. 그는 또한 해당 상태를 저장소에 푸시합니다. '확인'을 클릭한 다음 GitLab으로 전환합니다. 웹에서 새 브랜치가 생성된 것을 볼 수 있습니다. 베른트는 이 브랜치에 초점을 맞추고 새 병합 요청을 생성합니다.
병합 요청에서 저는 브리타를 검토자로 지정하고 메시지를 보냈습니다. 브리타는 이 메시지 또는 정보를 이메일로 자동으로 받았습니다. 지금 저희는 브리타의 노트북에서 확인하고 있습니다. 그녀는 이메일을 받고 링크를 따라 저장소로 이동하여 병합 요청을 확인합니다. 그녀는 해당 저장소로 이동하여 내용을 읽고 확인한 후 최종적으로 제 변경 사항을 승인합니다. Git은 변경 사항이 발생한 위치를 보여주고 병합이 완료됩니다.
이제 두 개의 서로 다른 브랜치가 다시 메인 브랜치로 합쳐졌습니다. 브리타가 프로젝트에 다시 합류했고, 우리는 각자 다른 작업을 병렬로 진행하기로 했습니다. 풀 리퀘스트를 통해 두 컴퓨터 모두에서 개발의 기본 기반이 동일하게 설정됩니다. 브리타의 작업 예시에서 보시는 것처럼, 그녀는 새로운 브랜치를 생성합니다. 이렇게 하면 Git이 그녀의 변경 사항을 추적할 수 있습니다. 저도 제 컴퓨터에서 같은 작업을 합니다(여기서는 보여주지 않지만). 그런 다음 각자 자신의 버전에서 프로그래밍 작업을 계속 진행합니다.
우리 둘 다 각자의 프로그램에 대한 커밋 또는 스냅샷을 생성합니다. 이전 스냅샷과의 차이점이 강조 표시되는 것을 확인하세요. 그런 다음 브랜치를 저장소에 푸시합니다.
브리타는 노트북으로 웹 저장소를 살펴보고 두 브랜치가 모두 있는 것을 확인합니다. 그녀는 자신의 브랜치에 댓글을 남기고 병합 요청을 생성한 후 저를 검토자로 지정합니다.
베른트는 지금 원격으로 일하고 있어서 노트북을 사용하고 있다. 웹 브라우저에 접속해서 병합 요청을 열고 승인했다. 메인 브랜치로 전환한 다음, 새 버전의 프로그램을 노트북으로 가져와서 자신의 브랜치에 초점을 맞추고 병합을 시작했다. 메인 브랜치를 자신의 '모델 맞추기' 브랜치에 맞추려는 것이다. 맙소사, 충돌이 발생했다.
이러한 상황을 완화하는 데 도움이 되는 도구들도 있습니다. 베른트는 meld 도구를 사용하여 프로그램의 여러 버전을 통합합니다. 여기에서 많은 차이점을 확인할 수 있습니다. 변경 사항을 쉽게 파악하고, 중복을 제거하고, 일부를 삽입하고, 다른 부분을 복사하여 붙여넣을 수 있습니다. 그는 변경 사항을 저장하고 다시 커밋한 다음 푸시합니다. 이제 우리 둘 다 현재 버전의 프로그램을 가져오고 두 부분이 모두 포함된 완성된 프로그램을 실행할 수 있습니다.
JMP 사용자라면 특히 주목해야 할 점은 전체 개발 프로세스와 현재 상태를 시각화할 수 있다는 것입니다. 단순히 Git 기능만 제공하는 것은 아니지만, Git에 대한 대화형 사용자 인터페이스를 제공하는 다양한 도구 중 하나가 함께 제공됩니다.
결론적으로 Git은 설정이 간편하고 사용하기 쉽습니다. 손쉬운 백업, 강력한 버전 관리, 그리고 동료와의 스크립트 공동 작업을 간소화해 줍니다. 이 글을 통해 Git의 사용법, 장점, 그리고 접근성에 대해 조금이나마 이해하는 데 도움이 되었기를 바랍니다. 이제 여러분도 책상으로 돌아가서 Git을 사용해 보세요.