Enum에 대해 알아보자(+활용)
Entity에 이런 코드를 쓰다가 Enum을 왜 쓰는지 똑바로 모르고 쓰는 중이라는 생각이 들어서 좀 더 알아보기로 했다.
1 |
|
동기와 비동기 처리에 대해 알아보자
동기와 비동기 방식의 차이에 대한 쉬운 예시로 카페에서 커피를 주문할 때를 생각해 볼 수 있다. 사람들이 줄 지어 주문을 하려고 카운터 앞에 서 있을 때, 한 명에게 주문을 받고 커피를 전달한 후에 다음 사람의 주문을 받는 건 동기 방식이다. 반면에 일단 주문을 연속적으로 받고 커피 전달은 다른 곳에서 제조 되는대로 담당 하는 건 비동기 방식이다.
그렇다면 언제나 비동기 방식이 효율적인 걸까? 이 카페에서 주문한 음료 수만큼 쿠폰 스탬프를 찍어준다고 생각해보자. 아직 주문을 안 한 사람에게 스탬프를 막 찍어줄 수는 없다. 반드시 주문이 완료 된 후에, 주문한 잔 수 만큼 스탬프를 찍어주어야 한다. 이렇게 사전 작업이 완료된 후에 처리해야 하는 작업의 경우에는 동기식 처리가 적절하다.
DB 인덱스 활용을 통한 성능개선 2
DB 인덱스 활용을 통한 성능개선 1 : https://rustywhite404.github.io/mysql/2024/10/03/DB_index_1/#
앞선 글에서는 새로 인덱스를 거는 방법과, 어떤 경우에 인덱스를 걸어야 하는지 정리해보았다. 이번에는 이미 인덱스가 걸려있는 테이블에서 인덱스 변경이 필요한 경우 어떻게 해야 할 지, 그리고 인덱스 별 처리 시간은 어떻게 차이를 확인해야 할 지 알아보기로 했다.
ex) A테이블에 a, b라는 인덱스가 걸려 있다. 쿼리 성능이 좋지 않아 실행 계획을 확인해보니 a테이블의 카디널리티 수치가 더 좋은데도 b 인덱스를 타고 있다. 이런 경우
힌트 기능을 활용하여 a 인덱스를 타도록 설정
해줄 수 있다.
DB 인덱스 활용을 통한 성능개선 1
데이터가 적을 때는 쿼리를 어떻게 실행 시키든 결과가 빨리빨리 나오지만 몇십만 건 이상이 되면 점점 조회 성능이 느려지기 시작한다. 회사에서 일을 할 때도 DB 조회 속도가 나오지 않아서 고객사 프로그램 전체 실행 속도가 무척 느려졌던 적이 있었다. 인덱스를 걸면 속도가 빨라진다는 건 배워서 알고 있었지만 정확히 왜 빨라지는지, 어떤 부분에서 빨라지는지, 어디에 인덱스를 걸어야 하는지
는 모르는 상태였기 때문에 거기서부터 공부를 해야 했다.
Strategy Pattern(전략패턴)에 대해 쉽게 이해하기(예제)
테스트 코드 강의를 듣다가 본 리팩토링 코드 예제가 무척 깔끔하고 확장성이 좋아보였다. 무엇보다 리팩토링 하기 전의 결합도 높은 소스코드가 평소 내가 많이 사용하는 방식이었다. 이참에 제대로 알아두면 좋겠다 싶어 찾아보니 디자인 패턴 중에 하나였다. Strategy Pattern(전략 패턴)
이라고 하는데 어떤 개념이고 어떻게 사용하는지 공부해 보았다.
Scouter를 이용한 캐싱 처리 전후 비교
캐싱으로 조회 성능 개선하기 2 : https://rustywhite404.github.io/etc/2024/09/27/Data_Cache2/
앞선 포스팅에서 캐싱 처리를 통해 데이터 성능 향상을 도모했고 nGrinder를 통해 전후 비교를 해보았다. 이번에는 Scouter를 이용해서 캐싱 처리 전후 비교를 해보려 한다.
ngrinder를 이용한 캐싱 처리 전후 비교
캐싱으로 조회 성능 개선하기 2 : https://rustywhite404.github.io/etc/2024/09/27/Data_Cache2/
앞선 포스팅에서 캐싱 처리를 통해 데이터 성능 향상을 도모했다. 이제 실제로 이 작업이 성능 향상에 도움이 되었는지 ngrinder를 이용하여 확인 해보려 한다.
캐싱으로 조회 성능 개선하기 2
캐싱으로 조회 성능 개선하기 1 : https://rustywhite404.github.io/etc/2024/09/27/Data_Cache/
이번에는 key와 condition을 이용하여 원하는 캐시만 가져올 수 있도록 해 보았다.
캐싱으로 조회 성능 개선하기 1
캐싱(Caching)은 자주 사용되는 데이터에 더 빠르게 접근할 수 있도록 데이터를 어딘가에 임시 저장해두는 방법이다. 예를 들어 웹사이트를 방문할 때, 매번 서버에서 같은 이미지를 받아오는 대신 한 번 받은 이미지를 로컬 저장소에 저장해 두고 다음에 그 이미지를 다시 사용할 때는 저장된 데이터를 가져오는 방식이다. 이렇게 하면 서버에 다시 요청하는 시간을 절약할 수 있다.