- 초기 팀원들의 다양한 관심사에서 출발한 여러 아이디어 :
- 개인 상태에 맞춘 건강 식품 추천 플랫폼
- 비건 단계별 대체 육류 소개 플랫폼
- 퍼스널 컬러에 따른 맞춤 상품 추천 플랫폼
- 반려동물 소개팅 플랫폼
- 칵테일 레시피 및 알고리즘 기반 추천 플랫폼
- 칵테일 서비스 플랫폼 선정 이유
- 접근이 용이한 데이터
- AWS를 활용한 이미지 기반 서비스와의 연계 가능성
- 강의에서 배운 기술 활용 기회
- 유사 서비스 부족으로 차별화 가능
- 다양한 API와의 결합 가능성
- 개인 의학 정보 활용 불가
- 추천 상품의 범위가 지나치게 광범위함
- 기존 서비스 아이디어의 흥미 유발 한계
- 문화적 제한점 고려 필요
건전한 음주 문화를 조성하고, 개인의 취향에 맞춘 칵테일 정보를 제공하며 음주 경험을 개선하는 플랫폼.
추가적으로 주류 및 음료 업계 종사자들에게 유용한 정보와 마케팅 플랫폼 제공.
-
칵테일 레시피 조회 및 입력
- 기존 칵테일 레시피 상세 조회
- 사용자 창작 레시피 입력 및 공유
-
맞춤형 칵테일 추천
- 위치, 날씨, 계절 등을 기반으로 개인화된 추천 제공
- 향후 MBTI, 퍼스널컬러 활용 추천 기능 도입 계획
-
커뮤니티 기능
- 좋아요, 팔로우 기능으로 사용자 간 상호작용 촉진
- 레시피 공유 및 평가 플랫폼
-
상세 검색 기능
- 재료, 술잔 종류, 칵테일 타입 등 카테고리 검색
-
사용자 친화적 인터페이스
- 직관적인 UI/UX 제공
-
기술적 특징
- Amazon S3를 활용한 이미지 저장
- MongoDB와 MySQL 데이터 관리
- 네이버 데이터랩 API를 통한 인기 칵테일 분석
- 위치 및 날씨 API 활용
-
사용자 편의성 증대
- 다양한 레시피를 간편하게 조회 및 검색
- 커스텀 레시피 입력 및 관리 가능
- 좋아요와 팔로우를 통해 선호 콘텐츠 추적
-
커뮤니티 활성화
- 사용자 간 커스텀 레시피 공유 및 소통 강화
- 관심 분야가 유사한 사용자 네트워킹
-
개인화된 경험 제공
- 좋아요 데이터를 활용한 맞춤형 추천
- 개인화된 레시피 피드로 높은 만족도 유도
-
콘텐츠 품질 향상
- 좋아요 및 팔로워 수 기반 레시피 품질 평가
- 인기 콘텐츠 우선 노출
- Spring Security : 인증 및 데이터 보호
- Spring Boot : 확장성과 유지보수성 고려
- JPA : 객체지향 데이터 접근
- Redis : 키-값 저장으로 사용자 인증 처리
- MySQL & MongoDB : 대량 데이터 처리 및 유연성
- JWT: Spring Security와 통합된 인증
- OAuth 2.0 : 소셜 로그인 및 보안 강화
- Docker : 경량 가상화로 환경 설정 단순화
- Gradle : 유연한 의존성 관리
- GitHub: 버전 관리 및 협업
- GitHub Actions: 빌드 및 테스트 자동화
- AWS: 서버 배포 및 클라우드 서비스 활용
- IntelliJ IDEA: 프로젝트 개발 및 관리
- Visual Studio Code: 문서 및 환경 설정 파일 관리
- Python IDLE: 데이터 전처리
- Slack: 실시간 기록 및 협업
- Discord: 음성 대화 및 파일 공유
- Notion: 비즈니스 로직 및 설계 공유
- 신효승 (PM): JWT 인증, 초기 설정, CI/CD
- 손여산 (PS): 사용자 레시피, 공통 응답 처리
- 강신웅 (CR): 회원 정보 관리, 이미지 처리
- 김영훈 (CM): 데이터 분석, 기본 레시피
- 네이밍 규칙:
- Class: PascalCase
- Variable: camelCase
- Constant: UPPER_CASE
- Git 전략: GitHub-Flow
- 들여쓰기: 4 Space
- 기술 문서: 노션에 기록
- 보고서 작성:
- Slack, GitHub 기록 정리 후 노션에 작성
- 최종 보고서 제출 및 기록 보관
이 가이드는 Grafana를 사용한 JVM 모니터링의 주요 지표와 해석 방법을 설명합니다.
- Heap 영역: 70% 이하 유지 권장
- Non-Heap 영역: 20% 이하 유지 권장
성능 이슈 발생 시 개선 방안:
- JVM 최대 힙 크기 증가 검토
- 메모리 누수 여부 확인
- GC 로그 분석을 통한 메모리 사용 패턴 파악
- 힙 덤프 분석을 통한 문제 객체 식별
- Used/Committed 비율: 70% 이하 유지 권장
- 급격한 증가/감소 패턴이 없는 안정적인 그래프 형태가 이상적
메모리 모니터링 시 주의점:
- 일시적인 피크는 정상일 수 있으나, 지속적인 증가 패턴은 주의 필요
- 주기적인 메모리 덤프 분석으로 추이 관찰 권장
- 업무 시간대별 패턴 분석 필요
-
Eden Space
- 새로운 객체 할당 영역
- 빈번한 GC는 정상적인 현상
- 일시적인 높은 사용률 허용
- 모니터링 포인트:
- 객체 생성 속도
- Minor GC 빈도
- GC 후 회수되는 메모리 비율
-
Survivor Space
- Minor GC 후 생존 객체 보관
- Eden Space의 10-20% 수준이 정상
- 비정상 패턴:
- Survivor 영역의 급격한 증가
- 과도한 객체 이동
-
Tenured Generation (Old Generation)
- 장기 생존 객체 보관
- 사용률 70-75% 이하 유지 권장
- Full GC 후 정상적인 메모리 회수와 완만한 증가 패턴이 이상적
- 모니터링 포인트:
- Full GC 빈도
- GC 후 메모리 회수율
- 메모리 증가 속도
-
Metaspace
- 클래스 메타데이터 저장
- 초기 로딩 후 안정화되어야 함
- 급격한 증가 패턴은 비정상
- 주의사항:
- 동적 클래스 로딩이 많은 경우 증가할 수 있음
- 메모리 릭 가능성 주시
-
Compressed Class Space
- Klass 포인터 저장 영역
- 80% 이하 유지 권장
- 안정적인 수준 유지 필요
- 저장 정보:
- 클래스 이름
- 상속 관계
- 메서드 테이블
- 필드 정보
- 접근 제어자
- 인터페이스 정보
-
Code Cache
- 세 가지 영역으로 구분:
- non-nmethods: JVM 운영용 내부 코드
- profiled nmethods: 자주 사용되는 메서드의 최적화 코드 (Level 1-3)
- non-profiled nmethods: 덜 사용되는 메서드의 컴파일 코드 (Level 4)
- ReservedCodeCacheSize의 80% 이하 유지 권장
- 모니터링 포인트:
- JIT 컴파일 빈도
- 코드 캐시 사용량 증가 패턴
- 최적화 레벨별 분포
- 세 가지 영역으로 구분:
-
Minor GC (Young GC)
- 주기적 발생 정상
- 급격한 증가 패턴은 주의 필요
- 모니터링 포인트:
- 발생 빈도
- 수행 시간
- 회수된 메모리양
-
Major GC (Full GC)
- 드물게 발생해야 정상
- 평탄한 그래프 유지 필요
- 주의사항:
- 빈번한 Full GC는 메모리 부족 의심
- 장시간 Full GC는 성능 저하 유발
- Minor GC: 10-50ms 정상 범위
- Major GC: 100ms-1s 정상 범위
- 초과 시 어플리케이션 일시 중지 발생 가능
- 최적화 방안:
- GC 알고리즘 튜닝
- 힙 사이즈 조정
- GC 로그 상세 분석
- Allocated: Eden 영역 신규 할당량
- Promoted: Old 영역 승격량
- Promoted는 Allocated보다 현저히 낮아야 정상
- 모니터링 포인트:
- 객체 생성 속도
- 승격 비율
- 메모리 사용 패턴
- 초기 급증 후 안정화가 정상
- 간헐적 소폭 증가는 허용
- 지속적 증가나 급격한 변동은 비정상
- 주의사항:
- 동적 클래스 로딩 패턴 확인
- 메모리 릭 가능성 점검
- 클래스로더 계층 구조 검토
- Major GC와 연계하여 발생
- 간헐적 발생, 낮은 수준 유지가 정상
- 빈번하거나 대량 처리는 비정상
- 모니터링 포인트:
- 언로드 빈도
- 한 번에 언로드되는 클래스 수
- GC 발생과의 연관성
- I/O 작업용 네이티브 메모리 영역
- 초기 할당 후 안정적 유지 필요
- 급격한 변동은 비정상
- 최적화 고려사항:
- 버퍼 크기 설정
- 재사용 정책
- 메모리 파편화 관리
- 파일 메모리 직접 매핑 영역
- 필요 시 할당/해제
- 파일 처리량에 따른 변동은 정상
- 사용 시나리오:
- 대용량 파일 처리
- 빈번한 파일 I/O
- 메모리 매핑 필요 상황
- 베이스라인 측정 및 문서화
- 정기적인 트렌드 분석
- 경보 임계값 설정
- 로그 연계 분석
- Heap 사용률: 85% 이상
- Full GC 빈도: 시간당 2회 이상
- GC Pause Time: Major GC 1초 이상
- CPU 사용률: 지속적 80% 이상
- 클래스 로딩: 급격한 증가
- 증상 식별
- 메트릭 수집 및 분석
- 로그 분석
- 힙 덤프 분석 (필요시)
- 원인 파악 및 조치
- 모니터링 강화