Spring3 [Spring] Master/Slave DataSource 동적 라우팅 설정하기 현재 로컬에서 진행중이던 프로젝트가 배포 단계로 진입함으로써 DBMS 또한 테스트용 h2에서 RDS에 MySql을 올려 사용하는 방식으로 교체하였다. 현재 진행중인 프로젝트인 shoe-auction은 사용자가 지속적으로 증가함하며 많은 양의 트래픽이 발생한다는 가정하에 진행중이기 때문에 하나의 DB 서버로 모든 쓰기/읽기 작업이 집중된다면 쉽게 부하가 발생할 수 있다고 생각했다. 따라서 Master 서버 이외에 추가적으로 Replication된 Slave 서버를 두고 모든 읽기 작업(read-only)은 slave에게 향하게 함으로써 트래픽이 분산될 수 있도록 구현하였다. 그렇다면 기존에 오직 하나의 Datasource와 통신하던 Spring boot 애플리케이션이 읽기/쓰기 작업 별로 여러 Dataso.. 2021. 5. 5. [Spring] Slf4j + Log4j2 로거 적용하기 현재 진행중인 프로젝트 Shoe-Auction은 Lombok이 제공해주는 Slf4j와 스프링 부트의 기본 로거인 Logback을 이용해 간단한 설정으로 로깅을 진행중이었다. 사실 설정이라고 할 것도 없었다고 생각한다. 그러다 자바 성능 튜닝 이야기라는 책을 읽게 되었고 로그와 관련된 10장 부분 내용을 읽고 지금까지 로그에 대해 너무 무심하지 않았나 반성이 들어서 로그에 대해 알아보았다. 알아보는 중 각 로거들의 성능 벤치마킹 그래프를 보게 되었는데, Logback을 뛰어넘는 Log4j2의 성능을 보고 그 이유가 궁금해졌다. 🤔 Log4j2는 무엇이 다를까? Logback 또한 현재 많은 스프링 프로젝트에서 사용되고 있으며, 기존의 Log4j에 비하여 빠르고 메모리 효율도 좋다고 알고있었다. 그렇다면 L.. 2021. 3. 29. [Spring] 프로젝트에 Cache 적용하기 현재 진행중인 프로젝트 Shoe-Auction에 조회 성능 개선을 위하여 캐싱을 적용하였다. 기존의 조회 방법은 원하는 정보를 얻기 위해 요청이 들어올 때마다 반복적으로 외부 Disk 기반 DB 서버에 조회 요청을 보내고 응답을 받아야 했다. 캐시를 이용한다면 상대적으로 속도가 빠른 스토리지인 메모리에 조회한 데이터를 임시적으로 저장하고 요청 시 캐시에서 값을 조회하기 때문에 더 빠르고 서버에 부담없이 조회가 가능하다. 이 글에서는 본 프로젝트에서 캐시를 도입하고 적용한 과정에 대하여 가볍게 포스팅하려고 한다. 🤔 어떤 데이터를 캐싱해야 할까? 모든 조회 로직에 캐싱을 적용하는 것은 바람직하지 않다. 해당 조회에 캐싱을 적용하기 전에 캐싱하기에 적합한 데이터인지 고민해본 후 적용해야만 한다. 그렇다면 어.. 2021. 3. 28. 이전 1 다음