devcenter.heroku.com/articles/pipelines#deployment-with-pipelines
코드 통일성을 위해 파이프라인을 활용하고/ 동시 사용을 위해서 레포에 연결
파이프 라인은 단어 그대로 서버들이 연결되어있는 것이다. 즉 하나의 레포에서 동일하게 코드 관리가 쉽다.
하나의 레포에 여러 서버를 연결해두면 물론 좋겠지만, 그럼 각자 빌드를 해주어야 하고 그러다가 각 서버 배포마다 코드가 달라질 수 있기 때문이다. 이를 위한 관리가 파이프 라인이다.
1. 파이프 라인 만들기
깃헙 연결은 안해도 된다.
아래와 같은 화면이 나오면, 각 서버app들을 파이프라인내에 세팅하는 것이다.
여기서 staging과 production의 차이는,,?
staging은 말그대로 빌드를 해주는 다리 역할이다. 배포 하기에 좋은 단계로 DB설정등을 해두고, 해당 단계에서 빌드된 코드들을 production 서버에 promote해주면 아주 빠르게 코드의 변경 사항들이 그대로 전달된다.
따라서 이미 하나의 서버에 DB등의 설정을 해주었다면, 만들어진 서버에서 파이프라인을 만들어서 바로 연동하는것도 가능하다.
내가 만들어둔 서버를 클릭해서 deploy 탭으로 이동
위와 같은 화면에서 기존에 만든 파이프라인에 추가해주거나 새로 만들어주자.
그러면 헤로쿠 메인화면에서 아래와 같이 파이프라인이 생성된다.
이를 클릭하면 아래와 같은 화면이 뜬다. 나는 지금 이미 production에 서버를 만들어둔 상황이지만 보통은 비어있을 것이다.
실제 배포에 쓸 서버를 add app을 통해 만들어준다.
새로 만든 production 서버의 config 파일을 수기로 설정하여, DB연결 및 기타 세팅들을 맞춰준다
(이는 그대로 정보르 물고오지 않아서 직접!)
설정하고자 하는 서버의 settings 탭에 들어가면 아래와 같은 버튼이 보인다.
reveal config vars를 누르면 config 파일을 셋팅할수있다.
펼쳐진 config 파일은 원래 정보가 하나도 없을 것이다. 아래와 같이 정보들을 세팅해준다.
정보는 기존에 이미 세팅해둔 staging 서버의 config 파일을 그대로 복붙해온다.
여기서 중요한점!! DB를 같이 쓰기 위해서는 저기 datavase_url도 다 staging 서버와 동일하게 하자!
즉 production t서버에 별도로 db를 만들필요가 엄따!
이제는 터미널로 가서 heroku cli 명령어로 직접 배포 실행을 위한 세팅을 할 차례이다.
우선 만약에 기존에 세팅한 서버가 heroku이름으로 remote 되어 있다면. git remote remove heroku 로 삭제하자.
그리고. heroku git:remote -a "production 서버 앱 이름" 으로 remote 추가해주고,
git remote rename heroku "사용하게 될 remote 이름" 으로 heroku말고 다른 이름으로 변경해준다.
(이렇게 해주는 이유는, 여러 production 서버를 설정할 경우를 위해!)
위와 같은 방법으로 production 서버들을 remote 추가해준다.
staging 서버 추가해주기,
git remote add staging "staging 서버 깃 주소"
이렇게 해서 staging 서버를 remote 추가해준다.
세팅은 끝! 따라서 실제 사용하는 경우엔, 기존의 헤로쿠 명령어뒤에 -r "remote 이름" 을 하면 똑같이 명령어를 사용할 수 있다.
1. DB 세팅 / 빌드는 staging 서버에
가령 배포 서버 파일이 변경된 경우, git push staging main 으로 푸쉬해준다. (기존엔 heroku)
2. 그리고 아래의 명령어로 production 서버에 promote 해주기
heroku pipelines:promote -r staging
3. 그리고 서버 실행!(잘 되는지 보기위해 heroku logs --tail -r "각 remote 이름" 으로 확인
-> 여기서 서버 실행은 production 서버주소로
아래와 같이 두개의 서버 모두 잘 실행된다.
헤로쿠 파이프라인에 대한 개념은 우연히 접한 것이고 실제로 구글에도 정보가 그렇게 많진 않더라. 그런데 너무 편한 기능이라 이번에 사용해보았다. 따라서 실제 개념에 대해서 틀린 부분도 분명히 있을 수 있으며 그때 그때 수정해 나갈 예정이다!
'DevOps' 카테고리의 다른 글
Deploy Strategy 정리 (0) | 2021.01.06 |
---|---|
Deploy - AWS EC2 Instance 구축하기 (0) | 2021.01.05 |
Web server - apache vs NginX (0) | 2020.11.20 |
Heroku mysql DB 생성해주기 (0) | 2020.11.10 |
Heroku 이용해서 flask 서버 배포하기 (1) | 2020.11.10 |