아래 글들은 프리프로젝트로 만든 Stack Overflow 에 대해서 배포를 진행 할 때 어떻게 하면 좋을지 정리해놓은 자료이다. 여러 블로그 글을 서칭하면서 최대한 무료 배포 할 수 있는 방향으로 여러가지 생각들을 하며 조사를 했다. 아마 사이드 프로젝트나 이런 프리 프로젝트에서 무료로 어떻게 배포해야 하는가 찾고 있는 사람들에게는 좋은 자료가 될 것 같아서 각 블로그 링크들과 함께 공유한다.
1. AWS S3(프론트) + EC2 + RDS 프리티어 계정 (1년간 한도내에서 무료)
참고 블로그 : https://congabba.tistory.com/446
<특징>
- S3 : 5GB(표준 스토리지), 20,000건 GET 요청, 2,000건 PUT 요청 무료
- EC2 : 월별 750시간 동안 컴퓨팅서비스 무료 (인스턴스 한달 풀로 사용가능)
- RDS : 인스턴스 1개, 월별 750시간, db.t2.micro 타입, 데이터베이스 스토리지 20GB
- 중요사항 : 오토 백업 ❌, 스토리지 자동 조정 옵셥 끄기, MUlti-AZ와 고성능 I/O Provisioned IOPS Storate 사용 금지
- 위의 링크를 참조해서 생성!! 안그럼 요금 폭탄 참고로 어떤 블로그는 500만원 뚝딱
- 개인키 절대 노출금지, github 해킹으로 1755만원 청구 나온 사람도 있음
<설명>
S3를 정적 사이트 배포(프론트)에 사용하고 EC2를 백엔드 API 서버 그리고 RDS를 데이터베이스로 사용하는 방법이다. 이렇게 하면 프론트 배포가 쉽고 같은 AWS 안에서의 보안 정책을 통해서 접근 자체를 AWS 내부적으로만 가능하게 만들 수 있다. EC2나 S3 같은 경우 프리티어 사용에 관한 글이 워낙 잘나와있고 세팅이 잘되어있어서 특별히 따로 지출 될 부분이 없는데 RDS 같은 경우에는 프리티어 설정을 해도 자동 백업이라던지 자동 변환을 설정을 막아놓지 않으면 예상치못한 질출이 될 우려가 있다. https 통신을 구축하려면 AWS의 다른 서비스를 이용해야한다.
2. Netlify/Vercel(프론트) + EC2 + RDS (백엔드) 프리티어 계정
- 장점 : Netilify 같은 프론트를 위한 무료 호스팅의 범위가 굉장히 넓다(월 100GB 트래픽) (트래픽이 많지 않다면 거의 무료)
- 해결 해야 하는 문제 : Netlify는 기본적으로 https를 사용하기 때문에 http를 사용하는 EC2에 요청을 보낼 수 없음
- https 통신을 하기 위해서는 인증서 발급 필요 (90일 무료 인증서 : https://shanepark.tistory.com/442)
- Netlify(프론트), AWS Elastic Beanstalk 배포 블로그 : https://velog.io/@760kry/프론트엔드netlify-백엔드AWS-Elastic-Beanstalk-배포
- AWS Certificate manager 인증서 : https://jojoldu.tistory.com/434
- Ngninx + Certbot을 통한 인증서 발급 EC2 실행 : https://velog.io/@jihyunhillpark/2.-spring-boot-기반-앱-배포-Cerbot-인증서-발급과-SSL-적용
- 가장 핵심 ✨ AWS CloudFront : https://inpa.tistory.com/entry/AWS-📚-CloudFront-개념-원리-사용-세팅-💯-정리 AWS CloudFront를 사용하면 웹서버 EC2가 http 통신이어도 CloudFront를 통해 https 통신이 가능
3. EC2 + EC2 또는 EC2 내부에 도커를 통해 FE, BE 통합하여 호스팅
- EC2 + EC2 는 정적 웹사이트 배포를 해결 + 프리티어 사용시간이 반으로 감소
- EC2 내부에서 꼭 도커를 이용하지 말고 다른 포트로 서버를 띄움
4. 무료 배포 툴이용
- 무료 프론트 배포 툴 : Vercel, Netlify, github page
- 무료 백엔드 배포 툴 : Qoddi, Fly.io
- 장점 : https를 기본으로 지원 하는 서비스가 많음, Docs를 따라하면 생각보다 배포가 쉽다
- 생각해볼 지점 : Qoddi는 mySql 을 지원하나 https가 지원되는지 모름, Fly.io는 https가 지원되나 데이터 서버가 지원되는지 모름
결론!
결론전 AWS 비용 지출 부분이 어떤 부분인지 강의자료 확인해야함 ( 아직 링크가 올려지지 않음 13일 FE/BE 통합 라이브세션)
- 1안 : AWS S3, EC2, RDS - 프로젝트 기간만 운용 후 삭제 (과다 비용 지출 우려)
- 2안 : Netlify 또는 Vercel 프론트 배포 → AWS EC2 + RDS 백엔드 배포 → AWS CloudFront를 통해 https 통신
- 3안 : 프론트, 백엔드 모두 무료 배포 사이트 이용 ( 학습비용 추가)
'개발일지' 카테고리의 다른 글
[pre-project 문제해결 공유] @RestController 어노테이션과 @Validated 어노테이션 충돌문제 (0) | 2023.08.22 |
---|---|
[pre-project 회고] 경험치를 올려 레벨업을 했다 feat.코드스테이츠 (0) | 2023.06.30 |
[솔로 프로젝트] TodoList Test 작성 및 API 문서화 하기 2탄 / API문서화편 (0) | 2023.06.10 |
[KPT] Section 4을 마치며 하는 회고 feat.코드스테이츠 백엔드 (1) | 2023.06.08 |
[솔로 프로젝트] TodoList Test 작성 및 API 문서화 하기 1탄 (0) | 2023.06.08 |