Node.js로 웹 애플리케이션을 개발할 때, 캐시 레이어를 설정하는 것은 매우 중요합니다. 캐시 레이어는 서버 응답을 저장하고 빠르게 제공하여 웹 애플리케이션의 성능을 향상시킬 수 있습니다.
캐시 레이어 도구 선택
Node.js에서 캐시를 구현할 때, Redis나 Memcached와 같은 인메모리 데이터베이스를 사용하는 것이 일반적입니다. 이러한 도구들은 높은 성능을 제공하고, 쉽게 확장할 수 있어서 Node.js 애플리케이션과 호환성이 좋습니다.
Redis를 이용한 캐시 구성
Redis는 일반적으로 Node.js 애플리케이션에서 가장 많이 사용되는 캐시 도구 중 하나입니다. Redis 모듈을 사용하면 Node.js에서 Redis를 통해 캐시를 쉽게 구성할 수 있습니다. 다음은 Node.js에서 Redis를 이용한 캐시 구성의 예시 코드입니다.
const redis = require('redis');
const client = redis.createClient();
function getCachedData(key, callback) {
client.get(key, (err, data) => {
if (err) throw err;
if (data) {
callback(JSON.parse(data));
} else {
// 캐시 미스 발생 시 데이터베이스나 다른 소스에서 데이터를 가져와 캐싱
// ...
client.set(key, JSON.stringify(data), 'EX', 3600); // 1시간 동안 캐시된 데이터 유지
callback(data);
}
});
}
Memcached를 이용한 캐시 구성
또 다른 선택으로는 Memcached를 사용하는 것이 있습니다. Memcached는 분산 메모리 객체 캐시 시스템으로, Node.js와도 잘 통합됩니다. 아래는 Node.js와 Memcached를 사용하여 캐시를 구성하는 예시 코드입니다.
const memcached = require('memcached');
const client = new memcached('localhost:11211');
function getCachedData(key, callback) {
client.get(key, (err, data) => {
if (err) throw err;
if (data) {
callback(data);
} else {
// 캐시 미스 발생 시 데이터베이스나 다른 소스에서 데이터를 가져와 캐싱
// ...
client.set(key, data, 3600, (err) => {
if (err) throw err;
});
callback(data);
}
});
}
미들웨어를 통한 캐시 레이어 구성
Node.js에서는 Express와 같은 웹 프레임워크를 사용하여 미들웨어를 통해 캐시 레이어를 쉽게 구성할 수도 있습니다. 아래는 Express 미들웨어를 사용하여 캐시를 구성하는 예시 코드입니다.
const express = require('express');
const app = express();
const morgan = require('morgan');
const responseTime = require('response-time');
const redis = require('redis');
const client = redis.createClient();
app.use(morgan('combined'));
app.use(responseTime());
app.use((req, res, next) => {
const key = '__express__' + req.originalUrl || req.url;
client.get(key, (err, data) => {
if (err) throw err;
if (data) {
res.send(data);
} else {
// 캐시 미스 발생 시 다음 미들웨어 실행
next();
}
});
});
// ... 다음 미들웨어 및 라우팅 코드
app.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행 중입니다.');
});
캐시 레이어를 구성함으로써 Node.js 웹 애플리케이션의 성능과 확장성을 높일 수 있습니다. Redis 또는 Memcached와 같은 캐시 도구를 사용하거나, Express 미들웨어를 이용해서 쉽게 캐시를 설정할 수 있습니다.
캐시 레이어에 대한 추가 정보를 원하신다면 아래 문서를 참고해주시기 바랍니다.
- Redis 공식 문서: https://redis.io/documentation
- Memcached 공식 문서: https://memcached.org/documentation