Skip to content

TeamOmegi/SourceCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Omegi 였λ₯˜ 좔적과 였λ₯˜ λ…ΈνŠΈλ₯Ό ν•˜λ‚˜λ‘œ

Β 

πŸ’‘ ν”„λ‘œμ νŠΈ μ†Œκ°œ

μ˜€λ©”κΈ°λŠ” λΆ„μ‚°μ‹œμŠ€ν…œμ—μ„œ 였λ₯˜λ₯Ό μžλ™μœΌλ‘œ 좔적 및 λΆ„μ„ν•˜λ©° 였λ₯˜λ₯Ό 기반으둜 ν•΄κ²° 과정을 λ…ΈνŠΈλ‘œ 남길 수 μžˆλŠ” μ„œλΉ„μŠ€μž…λ‹ˆλ‹€

  • 개발 κΈ°κ°„: 2024.04.08 ~ 2024.05.20(μ•½ 7μ£Ό)
  • νŒ€μ›
BE BE BE BE FE FE
μœ μ œν›ˆ μ˜€ν™”μ„ κΉ€μ•„μ˜ κΉ€λ„ν•˜ 손민기 κ³ ν•΄λ¦Ό

Β 

πŸ›  아킀텍쳐

아킀텍쳐

✨ κΈ°λŠ₯ μ†Œκ°œ

Β 

메인 ν™”λ©΄

LandingPage

  • μ„œλΉ„μŠ€μ— λŒ€ν•œ κ°„λž΅ν•œ μ†Œκ°œλ₯Ό λ³Ό 수 있으며, GitHubλ₯Ό ν†΅ν•œ 둜그인 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€

Β 

λŒ€μ‹œλ³΄λ“œ

μ„œλΉ„μŠ€ ν•œλˆˆμ— 보기 & SSEλ₯Ό ν†΅ν•œ μ—λŸ¬ λ°œμƒ μ•Œλ¦Ό

λŒ€μ‹œλ³΄λ“œ

  • μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€λ₯Ό ν”„λ‘œμ νŠΈλ³„λ‘œ ν•œ λˆˆμ— 확인할 수 μžˆλŠ” λŒ€μ‹œλ³΄λ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ—λŸ¬ λ°œμƒ ν˜„ν™© 및 ν˜„μž¬κΉŒμ§€ λ°œμƒν•œ μ—λŸ¬μ˜ 톡계, λ…ΈνŠΈ 톡계λ₯Ό ν•¨κ»˜ μ œκ³΅ν•©λ‹ˆλ‹€.
  • SSEλ₯Ό ν†΅ν•œ μ‹€μ‹œκ°„ μ•Œλ¦Ό κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€μ—μ„œ μ—λŸ¬ λ°œμƒ μ‹œ μ•Œλ¦Όμ΄ ν‘œμ‹œλ©λ‹ˆλ‹€.

μ—λŸ¬ ν•΄κ²° μ™„λ£Œ

λŒ€μ‹œλ³΄λ“œ

  • λŒ€μ‹œλ³΄λ“œ μ—λŸ¬ 리슀트의 μ—λŸ¬λŠ” ν•΄κ²° μ—¬λΆ€λ₯Ό μ‚¬μš©μžκ°€ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν•΄κ²°λ˜μ§€ μ•Šμ€ μ—λŸ¬λŠ” μ„œλΉ„μŠ€ νλ¦„λ„μ—μ„œ 뢉은 μƒ‰μœΌλ‘œ ν•˜μ΄λΌμ΄νŠΈ 되며, μ—λŸ¬ ν•΄κ²° μ™„λ£Œ μ‹œ κΈ°λ³Έ νŒŒλž€ μƒ‰μœΌλ‘œ λ³€κ²½λ©λ‹ˆλ‹€.

λ„€λΉ„κ²Œμ΄μ…˜ λ°”λ₯Ό ν†΅ν•œ μ—λŸ¬ λ°œμƒ μ•Œλ¦Ό

λŒ€μ‹œλ³΄λ“œ

  • μ‚¬μš©μžκ°€ λŒ€μ‹œλ³΄λ“œ μ΄μ™Έμ˜ νŽ˜μ΄μ§€μ— 접속해 μžˆμ„ 경우, λ„€λΉ„κ²Œμ΄μ…˜ λ°”λ₯Ό 톡해 μ—λŸ¬ λ°œμƒ μ—¬λΆ€λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • SSEλ₯Ό ν†΅ν•œ μ—λŸ¬ μ•Œλ¦Όμ€ λ„€λΉ„κ²Œμ΄μ…˜ λ°”μ˜ λŒ€μ‹œλ³΄λ“œ μ•„μ΄μ½˜μ˜ λΉ¨κ°„ 점을 톡해 μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λ©λ‹ˆλ‹€.

Β 

μ—λŸ¬ 리슀트 및 μ—λŸ¬ 상세 νŽ˜μ΄μ§€

μ—λŸ¬ 리슀트

μ—λŸ¬ 리슀트

  • μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€μ—μ„œ λ°œμƒν•œ μ—λŸ¬λŠ” ν”„λ‘œμ νŠΈ λ‹¨μœ„λ‘œ 리슀트 ν˜•μ‹μ„ 톡해 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ—λŸ¬ λ¦¬μŠ€νŠΈμ—λŠ” λ°œμƒν•œ μ—λŸ¬ μ’…λ₯˜, μ„œλΉ„μŠ€, ν”„λ‘œμ νŠΈ, λ°œμƒ μ‹œκ°μ˜ 정보가 ν•¨κ»˜ ν‘œμ‹œλ©λ‹ˆλ‹€.

μ—λŸ¬ 상세 쑰회

  • μ—λŸ¬ λ¦¬μŠ€νŠΈμ—μ„œλŠ” 클릭 이벀트λ₯Ό 톡해 μ—λŸ¬ ν•˜λ‚˜μ˜ 상세 정보λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ—λŸ¬ 상세 νŽ˜μ΄μ§€λŠ” ν•œ μ—λŸ¬κ°€ λ°œμƒν•˜κΈ°κΉŒμ§€μ˜ μ„œλΉ„μŠ€ κ°„ 흐름을 λ³΄μ—¬μ£ΌλŠ” Trace, μ—λŸ¬ μš”μ•½μΈ Summary, μ—λŸ¬ 원문인 Log둜 κ΅¬μ„±λ©λ‹ˆλ‹€.
  • μ‚¬μš©μžλŠ” 본인의 μ„œλΉ„μŠ€μ—μ„œ λ°œμƒν•œ μ—λŸ¬μ— λŒ€ν•œ 원인과 흐름을 λͺ…ν™•ν•˜κ²Œ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Β 

λ…ΈνŠΈ

λ…ΈνŠΈ 쑰회 및 κ·Έλž˜ν”„

λ…ΈνŠΈ

  • μ‚¬μš©μžλŠ” μ—λŸ¬ λ…ΈνŠΈ, 일반 λ…ΈνŠΈ 두 가지 μ’…λ₯˜μ˜ λ…ΈνŠΈλ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 본인이 μž‘μ„±ν•œ λ…ΈνŠΈμ˜ 경우 리슀트, κ·Έλž˜ν”„ 두 가지 ν˜•μ‹μ˜ 보기가 μ œκ³΅λ©λ‹ˆλ‹€.
  • κ·Έλž˜ν”„ λ·°μ—μ„œλŠ” μ‚¬μš©μžκ°€ μž‘μ„±ν•œ λ…ΈνŠΈ 및 μ—°κ²°ν•œ λ‹€λ₯Έ λ…ΈνŠΈ, λ…ΈνŠΈμ˜ νƒœκ·Έκ°€ κ·Έλž˜ν”„μ™€ κ°„μ„  ν˜•νƒœλ‘œ μ‹œκ°ν™” λ˜μ–΄ ν‘œμ‹œλ©λ‹ˆλ‹€.

λ…ΈνŠΈ μž‘μ„± 에디터

λ…ΈνŠΈ

  • μ‚¬μš©μžμ˜ λ…ΈνŠΈ μž‘μ„±μ„ μœ„ν•΄ MarkDown ν˜•μ‹μ˜ 에디터λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.
  • μ‚¬μš©μžλŠ” μ΅μˆ™ν•œ MarkDown 문법을 μ΄μš©ν•΄ 자유둭게 λ…ΈνŠΈλ₯Ό μž‘μ„±ν•˜κ³  μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ…ΈνŠΈ μ—°κ²°

λ…ΈνŠΈ

  • μ‚¬μš©μžλŠ” 본인의 λ…ΈνŠΈ, λ‹€λ₯Έ μ‚¬μš©μžλ“€μ˜ λ…ΈνŠΈμ™€ 본인이 μž‘μ„±ν•œ λ…ΈνŠΈλ₯Ό μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ…ΈνŠΈ ν•˜λ‹¨μ—λŠ” μ—°κ²° 된 λ…ΈνŠΈμ˜ κ°œμˆ˜κ°€ ν‘œν˜„λ˜λ©°, μ—°κ²°λœ λ…ΈνŠΈμ˜ 경우 κ·Έλž˜ν”„ λ·°μ—μ„œ κ°„μ„ μœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€.

Β 

μ„€μ •

ν”„λ‘œμ νŠΈ 등둝 및 토큰 λ°œκΈ‰

μ„€μ •

  • μ‚¬μš©μžλŠ” 였λ₯˜ 좔적 κΈ°λŠ₯을 ν™œμ„±ν™” ν•˜κΈ° μœ„ν•΄ μ„€μ • νŽ˜μ΄μ§€μ—μ„œ ν”„λ‘œμ νŠΈ 및 μ„œλΉ„μŠ€ 등둝을 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν”„λ‘œμ νŠΈμ™€ μ„œλΉ„μŠ€λ₯Ό λ“±λ‘ν•œ λ’€, μ„œλΉ„μŠ€ λ³„λ‘œ 토큰을 λ°œκΈ‰λ°›μ•„ 였λ₯˜ 좔적 데이터 전솑 μ‹œ 인증을 μ§„ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ„€μ • κ°€μ΄λ“œ

μ„€μ •

  • μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€μ— λ³Έ μ„œλΉ„μŠ€μ˜ 였λ₯˜ 좔적 κΈ°λŠ₯ λ„μž…μ„ μœ„ν•œ κ°€μ΄λ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • Java, Python 두 가지 μ–Έμ–΄λ‘œ μ œκ³΅λ˜λŠ” AgentλŠ” 각각 Readmeλ₯Ό ν†΅ν•œ μ‚¬μš© μ„€λͺ…μ„œκ°€ 제곡되고 μžˆμŠ΅λ‹ˆλ‹€.

Β 

πŸ’» 기술 μ†Œκ°œ

μ—λŸ¬ 좔적

λ³Έ μ„œλΉ„μŠ€μ˜ μ£Όμš” κΈ°λŠ₯ 쀑 ν•˜λ‚˜μΈ μ—λŸ¬ 좔적은 μ‚¬μš©μžμ˜ μ„œλΉ„μŠ€μ˜ 정상 흐름 및 μ—λŸ¬ λ°œμƒμ„ 좔적할 수 있으며, μ„œλΉ„μŠ€κ°€ λΆ„λ¦¬λ˜μ–΄ μžˆλŠ” msa κ΅¬μ‘°μ—μ„œ μ„œλΉ„μŠ€ μ‚¬μ΄μ˜ νλ¦„κΉŒμ§€λ„ νŒŒμ•…ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이 μ£Όμš” λͺ©μ μž…λ‹ˆλ‹€.
μ΄λŸ¬ν•œ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ ν•˜λ‚˜μ˜ μš”μ²­ λ‹¨μœ„λ₯Ό κΈ°λ‘ν•˜λŠ” Trace, Trace λ‚΄λΆ€μ˜ 각 단계듀을 κΈ°λ‘ν•˜λŠ” Span 을 μ‚¬μš©ν•˜λŠ” μ˜€ν”ˆν…”λ ˆλ©”νŠΈλ¦¬ μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈλ₯Ό ν™•μž₯ν•˜λŠ” 방식을 μ±„νƒν•˜μ˜€μŠ΅λ‹ˆλ‹€.

저희 μ„œλΉ„μŠ€μ˜ 였λ₯˜ 좔적은 μ˜€ν”ˆν…”λ ˆλ©”νŠΈλ¦¬ ν”„λ‘œμ νŠΈλ₯Ό 기반으둜 3가지 μ»€μŠ€ν…€ 포인트λ₯Ό 톡해 κΈ°λŠ₯을 ν™•μž₯ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

  1. μ„œλΉ„μŠ€ κ°„ λ™μΌν•œ Trace μ „νŒŒλ₯Ό μœ„ν•΄ μ‚¬μš©λ˜λŠ” Propagator
  • python κ³Ό java μ„œλ²„ μ‚¬μ΄μ˜ 흐름 μ „νŒŒλ₯Ό μœ„ν•΄ 각 언어에 λ™μΌν•œ Propagator λ₯Ό κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€
  • λ™μΌν•œ traceId 좜λ ₯을 μœ„ν•΄ 좔가적인 인코딩 섀정을 μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€
  1. 좔적 둜그λ₯Ό Kafka λ˜λŠ” μ½˜μ†”λ‘œ 내보낼 수 μžˆλ„λ‘ Exporter 생성
  • μ‚¬μš©μžλŠ” ν™˜κ²½λ³€μˆ˜ 섀정을 톡해 Exporterλ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€
  • 둜그 데이터 전솑 μ•ˆμ „μ„±μ„ μœ„ν•˜ Kafka Exporter와 λΉ λ₯Έ 확인을 μœ„ν•œ ConsoleExporterλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€
  1. κ³„μΈ‘μ˜ λ²”μœ„ ν™•μž₯
  • μ˜€ν”ˆν…”λ ˆλ©”νŠΈλ¦¬λŠ” 기본적으둜 Http Request, DB μ—°κ²° λ“± μ„œλΉ„μŠ€ Edge에 λŒ€ν•œ Span 을 μ œκ³΅ν•©λ‹ˆλ‹€
  • μ €ν¬λŠ” 이λ₯Ό ν™•μž₯ν•˜μ—¬ λ©”μ„œλ“œ λ‹¨μœ„λ‘œ Span을 μƒμ„±ν•˜μ—¬ μš”μ²­μ˜ 흐름을 보닀 μžμ„Ένžˆ 기둝 ν•  수 μžˆλ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€
  • μžλ°”μ—μ„œλŠ” λ°”μ΄νŠΈ μ½”νŠΈλ₯Ό μ‘°μž‘ν•  수 μžˆλŠ” λ°”μ΄νŠΈ 버디, νŒŒμ΄μ¬μ—μ„œλŠ” ν•¨μˆ˜λ₯Ό κ°μ‹Έμ„œ μ‹€ν–‰ν•  수 μžˆλŠ” λ°μ½”λ ˆμ΄ν„°λ₯Ό ν™œμš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ©”μ„œλ“œ λ‹¨μœ„μ˜ 계츑을 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€

μ΄λŸ¬ν•œ κΈ°λŠ₯을 μ‚¬μš©μžκ°€ μ„œλΉ„μŠ€μ— μ μš©ν•  λ•Œ, μ½”λ“œμ˜ μˆ˜μ • 없이 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ—μ΄μ „νŠΈλ‘œ μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
μ—μ΄μ „νŠΈλŠ” ν˜„μž¬ μžλ°”, 파이썬 두 가지 μ–Έμ–΄λ₯Ό μ§€μ›ν•˜λ©° jar 파일과 pypi 라이브러리둜 μ œκ³΅λ©λ‹ˆλ‹€.

Β 

μ—λŸ¬ 가곡

μΆ”μ λœ λ°μ΄ν„°λŠ” 각 μ„œλΉ„μŠ€μ—μ„œ Trace λ‹¨μœ„λ‘œ 저희 μ„œλ²„μ˜ Kafka둜 μ „μ†‘λ©λ‹ˆλ‹€.

μ „μ†‘λœ λ°μ΄ν„°λŠ” Redis μž‘μ—… 큐와 Elasticsearch μ €μž₯μ†Œλ₯Ό ν™œμš©ν•˜μ—¬ ν•œ Trace에 λŒ€ν•œ λͺ¨λ“  데이터가 도착할 λ•ŒκΉŒμ§€ μ €μž₯ν•˜κ³  λŒ€κΈ°ν•˜λ©°, 데이터가 λͺ¨λ‘ 확보될 μ‹œ ν•˜λ‚˜μ˜ μ—λŸ¬ λ°μ΄ν„°λ‘œ κ°€κ³΅ν•˜μ—¬ MySqlκ³Ό MongoDb 에 μ €μž₯λ©λ‹ˆλ‹€.

μ‚¬μš©μžκ°€ 본인의 μ„œλΉ„μŠ€μ—μ„œ λ°œμƒν•œ μ—λŸ¬μ— λŒ€ν•΄ νŒŒμ•…ν•˜κΈ° μš©μ΄ν•˜λ„λ‘ λ©”μ„œλ“œ λ‹¨μœ„μ˜ 흐름, μ—λŸ¬νƒ€μž…, μ—λŸ¬ 본문을 ν¬ν•¨ν•˜λŠ” ν˜•μ‹μœΌλ‘œ κ°€κ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

Β 

βš™ ν”„λ‘œμ νŠΈ ꡬ쑰

기술 μŠ€νƒ

λΆ„λ₯˜ 기술
BE
FE
DB
Infra

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published