분류 전체보기(361)
-
Java - Virtual thread
오늘 알아볼 주제는 JDK 21부터 정식으로 도입된 Virtual Thread이다. 불가 얼마전까지만 해도 Webflux나 Kotlin의 Coroutine을 이용해 애플리케이션을 개발하였는데, 최근에 Virtual Thread를 도입하면서 조금더 깊은 이해를 가지고 사용하는 것이 좋다 생각하여 정리해본다. 우선 Virtual Thread를 알아보기전에 Java의 전통적인 Thread 모델에 대해 다시한번 되짚어보자. Thread란? 위 그림과 같이 우선 Thread에는 유저 레벨 쓰레드, 커널 레벨 쓰레드, 혼합형 쓰레드가 있다. 유저 레벨 쓰레드사용자 스레드는 커널 영역의 상위에서 지원되며 일반적으로 사용자 레벨의 라이브러리를 통해 구현되며, 라이브러리는 스레드의 생성 및 스케줄링 등에 관한 관리 기..
2024.11.30 -
Spring - @Transaction propagation&중첩 트랜잭션 롤백
참고https://techblog.woowahan.com/2606/ 응? 이게 왜 롤백되는거지? | 우아한형제들 기술블로그이 글은 얼마 전 에러로그 하나에 대한 호기심과 의문으로 시작해서 스프링의 트랜잭션 내에서 예외가 어떻게 처리되는지를 이해하기 위해 삽질을 해본 경험을 토대로 쓰여졌습니다. 스프링의techblog.woowahan.com
2024.11.29 -
Redis - Redisson을 이용한 분산락(Distributed lock)
참고https://helloworld.kurly.com/blog/distributed-redisson-lock/ 풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson어노테이션 기반으로 분산락을 사용하는 방법에 대해 소개합니다.helloworld.kurly.com
2024.11.29 -
JPA - @JoinColumn 정리
참고블로그https://ksh-coding.tistory.com/105 [JPA] @JoinColumn 파헤치기 (feat. JPA 연관관계별 사용)✌🏻 0. 들어가기 전 JPA 강의 중에 @JoinColumn을 마스터하면 JPA 연관관계를 어느정도는 다 알 수 있다고 들었다. 그래서, 여러 JPA 개념 중에 @JoinColumn에 대해 파헤쳐보면서 JPA 연관관계를 이해해보ksh-coding.tistory.com @JoinColumn의 name 속성name 속성은 연관관계의 주인(@JoinColumn을 가진)의 테이블의 FK 필드명을 뜻한다.* 참조하는 Entity가 존재할 경우: 참조하는 Entity의 필드명 + "_" + 참조된 기본 키 열의 이름public class Station { ... ..
2024.07.18 -
네트워크 - VPN과 NAT란?
VPN이란?VPN이란 Virtual Private Network의 약자로 인터넷과 같은 공중망을 마치 전용회선처럼 사용해 보안성을 향상하면서 사설망을 이용하지 않기 때문에 비용문제까지 해결한 네트워크다. 실제로 아주 먼 거리의 지사끼리 전용회선으로 통신하기 위해서는 큰 비용이 발생한다. 이때 VPN을 사용하면 비용 절감은 물론 지사간의 중요 데이터를 송수신할 경우에 보안도 지킬 수 있다. 공중망을 통해 데이터가 송수신되더라도 정보 유출이 없도록 라우터 체계를 비공개하고, 데이터를 암호화하고 사용자 인증 기능을 추가하는 등의 다양한 보안기능을 제공한다. VPN 터널링터널링이란 연결해야할 두 지점간에 마치 터널이 뚫린 것처럼 통신 통로를 생성하는 것을 말한다. 이 터널은 터널링을 지원하는 프로토콜을 사용하여..
2024.06.24 -
Kafka - 신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법(멱등성 프로듀서, 트랜잭션 컨슈머, 컨슈머 중복 적재)
1. 멱등성 프로듀서1.1. 중복 데이터 produce 문제 상황만약 네트워크에 이슈가 생겨서, Acknowledge 전송이 실패되면 중복으로 데이터를 produce할 수 있다.1.2. 멱등성 프로듀서 사용PID(Producer unique ID)를 같이 보내서 브로커에 메시지가 저장되어있음을 같이 저장해서 중복 메시지가 발행되면 토픽에 개시하지 않음. 아래는 실제 3.0 이상의 카프카 프로듀서 팩토리 코드인데, 디폴트로 true로 설정된 코드. 2. 트랜잭션 컨슈머 + 프로듀서컨슈머와 프로듀서를 하나의 트랜잭션으로 묶어서 처리하는 방식임. 특이하게 커밋을 Producer가 한다. 트랜잭션 컨슈머 + 프로듀서 구성으로 되어있고 그 프로듀서가 발행한 이벤트를 consume하는 컨슈머는 반드시isolati..
2024.06.18