본문 바로가기
반응형

All57

Spring Bean을 이용한 팩토리 메서드 패턴으로 객체 분리하기 일이 너무 많아 오랜만에 글을 쓰는 것 같다... 새롭게 배운 내용도 엄청 많고 정리해야할 내용도 엄청 많은데 바쁘고 귀찮다는 핑계로 미뤄두다가 오랜만에 써보게 되는 것 같다. 후후... 그러면 간만에 리팩토링한 내용을 정리해보려고 한닷. ㄱㅈㅇ!! 문제상황 기존의 코드는 아래와 같다. Mybatis에서 Union All을 통해 여러가지 쿼리가 조건에 따라 합쳐져서 보여지고 있는 형태이다. ㅂㄷㅂㄷ... SELECT ... FROM Table1 JOIN ... WHERE ... UNION ALL SELECT ... FROM Table2 JOIN ... WHERE ... UNION ALLSELECT ... Table3 JOIN ... WHERE ... UNION ALL ... 위의 코드에서 여러 문제점이 .. 2024. 4. 7.
정적분석툴 SonarQube A-Z 조사 두둥.. 회사 프로젝트에서 정적분석툴을 연동해서 통합적으로 코드 품질을 관리하고자 하는 니즈가 생겼다. 그래서 정적분석툴에 대해 조사해보니, 소나큐브가 압도적으로 레퍼런스도 많고 지속적인 버전관리도 되고 있어 강력한 후보군으로 추천하고 싶어졌다. 이제 정적분석툴은 뭐고 소나큐브는 무슨맛인지 한번 알아보자...! SonarQube 소개 SonarQube는 오픈 소스 기반의 정적 코드 분석 도구라고 한다. 코드의 품질을 분석하고 개선하는 데 도움을 주는 도구로, 다양한 프로그래밍 언어와 프로젝트 유형을 지원하며 코드 복잡성, 중복 코드, 버그, 취약점 등과 같은 다양한 측면의 코드 품질을 검사하여 표시하고, 개발자들이 품질을 개선할 수 있는 지표와 피드백을 제공한다. 또한, CI/CD 파이프라인에 통합하여 .. 2023. 8. 26.
Redis와 Spring Scheduler를 사용해서 사이트 일일 방문자 저장하기 AWS ElasticCache Redis 를 생성해놓고 어디에 쓸지 째려보기만한지 어언 한달... 드디어 결단의 시간이 왔다. Redis를 사용해서 사이트 일일방문자수를 확인하는데 사용하려고 한다. 왜 Redis를 사용하냐면, 실시간으로 접속하는 모든 방문자를 캐치하여 즉시 DB에 저장하는 것은 DB Connection과 I/O를 많이 발생시켜 비효율적으로 보였기 때문이다. 따라서, Redis라는 캐시를 두어 실시간으로 접속하는 방문자를 캐시에 저장해두고 일정시간마다 DB에 저장하여 DB I/O를 줄여보고자 한다. 로직은 다음과 같이 작성하려고 한다. 1. 특정 경로로 온 요청에 대해 방문자 Interceptor 작동. 2. Redis에 ip_date 를 key값으로 존재여부 확인 후 저장. 3. Sch.. 2023. 2. 3.
Maria DB / HikariCP Connection 누수 개선 (Too many connections) 이슈 발생 현재 Maria DB를 사용하면서 Connection에 대한 이슈가 발생했다. 많은 개발자들이 DB에 달라 붙다보니 당연히 DB Connection Session이 늘어나게 된다. 그러면서 이제 1차적인 문제가 발생했다. Too many connections DB Setting을 통한 1차 해결 현재 DB 세팅은 max-pool-size가 150이며 Connection의 유휴상태(sleep)에서 default대기 시간이 8시간이다. -- max pool size 확인 show variables like '%max_connect%'; -- connection timeout 확인 show variables like 'wait_timeout'; 즉, 150개의 요청의 세션이 sleep상태로 살아있다.. 2023. 1. 20.
반응형