문제점:
fs.readFileSync
, requests.get
)를 사용하면 전체 스레드가 멈춤. 해결 방안:
비동기 라이브러리 사용
# Bad: 동기 방식
import requests
response = requests.get('https://api.example.com')
# Good: 비동기 방식 (aiohttp 사용)
import aiohttp
async def fetch_data():
async with aiohttp.ClientSession() as session:
async with session.get('https://api.example.com') as response:
return await response.json()
CPU 집약적 작업은 워커 스레드로 분리
// Node.js 예시
const { Worker } = require('worker_threads');
const worker = new Worker('./heavy-task.js');
암복호화 설정:
parse_key
: 외부 API 인증용 → 설정 파일에 노출 금지. 암호화 코드 예시:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import os
# 키와 IV 생성 (실제로는 안전한 저장소에 분리)
key = os.urandom(32) # AES-256
iv = os.urandom(16)
# 암호화
cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
encryptor = cipher.encryptor()
ciphertext = encryptor.update(b"민감한 데이터") + encryptor.finalize()
news_kafka
: 뉴스 서비스 전용 토픽을 독립 관리 (예: news_evaluate
). news_evaluate
분리 배경news_evaluate
토픽 장애가 다른 서비스(예: news_ranking
)에 영향을 미치지 않도록 함. conf.ini
): [news_evaluate]
bootstrap_servers = kafka-news:9092
topic = news_evaluate_topic
security_protocol = SASL_SSL
sasl_mechanism = PLAIN