전체 글

변화에 집중하기
Today I Learned

[Mysql, nGrinder] 캐싱 vs 파티셔닝 성능 비교 -1

서론개발 중인 스프링 프로젝트에서 캐싱과 파티셔닝을 적용해보았다.이전 글에서 캐싱으로 응답속도가 빨라진 것을 확인했는데, 과연 파티셔닝도 적용했을 때 성능이 좋아졌을까? 파티셔닝은 주로 대용량 테이블의 유지 관리를 돕고 테이블에서 대량의 데이터를 빠르게 로드하고 제거하는 방법을 제공하기 위해 설계된 기능이다. 파티셔닝은 쿼리 성능을 향상시킬 수 있지만, 그 성능 향상이 보장되는 것은 아니다.  캐싱과 달리 파티셔닝은 IDE만으로는 테스트하기 까다로워서 nGrinder 라는 성능 테스트 도구를 사용했다.     1. nGrinderhttps://github.com/naver/ngrindernGrinder는 네이버에서 제공하는 서버 성능/부하 테스트 오픈 소스 프로젝트이다.애플리케이션을 개발하고 nGrind..

Spring

[Spring] 캐싱 구현

1. 캐시란캐시는 서버의 부담을 줄이고, 성능을 높이기 위해 사용되는 기술이다.  캐시는 값을 저장해두고 불러오기 때문에 반복적으로 동일한 결과를 반환하는 경우에 용이하다. 만약 매번 다른 결과를 돌려줘야 하는 상황에 캐시를 적용한다면 오히려 성능이 떨어지게 된다. 오히려 캐시에 저장하거나 캐시를 확인하는 작업 때문에 부하가 생기기 때문이다. 그러므로 캐시는 동일한 결과를 반환하는 반복적인 작업과 시간이 오래 걸려서 서버(애플리케이션)에 부담이 되는 경우에 적용하면 좋다.     2. Spring AOP스프링은 AOP 방식으로 편리하게 메소드에 캐시 서비스를 적용하는 기능을 제공하고 있다.  이를 통해 캐시 관련 로직을 핵심 비즈니스 로직으로부터 분리할 뿐만 아니라, 손쉽게 캐시 기능을 적용할 수 있다...

Today I Learned

[Mysql, Spring JPA] 파티셔닝 적용하기

서론스프링 프로젝트에서 폐의약품 수거함 위치 정보를 저장하는 bin_location 이라는 테이블을 조회하는 시간이 오래 걸려서 파티셔닝을 적용해보기로 했다.이 테이블은 시/도를 의미하는 addr_lvl1 컬럼과 시/순/구를 의미하는 addr_lvl2 로 주로 조회가 되고, 추가/수정/삭제 되는 작업이 드물게 일어난다. 테이블은 처음에 csv, geojson 파일에서 정보를 가져와서 저장된다.addr_lvl1 컬럼의 값의 예: "서울특별시", "전라남도", "경기도"   1. 파티셔닝 적용 시행착오1) LIST COLUMNS 파티셔닝 시도 Mysql에서는 string형 컬럼을 파티션 키로 사용하려면 LIST COLUMNS를 이용해야 한다.String형인 컬럼 addr_lvl1 을 기준으로 파티셔닝을 하기..

기록

ERD Diagram 작성 (dbdiagram.io) & 아키텍처 구조도 작성하기 (draw.io)

졸업프로젝트 중간발표를 위해 ERD Diagram과 아키텍처 구조도를 보다 가독성 있고 깔끔하게 표현하고자 툴을 사용해보았다. ERD Diagram은 이전까지 ERD Cloud를 사용했는데 export한 이미지가 선명도가 낮아서 불편했었다. 그러던 도중 다른 사람들의 깃허브 리드미에서 dbdiagram.io를 사용한 깔끔한 다이어그램을 발견해서 이번에 적용해보기로 했다. 소프트웨어 공학 수업에서 클래스 다이어그램을 그릴 때 star UML을 사용했었는데 그 때 아키텍처 구조도도 지원하는 것 같아서, 이것 말고도 다른 툴들이 있나 살펴보았다. 그 중에서 draw.io가 그동안 AWS 공식 문서 등에서 보아왔던 아키텍처 구조도와 비슷한 예시를 보여주고 있어서 선택했다. 결론부터 말하자면 draw.io에서 제..

falco_
부지런히