추천할 영상은 개발바닥 채널의 카카오같은 회사는 왜 퇴사하는걸까? - 솔직하게 말씀드림 #1이다.
영상의 9분 35초에서 향로님께서 게스트에게 캐시 관련 질문을 한다. Ehcache, Redis, MemCache 등 캐시 레이어에서 쓸 수 있는 솔루션이 많은데 어떤 것을 사용했냐는 질문을 한다. 이후에도 이에 관한 기술적인 부분에서 약간의 티키타카가 오간다. 이후 영상 후반부에도 DB와 관련된 좋은 내용이 나오니 참고하면 좋을 것 같습니다.
결론적으로 게스트님께서 맡은 도메인에서는 Ehcache를 사용했다고 합니다. Ehcache는 톰캣 서버 내에서 사용할 수 있는 캐싱 구현체 중 하나이다. 쉽게 말해 스프링 부트로 프로젝트를 개발하면 사용할 수 있다. Spring Boot docs를 참고하면 다양한 캐싱 구현체를 확인할 수 있습니다.
개인 프로젝트에서는 나도 상품 도메인의 읽기 요청을 인메모리 캐시를 사용했었다. 구현체로는 Caffeine cache를 사용했는데 따로 정리하진 않았지만 성능적으로 좋다고해서 선택했다. 머쓱...ㅎ
그 외에는 기본적인 캐싱의 동작 방식에 대해서만 공부했지 더 깊게는 공부하지 않았다. 왜냐하면 나는 이 인메모리 캐시 솔루션이 부하를 분산하는 환경에서는 동기화 문제가 발생하기 때문에 보편화된 방식이 아니라고 생각했기 때문이다.
톰캣 서버를 한대만 사용한다면 상관없지만 부하 분산 환경에서는 인메모리 캐시를 사용할 경우 문제가 생길 수 밖에 없다. 만약에 10대의 톰캣 서버에서 라운드 로빈 방식으로 부하 분산을 받는다고 했을 때, 캐시가 동기화될려면 꽤 많은 시간이 걸릴 수 있다.
나는 이 문제를 심각하게 생각해서 경로 기반 라우팅을 통해 캐시가 발려져있는 로직은 특정 인스턴스로만 요청을 보내도록 변경했었다. 하지만 영상 내용을 보면 굳이 동기화가 늦게 되어도 상관이 없는 영역이기 때문에 그 단점을 안고 갈 수 있다고 한다.
이만 자야겠다.
'개발일기장' 카테고리의 다른 글
| 스타벅스를 옮겼을 뿐인데 MongoDB Cloud 연결이 되지 않는다. (0) | 2023.08.01 |
|---|---|
| embedded MongoDB를 사용하려 했을 뿐인데... (0) | 2023.07.30 |
| 분산 환경에서 개발 (1) 분산 환경에서 배포하기 (0) | 2023.06.03 |
| 인텔리제이에 절여진 자 vscode 세팅하기 (0) | 2023.05.29 |
| Querydsl 장단점 (1) | 2023.05.16 |