Portfolio

Contents

more

[Server] 캐시처리와 로드밸런싱을 통한 성능 개선 비교(Node.js)

Why? 이전에 redis를 통해 캐시처리하여 성능을 개선하였다. 이번엔 성능을 더 높이고 싶은 욕심에 로드밸런싱을 적용하고 artillery로 정확한 성능 부하테스트를 해볼 것이다. 전부 duration을 60, arrivalRate를 500으로 주었다. - duration : 진행시간 - arrivalRate : 1초에 요청하는 수 *여기에서는 60초 동안 매초 마다 500의 요청을 하는 것이다. 즉, 30000의 요청이 들어온다. loadtest.js 파일을 만든 후 npx artillery run -o myReport loadtest.json npx artillery report myReport 이 두개를 입력 해주면 시각화 할 수 있는 html파일을 만들어준다. 1. 아무것도 처리 하지않은 AP..

Server 2

[Server] Redis eviction(Node.js)

1. Redis eviction 상품의 정보가 바뀌었는데 키:밸류 값이 그대로 남아있으면 유저들은 잘못된 정보를 볼것이다. 이에 상품의 정보가 바뀌거나 삭제되면 키값을 삭제 해주어야 하는데 이를 redis eviction이라고 한다. 적용 방법은 굉장히 간단하다. 이런식으로 delAsync를 사용해서 키값을 지워주기만 하면 된다. 이렇게 상품 삭제 API에서 deleteCache를 호출하여 실행하면 된다. 이렇게 "productId/1" 키가 삭제 되는 것을 볼 수 있다. 2. Redis eviction policy Redis는 32bit에서는 메모리 제한 사용량이 3GB로 되어있지만 64bit에서는 0으로 되어있다. 즉, 사용량에 제한을 두지 않아서 사용량이 넘어갈 경우 스왑 영역을 사용하게 된다 그러..

Server 1

[Server] Express API를 Redis로 Cache하기(Node.js)

Redis로 Cache하기 검색 기능을 개발하던 중 성능을 개선할 방법을 찾아보았다. 방법을 찾던 중 사람들이 실시간 인기 검색어를 검색해서 상품을 불러올 수도 있고, 동일한 검색어를 자주 입력할것이라는 생각이 들었다. 이 방법은 Cache를 통해 해결할 수 있을텐데 이 것을 redis로 해결하기로 하였다. 1. brew install redis 로컬을 맥으로 사용하고 있기 때문에 brew를 통해 간단히 redis를 설치해준다. 2. brew services start redis redis를 실행해준다. 3. redis.js 미들웨어 작성 redis.js라는 미들웨어를 작성해준다. setCache는 key가 없을 경우 key:value 형태의 json파일을 string으로 저장해주는 함수이다. getCa..

Server 0

[Server] node.js express-rate-limit 적용하기

express-rate-limit 적용하기 검색 기능을 만들던 중 사용자가 api를 갑자기 엄청나게 많이 요청하거나 누군가의 DOS공격이 들어올 수도 있다는 생각이 들었다. 누군가 1초에 수천만번 api를 요청하게 되면 서버가 마비될게 분명했다. 그래서 방법을 찾아본 결과 백엔드에서 레이트리미팅 방법을 찾게 되었다. node.js 에서는 express-rate-limit 모듈을 통해 레이트리미팅을 한다. 1. npm install express-rate-limit npm install express-rate-limit을 통해 모듈을 깔아준다. 2. 미들웨어 작성 express-rate-limit모듈을 사용하기 위해 미들웨어를 작성해준다. 3. API에 미들웨어 적용 route에서 apiLimiter라는 ..

Server 0