[코인 자동투자 봇 제작기 3] Git branch 흐름 설계 및 코드 작성
지난번에 도커 설정, Git 설정, 기획서 작성 등을 마쳤다.
시험도 거의 끝나가고, 이번 글부터 본격적으로 코드 작성을 할텐데, 그 전에 개발 흐름부터 한번 짚고 넘어가보자...
개발 워크플로우
- GitHub에 새로운 repository 생성
- 로컬에 repository 복제 및 작업환경 설정
- Git flow 설정 (main, develop 브랜치 기본 구성)
- Feature 브랜치에서 개발 진행
- 개발 완료 후 develop 브랜치로 병합 및 테스트
- 최종 main 브랜치 병합
항상 이러한 루틴을 가지고 작업한다.
모든 작업은 develop 브랜치를 기반으로 해서 진행하고,
특정 기능을 개발할땐 feature 브랜치로 이동하여 개발한다.
이후에 기능이 완성되면 작업물을 다시 develop 브랜치로 옮기고,
미세 조정 과정을 거친 후 main 브랜치에 옮겨서 배포한다.
이러한 흐름을 git flow라고 하는데, 협업할때도 많이 쓰고, git을 사용하면서 특정 분기점을 잡는 데에 아주 효과적이다.
hotfix는 거의 안쓰고 release는 좀 쓰는 것 같다.
무튼 이런 흐름들을 git 명령어를 통해 구현해보자.
Git Flow 설정
VS code에서 제공하는 소스 제어 탭에서는 이렇게 git 흐름 상황을 확인할 수 있다.
기본으로 주어진 Main 브랜치에 develop을 추가해보자.
git branch develop
git push -u origin develop
위 명령어를 CMD창에 입력하면 develop 브랜치가 만들어진다.
develop 브랜치로 이동하려면 아래 명령어를 입력하자.
git checkout develop
이 명령어를 입력하면
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
이렇게 두줄이 뜰텐데, 그러면 성공적으로 이동한 것이다.
이제 약간의 추가설정이지만, Github에서의 기본 브랜치를 develop으로 바꿔두자.
Git hub에서 기본 브랜치 변경하기
main 브랜치는 배포할때만 사용하고, 실질적으로 많이 사용하는 브랜치는 develop이기 때문에, 바꿔두는것이 여러모로 편하다.
해당 화면 중앙 윗쪽을 보면 Settings 메뉴가 보인다. 이부분을 눌러 들어가면 바로 브랜치를 바꿀 수 있도록 메뉴가 주어져 있다.
Default branch에서 화살표 두개가 그려져 있는 버튼을 누르면 기본 브랜치를 바꿀 수 있다.
이후 나오는 경고문구는 크게 중요한건 아니다. 대충 새로운 커밋이나 풀 요청 등에서 예기치 못한 문제를 발생시킬 수 있다는 뜻이지만, 어짜피 아직 커밋한것이 그렇게 많지도 않고, 브랜치도 방금 만들어뒀기 때문에 괜찮다.
이제 github 설정까지 마쳤으니, 다시 로컬 환경으로 돌아가서 개발을 시작해보자.
Feature 브랜치 생성 후 개발하기...
우선 Feature 브랜치를 만들어보자.
git branch feature/config
git push -u origin feature/config
feature 브랜치를 만들 때에는 항상 슬래시를 치고 뒤에 구체적으로 개발하고자 하는 기능명을 적어준다. 지금은 아직 어떤 코드도 작성되지 않은 상태이니, config라는 이름의 기본 설정 브랜치를 따로 따서 초기 코드 흐름을 설계하고, 환경변수와 코드를 연결하는 기능을 개발할 것이다.
git checkout feature/config
다시 위와 같은 명령어를 입력해 config 브랜치로 이동해준다.
기초 공사 시작
현재까지의 파일 구조는 다음과 같다. main이라는 폴더를 만들어 그 안에 여러 코드파일과 함께 .env 파일을 넣어뒀다.
이들의 역할은 아래와 같다.
main.py # 메인 실행 스크립트
config.py # 설정 파일(API 키, 슬랙 URL, 기본 파라미터)
data_control.py # 거래소 API를 통한 시세 데이터 수집 및 업데이트 및 RSI, Bollinger Bands, OBV 등 지표 계산 strategy.py # RSI 기반 매매 시그널, 변동성 점수 산출 로직
order_executor.py # 주문 실행(시장가/지정가/Stop-Limit), 포지션 관리
notifier.py # Slack 등 알림 모듈
utils.py # 기타 보조 함수(타임프레임 변환, 필터링 등)
.env 파일의 역할은 암호화되어야 하는 정보들을 저장한다. 주로 api 키와 같은 정보들을 적어두고 활용한다고 생각하면 된다.
혹은 코드를 수정하지 않고 프로그램 자체의 매개변수로서 사용할 수도 있다. 나중에 서비스를 배포할 때에 자세히 설명할 예정,
우선 여기까지 마무리하고, 다음 글에서 코드 흐름 설계를 시작해보겠다...