Skip to content

Latest commit

Β 

History

History
110 lines (85 loc) Β· 3.85 KB

File metadata and controls

110 lines (85 loc) Β· 3.85 KB

FOSSistant πŸš€

FOSSistantλŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈ κΈ°μ—¬λ₯Ό λ•λŠ” AI 기반 μ–΄μ‹œμŠ€ν„΄νŠΈμž…λ‹ˆλ‹€.
GitHub 이슈 뢄석, ν•΄κ²° λ°©μ•ˆ μ œμ‹œ, κΈ°μ—¬ κ°€μ΄λ“œ μ œκ³΅μ„ 톡해 μ˜€ν”ˆμ†ŒμŠ€ μƒνƒœκ³„ μ°Έμ—¬λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

πŸ“‹ μ£Όμš” κΈ°λŠ₯

πŸ” 이슈 뢄석 & μš”μ•½

  • GitHub 이슈의 μžλ™ 뢄석 및 μš”μ•½
  • LLM 기반 이슈 λ‚΄μš© 이해 및 μ€‘μš” 포인트 ν•˜μ΄λΌμ΄νŒ…
  • ν”„λ‘œμ νŠΈ μ»¨ν…μŠ€νŠΈλ₯Ό κ³ λ €ν•œ λ§žμΆ€ν˜• ν•΄κ²° λ°©μ•ˆ μ œμ‹œ

πŸ“š κΈ°μ—¬ κ°€μ΄λ“œ

  • ν”„λ‘œμ νŠΈλ³„ Contributing κ°€μ΄λ“œ μ—°κ²°
  • README.md, 이슈 ν…œν”Œλ¦Ώ λ“± κ΄€λ ¨ λ¬Έμ„œ 링크 제곡
  • 디렉토리 ꡬ쑰 뢄석을 ν†΅ν•œ μ½”λ“œ κΈ°μ—¬ κ°€μ΄λ“œ

πŸ” μ‚¬μš©μž 인증

  • GitHub OAuth 2.0 연동
  • JWT 기반 토큰 인증
  • μ‚¬μš©μžλ³„ 맞좀 μ„œλΉ„μŠ€ 제곡

πŸ“Š λͺ¨λ‹ˆν„°λ§

  • Spring Boot Actuator 기반 ν—¬μŠ€μ²΄ν¬
  • Redis 캐싱을 ν†΅ν•œ μ„±λŠ₯ μ΅œμ ν™”

⚑ 비동기 처리

  • CompletableFuture - AI 이슈 λΆ„λ₯˜ 및 LLM κ°€μ΄λ“œ μƒμ„±μ˜ 비동기 처리
  • WebClient (WebFlux) - μ™ΈλΆ€ API 호좜 μ‹œ λ…ΌλΈ”λ‘œν‚Ή I/O 처리
  • μ»€μŠ€ν…€ μŠ€λ ˆλ“œ ν’€ - I/O λ°”μš΄λ“œ μž‘μ—…μ— μ΅œμ ν™”λœ μ „μš© μŠ€λ ˆλ“œ ν’€ (20~100개)
  • νƒ€μž„μ•„μ›ƒ & μ—λŸ¬ 볡ꡬ - 60초 νƒ€μž„μ•„μ›ƒ μ„€μ • 및 μž₯μ•  μ‹œ κΈ°λ³Έκ°’ λ°˜ν™˜

πŸ›  기술 μŠ€νƒ

Backend

  • Java 17 - μ–Έμ–΄
  • Spring Boot 3.4.5 - ν”„λ ˆμž„μ›Œν¬
  • Spring Security - λ³΄μ•ˆ
  • Spring Data JPA - 데이터 μ ‘κ·Ό

Database & Cache

  • MySQL - μ£Ό λ°μ΄ν„°λ² μ΄μŠ€ (Azure MySQL)
  • Redis - 캐싱 & μ„Έμ…˜ 관리

AI & External APIs

  • Google Gemini API - LLM 기반 이슈 뢄석
  • GitHub GrpahQLAPI - μ €μž₯μ†Œ 및 이슈 데이터 연동

Infrastructure

  • Docker - μ»¨ν…Œμ΄λ„ˆν™”
  • Docker Compose - 둜컬 개발 ν™˜κ²½

Documentation

  • SpringDoc OpenAPI - API λ¬Έμ„œ μžλ™ 생성

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

src/main/java/Capstone/FOSSistant/
β”œβ”€β”€ FosSistantApplication.java          # 메인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜
└── global/                             # μ „μ—­ μ„€μ • 및 곡톡 κΈ°λŠ₯
    β”œβ”€β”€ config/                         # μŠ€ν”„λ§ μ„€μ •
    β”œβ”€β”€ security/                       # λ³΄μ•ˆ μ„€μ •
    β”œβ”€β”€ domain/                         # μ—”ν‹°ν‹° λͺ¨λΈ
    β”œβ”€β”€ repository/                     # 데이터 μ ‘κ·Ό 계측
    β”œβ”€β”€ service/                        # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직
    β”œβ”€β”€ web/                           # μ›Ή 계측 (컨트둀러)
    β”œβ”€β”€ apiPayload/                    # API μš”μ²­/응닡 DTO
    β”œβ”€β”€ converter/                     # 데이터 λ³€ν™˜
    β”œβ”€β”€ Validator/                     # μž…λ ₯κ°’ 검증
    └── aop/                          # 관점 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

πŸ”§ μ£Όμš” μ„€μ •

JVM μ˜΅μ…˜

-Xmx512m -Xms256m  # λ©”λͺ¨λ¦¬ μ œν•œ (Docker ν™˜κ²½)

Redis μ„€μ •

# μ΅œλŒ€ λ©”λͺ¨λ¦¬: 256MB
# μ •μ±…: allkeys-lru (κ°€μž₯ 였래된 ν‚€ μ‚­μ œ)

비동기 처리 μ„€μ •

μ£Όμš” 비동기 처리 μ‹œλ‚˜λ¦¬μ˜€:

  • AI 이슈 λΆ„λ₯˜: GitHub 이슈λ₯Ό AI둜 λ‚œμ΄λ„ 뢄석 (단건/배치)
  • LLM κ°€μ΄λ“œ 생성: 이슈 ν•΄κ²° λ°©μ•ˆμ„ LLM으둜 생성
  • μ™ΈλΆ€ API 호좜: GitHub API, Gemini API λ…ΌλΈ”λ‘œν‚Ή 호좜
  • DB 쑰회/μ €μž₯: μΊμ‹œ 확인 및 κ²°κ³Ό μ €μž₯을 비동기 처리

μ„±λŠ₯ 효과:

  • 응닡 μ‹œκ°„ 단좕: 동기 처리 λŒ€λΉ„ 3~5λ°° λΉ λ₯Έ 응닡
  • 높은 λ™μ‹œμ„±: μˆ˜μ‹­ 개 이슈 λ™μ‹œ 뢄석 κ°€λŠ₯
  • μ•ˆμ •μ„±: νƒ€μž„μ•„μ›ƒ 및 μ—λŸ¬ 볡ꡬ둜 μ„œλΉ„μŠ€ μ•ˆμ •μ„± 보μž₯

ν—¬μŠ€μ²΄ν¬

  • μ—”λ“œν¬μΈνŠΈ: /actuator/health
  • 간격: 30초
  • νƒ€μž„μ•„μ›ƒ: 10초
  • μž¬μ‹œλ„: 3회

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” λΌμ΄μ„ μŠ€ νŒŒμΌμ— λͺ…μ‹œλœ 쑰건에 따라 λ°°ν¬λ©λ‹ˆλ‹€.

FOSSistant둜 μ˜€ν”ˆμ†ŒμŠ€ κΈ°μ—¬λ₯Ό 더 쉽고 즐겁게 λ§Œλ“€μ–΄λ³΄μ„Έμš”! πŸŽ‰