본문 바로가기

T.I.L. :: Today I Learned110

Day 69. 중간 발표로 쉼표를 찍어보자. 드디어 오늘 중간 발표가 있었다. 어떤 기술 면접 질문이 들어오게 될지 걱정반 기대반인 상태로 우리 리더가 발표를 해주었다. 발표 준비를 도와주면서 내가 발표를 하게 되면 어떻게 대답할 지 함께 고민할 수 있어서 나에게도 성장의 발판이 될 수 있었다. 우리가 예상했던 건 우리 서비스의 아키텍쳐를 보고 "카산드라"를 왜 도입했는지 물어볼 것 같았다. 음.. 사실 이 이유는 아직 찾지 못했다. 단순히 db를 옮기자는 의도로 시작해서 일단 뭐라도 해보자는 심정이 컸기 때문에 어떻게 찾아보다가 다른 팀원이 제시한 의견이었다. 해결책은 아니었으나 일단 db를 옮겨놓은 상태였기 때문에 설정을 바꾸기엔 턱없이 짧은 시간이어서 그대로 두었다. 그래서 이 질문이 들어오면 어쩌지 하는 마음이 많았는데 다행히 이 질문은 들.. 2023. 6. 10.
Day 68. "FE 요청으로" 오늘 커밋 메세지에 가장 많이 등장한 "FE 요청으로" 백엔드의 덕목은 빠른 배포, 기다림이라고 했던가..!!! 프론트단에서 작업물이 생겨나고 수정 되면서 기존 api 명세에 표기했던 내용들에서 바뀌는 것이 많이 있다. 프론트의 요청으로 반환값이 바뀌거나 기능이 조금씩 바뀐다. 이것도 협업의 과정이니 약간 5분 대기조처럼 있으면서 기능을 수정하고 또 수정했다. 그리고 DB를 직접 건들 수 있다보니 더미데이터를 넣어줘야하는 일도 많았다. 프론트단에서 목록이 어떻게 뜨는지 파악하고 그 내용을 가지고 작업을 해야하기 때문에 데이터를 넣어줬다가 삭제했다가 하는 일이 빈번했다. 기능을 구현할 때랑 또 다른 경험이다. 직접 협업해보지 않았다면 할 수 없었을 경험이라고 생각한다. 초반에 매우 바쁘다가도 조금은 한가해.. 2023. 6. 9.
Day 67. 중간발표 준비함세.. 이번에 중간 발표 자료를 준비해주면서 가이드로 잡아본 우리 서비스의 아키텍쳐! 아키텍쳐 설계가 매우 중요하다고 해서 우리가 이번에 사용한 기술 스택들을 하나씩 정리해보았다. 프로젝트에서 메인기능으로 가지고 가려던 화상채팅 + 화면공유 기능을 위해 미디어 서버를 따로 두었고 미디어 서버에는 도커를 이용해서 openvidu를 올려놓았다. 오픈비두는 자체적으로 nginx를 프록시 서버로 두고 있어서 같은 ec2 인스턴스에 올리려면 포트가 겹치는 일이 발생하니 혹시라도 openvidu를 함께 사용하려면 꼭 꼭 따로 올리시길... 그리고 우리 프로젝트를 또 다른 인스턴스에 올리고 레디스와 카산드라를 도커로 띄웠다. https로 배포하기 위해 도메인을 구입하여 route 53 과 로드밸런서를 사용했고 db는 aws.. 2023. 6. 8.
Day 66. 일단 Pending은 pending이요 처음에는 SSE 기능을 도입한 뒤로 주기적으로 프론트단에서 pending이 나타났고 백에서 확인할 수 있었던 문제는 HIkari pool DeadLock 이었다. sse 기능을 위해 subscribe를 한 뒤 계속해서 db에 요청이 가는 것 같았고 그로 인해 닫히지 않은 pool이 많아지니 임계값인 20을 넘어서면 db에 lock이 걸려 pending이 나타나고 있었다. 그래서 우리가 찾은 해결책은 SSE 관련 데이터 저장을 rds로 하지말고 다른 db로 옮기자는 거였다. 카산드라란? [Cassandra] 아파치 카산드라란? Contents 1. 카산드라 개요 2. 카산드라 특징 3. 카산드라 장점 4. 카산드라 단점 5. 카산드라 데이터 구조 이번에 신규로 프로젝트를 진행하게 됬는데, 해당 프로젝트에서.. 2023. 6. 7.
Day 65. pending............. no way........ 아 일단 펜딩은 뜰 때마다 서버를 껐다 켜주는 방법..으로 막고 있다. 말이 되나? 싶은데 이게 현실로 ㅠ pending을 못고치면 어쩌나 하는 마음도 있어서 많이 불안하다. 일단 이 상황을 계속 두고 볼 수 없어서 우리가 해야만 하는 기능 구현부터 하나씩 해나갔다. 그 와중에도 계속해서 생기는 펜딩.. ㅠㅠ 일단 잠시 미뤄두고 만났던 다른 오류에 대해 적어보려고 한다. 오늘은 채팅 기능 구현시 사용한 Redis 의 직렬화, 역직렬화에 대해 보았다. 레디스에는 데이터를 저장할 때 serializer 를 통해 직렬화를 해서 저장해주어야 한다고 한다. 흐잉.. 아직 이건 잘 모르겠음 https://velog.io/@bagt/Redis-%EC%97%AD%EC%A7%81%EB%A0%AC%ED%99%94-%EC%.. 2023. 6. 6.
Day 64. 랜덤 Pending 다시 등장.. 두두등장... 펜딩 또 터짐.. 진짜 제발 ~ 왜 또 나오는건지 어디서 나오는건지 열심히 조사해본 결과. 일단 가장 의심스러운 곳은 SSE 기능이다. 사용자에게 알림을 전송하기 위해 로그인시 회원은 sse 기능에 구독을 한다. 그 이후 그 구독이 끊어지지 않고 db를 잡고 있어서 이녀석이 임계점에 다다르면 Hikari DeadLock이라는 상황에 빠져 DB 요청이 가는 족족 모든 순간에 pending(보류중)이 뜬다. 그 때 만난 메세지 : jdbc.spi.SqlExceptionHelper : HikariPool-1 - Connection is not available, request timed out after 30000ms. org.springframework.transaction.CannotCreateTransa.. 2023. 6. 5.
320x100