[Go] MongoDB 쿼리 최적화를 통한 서버 성능 개선
·
Go
현재 운용중인 Go 서버에서는 `gRPC` 통신과 `MongoDB` 데이터베이스를 사용한다.그렇기에 DB에서 데이터를 가져온 뒤 Protobuf 메시지로 매핑하여 해당 데이터를 Response에 담아 반환한다. 최근 MAU가 급격하게 상승하고, 특정 프로필에서 가져오려던 데이터가 기하급수적으로 많아져서 성능 저하가 발생했기에 리펙토링을 진행하였다.  가장 시간이 많이 걸리던 부분은 유저가 타 유저에게 보내거나 받은 데이터를 조회하려고 할 때해당 카드의 Sender와 Receiver 프로필을 조회하게 되는데 여기에서 몇 가지 문제점을 발견했다.  1. users 컬렉션 내부 데이터들의 Referencing 부재- 특정 Profiles 내 Object 값만 조회하기 때문에 쿼리가 동작할 때 모든 데이터를 볼..