분류 전체보기 44

Kafka란 무엇인가? 그리고 메시지 큐에 대해서

들어가기에 앞서갑자기 Kafka와 메시지 큐라는 주제에 대해서 글을 쓰게된 이유는 두 가지가 있다.실무에서 내가 맡은 기능을 점진적으로 고도화함에 있어서 개선을 했음에도 불구하고,앞으로 점점 더 트래픽이 늘어날 예정이라서 이대로는 안될 것 같다는 생각이 들었다.그래서 기존의 하나에 묶여있는 로직을 분리하고 더 많은 처리를 하기 위해 메시지 큐 방식을 도입하는건 어떨까 하는 고민과 팀내에서 논의가 오가고 있었다.그러던중 최근 핵핵핵 망해버린 나의 직무면접에서 논의중이라고 했던 부분을 파고들어 면접 내내 질문이 쏟아지면서 정말이지 망쳐버렸다.광탈은 너무나도 슬프지만 이참에 개선을 해보고자 제대로 메시지 큐 방식의 처리를 공부 하려고 작성하게 되었다.여기에서는 간단한 개념과 기본적인 동작의 흐름을 소개한다. ..

스터디 2025.04.15

@Transacntional 의 옵션들

들어가며...Spring Framework를 이용해서 개발을 하다보면 사용하게 되는 @Transactional 어노테이션을 보다가 문득 내가 사용해본 옵션 말고어떠한 옵션들이 또 있을까? 궁금해져서 라이브러리 내부를 따라가보았다.내부에 있는 옵션에 대한 설명들을 보면서 어떤 옵션들을 제공하는지 알아보자. package org.springframework.transaction.annotation;@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Transactional { /** * The transaction propagation type..

백엔드/Spring 2025.04.01

Java Stream API란?

Java Stream API란?Java8에서 도입된 Stream API는 데이터 처리의 선언적 접근 방식을 제공하여 코드의 가독성과 유지보수성을 향상시켜준다.다만, 효과적으로 사용하기 위해서는 몇가지 전략적으로 사용해야 제대로 된 사용을 할 수 있다. 성능 최적화Stream 파이프라인의 순서 최적화예를들어 List에서 원하는 데이터를 뽑아 정렬등을 거친다고 하자.이럴 때 대상을 줄일 수 있는 filter와 같은 메소드를 앞쪽에서 사용할수록 뒤에서 처리할 데이터의 양이 줄어들게 되므로 보다 효율적인 사용이 가능해진다.불변성 유지 예를들어 stream 내부에서 숫자를 증가시킨다던가 외부의 List에 값을 담는 등의 행위는 불변성을 저해할 수 있다.이때 숫자의 경우 IDE를 사용하면 AtomicInteger ..

백엔드/Java 2025.02.07

HashMap과 LinkedHashMap의 차이

Map이란?Map은 Key와 Value라는 쌍으로 이루어진 데이터를 갖는 인터페이스다.기본적으로 하나의 Key를 갖기 때문에 중복을 허용하지 않으며 이에 해당하는 Value를 찾는 방식이다. HashingMap에서 Key 값에 대해 해시 값을 계산하고 그 해시 값에 해당하는 버킷에 데이터를 삽입한다.해시 테이블의 장점 덕분에 빠른 처리속도를 갖으며 일반적으로 O(n)의 시간 복잡도를 갖는다.해시 코드는 일반적으로 배열의 크기를 초과할 수 있기 떄문에 해시 값에 대해 배열 크기에 맞는 인덱스를 계산하는 모듈러 연산을 수행한다.Map map = new HashMap();map.put("김철수", 1);map.put("김영희", 2);map.put("김민수", 3);System.out.println(map.g..

스터디 2025.01.12

Batch Insert를 통한 속도 개선기

JpaRepository의 save, saveAll과 Batch Insert에 대해서 다뤘었다.(기존 포스팅은 여기)https://youngblue.tistory.com/41 JpaRepository save와 saveAll의 차이 그리고 Batch Insert들어가기에 앞서...토스 Learner's High 서버 1기에 합격하게 되면서, 내가 개선할 수 있는 것들이 무엇이 있을까 고민 해봤다.내가 담당하고 있는 업무에서 그동안 미뤄왔던 부분을 개선하고자 마음youngblue.tistory.com  오늘은...실무에서 Batch Insert를 통해 처리성능을 개선시킨 내용을 다루고자 한다.업무 내용을 노출할 순 없으니 자세하게 어떤 내용인지 소스코드를 공개할 순 없으니대략적인 예시 코드와 로직의 흐름 ..

백엔드/Spring 2025.01.08

JpaRepository save와 saveAll의 차이 그리고 Batch Insert

들어가기에 앞서...토스 Learner's High 서버 1기에 합격하게 되면서, 내가 개선할 수 있는 것들이 무엇이 있을까 고민 해봤다.내가 담당하고 있는 업무에서 그동안 미뤄왔던 부분을 개선하고자 마음 먹었다.서비스가 점점 확장 되어가면서 처리량은 늘고 있는데 내부 서비스에서 우리팀 서비스로 넘어오는 데이터에병목현상이 생겨 강제로 데이터 갯수 제한을 걸어서 받고 있었다. 아직까지는 괜찮지만 점점 이용자수가 늘고 처리 해야하는 데이터가 많아지고 있으니 개선하지 않으면 추후 서비스 확장에 있어서 큰 걸림돌이 될 것 같았다. 그래서 이부분을 개선해보기로 마음 먹었다. 기존 JpaRepository 를 사용해서 save 하던 부분을 batch Insert 를 통해 처리 시간을 줄여보고자 하는 목적이었다.결론..

백엔드/Spring 2025.01.05

정규식 사이트 및 예제 RegExr

https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 업무 중에 정규식 관련해서 패턴을 적용해보거나 미리 만들어진 패턴을 참고할 때 이용하는 사이트이다. 업무 중에 PG사로부터 API로 결제를 시도해서 처리하는 부분이 있는데 이때 결제 실패가 날 경우 오류를 프론트에서 표현해주어야 하는 경우가 있다. 이때 kg이니시스에서 오류를 html 태그와 같이 반환해주는 바람에 사용자에게 문구만 전달 해주기 위해서는 정규식으로 태그를 제거해야 했다. 그래서 정규식을 작성하고 실제 적용해볼 텍스트를 ..

백엔드/Java 2023.05.11

[JPA] queryDsl cannot find symbol Q class 오류

JPA에서 QueryDsl 을 사용해서 CustomRepository의 쿼리문을 작성 할 때 Q class 큐 클래스를 이용해서 바로 dto에 결과를 담도록 select 를 하기도 한다. 그런데 @Query 어노테이션도 클래스 생성자에 잘 달아주었고, 각각의 필드의 자료형도 잘 넣어서 순서대로 해주었는데 무엇이 문제인지 자꾸 cannot find symbol Q class 라는 오류를 뱉어내며 빌드가 되지 않았다. 이것또한 실수에서 비롯된 에러였다. private JPAQuery .... return select ( new QMemberaddressDTO( .... 위와 같은 q class를 이용한 customRepository queryDsl 이 있다고 치자. 이때 여기서 뭔가 이상한 점을 발견 했는가..

백엔드/Spring 2023.05.11

[JPA] but parameter 'Optional[xx]' not found in annotated query.

JPA의 Repository를 사용하다보면 쿼리를 작성할 때 어노테이션 쿼리를 사용하기도 하고 네임쿼리를 사용하기도 한다. 그런데 이때 변수를 전달해서 동적인 쿼리를 작성하곤 하는데 제목과 같이 not found in annotated query. 라는 오류를 뱉을 때가 있다. 이 경우 아주 간단한 문제이므로 잘 확인 해보길 바란다. 예를 들어, 생성일자를 변수로 쿼리에 전달한다고 할 때 다음과 같은 쿼리가 있다고 치자. ... and a.createdDateTime

백엔드/Spring 2023.05.11

[React] Uncaught (in promise) TypeError: xx is not a function...

에러 발생 업무중 에러가 발생했다. Uncaught (in promise) TypeError: props.closeModal is not a function. 정말 바보같은 상황이었다. 알고보면 아무것도 아니고 간단한 해결이지만, 처음 시작하는 초심자의 마음일떈 내가 뭐 잘못한지 모르고 왜 오류나는지 찾기 때문에 이런 것도 블로그에 적어본다. 상황 설명 나의 경우 내부 컴포넌트의 모달을 부모의 구현부에서 속성으로 show: true/false 를 하는데 이때 '닫기' 또는 완료 했을 경우 props 로 제공한 closeModal 이라는 함수를 호출한다. (any) 그런데 제대로 제공을 하고 호출을 했음에도 불구하고 is not a function 이라는 오류가 나는게 아닌가? 해결 방법 알고보니 저 모달..

프론트/React 2023.05.11
반응형