dev💻/인프라 및 기타

[VsCode] 원격으로 페어 프로그래밍을 해보자 (Live share)

귤랑귤랑 2023. 9. 10. 01:53

재택 중에 동료와 페어 프로그래밍을 해보기로 했습니다.

동료분께서 진행 중인 웹 프로젝트에 참여하게 되어 간단한 버그 수정과 기능 추가를 하기로 했고 태스크 볼륨은 크지 않았지만 일단 제가 전체적인 코드를 잘 모르기 때문에 그때그때 옆에서 물어보면서 빠르게 적응할 수 있었습니다.

 

프로젝트 구조를 설명하자 다음과 같습니다.

 

Project(root)

⌞ server

⌞ client

 

최상위 폴더 밑에 서버(Node)와 클라이언트(React)가 있었고 각각을 로컬에서 실행하여, 페어 프로그래밍으로 수정한 코드의 실행 화면을 서로의 컴퓨터에서 볼 수 있게 하고 싶었습니다.

VsCode의 Live Share라는 익스텐션을 사용했고 여러 가지 세팅 과정에서 시행착오가 있었기에 팁을 작성해 봅니다. 제 생각엔 메인으로 진행하시는 분이 세팅을 잘해주셔야 공유받는 분들이 어려움 없을 것 같습니다.

 

 

공식 문서에서는 세션 생성자를 호스트(Host)라고 하고 이 세션에 접속하는 사람을 게스트(Guest)라고 합니다. 

 

먼저, 호스트의 설정을 시작해 보겠습니다.

Live Share 탭에서 Share 버튼을 눌러 세션을 만듭니다.

Live Share 초기화면

그러면 공유 링크가 생성이 되고 (처음 세션 생성 시 자동으로 클립보드에 복사되며 혹은 Invite participants를 눌러도 링크가 복사됩니다. 링크 예시 : https://prod.liveshare.vsengsaas.visualstudio.com/join?{영문숫자조합})

Share 후 초기 화면

그 후 터미널에서 서버와 클라이언트에서 각각 로컬에서 실행합니다. 이렇게 실행한 서버와 클라이언트를 모두 공유해야 게스트가 실시간으로 수정된 코드의 실행 화면을 볼 수 있습니다.

Shared Server 추가 버튼을 누르고 서버와 클라이언트의 포트를 입력합니다.

저는 클라이언트의 경우 13456이고 서버는 9899라서 두 개를 각각 추가해 주었고 결과 화면은 아래와 같습니다.

이제 게스트가 해당 항목을 클릭하면 웹 페이지를 볼 수 있게 됩니다!

 

하지만 사실 저는 처음에는 실행이 잘 안 됐습니다...

원인은 .env파일을 게스트가 읽을 수 없어서였습니다. 게스트에게 .env는 물론이고 몇몇 파일이 보이지 않는 문제가 있었습니다.

이때는 .vsls.json 파일을 추가해 주면 됩니다.

 

공식 문서에 따르면 보안상 문제로 호스트는 공유하고 싶지 않은 파일이 있을 수 있고 .vsls.json 파일에 명시하여 제외할 수 있습니다. (혹은 처음부터 아예 Read-only 모드로만 공유할 수도 있습니다.)

 

기본적으로 .gitignore을 포함하여 .gitignore 내부 내용은 게스트에게 보여주지 않습니다. 따라서, .vsls.json 파일에서 gitignore옵션 값을 변경하여 게스트가 파일을 볼 수 있도록 호스트께서 추가해줘야 합니다. 

none .gitignore contents are visible to guests in the file tree (assuming they are not filtered by a guest editor setting).
hide The default. Globs inside .gitignore are processed as if they were in the "hideFiles" property.
exclude Globs inside .gitignore are processed as if they were in the "excludeFiles" property.
{
    "$schema": "http://json.schemastore.org/vsls",
    "gitignore":"none",
    "excludeFiles":[
        "*.p12",
        "*.cer",
        "token",
        ".gitignore"
    ],
    "hideFiles": [
        "bin",
        "obj"
    ]
}

참고로, 만일 공유받는 사람이 .vsls.json 파일을 만든다면, 이 파일을 만든 사람은 파일이 만들어진 직후에 목록에서 사라져 버리는 현상을 발견하게 됩니다.🤣 .vsls.json 는 호스트에게만 보인다고 합니다.

 

이제 잘 실행되는 화면을 보고 뿌듯함을 느껴봅니다!👍

 

추가적으로 게스트에게 터미널 write권한도 줄 수 있습니다.

Shared Terminals 에서 (1)터미널을 추가하고 (2) Read/write 를 선택하면 공유받는 사람도 터미널을 사용할 수 있습니다.

 

 

 

Live Share는 실시간으로 코드를 공유는 물론이고 실행화면까지 공유할 수 있다는 점이 무척 편리했습니다. (처음에는 실행화면 공유할 줄 몰라서 포트포워딩으로 공유해줘야 하나 하고 꼬아서 생각했던..🥹)

남의 코드 짜는 모습도 보고 있으니 재미있고 헤매고 있으면 옆에서 바로 조언을 받거나 줄수도 있어서 피드백이 잘 되었던 것 같습니다. 처음이지만 즐거웠고 색다른 경험이었습니다! 

Live Share를 통해 코딩쇼(ㅎㅎ)를 즐겨보세요.