# Github Actions에서 DB를 실행하고, S3에 저장한 뒤, 공개 억세스 하기

> Clean Markdown view of GeekNews topic #18321. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18321](https://news.hada.io/topic?id=18321)
- GeekNews Markdown: [https://news.hada.io/topic/18321.md](https://news.hada.io/topic/18321.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-12-18T10:32:02+09:00
- Updated: 2024-12-18T10:32:02+09:00
- Original source: [wesql.io](https://wesql.io/blog/use-github-actions-as-database)
- Points: 10
- Comments: 13

## Summary

GitHub Actions와 S3를 활용하여 필요할 때만 임시 데이터베이스를 실행하고 데이터를 영구적으로 저장함으로써 비용을 절감할 수 있습니다. 이 방법은 단기적인 통합 테스트, 임시 데모, 간단한 개발 작업에 적합하며, 장기적인 데이터베이스 호스팅에는 적합하지 않습니다. GitHub Actions는 CI/CD를 위해 설계된 플랫폼이므로 장기적인 데이터베이스 호스팅이 필요하다면 Self-Hosted Runner나 별도의 데이터베이스 서비스를 사용하는 것이 좋습니다.

## Topic Body

- 개발 및 테스트를 위한 데이터베이스 운영 시 비용 및 복잡성 문제를 해결하기 위한 꼼수  
- 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 설정을 고려해야 함

## Comments



### Comment 32552

- Author: nodelay
- Created: 2024-12-20T09:39:50+09:00
- Points: 2

의도하지 않은 사용으로 보이는데요. 기술적으로 가능하다고 해서 권장되지 않는 방법을 의도적으로 사용하는 것은 지양해야 한다고 봅니다.   
"개발 및 테스트를 위한 데이터베이스 운영 시 비용 및 복잡성 문제를 해결하기 위한 꼼수" 라고 적혀 있으니 상식이 있으시면 잘 알아서 판단들 하시겠죠.

### Comment 32513

- Author: eajrezz
- Created: 2024-12-19T00:17:30+09:00
- Points: 2

하이럼의 법칙(https://www.hyrumslaw.com/)을 생각해보면,  
언젠가 누군가는 떠올릴 수 있는 방법이라고 생각합니다.  
  
하지만 다른 여러분이 말씀하시는 것처럼, 이런 오남용은  더 큰 불편을 가져오더라고요.

### Comment 32510

- Author: iolothebard
- Created: 2024-12-18T20:16:29+09:00
- Points: 2

깃헙 프티티어에서 깃헙 액션이 없어져봐야… 아… 이게 좋은거였구나…

### Comment 32506

- Author: freedomzero
- Created: 2024-12-18T16:26:20+09:00
- Points: 1

어뷰징 아니라고 생각합니다  
디비 하나 띄우는게 서버에 얼마나 부하를 준다고요.. 그리고 글에 따르면 잠깐만 띄우는 거니까요.

### Comment 32518

- Author: passerby
- Created: 2024-12-19T09:49:05+09:00
- Points: 2
- Parent comment: 32506
- Depth: 1

CI 과정에서 테스트 DB 띄우는것도 아니고 의도적으로 워크플로우를 지연시켜서 호스팅 DB 로 만드는데 문제가 있어 보이네요. '잠깐' 의 정의도 모호합니다.

### Comment 32531

- Author: freedomzero
- Created: 2024-12-19T10:34:10+09:00
- Points: 2
- Parent comment: 32518
- Depth: 2

"CI/CD 또는 테스트 워크플로의 일부로 필요할 때만" 인데요?

### Comment 32501

- Author: eclipsense
- Created: 2024-12-18T12:36:22+09:00
- Points: 1

유료 사용자라면 괜찮지 않을까요? 어차피 주어진 사용량 내에서 쓰는걸 텐데요.  
그 이상은 과금일 테구요.

### Comment 32504

- Author: savvykang
- Created: 2024-12-18T13:38:28+09:00
- Points: 1
- Parent comment: 32501
- Depth: 1

https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions  
  
괜찮다의 범위가 어디까지인지 모르겠지만 과금 여부가 명시되지 않은 상태에서 프로그램 테스팅 목적으로만 사용할 것을 권고한다고 문서에 명시되어 있습니다. 서비스 남용시 계정 해지 같은 권한은 당연히 Github에 있구요

### Comment 32496

- Author: kandk
- Created: 2024-12-18T10:55:22+09:00
- Points: 1

ㅋㅋㅋ 재밌네요. 이거해서 얼마아낄 수 있으려나..

### Comment 32495

- Author: bitofsky
- Created: 2024-12-18T10:46:49+09:00
- Points: 6

어뷰징입니다. 이런 행위로 소모되는 리소스만큼 선량한 개인과 오픈소스에 사용되어야할 리소스를 유용하는 것이고 github의 무료 제공 서비스 운용 비용을 상승시키며 결국 모두에게 전가된다고 생각합니다.

### Comment 32499

- Author: bitofsky
- Created: 2024-12-18T11:04:44+09:00
- Points: 3
- Parent comment: 32495
- Depth: 1

Actions로 코인채굴 하던때와 마찬가지로 이런 행위가 증가하면 점점 정책이 강화되겠죠.  
터널링을 막으려면 아웃바운드를 제약해야 할테니 일반 사용자들만 점점 더 불편하게 되버리고요.

### Comment 32497

- Author: zuppiy
- Created: 2024-12-18T11:01:52+09:00
- Points: 2
- Parent comment: 32495
- Depth: 1

동의합니다

### Comment 32492

- Author: xguru
- Created: 2024-12-18T10:33:01+09:00
- Points: 2

해커뉴스 댓글을 보니 이거 자체가 어뷰징이라는 비난이 있습니다.  
https://news.ycombinator.com/item?id=42397167  
이미 공개된 글이고, 이런게 가능하구나? 하는 수준으로 보시라고 한번 올려봅니다.
