분류 전체보기

회고

토스로의 여정

2024년 2월, 트렌비에서 서버 개발자로 커리어를 시작한 이후, 2025년 10월 20일 토스뱅크로 이직하게 되었다.이 글은 이직을 결심하게 된 계기와 그 과정에서 느꼈던 생각들을 정리하고자 쓰게 되었다.이직의 계기이직의 이유는 사람마다 다르다. 누군가는 연봉을 누군가는 재밌는 일을 또 누군가는 더 나은 문화를 찾는다.나에게는 ‘토스’라는 회사에 대한 동경이 있었다.세상에 혁신을 만들어내는 그들의 모습은 언제나 내게 깊은 인상을 주었다. 새로운 변화를 이끌어내고, 세상을 조금이라도 더 나은 방향으로 움직이는 그 여정 속에서 열정을 다해 무언가를 만들어가는 사람들의 모습은 내 마음 한켠에 오랫동안 자리하고 있었다. 하지만 동시에 "내가 그런 곳에 합류하기엔 아직 부족하지 않을까?" 하는 생각이 늘 따라붙..

Language/Java

ThreadPoolExecutor와 VirtualThreadExecutor의 실행 차이

Java Virtual Thread와 ThreadPoolExecutor 비교 Java 21부터 가상 스레드(Virtual Thread)(이하 가상스레드)가 도입되면서, 기존 ThreadPoolExecutor(이하 스레드풀) 방식과 비교해 스레드 관리 전략에 큰 변화가 생겼습니다. 이번 글에서는 스레드풀과 가상 스레드의 동작 방식을 코드로 비교하며, 언제 어떤 방식을 써야 하는지 정리해보겠습니다.1. ThreadPoolExecutor 동작 원리우리가 일반적으로 사용하는 ThreadPoolExecutor 또는 ThreadTaskExecutor의 execute() 코드는 다음과 같습니다.int c = ctl.get();if (workerCountOf(c) 동작 방식현재 실행 중인 worker 수 확인coreP..

Backend/JPA

Hibernate Set<T> ClassCastException

Spring Boot와 JPA(HIbernate)를 사용하면서 Entity 에 Set이나 Map 같은 컬렉션을 사용하시나요?오늘은 JPA 사용 시 Set 을 사용하면서 발생한 ClassCastException에 대해서 정리하고자 합니다.1. 문제상황오늘 Spring Data JPA를 사용하는 환경에서 @OneToMany로 Set 컬렉션을 사용하다가 다음과 같은 에러를 만나게 되었습니다.java.lang.ClassCastException: class java.util.HashSet cannot be cast to class org.hibernate.collection.spi.PersistentCollection Hashset은 Hibernate의 PersistentCollection으로 전환 될 수 없음..

Backend

Kotlin 리스트 확장함수 사용 시 타입을 조심하자.

해당 내용에 대한 예시코드는 [깃허브 예시코드] 에서 확인 하실 수 있습니다.확장함수란코틀린의 확장 함수(Extension Function)는 기존 클래스의 소스 코드를 수정하거나 상속받지 않고, 마치 그 클래스의 멤버 메소드인 것처럼 새로운 함수를 추가할 수 있는 기능입니다.주요 특징기존 클래스 확장: 외부 라이브러리나 수정 불가능한 클래스에도 새로운 기능 추가 가능정적 바인딩: 컴파일 시점에 호출되는 함수가 결정됨접근 제한: 클래스의 public 멤버에만 접근 가능구현 방법fun 클래스명.함수명(파라미터): 반환타입 { // 함수 본문}활용 예시외부 라이브러리 클래스에 추가 기능 제공기본 클래스에 자주 쓰는 유틸리티 함수 정의코드의 재사용성과 가독성 향상리팩토링과 확장 함수 도입 배경프로젝트를..

Backend

Outbox Pattern 의 이해와 구현 (1)

안녕하세요. 이번 글에서는 비동기 메시지 전송 시 데이터 일관성을 유지하기 위한 효과적인 접근법인 Outbox Pattern에 대해서 알아보겠습니다.해당 내용에 대한 예시코드는 [깃허브 예시코드] 에서 확인 하실 수 있습니다.Outbox Pattern이란?Outbox Pattern(아웃박스 패턴)은 데이터베이스 트랜잭션과 메시지 브로커 간의 데이터 일관성을 보장하기 위해 사용하는 설계 패턴입니다. 특히 마이크로서비스 아키텍처(MSA)에서 데이터 변경 이벤트를 안전하게 외부 시스템에 안정적으로 전달하거나, 응답 여부가 크게 중요하지 않은 HTTP 비동기 호출 작업의 기록 추적에도 활용할 수 있습니다.Outbox Pattern의 필요성먼저, 분산 시스템에서는 데이터베이스의 상태 변경과 메시지 브로커로의 이벤..

Backend/MYSQL

MySQL 복합 인덱스 순서 자동 지정, 이거 진짜에요?

배경MySQL에서 복합 인덱스를 지정하면 Where 절에는 복합 인덱스에 순서에 맞게 조건 절을 지정을 해주어야 의도한대로 동작하는 것으로 이해를 하고 있었습니다. 그런데, 어느 날 오랜만에 만난 개발자 지인분께서 갑자기 이런 말을 해주시는겁니다."형, 그거 알아? 복합 인덱스를 지정하고 MySQL 컬럼 순서를 순서대로 지정하지 않아도 알아서 조건 절을 최적화해서 인덱스를 태울 수 있도록 바꿔준다?"진짜. 이 말이 나올 수 밖에 없다. "그게 진짜에요?" 나도 모르는 사이에 놓쳤을 수 있고, 만약에 진짜 된다면 정말 좋은 기능이기에 얘기를 듣고 넘어가는 것이 아닌 직접 테스트를 진행해봤습니다. 환경 준비먼저, 테스트를 진행하기 위한 적절한 데이터 양을 가진 테이블이 필요하기때문에 TEST용 mysql s..

여행

맹그로브 고성을 다녀오며

2025년 4월 26일 맹그로브 고성에 다녀왔다.다녀오던 지인, 친구들마다 꼭 가봐야 하는 곳이라 하여 버킷 리스트에 담아두고 있던 공간인데, 최근 지인이 공유해주신 고성의 파도가 내 마음을 크게 자극하기도 했고, 지금이 딱 다녀오기 좋은 시기라고 생각해서 다녀왔다. 이유는 모르겠다. 그냥 지금 가면 왠지 좋을 것 같은 느낌이었다. 본래 계획은 5월 연휴에 맞춰서 가려고 했었으나 생각보다 가격이 만만치 않아서 한 주 땡겨서 가게 되었다. 여행에서의 목적은 머릿속을 어지럽히고 있는 수많은 발산되고 있는 내용들을 정리하기도 하고, 사색을 좀 하고 싶었다. 요즘 혼자만의 시간을 많이 가지고 있기도 하고, 사람들 간의 관계 속에서 나라는 사람을 점차 알게 되고 있기 때문에 내면에서 정의 내리지 못한 것들이 상당..

회고

나를 찾아가던 2025년 1분기

2024년 연간 회고를 작년에 시간 순서로 작성을 해봤다. 연간 회고를 한 번에 작성하려고 하니 기억이 안나는 것도 많고, 작성하는데에도 생각보다 상당히 많은 시간이 소요됨을 경험 할 수 있었다. 그렇기에 이번년도는 먼저 분기별로 작성해보고자 한다. 특히, "글을 쓰는 또라이들의 모임" 이하 "글또" 에 대한 이야기가 많이 나올 예정이다. 다양한 사람이 모여있는 커뮤니티를 많이 접해보지도 못했고, 다양한 사람들을 만나며 1월, 2월, 3월은 알고 있다고 생각했던 나 자신을 다시 한 번 알아보고 몰랐던 모습들을 알아 볼 수 있었던 인생의 터닝포인트 였기 때문이다. 더욱 '나'로 살아 갈 수 있게 해준 커뮤니티이다.1월폭풍의 눈과 같던 회사 생활당시에는 알지 못했다. 지금 돌이켜 보면 번아웃이었다.이미 『마..

Bombo_
'분류 전체보기' 카테고리의 글 목록