Log Middleware를 통해 클라이언트의 요청 사항등을 기록하는 로깅 환경을 조성할 수 있다.
유저 행동 분석등 서버의 상태를 모니터링하는 데에 효과적
관련 라이브러리 morgan, winston
모니터링 솔루션 AWS CloudWatch, Datadog
level
)Log Level은 로그의 중요도를 나타낸다.
“
info
”, “error
”, “warn
”, “debug
" 등의 로그 레벨
클라이언트의 요청이 발생 시, 로그 미들웨어는 가장 먼저 실행되어야 하기 때문에, 미들웨어 중 최상단에 위치해야 한다.
Express.js에서 발생한 에러를 통합적으로 처리하기 위한 미들웨어
데이터베이스에서 하나의 논리적 작업 단위
ACID 특성을 통해 작업의 완전성을 보장해주고 데이터의 일관성을 유지하도록 도와준다.
-- 트랜잭션을 시작합니다.
START TRANSACTION;
-- 성공시 작업 내역을 DB에 반영합니다.
COMMIT;
-- 실패시 START TRANSACTION이 실행되기 전 상태로 작업 내역을 취소합니다.
ROLLBACK;
동시성을 제어를 위한 장치
데이터의 점유를 통해 다른 트랜잭션의 접근을 막아 Concurrency과 Consistency 를 제어하는 데에 사용.
Concurrency control에 있어서, 동일한 공유 resource에 대한 데이터 무결성 및 경쟁 상태에 대한 방지를 위해 규현된다.
express session이란 express에서 세션 기능을 위한 미들웨어이다.
이전에 사용했던 사용자 인증과 세션 스토리지 및 쿠키 발급 과정을 생략하고,
간단하게 세션 기능을 구현하도록 도와준다.
그 기능은 간단하게 살펴보면 다음과 같다.
- 클라이언트에게 session ID 발급
- session ID를 통한 클라이언트 상태 추적
# express, express-session를 설치
yarn add express express-session
// app.js
import express from 'express';
import expressSession from 'express-session';
const app = express();
const PORT = 3019;
app.use(express.json());
app.use(
expressSession({
secret: 'express-session-secret-key.', // 세션을 암호화하는 비밀 키를 설정
resave: false, // 클라이언트의 요청이 올 때마다 세션을 새롭게 저장할 지 설정, 변경사항이 없어도 다시 저장
saveUninitialized: false, // 세션이 초기화되지 않았을 때 세션을 저장할 지 설정
cookie: {
// 세션 쿠키 설정
maxAge: 1000 * 60 * 60 * 24, // 쿠키의 만료 기간을 1일로 설정합니다.
},
}),
);
app.listen(PORT, () => {
console.log(PORT, '포트로 서버가 열렸어요!');
});
secret
세션 id 암호화를 위한 secret key
resave
클라이언트의 요청(Request)이 들어올 때마다 세션 정보를 다시 저장할 지 설정
true 설정 시, 매번 새로운 세션에 저장
saveUninitialized
req.session
에 아무런 정보가 저장이 되지 않더라도 사용자에게 세션 ID를 발급할 지 설정합니다.
true
로 설정하면, 서버에 접속하는 모든 사용자에게 세션 ID가 발급됩니다.
cookie.maxAge
세션 ID가 저장된 클라이언트의 쿠키 만료 기간을 설정합니다.