728x90
반응형
적용 배경:
SI 프로젝트를 수행 중, 마이크로서비스 아키텍처를 활용한 Envoy Proxy 적용하기.
각 서비스는 독립적으로 배포되고, 서로 통신해야 및 서비스 간의 통신을 효율적으로 관리하고, 보안 및 모니터링을 강화하기 위해서 보통은 Service Mesh AWS에서는 App Mesh를 적용한다.
사이드카 패턴 도입:
서비스 메시를 구현하기 위해 사이드카 패턴을 사용했다. 각 마이크로서비스 인스턴스 옆에 Datadog Agent 컨테이너를 배치하여, 이 에이전트가 서비스 간의 통신 로그를 수집하고 Datadog 서버로 전송하도록 구현하였다.
로그 수집 및 중앙 관리:
- Datadog Agent 설정: 각 Datadog Agent 컨테이너는 서비스 간의 모든 트래픽을 가로채고, 이를 로깅하도록 설정.
에이전트는 요청 및 응답의 메타데이터와 페이로드를 로그로 남겼다. - 로그 포워딩: Datadog Agent 컨테이너는 수집된 로그를 Datadog 서버로 포워딩수행. 이를 위해 Datadog의 로그 수집 기능을 사용.
- 중앙 로그 관리: Datadog 서버는 수집된 로그를 인덱싱 하고, 검색 및 시각화할 수 있도록 했다.
Datadog 대시보드를 사용하여 로그를 시각화하고, 서비스 간의 통신 상태를 모니터링하도록 했다.
구현 예시:
# Datadog Agent 설정 예시 (datadog-agent.yaml)
apiVersion: v1
kind: ConfigMap
metadata:
name: datadog-agent
namespace: default
data:
datadog.yaml: |-
api_key: <YOUR_DATADOG_API_KEY>
logs_enabled: true
logs_config:
container_collect_all: true
# Datadog Agent 사이드카 컨테이너 설정 예시 (deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-service
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: my-service
template:
metadata:
labels:
app: my-service
spec:
containers:
- name: my-service
image: my-service-image
ports:
- containerPort: 8080
- name: datadog-agent
image: datadog/agent:latest
env:
- name: DD_API_KEY
valueFrom:
secretKeyRef:
name: datadog-secret
key: api-key
volumeMounts:
- name: datadog-config
mountPath: /etc/datadog-agent
volumes:
- name: datadog-config
configMap:
name: datadog-agent
결과:
이러한 설정을 통해 각 서비스의 통신 로그를 중앙에서 효율적으로 수집하고 관리할 수 있었다.
이를 통해 서비스 간의 통신 문제를 신속하게 파악하고 해결할 수 있었으며, 보안 및 성능 모니터링도 강화되었다.
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| Service A Pod | | Service B Pod | | Service C Pod |
| | | | | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | | | | | | | | | | |
| | Service A | | | | Service B | | | | Service C | |
| | | | | | | | | | | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | | | | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | | | | | | | | | | |
| | Datadog | | | | Datadog | | | | Datadog | |
| | Agent | | | | Agent | | | | Agent | |
| | | | | | | | | | | |
| +-------------+ | | +-------------+ | | +-------------+ |
| | | | | |
+-------------------+ +-------------------+ +-------------------+
| | |
+---------------------------+---------------------------+
|
v
+-------------------+
| |
| Datadog Server |
| |
+-------------------+
- 끝 -
728x90
반응형
'플젝 구현내용 정리' 카테고리의 다른 글
NLB(L4)와 ALB(L7) 로드밸런서로 서비스 구현 (0) | 2024.09.03 |
---|---|
웹으로 접근하는 사용자 비밀번호를 저장하는 방법 및 비밀번호 관리 방법 (0) | 2024.09.03 |
그라파나(Grafana), 프로메테우스(Prometheus), MongoDB (1) | 2024.09.03 |
DBMS 인덱스 적용 사례 (0) | 2024.09.03 |
데드락(Dead Lock)과 레이스컨디션(Race Condition)을 해결한 사례 (0) | 2024.09.03 |