WIL

HEUKWU·2023년 4월 9일
1

어느덧 중간발표도 끝나고 최종프로젝트도 끝이 보이기 시작했다. 기능 추가도 마무리됐고 다음주면 사용자 피드백을 받아볼 수 있을것 같다.

추가된 기능이 몇가지 있는데 일단 내가 맡은 기능은 채팅에 안읽은 채팅개수 반환하는 기능, 신고 당한 회원에게 메일 보내는 기능, sse알림 기능이 있다. 기능들 전부 새로운 라이브러리를 쓰거나 생각할거리가 많은 기능들이라 재밌게 한것 같다.

특히 안읽은 채팅개수 반환하는 기능은 생각보다 어려웠는데 채팅방에 관계를 맺고 있는 회원 필드가 두개이고 서로에 대한 채팅 개수를 처리해야 했기 때문에 반복코드가 많이 나왔다. 머리를 열심히 굴려서 가독성도 높이면서 반복코드도 줄였는데 잘한건지 모르겠다. 리펙토링하면서 항상 느끼는 거지만 기본기가 정말 중요한것 같다.

기능 테스트 성공했을때만큼 행복한 순간이 없다. 확실히 채팅개수가 들어가니 뭔가 있어보였다. 여기에 알림까지 적용한다면 완벽해질 것같다. 물론 깊게 들어가면 훨씬 어려운 부분이 많은 채팅기능이겠지만 눈에 띄기에는 충분하다고 생각한다.

sse알림 기능은 일단 백엔드 코드만 작성해 놓은 상황이다. 채팅과 마찬가지로 프론트랑 붙어서 해야하는 작업이다보니 시간이 좀 걸릴 것 같다. 원래 사용자 피드백 이후에 추가할 생각이었는데 채팅 기능의 완성도를 위해서 어떻게 해서든 무조건 추가해야겠다고 생각했다.

메일 기능도 재밌었는데 메일 계정 설정만 해주고 라이브러리만 사용하면 돼서 사용법은 간단했다.

사용자 피드백까지 하기로 했던 기능들이 얼추 마무리되고 여러가지 테스트를 해보는데 생각보다 오류를 많이 만났다. 생각지도 못한 곳에서 오류들을 발견했다. 그래도 꼼꼼한 팀원들 덕분에 일단 눈에 보이는 오류들은 거의 잡은 것 같다. 사용자 테스트때 사용자가 작정하고 공격하면 또 여기저기 오류들이 발생할 수도 있지만 그건 그때가서 생각하는걸로하자.

가장 큰 걱정은 데이터베이스에 손상이 가는것이다. 잘못하면 테이블이나 컬럼들을 삭제해야 하는 상황이 올수도 있는데 유저 테스트하는 중에 데이터들이 사라져버리면 큰일이다. 특히 채팅이 데이터베이스 접근량도 많고 실시간 통신이라 제일 걱정이다.

채팅 테스트하던 중에 새로운 에러를 만났는데 데이터베이스 데드락이 발생했다. 채팅에 안읽은 채팅개수 반환기능이 추가돼 트랜잭션이 불가피하게 길어져 발생한것 같다. 채팅에서 발생할 수 있는 데드락은 서로 메시지를 보내기 위해 같은 리소스에 대한 락을 보유하고 있는 경우 서로의 락을 해제하기 위해 무한정 기다리며 발생할 수 있다는데 역시 길어진 트랜잭션이 원인인 것 같다. 따라서 트랜잭션을 최대한 짧게 가져가는 방향으로 코드를 리펙토링해봤다. 아직 테스트는 안해봤지만 해결됐으면 좋겠다.

데이터베이스, 트랜잭션 개념이 아직 부족해서 오류가 발생해도 삽질하는 시간이 너무 길다. 그래도 삽질하면서 배울는게 분명히 있기 때문에 열심히 삽질중이다.

이제 실전프로젝트도 마무리 단계라니 아직 실감이 나지 않는다. 항해 처음 시작하고 담임 매니저님과 어색하게 상담했던 게 엊그제 같은데 벌써 끝이 보인다니 시간 정말 빠르다. 마지막까지 유종의 미를 거두기 위해 열심히 하자.

1개의 댓글

comment-user-thumbnail
2023년 4월 9일

ㅋㅋㅋㅋㅋ담임매니저님과 어색하게 상담했던게 ㅋㅋㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ ㅋ
맞습니다 ㅎㅎ 벌써 끝이 보이네요!! 끝까지 열심히 해봅시다 화이팅!

답글 달기

관련 채용 정보