TWIG::2020.08.01

Today lolol·2020년 8월 1일
0

TWIG

목록 보기
14/17
post-custom-banner

new day

new days are coming to us

- git flow

git flow 란 무엇일까?

개발자들이 개발하는 환경은 local이라고 부른다. 각자의 컴퓨터에서 개발을 할테니 지역적 이라고 할 수 있겠다.

같은 프로젝트를 개발하는 여러 개발자들은 각각 개발한 내용을 push할텐데, 각각 pull request를 날리고 merge 승인을 내려줘서 병합하게 될 것 이다.

출처 : https://woowabros.github.io/experience/2017/10/30/baemin-mobile-git-branch-strategy.html ( 우아한 형제들, 기술 블로그 )

이런 상황에서 git flow에서 말하는 개발론은 이러하다.

개발하는 환경은 각각 다르고, 개발한 내용을 QA가 필요하니 각각 개발한 내용을 branch를 나눠서 업로드하면 어떨까?

그렇다면 어떤 기준으로 branch를 나눌지에 대한 질문이 생기게 된다.
어떤 기준으로 구분하는 것이 좋을까?

우선 local이 필요할 것 이다.
각 개발자들은 자신이 개발한 내용을 업로드할 저장소가 필요하니까.

그러면 다른 branch는 어떤 것들이 필요하게 될까?

크게 3가지로 구분해서 생각할 수 있을 것 이다.

1. 내가 개발하고 있는 곳 (develop)
2. 개발한 내용을 반영할 곳 (feature)
3. 실제 결과물을 저장하는 곳 (product version)

A successful Git branching model 에서는 5가지 branch를 제안한다.

이렇게 생각해보자. 🤔

우리가 만드려고 하는 프로그램에 검색 버튼을 추가하려고 한다. 이는 새로운 기능이니까 feature이다.

이 기능을 위해서 나는 local에서 개발할 것 이다. (local은 개발하는 장소니까, develop이라고 부르자.)

난 열심히 뚝딱 뚝딱 하고 나의 머리를 두들기며 새로운 기능을 개발했다.
그러면 구현된 기능을 속한 프로젝트에 반영하려고 할 것 이다.
그러나 바로 실제 사용에 적용하기엔 문제가 발생할 수 있으니 이를 미리 확인해야 할 것 이다. (QA가 필요한 순간이다.)
그러니 나는 구현된 기능을 feature에 업로드(push)할 것 이다.

feature에 저장된 내용을 확인해보니 아무 이상도 없고, 기존에 있던 기능들과 함께 잘돌아간다. 다음 달 9월에 이 기능을 업데이트하려고 하니, 우선 feature에 저장하고 9월 업데이트에 구현된 내용을 추가해야겠다.

9월이 되었다. prod(product)에 내가 구현된 내용을 관리자가 추가해주었다. 구현된 기능이 실제 프로그램에 추가되니 뿌듯한 기분이 든다.

여기까지가..

내가 git flow에 대해 이해한 내용이다. 그런데 우리는 branch에 대한 언급만 했다. branch로 충분할까?

프로그램은 서버에서 돈다.

내가 만든 프로그램이 서버에서 동작한다면, localserver는 다른 컴퓨터일 것 이다.

이 때...
  • 프로그램이 back-end api를 사용한다면?
  • back-end 서버가 dev, prod 구분되어 있다면?
  • apidev, prod 구분되어 있다면?

흠... 그렇다면 프로그램이 어디서 동작하는지에 따라서 다르게 동작할 필요가 생긴 것 이다. 어떻게 하는게 좋을까?

config file?

나는 python 개발을 하고 있다. 환경에 따라 다른 api를 호출하고 싶은 상황이다. 어떻게 처리하는게 좋을까?

다양한 방법이 있겠지만...

내가 선택한 방법은 config 파일을 생성하는 것 이다.
설정파일을 만들어서 그에 따라 다른 동작을 실행하는 것 이다.

cli에 주어진 arguments에 따라서, 다른 동작을 수행하는 것과 같은 동작을 구현하려고 하는 것 이다.

꼭 파일이 아니라 다른 방법을 환경을 저장할 수도 있다. (환경 변수, ip? os?)

python에서는 설정파일을 관리하는 parser를 지원하고 있다.
그러나 나는 간단한 방법을 사용할 것 이다.

현재 상황에서는 단순히 env가 무엇인지만 저장하면 되기 때문이다.

내가 선택한 방법은 .json 파일로 저장하는 것 이다. 정말 간단하다

// .config.json
{
  // 개발 환경이라는 의미
  "env" : "dev"
}

그리고 git에는 올리지 않는다. 그래야지, 각 컴퓨터에서 가진 config 파일에 내용이 덮어써지지 않는다. .gitignore.config.json을 추가해주었다.

오늘은 여기까지

profile
working making doing makes us 🤖
post-custom-banner

0개의 댓글