전체 글38 [Spring] Slf4j + Log4j2 로거 적용하기 현재 진행중인 프로젝트 Shoe-Auction은 Lombok이 제공해주는 Slf4j와 스프링 부트의 기본 로거인 Logback을 이용해 간단한 설정으로 로깅을 진행중이었다. 사실 설정이라고 할 것도 없었다고 생각한다. 그러다 자바 성능 튜닝 이야기라는 책을 읽게 되었고 로그와 관련된 10장 부분 내용을 읽고 지금까지 로그에 대해 너무 무심하지 않았나 반성이 들어서 로그에 대해 알아보았다. 알아보는 중 각 로거들의 성능 벤치마킹 그래프를 보게 되었는데, Logback을 뛰어넘는 Log4j2의 성능을 보고 그 이유가 궁금해졌다. 🤔 Log4j2는 무엇이 다를까? Logback 또한 현재 많은 스프링 프로젝트에서 사용되고 있으며, 기존의 Log4j에 비하여 빠르고 메모리 효율도 좋다고 알고있었다. 그렇다면 L.. 2021. 3. 29. [AWS] 람다(Lambda)를 이용한 서버리스 이미지 리사이징 적용하기 현재 진행중인 프로젝트 Shoe-Auction에 상품 및 브랜드 이미지 업로드 기능을 구현하였다. 업로드한 이미지는 AWS S3의 버킷 내에 저장되며 해당 이미지 경로는 각 도메인의 imagePath 필드에 저장되어 클라이언트가 원할 때 이미지를 불러올 수 있다. 하지만 뷰에서 해당 이미지를 썸네일 등의 작은 사이즈로 보여주려 할 때 불필요하게 큰 원본 이미지 파일을 계속하여 요청하는 것은 전송 효율 측면에서 매우 떨어지며 이러한 요청이 늘어날 수록 어플리케이션의 응답속도는 느려질 수 밖에 없다. 따라서 S3에 이미지를 저장할 때 원본 이외에 필요한 사이즈로 리사이징한 이미지를 함께 저장하고 작은 사이즈의 이미지가 필요할 때에는 리사이즈된 이미지를 요청한다면 전송효율을 증가 시킬 수 있다. 🤔 그렇다면 .. 2021. 3. 29. [Spring] 프로젝트에 Cache 적용하기 현재 진행중인 프로젝트 Shoe-Auction에 조회 성능 개선을 위하여 캐싱을 적용하였다. 기존의 조회 방법은 원하는 정보를 얻기 위해 요청이 들어올 때마다 반복적으로 외부 Disk 기반 DB 서버에 조회 요청을 보내고 응답을 받아야 했다. 캐시를 이용한다면 상대적으로 속도가 빠른 스토리지인 메모리에 조회한 데이터를 임시적으로 저장하고 요청 시 캐시에서 값을 조회하기 때문에 더 빠르고 서버에 부담없이 조회가 가능하다. 이 글에서는 본 프로젝트에서 캐시를 도입하고 적용한 과정에 대하여 가볍게 포스팅하려고 한다. 🤔 어떤 데이터를 캐싱해야 할까? 모든 조회 로직에 캐싱을 적용하는 것은 바람직하지 않다. 해당 조회에 캐싱을 적용하기 전에 캐싱하기에 적합한 데이터인지 고민해본 후 적용해야만 한다. 그렇다면 어.. 2021. 3. 28. 동기와 비동기 / 블로킹과 논블로킹 프로젝트 중 Redis를 사용하기 위해 Java의 Redis Client인 Lettuce와 Jedis를 비교하게 되었다. 각 라이브러리들의 특징을 비교하기 위해 도큐먼트을 보는 도중 Jedis는 동기 방식만을 지원하며, Lettuce는 비동기 방식 또한 지원하기 때문에 발생하는 성능차이에 대한 내용들이 주를 이루었는데 아무리봐도 이해하기가 쉽지 않았다. 이해하기 어려운 이유는 동기와 비동기 그리고 블로킹과 논블로킹에 대한 나의 배경지식이 너무 얇고, 각 개념들이 혼재되어있기 때문이라는 생각에 한번 정리해보고자 포스트를 작성하게 되었다. 워낙 의견이 갈리기도 하며 추상적인 개념이 존재하여 가볍지 않은 주제라고 생각되지만 최대한 가볍게만 정리하고자 한다. 동기(Synchronous)와 비동기(Asynchro.. 2021. 2. 10. 이전 1 2 3 4 5 ··· 10 다음