-
Notifications
You must be signed in to change notification settings - Fork 3
System Architecture
pp edited this page Jul 14, 2024
·
13 revisions






(추가 예정 - 어느 부분에서 로그를 취득할건지 결정 필요)

<Public>
IGW : 외부 인터넷과 VPC 연결
NLB : 차후 HA 구성을 적용하기 위한 LB
NGW : Private Subnet 에 있는 Grafana를 외부에서 접속하기 위한 게이트웨이
nginx : TLS 인증서 처리, 차후 HA 구성을 적용하기 위한 ALB 역할 담당
ArgoCD : Dockerhub의 이미지 변환 감지를 통한 CD 실행
<Private>
Frontend Server : Vue3 를 사용, 사용자 화면을 제공하는 서버
App : Spring boot를 사용, 비즈니스 로직을 제공하는 서버
Prometheus & Grafana : App서버 메트릭 모니터링 & 화면 제공
Logstash(or Fluentbit) : S3에 저장된 사용자 액세스 로그 파일을 읽어와 Opensearch 에 입력
EC2 : Redis용 서버
Redis : 검색 기능 향상을 위한 캐싱 기능 담당 DB
RDS(MySQL) : 회원의 메타 데이터가 저장되는 테이블만 존재하는 DB
OpenSearch : 액세스 로그 분석, 검색 기능을 지원하는 검색 엔진
<VPC 영역외 서비스>
S3 : 사용자 액세스 로그 파일 및 에러 로그 파일이 저장되는 저장소
Ollama(또는 OpenAI) : AWS상에 올리기에는 최소 RAM 요구량이 많아서 로컬에서 실행, ngrok등을 사용해 외부에서 접근할 수 있도록 설정
Github : 개발 코드의 버전 관리 및 배포
Github Action : 테스트코드 정상 동작 확인 및 CI 실행
Dockerhub : 생성된 docker image 배포
<로그 예상 흐름>
사용자의 특정 단어 검색 ->
조회 메소드에 Aspect 를 사용하여 사용자 정보 및 검색 정보를 로컬 파일에 로깅 ->
일정 기간(현재 매일 00시 1회 예상)이 될 때마다 Logstash(또는 fluentbit)를 통해 Opensearch로 로그 전송 ->
일정 기간(현재 매일 00시 1회 예상)이 될 때마다 S3 Glacier에 장기 보관용 로그 전송
<Q>
1. nginx의 위치가 맞는지?(Public인지 Private인지, LB 전/후)
- 🤝 Collaboration
- 💬 Git Commit Convention
- 🌿 Branching Strategy
- 🔀 Pull Request (PR) Guidelines
- 🐋 Docker
- 🎡 Kubernetes
- 🔎 Metrics
- 💊 USE/RED
- 📝 Metrics Design
- 🔥 Prometheus
- 🦖 Grafana
- ⚒️ 실제 구현