🚀 애자일 기반 이슈 추적 웹 서비스 🚀
애자일은 변화에 빠르게 적응하고 반복적으로 개선하는 프로젝트 관리 방법이에요.
복잡한 설명 없이도, 우리 서비스로 당신의 프로젝트를 더욱 유연하고 효과적으로 관리해 보세요!
- 멀티스테이지 빌드 사용으로 이미지 크기 감소
- Docker 캐싱을 활용하여 빌드 시간 단축
- Gradle 빌드 옵션 최적화 (병렬 빌드 사용 및 테스트 제외)
- 성과
- 처음에 이미지 빌드 시 총 700MB였던 것이 적용 후 320MB로 줄어들어, 50% 이상의 용량 최적화달성
- 배포 시간 13분에서 5분으로 단축 (약 62% 감소)
self-hosted runners를 활용한 CI/CD 파이프라인 구축
GitHub Actions를 활용한 CI/CD 구축
Jenkins vs GitHub Actions
- 팀원들의 CI/CD 학습 부담 경감을 위해 GitHub Actions와 Jenkins 비교 및 문서화
- GitHub Actions의 간편한 워크플로우 구축과 SSH 보안 문제 해결을 위해 self-hosted runners 도입
Logback 파일 설정
volume경로 잘못된 설정으로 생긴 로그 추출 못하는 문제 해결
모니터링 구축
[문제점]
개발 서버에서 발생한 간단한 에러조차 신속하게 확인하고 해결하는 데 어려움
[문제 해결을 위한 접근법]
- vim nohup.out 실행
- 로그파일 생성에 예상보다 많은 시간 소요
- 자주 ssh 세션이 멈추는 문제로 인해 결국 예외가 발생한 부분을 확인하지 못하는 어려움을 겪음
- 서버 종료 후 java -jar 명령어로 직접 실행
- 서버를 종료하고 jar 파일을 직접 실행하여 예외 발생 시 로컬에서 터미널을 통해 바로 확인할 수 있게 해 에러를 해결
- 배포를 jar파일에서 docker image로 변경
- 예외 발생 시 docker logs [컨테이너 ID]를 통해 컨테이너 상태와 로그를 더 쉽게 확인 가능
- 하지만 이전 에러 기록을 찾는 것이 번거로움
- Logback 파일 설정
- Prod 서버에서 ERROR 로그 레벨 부터 로그파일 생성
- 로그 파일의 최대 용량과 보존 기간을 매일 최대 50MB, 최대 7일 보존 기간으로 설정
- 로키와 그라파나를 이용한 로그 모니터링
- 스프링 액추에이터를 이용해 로그와 JVM memory 사용률 추출
- 프로메테우스로 JVM 메모리 사용률 pull 해서 그라파나로 시각화
- 프롬테일에서 액추에이터에서 추출한 로그내역 로키에 push, 로키는 pull하여 그라파나로 시각화
👉 팀위키
BE: 김민상 | BE: 최재영 | FE: 신승혜 | FE: 주원희 |