AWS/CloudFront

    AWS Lambda를 사용한 CloudFront 무효화 자동화 설정하기

    CloudFront Cache Amazon CloudFront를 사용하면 사용자의 요청을 Edge Location에서 캐시 값을 검사하여 24시간 동안에는 사용자에게 다시 파일을 제공하지 않고 캐시 된 값을 빠르게 제공한다. 서비스의 종류에 따라 다르겠지만 만약 이미지를 제공하는 사이트라면 한번 올라간 이미지는 바뀔 일이 없어서 전송 비용을 아낄 수 있는 엄청난 기술이다. 물론 이미지 리사이징 후 다시 저장해야 하는 경우도 있지만 하지만 자주 바뀌어야 하는 오브젝트라면 S3에 원본 오브젝트가 바뀌어도 이미 캐시 된 이전 오브젝트가 클라이언트에게 제공되는 현상이 생길 수 있다. 오히려 자주 바뀌는 오브젝트는 CloudFront의 Cache가 오히려 독이 되는 셈이다. 그렇다고 오브젝트의 Cache가 즉시 ..

    AWS S3 + CloudFront 대용량 파일 전송

    문제점 현재 웹서비스를 이용하려면 클라이언트가 200MB가 넘는 파일을 node.js로부터 전송받고 있다. node.js 는 싱글스레드이다. 이러한 단일 처리가 오래 걸리는 대용량 파일 전송은 적합하지 않기 때문에 빨리 대책을 모색하고자 했다. 수치적으로 보이는 문제점이 아래와 같았다. 높은 CPU 사용량 단일 클라이언트가 204MB 파일을 요청해 node.js 가 response 해주는데 CPU 사용량이 순간적으로 121% 까지 치솟는다. 눈대중으로 봐도 엄청난 과부하가 발생되는 것을 확인할 수 있다. 단 한 명의 클라이언트의 단 한 번의 요청으로 121%까지 치솟는 건 엄청난 문제가 아닐 수 없다. 만약 동시에 여러 명의 클라이언트가 동시에 요청을 한다면 서버가 어떻게 됐을지 상상이 가지 않는다. 물..