Web/Spring(57)
-
DBMS - 데이터베이스 락(lock) 종류와 트랜잭션 격리수준(isolation level)
RDBMS에서 데이터를 일관성을 위한 동기화(Lock)을 설정하는 방법은 크게 2가지로 나뉜다. 하나는 비관적 락, 나머지 하나는 낙관적 락이다. 아래는 각각에 대한 개략적인 설명이다. Pessimistic lock(비관적 락)비관적 락이란 트랜잭션이 시작될 때 데이터의 행에 Shared Lock 또는 Exclusive Lock을 걸고 시작하는 방법이다. 즉, write를 하기위해서는 Exclucive Lock을 얻어야하는데 Shared Lock이 다른 트랜잭션에 의해서 걸려 있으면 해당 Lock을 얻지 못해서 업데이트를 할 수 없다 수정을 하기 위해서는 shared lock을 설정한 트랜잭션이 종료(commit or rollback)된 후 exclusive lock을 설정해야한다. shared l..
2025.01.22 -
Springboot + koltin coroutine 사용법
1. 코루틴이 왜 필요할까?코루틴은 비동기 프로그래밍을 단순화하고, 효율적인 동시성(concurrency) 관리를 가능하게 하는 프로그래밍 개념입니다. 코루틴은 경량 스레드(lightweight thread)와 같이 작동하는데, 개발자가 프로그램의 어느 시점에서든 실행을 일시 중지하고 필요할 때 재개할 수 있게 해줍니다. 이러한 특성 덕분에 코루틴은 네트워크 호출, 데이터베이스 트랜잭션과 같은 비동기 작업을 쉽고 효과적으로 처리할 수 있으며, 이런 작업들을 마치 동기적 코드처럼 보이게 만들어 줍니다.필요성은 비동기 코드를 더 간결하고 이해하기 쉽게 만들며, 자원을 효율적으로 사용할 수 있습니다. 전통적인 멀티 스레딩 접근 방식에 비해 메모리 사용을 줄이고, 컨텍스트 스위칭의 오버헤드를 감소시킬 수 있어 ..
2024.05.16 -
Spring kafka + micrometer tracing
build.gradleimport org.jetbrains.kotlin.gradle.tasks.KotlinCompileplugins { id("org.springframework.boot") version "3.2.5" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.23" kotlin("plugin.spring") version "1.9.23"}group = "com.spring"version = "0.0.1-SNAPSHOT"val jvmVersion = JavaVersion.VERSION_17java { sourceCompatibility = jvmVersion}repositor..
2024.05.14 -
Micrometer Tracing
기본 사용법// Span을 생성한다. 만약 현재 쓰레드에 스팬이 있다면, 현재 새로 생성한 newSpan의 부모가 된다.Span newSpan = this.tracer.nextSpan().name("calculateTax");// Span을 시작하고 Scope에 넣는다.(Scope에 넣는다는 의미는 Thread local에 스팬을 넣는다는 뜻)try (Tracer.SpanInScope ws = this.tracer.withSpan(newSpan.start())) { // 더 나은 디버깅을 위해서 Span에 key/value 쌍을 넣을 수 있다. newSpan.tag("taxValue", taxValue); // Span에 이벤트 로깅을 할 수 있다.(이벤트에는 타임스탬프가 찍힌다.) ..
2024.04.30 -
Spring kafka 설명
https://jessyt.tistory.com/m/151?category=966697 Spring-Kafka Lifecycle 이번 글에서는 Spring-Kafka의 Lifecycle에 대해서 작성해보겠습니다. 목차 Lifecycle Lifecycle Management 주의사항 1. Lifecycle @KafkaListener는 Application Context 안에 Bean이 아닙니다. @KafkaListener는 KafkaListenerEndpointR jessyt.tistory.com 해당 포스팅 말고 다음 포스팅에도 읽어볼만한 주제가 많음 https://shining-life.tistory.com/m/3 4.1.3. Receiving Messages - (1) MessageListenerCo..
2023.11.05 -
Spring Kafka commit 정책
https://docs.spring.io/spring-kafka/docs/current/reference/html/#committing-offsets Spring for Apache Kafka When using Spring for Apache Kafka in a Spring Boot application, the Apache Kafka dependency versions are determined by Spring Boot’s dependency management. If you wish to use a different version of kafka-clients or kafka-streams, and use the embedded ka docs.spring.io https://hanseom.tist..
2023.11.05