마이크로 캐싱은 아주 짧은 TTL(보통 1~10초) 동안 응답을 캐시에 저장해 두고, 같은 요청이 들어오면 백엔드 대신 캐시에서 바로 응답하는 기법입니다. 짧은 TTL이라 실시간성은 유지하면서도, 순간 트래픽 폭주(새로고침, 인기 API 호출 등)를 효과적으로 흡수할 수 있습니다.
필요한 이유
사용자가 새로고침을 여러 번 하거나, 다수 유저가 동시에 동일 API를 호출하면 백엔드(DB, 애플리케이션)에 부하가 급증합니다.
대부분의 API/페이지는 몇 초 단위로 변경되지 않기 때문에 짧게라도 캐시하면 부하를 크게 줄일 수 있습니다.
하나의 서버에서 2개의 웹 프론트 서버가 서로 다른 도메인으로 SSL(443포트) 사용 가능하다. 단, 아래 조건을 만족해야 한다.
✅ 전제 조건
도메인이 서로 다름
예: a.example.com, b.example.com
각 도메인에 대해 유효한 SSL 인증서
Let’s Encrypt 등에서 도메인 별 인증서 발급
리버스 프록시(Web 서버)가 하나만 443 포트를 바인딩
Nginx나 Apache 같은 리버스 프록시를 사용해 도메인에 따라 백엔드 서버로 트래픽 분기
🧱 구조 예시
[Client]
|
443 포트 요청 (도메인 A 또는 B)
↓
[Nginx Reverse Proxy] (SSL 인증서 설정, 443 포트 점유)
├──> http://localhost:3001 (도메인 A용 웹 앱)
└──> http://localhost:3002 (도메인 B용 웹 앱)
# nginx conf 예시
# a.example.com에 대한 설정
server {
listen 443 ssl;
server_name a.example.com;
ssl_certificate /etc/ssl/certs/a_cert.pem;
ssl_certificate_key /etc/ssl/private/a_key.pem;
location / {
proxy_pass http://localhost:3001;
}
}
# b.example.com에 대한 설정
server {
listen 443 ssl;
server_name b.example.com;
ssl_certificate /etc/ssl/certs/b_cert.pem;
ssl_certificate_key /etc/ssl/private/b_key.pem;
location / {
proxy_pass http://localhost:3002;
}
}
📝 요약
항목
가능 여부
설명
443 포트 공유 가능
✅
Nginx나 Apache 하나만 점유하고 도메인 분기로 분리
서로 다른 도메인 사용
✅
server_name으로 분기 가능
SSL 인증서 동시 적용
✅
도메인별 인증서 각각 설정 필요
📌 SSL 없이도 가능? (HTTP:80)
SSL 인증서를 사용하지 않고 하나의 서버에서 두 개의 웹 프론트 서버를 서로 다른 도메인으로 띄우는 것도 가능하다. 이 경우엔 443 포트가 아니라 80포트로 사용하게 된다.
✅ 요약: SSL 없이 가능한가?
조건
가능 여부
설명
SSL 없이 HTTP만 사용할 경우
✅
80 포트는 여러 도메인에서 공유 가능
도메인 별로 서비스 가능
✅
server_name으로 도메인 분기 가능
보안 (HTTPS) 없음
❌
모든 트래픽이 암호화되지 않음 (보안 취약)
⚠️ 주의할 점
중간자 공격(MITM)에 취약 → 로그인, 개인정보 송수신이 있다면 반드시 SSL 사용 권장
일부 브라우저에서는 HTTPS 필수로 요구 → 특히 PWA, 모바일 앱, OAuth, API 연동 등에서 문제 발생 가능
💬 결론
✅ 도메인이 있다면 포트를 나눌 필요 없음. Nginx 같은 리버스 프록시로 하나의 포트(80/443)에서 라우팅 가능
Cpu, Memory, File system, Disk IO, Network IO 등과 시스템에서 실행되는 모든 프로세스에 대한 통계를 수집하여 전송한다.
또한 기본적으로 내장되어 있는 모듈은 Apache, Jolokia, NGINX, MongoDB, MySQL, PostgreSQL, Prometheus 등의 다양한 서비스로부터 메트릭을 수집하며, 원하는 모듈이 없다면 Go Language로 새로운 모듈을 간단하게 생성할 수도 있다.
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets: ["localhost:9093"]
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files: ["alert.rules.yml"]
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "node"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["ip:9100"]