<aside> 🦦 안녕하세요, 일상에서 영감을 얻고 발전하는 천소연 입니다.
👩🏻💻 매일 학습 습관을 기르고 1일 1커밋으로 성장하기
🔥 문제가 나타나면 문제 해결을 위해 끊임없이 노력하여 해결 방법 찾기
🏡 더 나은 코드를 위해 끊임없이 노력하는 개발자
</aside>
Github
<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/12e30ff0-a860-494b-a27b-4d33e700899b/GitHub-Mark-32px.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/12e30ff0-a860-494b-a27b-4d33e700899b/GitHub-Mark-32px.png" width="40px" /> https://github.com/haedal-uni
</aside>
Blog
BE : Java, Spring Boot, Spring Data JPA, Python
Database : MySQL
‘나’ 를 기록하는 공간의 사이트
Java / SpringBoot / Spring Data JPA / MySQL / WebSocket + Stomp + SockJS / Redis
개발 기간 : 2023.08 ~ 2024.01
담당 기능 : 게시글 및 댓글 CRUD & 고객센터 채팅
채팅 기록 파일 조회 속도 개선 : 채팅 기록 파일 저장 방식 변경 후 약 80배 속도 개선
채팅 기록 파일 조회 횟수 감소 : HashMap을 활용하여 채팅 기록 파일 조회 횟수 감소
Broker 적용 : STOMP 프로토콜을 지원하는 RabbitMQ Broker 적용

db 조회 횟수 감소 : 채팅을 하는데 필요한 정보들을 Redis Cache를 활용해 db 조회 횟수 감소

개선 사항
파일 저장 방식 변경을 통한 채팅 기록 파일 조회 개선
개선 배경
채팅 버튼을 클릭 후 보여지는 채팅 마지막 글을 조회하는 목록에서
사용자가 불편하다고 느낄 정도의 로딩이 존재하여 수정이 필요하다고 판단
코드 수정
파일 내용을 읽기 편하게 7줄씩 저장하였으나 한 줄에 저장하는 방식으로 변경하여
빠르게 처리되도록 속도를 개선시켰다.

파일 저장 방식 변경 전 7줄 읽기

파일 저장 방식 변경 후 1줄 읽기
개선
마지막 글을 조회하는 과정이 154.466 ms/op → 1.860 ms/op로 약 80배 속도 개선

Map 활용으로 채팅 기록 파일 조회 횟수 감소
개선 배경
채팅을 실행시키지 않고 채팅 버튼만 반복적으로 열고 닫을 때마다 마지막 글을 조회하기 위해
파일을 다시 읽는 방식이 효율적이지 못하다고 판단
코드 수정
채팅을 할 때마다 HashMap을 활용하여 가장 최근에 작성된 글을 저장
.png)
이렇게 함으로써 마지막 글을 조회하는 로직은 채팅을 처음 시작할 때만 실행되고
파일을 재 조회할 필요가 없게 된다.

A : 7줄 읽기 | B : 1줄 읽기 | C : B에서 일부 저장 변수 추가 | D : Map 값 유무에 따른 file 조회
평균적으로 파일 조회(ConlyGetFile)만 하는 경우 약 2.42초가 걸리는 반면,
파일을 조회한 후 데이터를 HashMap에 저장하여
데이터가 있을 때 파일을 조회하지 않는 방식의 실행 시간이 더 빠르다는 것을 알 수 있다.
이를 통해 파일 조회를 최소화하고 Map을 활용하는 것이 효율적이라고 판단되었다.
Redis Cache 활용
cache 유무에 따라 DB 조회를 선택적으로 수행하여 DB 조회 횟수를 최소화했다.