Avatar
😉

Organizations

Pinned

Recent posts

  1. Null Safety란 무엇인가? 개념부터 실전 예시까지

    1. Null Safety의 정의

    **Null Safety(널 안전성)**란 프로그램이 실행되는 도중에 null(혹은 nil, None 등 언어별 명칭은 다르지만 “값이 없음"을 의미하는 특수 값)을 참조함으로써 발생하는 오류를 **컴파일 타임(코드 작성 시점)**에 미리 방지하도록 설계된 언어적 기능 또는 프로그래밍 원칙을 말합니다.

    가장 대표적인 문제가 바로 NullPointerException(NPE) 입니다. 자바의 창시자 중 한 명인 토니 호어(Tony Hoare)는 1965년 Null 참조를 발명한 것을 두고 스스로 “10억 달러짜리 실수(Billion Dollar Mistake)” 라고 표현할 정도로, null로 인한 버그는 소프트웨어 개발 역사에서 가장 흔하고 비용이 큰 오류 중 하나였습니다.

    null-safety kotlin swift typescript java

  2. Spring Boot 4.0이 2025년 11월 20일 GA(General Availability, 정식 안정 버전) 로 출시되었습니다. Spring Boot 3.5.x 대비 꽤 큰 변화가 있어, 주요 차이점을 용어 설명과 함께 정리했습니다.


    릴리즈 & 지원 주기

    Spring Boot 3.5.x Spring Boot 4.0
    상태 안정 버전 GA (2025.11.20 출시)
    OSS 지원 종료 2026년 6월 현재 활성 지원 중

    ⚠️ Spring Boot 3.5.x는 2026년 6월에 지원이 종료됩니다. 프로덕션 서비스라면 마이그레이션 계획을 미리 세워두는 것이 좋습니다.


    Java & 플랫폼 기준선

    • Java 최소 요구 버전: 17 (3.5와 동일)
    • Java 25 first-class 지원 추가 — AOT 컴파일 및 GraalVM 네이티브 이미지가 Java 25 기준으로 테스트됨
    • Jakarta EE 기준이 11로 상향 → Hibernate 7.x, Bean Validation 3.1, Tomcat 11 필수

    ⚠️ javax.* 임포트가 아직 남아있다면 전부 jakarta.*로 교체해야 합니다.

    Java Spring Boot Spring Backend

  3. 1. Charset vs Collation, 뭐가 다를까?

    Character Set(문자셋) 은 “어떤 문자들을 저장할 수 있는가"를 정의합니다. utf8mb4는 이모지 포함 모든 유니코드 문자를 최대 4바이트로 저장합니다.

    Collation(콜레이션) 은 “문자들을 어떻게 비교하고 정렬하는가"를 정의합니다. 'A' = 'a'인지, 'ä''a'와 같게 취급되는지, 한글이 사전 순으로 정렬되는지를 결정하는 규칙 집합입니다.

    핵심 관계: 모든 Collation은 특정 Charset에 종속됩니다. utf8mb4_unicode_ciutf8mb4 charset에서만 사용 가능합니다.

    -- charset과 collation의 관계 확인
    SHOW COLLATION
    WHERE Charset = 'utf8mb4'
      AND Collation LIKE '%general%';
    

    2. Collation 이름은 어떻게 읽나?

    Collation 이름은 최대 4개 파트로 구성됩니다. 규칙을 알면 처음 보는 이름도 바로 해석할 수 있습니다.

    MySQL Database Charset Collation

  4. 분산 시스템에서 여러 대의 서버가 동일한 자원에 동시에 접근할 때, 데이터의 일관성을 유지하기 위해 사용하는 기술이 바로 **분산락(Distributed Lock)**입니다.

    단일 서버 환경에서는 synchronizedReentrantLock 같은 자바 표준 API로 동시성을 제어할 수 있지만, 서버가 여러 대라면 각 서버의 로컬 락은 서로를 알지 못합니다. 이때 모든 서버가 공통으로 바라보는 외부 저장소를 활용해 “누가 자원을 선점했는지"를 기록하는 것이 핵심입니다.


    1. 분산락이 필요한 이유

    동일한 DB 레코드에 대해 여러 인스턴스가 동시에 수정 요청을 보낼 때, **레이스 컨디션(Race Condition)**이 발생하여 데이터가 꼬일 수 있습니다.

Post activity