CI/CD(Continuous Integration/Continuous Deployment) 파이프라인은 소프트웨어 개발 및 배포 프로세스를 자동화하고 가속화하는 데 중요한 도구입니다. 그러나 이러한 파이프라인에서 발생하는 로그 및 모니터링 데이터를 효과적으로 관리하는 것은 매우 중요합니다. 이 문서에서는 Typescript 프로젝트의 CI/CD 파이프라인에서 모니터링과 로그 관리를 수행하는 방법에 대해 알아보겠습니다.
1. 모니터링
CI/CD 파이프라인을 통해 빌드, 테스트 및 배포가 이루어지는 동안 시스템의 상태 및 성능을 모니터링해야 합니다. 이를 위해 다음 단계를 따를 수 있습니다.
1.1. 모니터링 도구 선택
- Prometheus: 지표 수집에 사용되며, 여러 다양한 데이터 모델을 지원합니다.
- Grafana: 지표 및 로그 데이터의 대시보드를 시각화하고 분석할 수 있습니다.
- New Relic: 애플리케이션 성능 및 사용성을 모니터링하는 데 사용됩니다.
1.2. 모니터링 설정
프로젝트에 맞는 모니터링 도구를 선택하고, 해당 도구를 CI/CD 파이프라인에서 데이터를 수집할 수 있도록 설정합니다.
예시로, Prometheus를 사용한다고 가정하고, 다음 단계를 따릅니다.
// prometheus.ts
const prometheus = require('prom-client');
const collectDefaultMetrics = () => {
prometheus.collectDefaultMetrics();
};
const httpRequestDurationMicroseconds = () => {
const httpRequestDurationMicroseconds = new prometheus.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in microseconds',
labelNames: ['method', 'route', 'code'],
buckets: [0.1, 5, 15, 50, 100, 500]
});
return httpRequestDurationMicroseconds;
};
module.exports = {
prometheus,
collectDefaultMetrics,
httpRequestDurationMicroseconds
};
2. 로그 관리
CI/CD 파이프라인에서 발생하는 로그를 관리하려면 다음 단계를 따를 수 있습니다.
2.1. 로그 수집 및 분석
- ELK 스택(Elasticsearch, Logstash, Kibana): 로그 수집, 분석 및 시각화를 위한 오픈 소스 도구입니다.
- AWS CloudWatch: AWS 환경에서 로그 관리 및 모니터링을 제공하는 서비스입니다.
2.2. 로그 구조화 및 저장
로그를 구조화하여 중앙 집중식 저장소에 저장하는 것이 중요합니다. JSON 또는 사용자가 읽기 쉬운 형식으로 로그를 저장하는 것이 좋습니다.
예시로, Winston과 같은 로깅 라이브러리를 사용하여 로그를 구조화할 수 있습니다.
// logger.ts
import winston from 'winston';
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
defaultMeta: { service: 'your-service-name' },
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
export default logger;
결론
CI/CD 파이프라인에서 모니터링과 로그 관리는 소프트웨어의 안정성과 성능을 유지하는 데 중요합니다. 적절한 도구를 선택하고 설정하여 파이프라인에서 발생하는 데이터를 효과적으로 관리함으로써 안정적인 배포 및 운영을 할 수 있습니다.
이상으로 새로운 프로젝트에 CI/CD 파이프라인을 구축할 때 모니터링 및 로그 관리 방법에 대해 알아보았습니다.