- 개발 및 테스트를 위한 데이터베이스 운영 시 비용 및 복잡성 문제를 해결하기 위한 꼼수
- VPS, 클라우드 VM, 관리형 서비스 등은 지속적인 비용과 스토리지 요금이 발생
- 구성 작업이 복잡하고, 사용하지 않을 때도 리소스 비용을 지불하게 됨
- 대안: GitHub Actions와 S3를 활용한 데이터베이스 운영
- 필요할 때만 GitHub Actions로 임시 데이터베이스 실행
- AWS S3 또는 S3 호환 스토리지를 사용해 데이터를 영구적으로 저장
- 워크플로 종료 시 데이터는 유지되고, 실행 환경은 제거되어 비용 절감 가능
- 터널링을 통해 데이터베이스를 인터넷에서 임시로 공개 접근 가능
- 사용 시 주의사항
- 이 방식은 단기적인 통합 테스트, 임시 데모, 간단한 개발 작업에만 적합
- GitHub Actions를 장기 서비스 플랫폼으로 남용하지 말 것
- 지속적이고 장기적인 데이터베이스 호스팅이 필요하다면, Self-Hosted Runner 또는 별도의 데이터베이스 서비스를 설정하는 것이 적절
- GitHub 사용 정책을 준수하며 운영해야 함
핵심 아이디어
-
GitHub Actions의 임시 컴퓨팅 환경 활용
- CI/CD 또는 테스트 워크플로의 일부로 필요할 때만 MySQL 호환 데이터베이스를 실행
-
S3 호환 스토리지를 통한 데이터 영구 보관
- AWS S3 또는 Cloudflare R2 같은 오브젝트 스토리지에 데이터 저장
- 임시 환경이 종료되어도 데이터는 안전하게 오브젝트 스토리지에 보관됨
-
공개 접근을 위한 터널링
- 테스트나 데모를 위해 데이터베이스를 인터넷에 임시로 노출
-
단기적 사용에 적합
- 데이터베이스는 워크플로 실행 시간 동안만 동작
- 워크플로 종료 후 임시 컴퓨팅 리소스는 해제되며, 영구적인 호스팅 솔루션이 아님
-
완전 무료로 사용하려면
- Cloudflare R2와 같은 무료 티어를 제공하는 S3 호환 서비스를 고려
사용 사례
- CI/CD 통합 테스트: MySQL 호환 환경을 실제로 실행해 테스트 후 종료
- 임시 데모: 빠르게 공유 가능한 데이터베이스 인스턴스를 단기적으로 생성
- 단기 개발 작업: 지속적인 유지 관리 없이 실제 데이터베이스 환경에서 테스트 가능
- 권장하지 않는 사용 사례:
- 장기적인 데이터베이스 호스팅
- 항상 활성화된 공개 데이터베이스 엔드포인트 유지
- GitHub Actions 사용 정책 우회
- 중요: GitHub Actions는 지속적인 서비스 플랫폼이 아니라 CI/CD를 위해 설계되었음. 장기적인 데이터베이스 호스팅이 필요하다면 Self-Hosted Runner 설정을 고려해야 함
어뷰징입니다. 이런 행위로 소모되는 리소스만큼 선량한 개인과 오픈소스에 사용되어야할 리소스를 유용하는 것이고 github의 무료 제공 서비스 운용 비용을 상승시키며 결국 모두에게 전가된다고 생각합니다.
Actions로 코인채굴 하던때와 마찬가지로 이런 행위가 증가하면 점점 정책이 강화되겠죠.
터널링을 막으려면 아웃바운드를 제약해야 할테니 일반 사용자들만 점점 더 불편하게 되버리고요.
의도하지 않은 사용으로 보이는데요. 기술적으로 가능하다고 해서 권장되지 않는 방법을 의도적으로 사용하는 것은 지양해야 한다고 봅니다.
"개발 및 테스트를 위한 데이터베이스 운영 시 비용 및 복잡성 문제를 해결하기 위한 꼼수" 라고 적혀 있으니 상식이 있으시면 잘 알아서 판단들 하시겠죠.
하이럼의 법칙(https://www.hyrumslaw.com/)을 생각해보면,
언젠가 누군가는 떠올릴 수 있는 방법이라고 생각합니다.
하지만 다른 여러분이 말씀하시는 것처럼, 이런 오남용은 더 큰 불편을 가져오더라고요.
해커뉴스 댓글을 보니 이거 자체가 어뷰징이라는 비난이 있습니다.
https://news.ycombinator.com/item?id=42397167
이미 공개된 글이고, 이런게 가능하구나? 하는 수준으로 보시라고 한번 올려봅니다.
CI 과정에서 테스트 DB 띄우는것도 아니고 의도적으로 워크플로우를 지연시켜서 호스팅 DB 로 만드는데 문제가 있어 보이네요. '잠깐' 의 정의도 모호합니다.
https://docs.github.com/en/site-policy/…
괜찮다의 범위가 어디까지인지 모르겠지만 과금 여부가 명시되지 않은 상태에서 프로그램 테스팅 목적으로만 사용할 것을 권고한다고 문서에 명시되어 있습니다. 서비스 남용시 계정 해지 같은 권한은 당연히 Github에 있구요