728x90
CDN이란? - https://aws.amazon.com/ko/what-is/cdn/
AWS에서 설명하고 있는 CDN과 다르게 기존의 시스템은 CDN까지는 아니고 이미지서버(?) 정도 될 것 같다.
하지만 CDN으로 부르겠다 😅
기존 시스템과 요구사항
우선 CDN 구축 필수 요구사항은 HTTPS와 확장가능성이 필요했다.
그리고 필수는 아니었지만 초반에는 무료로 운영하면 좋겠다는 요구사항도 있었다.
기존의 CDN은 express의 static 미들웨어를 사용하여 아주 간단하게 정적 파일을 제공하고 있었다.
그리고 무료로 HTTPS 서버를 구축하기 위해 내도메인.한국과 ZeroSSL을 이용했다.
const https = require('https');
const fs = require('fs');
const express = require("express");
const path = require('path');
const app = express();
const port = 3000;
const options = {
key: fs.readFileSync('./private.key'), // ZeroSSL에서 받은 PRIVATE KEY
cert: fs.readFileSync('./certificate.crt') // ZeroSSL에서 받은 CERT 파일
};
const server = https.createServer(options, app);
app.get('/', (req,res) => {
res.send('hello!')
} )
app.use(express.static(path.join('E:\\PROJECT_NAME\\images\\TEST1')))
app.use(express.static(path.join('E:\\PROJECT_NAME\\images\\TEST2')))
app.use(express.static(path.join('E:\\PROJECT_NAME\\images\\TEST3')))
server.listen(port, async () => {
console.log(`Server is running on port ${port}`);
});
이 코드를 실행하면, 지정된 경로에 있는 정적 파일들을 웹 서버를 통해 볼 수 있게 된다. 이렇게 간단한 설정만으로도 웹 브라우저를 통해 정적 리소스를 제공할 수 있었다.
물론, 이런 방식은 간단한 케이스나 특정 상황에서만 적합하다는 것을 명심해야 한다. 복잡한 웹 애플리케이션 구축이나 대규모 트래픽을 다룰 때는 추가적인 설정과 고려사항이 필요할 것이다. 하지만, 보안이나 다른 이슈가 없다면 간단하게 서버를 세울 수 있다는 것은 분명 장점 중 하나다.
왜 AWS로?
- HTTPS 필요성: 현대 웹에서 HTTPS는 기본적으로 필수 요소가 되었다. 그리고 http로 이미지 서버를 구축하면 https를 사용하는 사이트나 메일에서는 img태그에 src를 추가해서 바로 보여줘야 했었는데 그게 바로 보이지 못했다. CloudFront는 자체 SSL/TLS 인증서를 제공하므로, 이를 통해 손쉽게 HTTPS를 지원할 수 있다.
- ZeroSSL의 무료 제한: ZeroSSL은 무료 SSL 인증서 발급 서비스를 제공하지만, 일정 횟수가 초과되면 비용이 발생한다. 이런 제한에 부딪혀 다른 방법을 찾아보게 되었고, AWS의 조합을 선택하게 되었다.
- S3의 안정성:Amazon S3는 대용량의 데이터를 안정적으로 저장하고 제공할 수 있는 서비스다. 이를 통해 웹사이트의 정적 파일들을 안정적으로 호스팅할 수 있다.
- CloudFront의 성능 및 확장성: CloudFront는 AWS의 글로벌 CDN 서비스로, 웹사이트의 로딩 속도를 빠르게 하고 트래픽의 폭증에도 안정적으로 대응할 수 있다.
- Route 53의 편의성: Route 53은 도메인 네임 시스템(DNS) 서비스를 제공하므로, 원하는 도메인 이름을 쉽게 연결하고 관리할 수 있다.
결론적으로, HTTPS의 지원 필요성과 ZeroSSL의 제한 등의 문제를 해결하고 이제는 안정적이고 확장 가능한 AWS의 S3, CloudFront 그리고 Route 53 조합으로 CDN을 구축하기로 결정했다.
CloudFront로만으로도 HTTPS를 사용할 수 있는데 Route 53을 사용한 이유는 CloudFront는 기본적으로 `*.cloudfront.net`형식의 도메인을 제공하는데 이런 형식의 도메인은 가독성도 떨어지고 쉽게 기억할 수 없다. 그래서 사용자 정의 도메인을 사용하려고 하는데 Route 53은 이러한 사용자 정의 도메인을 CloudFront와 쉽게 연결할 수 있게 도와준다. (다른 장점으로는 AWS 환경의 통합 관리 그리고 높은 가용성 및 다양한 라우팅 전략을 위함이 있다.)
🔜 [S3] [CloudFront] [Route 53] CDN 구축기 - AWS에서 시스템 구축
언제나 잘못된 설명이나 부족한 부분에 대한 피드백은 환영입니다🤍
728x90