항해14기 본과정/항해14기 개발일지

[항해 14기] 개발일지42 (실전프로젝트 - GIT Flow, CI 환경 구축)

스쿼트잘함 2023. 5. 25. 00:14

실전프로젝트 - 1주차

 

1. 회의 내역(BE 안건)

1) 주류 필터링 기준 변경

- 위스키테이블 db 수정 필요

 

2) 위스키/위스키바 크롤링

- 크롤링 구상 필요

- 위스키바의 경우 관련없는 사진이 포함되는 경우가 있음, 해당 부분 처리 로직 구상 필요

 

3) 예약 좌석 UI

- BE의 RES값 유지

 

4) 유저/점주 로그인

- 회원 가입 시 중복 검사에서 유저/점주의 테이블 모두 조회하여 중복 없도록 진행

- 유저는 소셜 로그인/가입만 가능하도록 변경

- 로그인 시 유저/점주 구분값 res로 전달

 

5) 로그인 및 인가 처리

- 로그인한 유저 타입에 따른 버튼 타입 변경 관련하여 res로 userid를 전달하여 프론트에서 전역관리

 

 

 

2. CI 환경 구축

1) CI란?

- Continuous Integration의 약자로, 지속적인 통합이라는 의미

- 개발자를 위한 자동화 프로세스, CI환경이 구현되면 협업 상황에서 여러 개발자가 동시에 코드 작업을 할 때, 서로 충돌하는 문제나 버그 등을 자동화 프로세스로 해결할 수 있다
- 자동화된 프로세스를 통해 개발자들은 코드 변경 사항을 main branch에 병합하는 작업을 훨씬 수월하게 자주 수행할 수 있다

- 코드를 수정하고 main branch에 merge를 시도할 때 자동화된 테스트(단위/통합)를 실행하고, 어플리케이션이 제대로 작동하는지 확인한 후에 merge를 하도록 만들 수 있다. 충돌이 발생하더라도, CI를 통해서 버그를 빠르게 찾고 수정 가능
- prettier와 es lint도 적용 가능

 

2) CI Tool 선정

- 레퍼런스 접근성, 비용, 입문 난이도 기준으로 선정

- github actions 와 jenkins가 최종 후보였는데, CD환경 구성 시 jenkins의 경우 EC2의 2개의 인스턴스가 필요하고 세부 설정 난이도가 높아 github actions로 선정

- 기타 CI/CD Tool : 아르고(쿠바네틱스 특화), AWS 코드시리즈(git환경 접근 어려움)

 

3) 세팅 참조 사이트

- Node.js Jenkins : https://choseongho93.tistory.com/290

- Node.js Github Actions : https://velog.io/@kangdev/Node.js-CICD-1%ED%8E%B8-CI-ft.-github-action

- Node.js Github Actions + AWS codedeploy : https://vanillacreamdonut.tistory.com/323

 

4) 구축 완료

ci 빌드과정 test, es lint, prettier 생략 / 추후 반영 예정

 

 

 

3. GIT Flow

- 기존에 사용하던 github flow에서 feature branch 추가

- upstream develop branch  : 참여자들이 fork한 origin dev branch에서 feature branch의 commit을 pr로 받음

- origin dev branch: upstream develop branch에서 pull만 받음

- feature branch : origin dev branch에서 뻗어나온 상태, 실제 기능 개발이 이뤄지는 branch

- main branch : 배포용 branch, 배포 직전 upstream develop branch에서 pr을 받음

 

 

 

4.트러블슈팅/회고

1) Node.js 버전 관리

- 설치된 노드 버전기반으로 코드가 저장되는줄 알았는데, 실제 코드는 js언어로 저장되는것이고, 해당 코드에 대한 런타임으로써 node.js가 실행된다는 점 인지

- nvm을 이용하여 node버전 관리 가능

 

2) git flow

- 현재 프로젝트는 github flow로 진행 중, 다음 프로젝트에 적용 예정

- hotfix branch 추가 공부 필요

- 기존에 upstream에 대한 개념이 부족하여 syncfork 후 origin에서 local로 pull해왔었는데, upstream에서 바로 pull해오는 방식으로 변경

3) CI

- 젠킨스가 레퍼런스가 많고 플러그인이 많아 진행하려 하였으나 CI 입문 단계에서 진행하기엔 세부설정이 복잡하기도 하고 EC2 비용 이슈 + github actions의 편리한 세팅으로 인하여 github actions로 선정

- ES Lint, Prettier, Test Code 에 대한 설정은 일정이슈로 인하여 프로젝트 1차 스코프 진행 후 Jest 공부와 함께 진행 예정