본문 바로가기

전체 글141

[개인프로젝트] 검색기능에 대한 생각 및 회고 (2) 지난 블로그를 보면 검색에 대한 생각을 적어놨다. ElasticSearch와 Mysql Index 에 대한 간단한 개인 의견을 적어놓았다. 추가적으로 캐시를 적용하면 어떻게 될까를 테스트 하기 위해 이번블로그를 적는다.저번 블로그에서 "Mysql Index + 캐시를 사용한다면 ElasticSearch 만큼의 성능이 나오지 않을까" 에 대한 고민을 했었다. 고민의 결과는 Mysql, ElasticSearch 둘다 캐시를 사용하면 검색기능이 향상된다. 왜냐하면 캐시의 개념자체가 임시 메모리에 똑같은 요청에 대한 데이터를 저장하기에 캐시를 사용하면 Mysql를 사용하던 ElasticSearch를 사용하던 임시 메모리에서 캐시 데이터를 가져온다. 그래서 Redis를 이용한 캐시를 예제를 짜보았다. Redis .. 2024. 3. 5.
[개인프로젝트] 검색기능에 대한 생각 및 회고 (1) 최근 검색기능에 대한 생각이 많아지면서 정리해보기로 한다. 개인프로젝트에서 검색기능을 구현했다. 간단하게 말하자면 위치기준, 이름 기준으로 검색하면 private Long id; private String walkerName; private Double walkerLnt; private Double walkerLat; 이렇게 반환값이 나오게했다. 다만 나는 조금더 검색을 빠르게 하고 싶었다. 그래서 어떻게 할까 생각했을때 두가지 방법이 생각이 났다. Mysql Index, ElasticSearch 두가지중 ElasticSearch를 이용했다. Index의 경우 공부해 본적이 없어서 어떤 것을 인덱스를 걸어야할지... 인덱스를 어떻게 생성해야할지 에 대한 고민이 많았다. 근데 ElasticSearch의 경.. 2024. 3. 5.
2024-03-03 일주일 회고록 내가 왜 서합이 되도 불안한가.. 저번 서합되서 코테 봤는데 떨어졌다. 사실 떨어진건 큰 문제가 아니다. 아마 면접에서 떨어졌을거다. 코테보기도전에 나느 긴장했다. 만약 면접가면 어쩌지... 왜 이런 고민을 했나면 나는 내 기술에 대한 질문을 받았을때 과연 만족할 만한 답변을 말할 수 있을까?? 를 고민했던거같다. 고민에 끝에는 아니다. 였다. 그래서 더 긴장이 되었고 서합이 되도 그냥 마음이 힘들었다... 이번주에도 서합 하나가 되었다. 자주 사용했봤던 기업이라 서합된게 기분이 좋았다. 근데도 불안했다.. 앞서 말한 질문에 대한 불안감, cs에 대한 불안감... 그래서 멘토링을 받았다 사실 부트캠프에서 멘토링을 받을 수 있지만 나느 좀더 여러 개발자분들한테 멘토링을 받아보고 싶었다. 왜냐면 일단 개발자.. 2024. 3. 3.
프록시??? 스프링 AOP?? 트랜젝션?? (2) 지난 블로그에서 프록시와 프록시 패턴에 대해서 알아보았다. 간단하게 정리해보자면 프록시를 사용하는 이유는 원본 객체를 수정할 수 없는 상황을 극복하기 위해서였다. 예를 들어 A라는 클래스를 수정할 수 없다고 해보자. 근데 A라는 클래스 앞에 x라는 기능을 넣고 싶다. 이럴때 프록시라는 것을 통해 A수정없이 x라는 기능을 추가할 수 있다. 그러니까 프록시를 이용해 부가적인 기능을 부여(트랜젝션, 시간측정등), 또는 타깃에 대한 접근방법 제어(지연로딩)일때 사용된다. 다만 프록시 패턴을 사용하면 - 인터페이스를 구현해서 프록시 객체를 생성해야하는 코드 복잡도 증가 - 모든 메서드에 부가기능 구현 해야하는 중복코드 발생 과 같은 단점이 존재한다. 그래서 나온게 동적 프록시이다 동적 프록시 프록시의 단점 해결하.. 2024. 3. 2.
[Spring Batch] 예제만들어보기 이전 블로그에서 간단하게 개념을 살펴보았다. 이번에는 Spring Batch 5 기준 예제를 만들어서 적용해볼 예정이다. 이번 예제는 PayHistory테이블에서 pay_done상태의 데이터를 뽑아 Adjust와 AdjustDetail테이블에 정산하는 것이다. 여기서 주의하실점 PayHistory테이블의 userId는 서비스 수행자의 id라고 가정한다. Tasklet을 이용 일단 나의 로직은 이러하다 PayHistory에서 pay_done인 데이터들 가져와서 -> Adjust에 PayHistory의 userId기준으로 데이터가 있다면 거기다가 값을 더해주고 -> AdjustDetail 데이터도 생성한다. -> 만약 Adjust에 PayHistory의 userId기준으로 데이터가 없다면 Adjust 데이터.. 2024. 2. 29.
[mySQL] Explain이 무엇인가? mysql 인덱스 정리하려다가 Explain보는 법? 좀 공부하려고 하다보니... 적어놔야할거같아서... Explain이 뭐냐?? mysql doc에 따르면 "select, delete, insert, replace, update 쿼리에 대해 Mysql이 어떻게 실행했는지 정보를 보여준다" 라고 되어있다. 즉, 데이터베이스가 데이터를 찾아가는 일련의 과정을 보여주는 것이다. explain을 통해 기존의 쿼리 튜닝 뿐만 아니라 성능 분석, 인덱스 전략 수립등을 할 수 있다고 한다. Explain 어떻게 사용하는데? 너무 간단하다. 사용하고자하는 쿼리 맨앞에 "Explain"만 붙이면 끝! Explain select id from user where name = 'test' 그럼 테이블이 이렇게 나온다.(해.. 2024. 2. 29.
728x90