출근 103일차 - 기술적 레벨업

·2023년 1월 20일
1

회사이야기

목록 보기
39/50

기술적 문제에 봉착했고, 그것을 해결하기 위해서는 무엇을 해야할까.

그게 지금 나에게 있어서, 팀에 있어서 제일 큰 고민이다.

정적인 데이터를 관리하는 방법

캐시를 쓰기 전에 조회를 못하면 어떻게 하지?

잦은 조회를 하는 경우, 캐시를 활용하여 DB의 부하를 줄이는 것이 일반적이다.

한번 불러온 데이터를 저장하고 업데이트가 될 경우 해당 내용을 동기화하여 수정된 데이터를 캐시에 담아놓는 것으로

그런데 한번 불러오질 못한다면 어떻게 해야할까.

테이블의 구조를 상세하게 적진 못하겠지만
메인이 되는 테이블이 있고 연결되어있는 테이블이 연속적으로 5개정도 있다.
1:N:1:1:N:1 이런 느낌(....)

문제는 이것을 한번에 가져와야하는 경우가 매우 많다는 것인데..

처음 N이 20개를 넘어가는 순간, 1분의 timeout에 걸려서 조회가 안되는 장애가 발생했다.
어떻게 어떤 수단을 해도 시간을 줄일 수 없어서 많은 고민을 하고 있는데

메인이 되는 첫번째 1의 테이블은 값들이 빈번하게 수정된다.
그 외에 관계가 걸려있는 모든 테이블들은 극히 낮은 확률로 수정이 된다.

그래서 내가 생각하고 있는 방식은 ES 혹은 NoSQL에 담아버리자. 였다.

왜냐하면 아래와 같은 이유였는데

  1. 관계 테이블의 수정이 극히 낮은 빈도수로 이루어진다.
  2. 수정이 이루어질 경우 해당 동기화시키는 방법이 존재한다.
  3. 애초에 조회가 안되는데 캐시를 사용하는게 무슨 의미가 있나

RDB + ES or NoSQL을 섞어서 쓰는게 일반적이지도 않을 뿐더러
조금 과정이 난해하여 일단 미뤄놨다.

그래서 나왔던 그나마 제일 현실적인 안은

관계로 인하여 쿼리속도가 느려지는 것이니, 관계단위로 최대한 쪼개서 여러번 API를 호출한다.였다.

이것도 이렇게 되면 RDB를 더더욱 갈굴 것이 뻔하기에(...)

(현재 RDB에 모든 것을 다 때려박고 있는 편이다)

최대한 다른 것들을 활용하여 RDB의 부하를 줄여나가는 것이 현재 목표인데
이것이 잘 될지, 어떤 방향으로 흘러갈지는 쪼오끔 미지수다.

문제는 1분기 혹은 2분기내로 해결 해야함 ㅋㅋ

무조건.

정규화를 걍 깨버리면 해결되긴 하는데...

기술적 레벨업

개인적인 내 고민 중 하나다.

너무 도메인에 집약되고 있는 것이 아닐까?

왜냐하면, 현재 다양한 작업을 해봤지만 절대적인 코드의 양이 많은 것이지
고민이 필요하고 어려운 에픽(피쳐)가 없었기 때문에 상당히 큰 고민요소다

그렇다면 무엇을 해야하는가?에 대해서도 솔직히 물음표다.

기술적인 능력을 상승시키기 위해서는 어떤 일을 해야하는지?
기술적 능력이란 무엇인지 <- 부터 확립이 되어야하지 않나 싶다.

레거시 코드 리팩토링같은 경우도 상당한 노력이 필요하다고 이야기를 하지만
음....아직 우리 회사 레거시 코드는 아직 2년이 안된 까닭인지 상당한 노력까진 필요가 없었기에(....)

좀 더 다양한 일을, 다양한 언어를 다뤄봐야겠다. 라는 생각을 가지고 있다

겸사겸사 프론트도 좀 만져보면 좋을 것 같기도하고(회사말고 사이드프로젝트에서나)


최근 2주간 야근을 빡세게 달리면서 오버드라이브를 걸어가지고, 이번 연휴에는 아마 노트북을 집에 놓고 다녀올 것 같다.
푹 쉬고와야지

새해 복 많이 받으세요!

profile
물류 서비스 Backend Software Developer

0개의 댓글