<aside>
💡 부스트캠프 내에서 오프라인 모임을 개설하고 관리할 수 있는 서비스
</aside>
3주차 개발 사항
- Google OAuth
- CI/CD
- 전체적인 모임 기능 사용 기반이 될 CRUD 작업
Google OAuth
- 백엔드에서 대부분의 로직을 처리하고 있습니다.
- 이유는 Authorization code grant type 방식을 사용할까 했으나 NestJS의 Passport 모듈을 사용
- 대부분의 로직을 자동으로 처리해주었기에 클라이언트단에서 파라미터의 인가코드를 보내줄 필요가 없다고 판단하였습니다.
- accessToken과 refreshToken을 Set-Cookie 설정하여 보내 줍니다.
- Http-Only 쿠키 설정을 해제하여 보내 주는데, 클라이언트에서 accessToken에 접근하여 API 요청 헤더에 심어서 보내 주어야 하기 때문입니다.
- 보안 이슈가 있는 것은 알고 있으나, 대표 기능이 아니기 때문에 우선 이런 방식으로 처리하고 추후 개선할 예정입니다.
CI/CD
ncp 비용을 절감하기 위해 팀원의 개인 PC를 사용! 서버는 항상 떠 있는 상태
- 브랜치 관리 방식: Github flow와 유사한 방식으로, 현재는 develop 브랜치 하나에서 모든 feature를 작업
- 절차
- PR이 merge되어 develop 브랜치에 병합된다.
- github action을 통해 도커 이미지를 빌드한다
- 배포 서버에 ssh 접속한다
- 배포 스크립트를 수행하여 배포 서버에서 docker compose를 통해 컨테이너를 띄운다
Github Action Workflow
레포지토리의 frontend, backend 디렉토리에 각각 docker-compose.yml과 Dockerfile이 설정되어 있고 이를 통해 배포를 진행한다.
- Dockerfile을 사용해 프로젝트 빌드
- 배포 서버에 ssh로 연결해 배포 스크립트 실행
- 배포 서버에서 docker-compose를 이용해 서버가 재부팅