736
2021-09-04 09:19:58
0
마지막 이슈는 사용되는 오브젝트의 캐시 힛 패턴과 메모리 사이즈를 고려하여 오브젝트 수의 upper bound 를 정하고 LRU, LFU, FIFO 와 같은 로직을 넣어도 좋을것 같네요
또는 캐시를 함수 ( Fx = y ) 라 생각하면 F=로직 프로세스, x=입력, y=출력의 다양한 관점으로 캐시를 할 수 있기 때문에 이런 부분들도 고려하시면 더욱 다양한 시나리오를 효율적으로 커버할 수 있는 캐시 클래스가 될것같습니다
그리고 중앙화된 캐시서버 없이 캐시로직이 서버 인스턴스 별로 적용이 된다면 여러개의 서버 인스턴스를 띄웟을 경우 각 인스턴스가 동일한 키에 대해 각자 다른 데이터를 캐시할 수 있기 때문에 필요에 따라 캐시 데이터 동기화 로직도 필요할 수 있습니다. 이런 이슈는 DB 엔진쪽에 데이터 싱크를 맞추기 위한 알고리즘들이 다양한데 이 부분을 참고하시면 도움이 될 것 같아요
개인적인 경험으로는 이렇게 필요에 의해 캐시를 직접 구현해보고 생각지 못햇던 또 다른 이슈들에 부딪히고 파고드는 것들이 다양한 개발상황에서 효율적인 방법 생각하는데 많은 도움이 되었던것 같습니다.