Chapter 4. 개발 환경 구축
VPN도 받았고, 메일도 됐고, 메신저도 가입했다. 노트북도 세팅 끝났다. 이제 정말 개발을 시작할 수 있을 것 같은데, 팀장님이 슬랙 메시지를 보냈다.
"GitHub 조직 초대 메일 보냈어요. 수락하시고 SSH 키 등록해주세요."
'GitHub 조직? SSH 키? 학교 때는 그냥 git clone 하면 됐는데...'
메일함을 확인한다. GitHub에서 온 메일이 하나 있다.
"You've been invited to join the Company organization on GitHub"
링크를 클릭한다. Accept 버튼이 보인다. 누르면 되는 건가? 근데 SSH 키는 뭐지? 어디서 등록하는 거야? 2FA는 또 뭐야?
'일단 Accept부터 누르고... 그 다음엔?'
손이 멈칫한다. 잘못 누르면 어떡하지. 팀장님한테 다시 물어봐야 하나. 근데 너무 쉬운 질문 같은데.
걱정하지 마라. 소스 저장소 접근 권한 받는 건 생각보다 간단하다. 여기서는 GitHub/GitLab 조직 초대 수락부터, SSH 키 등록, 2FA 설정, 그리고 처음 저장소를 클론받기까지 차근차근 알아보자.
회사는 보통 GitHub 또는 GitLab을 조직(Organization) 단위로 사용한다. 개인 계정이 아니라, 회사 전용 공간이다.
GitHub 기준:
You've been invited to join the [회사명] organization on GitHub
GitLab 기준 :
[회사명] invited you to join GitLab (GitLab 기준 예시는 회사마다 다를 수 있다)
1단계: 메일 링크 클릭
"View invitation" 또는 "Join organization" 버튼 클릭
브라우저에서 GitHub/GitLab 페이지가 열림
2단계: 로그인 확인
개인 GitHub/GitLab 계정으로 로그인되어 있는지 확인
로그아웃 상태라면 로그인
3단계: 초대 수락
"Join [회사명]" 버튼 클릭
또는 "Accept invitation" 클릭
4단계: 확인
"You are now a member of [회사명]" 메시지 확인
조직 페이지로 자동 이동
개인 GitHub 계정이 없다면 먼저 만들어야 한다.(설마 개발자인데 계정이 없진 않겠죠?) github.com에서 회원가입 후 이메일 인증까지 완료하자. 계정 이름은 본명이나 실명 기반으로 만드는 게 좋다. 회사에서 쓸 거니까.
간혹 2단계 인증을 사용안하는 회사가 있을 수 있다. 하지만 대부분의 회사에서는 보통 2FA 설정을 요구한다. 보안 강화를 위한 필수 절차다.
2단계 인증(Two-Factor Authentication)의 약자다. 비밀번호만으로는 부족하고, 추가로 휴대폰 앱에서 생성된 일회용 코드를 입력해야 로그인할 수 있게 만드는 보안 장치다.
왜 필요한가?
회사 코드는 민감한 자산이다
비밀번호 유출만으로는 접근 불가
GitHub/GitLab도 조직 단위에서는 2FA 필수로 설정하는 경우 많음
1단계: 인증 앱 설치
추천 앱:
Google Authenticator (구글 OTP)
Microsoft Authenticator
Authy
옆자리 동료와 같은 어플을 앱스토어 또는 플레이스토어에서 검색해서 설치하자. 만약 선택할 수 있다면 Google Authenticator를 추천한다. UI가 가장 편하다.
2단계: GitHub/GitLab 설정 페이지 이동
GitHub:
우측 상단 프로필 아이콘 클릭
Settings -> Password and authentication
Two-factor authentication -> Enable
GitLab:
우측 상단 프로필 아이콘 클릭
Preferences -> Account -> Two-Factor Authentication
3단계: QR 코드 스캔
화면에 QR 코드가 표시됨
인증 앱으로 QR 코드 스캔
앱에 6자리 숫자 코드 생성됨
4단계: 코드 입력
생성된 6자리 코드를 GitHub/GitLab에 입력
"Verify" 또는 "Enable" 버튼 클릭
5단계: 복구 코드 저장
복구 코드(Recovery codes) 화면이 뜸
이 코드들을 안전한 곳에 저장 (메모장, 비밀번호 관리 앱)
휴대폰 분실 시 이 코드로 로그인 가능
실전 팁 복구 코드는 반드시 저장하자. 휴대폰을 잃어버리면 2FA 앱도 사라진다. 복구 코드가 없으면 계정 복구가 거의 불가능하다. 개인 이메일로 복구 코드를 보내두자. 혹은 카카오톡 나에게 보내기로 백업해두자. 필자는 노션까지 해서 3중으로 백업한다.
SSH 키를 등록하면 비밀번호 없이 안전하게 Git 저장소에 접근할 수 있다. 그러므로 SSH 키가 필요하다. 비밀번호 없이 안전하게 Git 저장소에 접근하는 방법이다.
SSH(Secure Shell) 키는 일종의 디지털 신분증이다. 공개키와 개인키 한 쌍으로 이루어져 있다.
공개키: GitHub/GitLab에 등록
개인키: 내 컴퓨터에 보관
이 두 개가 짝이 맞으면 인증 성공. 비밀번호를 매번 입력하지 않아도 된다.
맥이나 리눅스 사용자는 터미널을 열고, 윈도우 사용자는 Git Bash나 PowerShell을 열어서 ssh-keygen 명령어를 입력하면 된다. 이메일 주소는 회사 이메일로 입력하자.
엔터를 치면 파일 저장 위치를 물어본다. 그냥 엔터를 치면 기본 위치에 저장된다. 그 다음 비밀번호(passphrase)를 설정할 수 있는데, 입력하거나 그냥 엔터를 쳐도 된다.
완료되면 개인키 파일과 공개키 파일 두 개가 생성됐다는 메시지가 뜬다. 보통 .ssh 폴더 안에 저장된다.
실전 팁 Passphrase(비밀번호)는 설정해도 되고 안 해도 된다. 설정하면 더 안전하지만, git 명령어 쓸 때마다 입력해야 한다. 회사 노트북이고 본인만 사용한다면 비밀번호 없이 만들어도 괜찮다.
키를 만들었으면 이제 공개키를 GitHub/GitLab에 등록해야 한다.
터미널에서 cat 명령어로 공개키 파일 내용을 확인할 수 있다. 파일 이름은 보통 id_ed25519.pub 또는 id_rsa.pub다.
터미널에 긴 문자열이 출력된다. ssh-ed25519나 ssh-rsa로 시작하는 전체 텍스트를 복사하면 된다. 맨 끝에 이메일 주소까지 포함해서 전부 복사해야 한다.
GitHub 웹사이트에 접속해서 우측 상단 프로필 아이콘을 클릭하고 Settings로 들어간다. 왼쪽 메뉴에서 "SSH and GPG keys"를 클릭한 후 "New SSH key" 버튼을 클릭한다.
Title에는 "회사 맥북" 또는 "개발용 노트북"처럼 구분하기 쉬운 이름을 입력한다. Key 칸에는 복사한 공개키를 붙여넣는다. "Add SSH key" 버튼을 클릭하면 끝이다.
GitLab 웹사이트에 접속해서 우측 상단 프로필 아이콘을 클릭하고 Preferences로 들어간다. 왼쪽 메뉴에서 "SSH Keys"를 클릭한다.
Key 칸에 복사한 공개키를 붙여넣고, Title에 "회사 맥북" 같은 이름을 입력한 후 "Add key" 버튼을 클릭한다.
SSH 키는 여러 개 등록할 수 있다. 회사 노트북, 개인 노트북, 데스크톱 각각 키를 만들어서 등록하면 된다. Title을 구분하기 쉽게 지어두면 나중에 관리가 편하다.
이제 회사의 GitHub/GitLab 조직 페이지에 들어가보자.
GitHub는 github.com/[회사명] 주소로 들어가면 조직 페이지가 나온다.
GitHub에서 조직 이름으로 검색하거나, 초대 수락 후 Organizations 목록에서 들어간다."Repositories" 탭을 클릭하면 저장소 목록이 쭉 나온다.
GitLab은 gitlab.com/[회사명] 주소로 들어가서 왼쪽 메뉴에서 "Projects"를 클릭하면 된다.
뭐가 보이나?
저장소(Repository) 목록이 쭉 나온다. 이름만 봐도 대충 뭐하는 프로젝트인지 감이 온다.
backend-api
frontend-web
mobile-app
data-pipeline
infrastructure
팀장님이나 멘토가 알려준 저장소부터 보자. 보통 "일단 backend-api 저장소부터 클론받아서 README 읽어보세요" 이런 식으로 안내한다.
저장소 이름을 클릭하면 README.md 파일이 바로 보인다. 이게 그 저장소의 설명서다. README에 뭐가 써 있나 알아보자.
이 프로젝트가 뭐하는 건지, 어떤 기술 스택을 쓰는지, 주요 기능이 뭔지 설명되어 있다.
설치 방법: 로컬에서 어떻게 실행하는지, 의존성 설치 명령어, 환경변수 설정 방법이 나와 있다. npm install이나 pip install 같은 명령어들이 보인다.
npm run dev나 python manage.py runserver 같은 실행 명령어가 적혀 있다.
테스트 : 테스트 실행 방법이 나와 있다. npm test나 pytest 같은 명령어들이다.
배포 : 배포 프로세스와 배포 스크립트 위치가 안내되어 있다.
기여 방법 : 브랜치 전략(develop, main 등), 커밋 메시지 규칙, PR 올리는 방법이 설명되어 있다.
README는 그 저장소의 교과서다. 소스보다 먼저 꼭 정독으로 읽어보자. 처음엔 이해 안 되는 부분이 많아도 괜찮다. 일단 한 번 쭉 읽어보고, 실제로 코드 클론받고 실행하면서 다시 읽으면 이해가 된다.
모든 저장소에 접근 가능한 건 아니다. 회사마다 권한 정책이 다르다.
Read (읽기): 코드를 볼 수 있고 클론도 가능하지만 커밋은 불가하다.
Write (쓰기): 브랜치 생성이 가능하고, 커밋과 푸시가 가능하며, PR 생성도 할 수 있다.
Admin (관리자): 저장소 설정을 변경할 수 있고 권한 관리도 가능하다. 보통 팀장이나 시니어만 가진다.
저장소 페이지 상단에 "Settings" 탭이 보이면 Admin 권한이 있는 거다. 보이지 않으면 Read 또는 Write 권한이다. 실전에서는 일단 클론 받아보고, 브랜치를 만들어보고, 푸시해보면서 확인하게 된다. 에러가 나면 권한이 없는 거다. 팀장님께 권한 요청하면 된다.
처음엔 Read 권한만 있는 경우가 많다. "저장소 코드 한번 읽어보고, 다음 주부터 본격적으로 작업할 거예요" 이런 식이다. Write 권한이 필요하면 팀장님께 "OO 저장소 Write 권한 부탁드립니다" 슬랙으로 요청하면 된다. 만약 관리자 권한을 주어졌다면 깃 사용을 매우 조심스럽고 신중하게 하자.
SSH 키 등록도 끝났다. 2FA도 설정했다. 조직 초대도 수락했다.
이제 회사 조직 페이지에 들어간다. 저장소 목록이 쭉 보인다.
backend-api, frontend-web, mobile-app, data-pipeline...
팀장님이 슬랙으로 메시지를 보냈다.
"일단 backend-api 저장소 README 읽어보세요. 내일 오전에 같이 코드 보면서 설명드릴게요."
저장소를 클릭한다. README.md가 펼쳐진다.
'와... 진짜로 회사 소스 코드다.'
스크롤을 내린다. 설치 방법, 실행 방법, 테스트 방법이 차근차근 적혀 있다. 아직 다 이해는 안 되지만, 내일 팀장님이 설명해주신다고 했으니까.
문득 깨닫는다.
'나... 이제 진짜 개발자 된 거구나. 회사 코드에 접근할 수 있는.'
GitHub 프로필 페이지를 연다. Organizations 섹션에 회사 로고가 보인다.
'드디어... 여기까지 왔다!'
설레는 마음과 동시에, 조금 떨린다. 내일부터는 진짜 시작이다.