현재 까지 생각해본 방향은 cloudtype 을 사용하여 백엔드를 배포할 예정. 클라우드타입은 국내 클라우드 플랫폼으로 최근에 가파르게 성장하고 있는 곳임. 내부적으로 도커를 사용하여 특정 환경에 제한되지 않고 사용할 코드만 배포하면 나머지는 알아서 빌드 후 배포까지 처리해주는 것이 장점.
클라우드 타입을 이용하고자 하는 이유는 최대한 비용 부담을 줄이기 위해서임. AWS EC2 를 이용한 배포는 이미 해봤고, 현재 재개발 중인 현 프로젝트의 배포측면에서의 목표는 프론트엔드는 AWS S3 와 Cloud Front, Github Actoins 를 이용한 CI/CD 를 배포해보는 것이 주이므로 백엔드의 경우에는 최대한 간편하고 비용 효율적인 방향으로 배포 하고자 함. 다만 Github Actions 을 적극 사용하여 배포 자동화를 시도해보는 것이 백엔드에서의 최종목표임
비고
배포 현황
2024.06.12 배포 완료
프라이빗 저장소
해당 SQLite3 의 db 파일에는 개인 정보가 저장되어 있지는 않지만, 데이터 자체가 돈 이므로 이를 외부에 노출하는 것은 꺼려지는 상황. 따라서 코드 자체는 공개하고, DB 자체는 숨기기 위해 레포지토리를 공개용, 숨김용 두 개로 만들고, 숨김처리한 저장소를 통해 배포 진행 할 것
데이터베이스
데이터베이스의 경우 SQLite3 를 사용하고 있음. 프로덕션에서 사용하는 경우에 가볍고 경량화 되어 있다는 점에서 큰 장점이지만, 수백 MB 의 데이터를 저장하고, 이를 삽입, 삭제, 수정하는 쓰기 작업이 다수 유저에 의해 동시에 일어나면 성능 저하 문제가 발생함. 즉, 직렬화된 쓰기 작업 처리로 인해 동시성 제어 문제가 나타날 수 있음.
그러나, 현 프로젝트는 읽기 작업만 허용하고 있으며, 읽기 작업의 경우에는 SQLite는 다수 사용자에 의한 동시 읽기를 지원함. 따라서 동시성 제어 문제가 발생하지 않음
단, 쓰기 작업을 처리 중이라면 읽기 작업도 대기상태에 놓임. 이는 쓰기작업과 읽기 작업을 같이 처리하는 데이터베이스로서 사용한다면 성능 저하 문제가 큰 이슈가 될 수 있으나, 현재 프로젝트는 데이터베이스에 대한 읽기 작업만 허용하므로 이러한 이슈와 크게 연관되지 않음. 따라서 해당 SQLite3 를 프로덕션에서 사용해도 괜찮겠다라는 결론을 얻음
배포 방향
비고
배포 현황
프라이빗 저장소
데이터베이스
배포 과정 히스토리
[푸드피커] Github Actions 를 활용한 NodeJS 백엔드 배포 CI/CD 구축(With 국내 클라우드 플랫폼 Cloudtype)
배포 결과