전체 글
-
2021년 개발자 회고흔적 2022. 1. 9. 14:54
어느덧 느리게 지날 갈 법한 2021년도가 지났다 그래서 나는 2021년도를 어떻게 보냈는지 정리하고 싶어 글을 작성한다 2021년도 목표 나는 여러 가지 목표를 세웠다 검색엔진(es)에 더 가까워지는 것 내가 실수한 것들을 정리하는 것 장애를 모두 기록하는 것 새로운 도전을 하는 것 2021년도가 지나 지금 2022년도 새해가 밝은지 며칠 지난 시점 당연히 검토를 해봐야 하지 않겠나 목표만 세우는 것은 누구나 다 할 수 있지만 목표를 실천하고 그것을 잘 이뤘는지 검토하는 것은 누구나 할 순 있지만 아무나 하진 않는다 검색엔진에 더 가까워지는 것 검색엔진에 더 가까워진다는 것은 검색엔진을 더 공부한다는 것을 의미한다 혼자 어느정도 공부는 되었는데 쿼리 최적화, 궁금한 것은 테스트를 하며 기록을 해두었는데..
-
분석기 성능 튜닝(정규식)elasticsearch 2021. 12. 5. 16:42
개요 이번에 무신사에서는 블랙프라이데이를 진행하였고 그에 맞춰 상품 관련 노드를 20대를 사용해서 트래픽을 받을 준비를 하였다 그러나 그럼에도 로드가 많이 튀고 cpu 사용량도 엄청 튀는 것이었다 그래서 전체 분석기를 튜닝하지는 못해도 커스텀 분석기 중 튜닝할 만한 게 있나 체크를 하였다 분석 사실 분석이라고 말은 거창하게 했지만 전부터 고치려고 했었던 것이 있었는데 얼마나 좋아지겠어?라고 생각하고 고치지 않았던 것이 있었는데 그것부터 고치려고 했었다 보통 웹에서는 정규식을 사용해 validation을 하거나 string.matches를 많이 사용한다 그 이유는 input 값에 대해 각각 문자를 validation 하기보다는 전체 값을 validation 하기 때문이다 예를들면 모바일만 서비스하는 곳은 ..
-
F-LAB 멘토 도전기흔적 2021. 10. 8. 19:42
계기 어느덧 9월이 되고 일 년 중 1/4만 남은 상황에서 매너리즘에 빠져있었다 일도 일이지만 새해가 되고 지금까지 이런저런 공부도 하고 스터디도 하고 이미지 검색 내부 설루션 구축까지 하며 쉴 새 없이 달렸다가 너무 지쳐버리게 된 것이었다 그러던 어느 날 멘토를 구한다는 F-LAB 서비스를 보게 되었고 채용 공고를 보는데 유명 기업들이 쭈~~ 욱 있었지만 우리 회사는? 없었다 뭔가 도전해보고 싶다는 생각이 들었고 마침 그전에 조언해달라고 한 분도 있었고 뭔가 재밌어 보여서 도전을 결심 했다 서류 제출 이력서를 어느덧 쓰지 않은 게 2년이 넘게 흘렀다 어떻게든 이력서를 썼는데 마음에 들지는 않았지만 너무 무거운 마음 말고 어느 정도 가벼운 마음을 가지고 제출을 하였다 그리고 안 되겠지? 하고 있었는데 서..
-
webflux if else를 사용해보자 with switchIfEmptyspring 2021. 8. 3. 16:58
webflux에서 if else를 사용하기 위한 기초를 다루고 어떻게 응용할 수 있는지 알아보자 바로 예제를 살펴보도록 하자 Flux로 테스트를 했지만 Mono로 테스트하여도 switchIfEmpty를 사용하는 방법은 같다 Flux.just(1, 2, 3) .flatMap(c -> { System.out.println("flatmap1 :" + c + ", return Flux.emptu()"); return Flux.empty(); }) .switchIfEmpty(Flux.defer(() -> { System.out.println("switchIfEmpty1"); return Flux.empty(); })).flatMap(b -> { System.out.println("flatmap2"); return..
-
opensource contribute를 하다흔적 2021. 8. 2. 21:26
opensource contributor란? 오픈 소스 소프트웨어는 소스 코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈 소스 라이선스를 만족하는 소프트웨어를 말한다 - 위키백과 계기 제목을 적고 나니 뭔가 대단한 것을 한 것 같은데 그렇지 않다 정말 사소한 기여였다 그런데 하고 나니 별거 없는 나도 기여할 수 있구나라고 느꼈고 일 때문에 우연히 opensource에 commit 할 수 있는 계기가 되었다 우리는 scouter로 x-log를 모니터링하고 알람을 받으면 grafana와 es log를 확인하고 에러를 해결한다 물론 scouter만으로도 해결되는 경우도 있다 그런데 scouter는 python(나는 fastapi를 사용했음)을 직접적으로 지원하지는 않고 zipki..
-
QueryDsl where 조건에서 stringtemplate 사용하자JPA 2021. 7. 14. 20:00
몇 년 전에 querydsl을 사용하고 나서 해당 연산을 어떻게 해야 하는지 시행착오가 좀 있었는데 최근에 같은 팀원분이 어떻게 해야 되는지 물어봐서 다른 사람들도 모를 수 있겠구나 하고 글을 적어본다 보통 querydsl에서 비교를 할 때 우리는 다음과 같이 한다 LocalDateTime createDate = LocalDateTime.now(); 생략 .where( qOrderSheet.createDate.gt(createDate) ); qOrderSheet.createDate.gt(createDate)처럼 칼럼에다 주어진 값을 전달해서 같은지 큰지 적은 지 등등 비교를 한다 하지만 위와 같은 작업으로만 다 될 수 있는 것은 아니다 만약 아래와 같이 하고 싶다면? .where( qOrderSheet...
-
LocalDate, LocalDateTime format 변경spring 2021. 5. 4. 14:05
java Date는 많이 쓰지만 가끔 다른 포맷으로 변경해주는 것을 사용해야 될 때가 있는데 그것은 자주 쓰지 않아 잊어버리다가 써야 할 때 또 검색해서 찾아보곤 하였다 그러나 이제는 그런 반복을 하지 않기 위해 간단히 정리를 하였다 1. String date = "2015-08-04"; LocalDate parse = LocalDate.parse(strDate); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd MMM uuuu"); System.out.println(parse + " formats as " + dateTimeFormatter.format(parse)); 2. String date = "2015-08-04 22:..
-
elasticsearch failed to flush export bulk [default_local]elasticsearch 2021. 5. 2. 17:35
우리 서버에 matrix를 설치한 뒤 보니 failed to flush export bulk 와 같은 에러가 나고 있었다 물론 서비스 이슈는 없었지만 당연히 제거해야 될 에러였다 [2021-04-29T23:27:04,206][WARN ][o.e.x.m.MonitoringService] [xxxx] monitoring execution failed org.elasticsearch.xpack.monitoring.exporter.ExportException: failed to flush export bulks at org.elasticsearch.xpack.monitoring.exporter.ExportBulk$Compound.lambda$doFlush$0(ExportBulk.java:109) [x-pack-..