전체 글 233

[Effective Kotlin] Item 2: Minimize the scope of variables (변수의 스코프를 최소화하라)

Item 2: Minimize the scope of variables (변수의 스코프를 최소화하라)핵심 개념변수의 스코프(유효 범위)를 가능한 한 좁게 유지하면 코드의 가독성과 안전성이 향상됩니다.1. 왜 스코프를 최소화해야 하는가?1.1 넓은 스코프의 문제점// ❌ 나쁜 예: 넓은 스코프class UserService { var user: User? = null // 클래스 레벨 변수 var result: String = "" fun processUser(userId: Int) { user = findUser(userId) if (user != null) { result = "Processing ${user!!.name}" ..

개발/Kotlin 2026.01.15

[Effective Kotlin] Item 1: Limit mutability (가변성을 제한하라)

핵심 개념가변성(mutability)을 제한하는 것은 Kotlin에서 안전하고 예측 가능한 코드를 작성하는 첫 번째 원칙입니다.1. 왜 가변성을 제한해야 하는가?1.1 가변 상태의 문제점// ❌ 나쁜 예: 가변 상태class BankAccount { var balance: Int = 0 fun deposit(amount: Int) { balance += amount } fun withdraw(amount: Int) { balance -= amount }}// 문제 상황val account = BankAccount()account.balance = 1000// 여러 스레드에서 동시 접근thread { account.withdraw(100) }thread ..

개발/Kotlin 2026.01.13

OpenSearch란? OpenSearch 주요 개념 (Text vs Keyword)

AWSAWS OpenSearch란? OpenSearch란?OpenSearch는 Apache 2.0 라이선스 기반의 오픈소스 검색 및 분석 엔진입니다.주요 특징분산 검색 엔진: 대용량 데이터 실시간 검색로그 분석: 로그 수집, 저장, 분석, 시각화완전 오픈소스: AWS가 Elasticsearch 7.10.2 포크하여 개발확장성: 수평적 확장 가능한 분산 아키텍처 OpenSearch 필수 개념 5가지 (RDBMS와 비교)1. 인덱스(Index) = 테이블데이터를 저장하는 논리적 단위입니다.# 인덱스 생성curl -X PUT "localhost:9200/products" 중요 포인트:인덱스명은 소문자만 사용하나의 인덱스 = 하나의 용도예: users, products, logs-2024-012. 도큐먼트(D..

개발 2025.12.27

Spring Batch 파티셔닝 전략 (범위 기반, 시간 기반, 파일 기반) with Kotlin Code

Spring Batch 파티셔닝 전략들어가며대용량 배치 작업을 수행할 때 가장 큰 고민은 "어떻게 하면 더 빠르게 처리할 수 있을까?"입니다. 수백만 건의 데이터를 순차적으로 처리하다 보면 작업 시간이 기하급수적으로 증가하고, 최악의 경우 타임아웃이 발생하거나 시스템 리소스가 고갈될 수 있습니다.이러한 문제를 해결하는 가장 효과적인 방법 중 하나가 바로 파티셔닝(Partitioning)입니다. Spring Batch의 파티셔닝 기능을 활용하면 대용량 데이터를 여러 개의 작은 청크로 나누고, 각 청크를 병렬로 처리하여 처리 시간을 획기적으로 단축할 수 있습니다.이 글에서는 실제 프로덕션 환경에서 사용 가능한 세 가지 파티셔닝 전략을 Kotlin으로 구현하고, 각 전략의 장단점과 사용 사례를 살펴보겠습니다...

개발/Spring 2025.12.25

CDC(Change Data Capture)란? (feat. Oracle CDC Debezium)

1. 개요문제 상황 또는 배경현대의 분산 시스템에서는 여러 데이터베이스와 서비스 간의 데이터 동기화가 필수적이다. 전통적인 배치 방식의 데이터 동기화는 다음과 같은 문제점을 가지고 있다:지연 시간: 몇 시간 또는 하루 단위의 데이터 동기화 지연리소스 낭비: 변경되지 않은 데이터도 매번 전체 스캔일관성 문제: 동기화 중 데이터 불일치 발생 가능성CDC는 바로 이런 문제점을 해결하기 위해 등장했다.실시간 데이터 동기화: 변경 즉시 다른 시스템으로 전파효율적인 리소스 사용: 변경된 데이터만 처리마이크로서비스 아키텍처: 서비스 간 느슨한 결합 유지데이터 일관성: 트랜잭션 순서 보장으로 일관성 유지이 글에서 다룰 내용CDC의 핵심 개념과 동작 원리Oracle 환경에서의 CDC 구현 방식실제 구현 예시 (Debez..

개발/Oracle 2025.12.22

[Mac] Mac 화면 분할 기능 비교 Split View vs Magnet vs Rectangle

개요예전에 Windows에서 Mac으로 이동해오면서 윈도우에서 지원하던 화면 이동이 Mac에는 기본으로 지원하고 있지 않은 것이 불편해서 Magnet을 결제해서 사용하고 있었습니다. 다만 이번에 사내에서 개인 apple 계정을 사용하지 못하면서 Magnet 사용이 막혔습니다. Mac에서 기본 기능으로 제공하는 Mac Split View를 쓰다가 전체화면 기능이나 다중 모니터에서는 사용이 제한적인 것, 전체화면 단축키 적응이 안되는 것 등의 단점으로 Rectangle로 갈아탔는데 그 과정에서 알아본 맥의 기본 Split View 기능과 Magnet, Rectangle 비교해보는 글을 작성해봅니다. Mac Split View사용법마우스 사용왼쪽 상단 녹색 전체화면 우클릭 혹은 좌 롱클릭 시 아래 화면 노출‘..

개발/꿀팁 2025.12.19

Java Open JDK 차이 (Oracle JDK, Open JDK, Temurin, Zulu vs Corretto)

JavaJava Open JDK 차이 (Oracle JDK, Open JDK, Temurin, Zulu vs Corretto) 개요Java 개발을 시작하거나 초기 운영 환경을 구축할 때 ‘어떤 JDK를 사용할지’에 대해 고민하게 된다. Oracle JDK 라이센스 정책변화 이후 다양한 OpenJDK 배포판이 등장했는데, 각각의 특징과 장단점을 이해해보자. OpenJDK의 종류OpenJDK는 Java의 오픈소스 참조 구현체로, 현재 많은 회사에서 OpenJDK 기반의 다양한 배포판을 지원하고 있다.대표적으로 사용되어지는 것은 다음과 같다.Oracle JDK (Oracle)Amazon Corretto (AWS)Azule Zulu (Azul Systems)Eclipse Temurin (Eclipse Foun..

개발/Java 2025.12.18

MAC 초기 셋팅 (Dock, Finder, 키보드)

mac MAC 초기 셋팅 (Dock, Finder, 키보드)매번 Mac을 셋팅할 때마다 찾아보는게 귀찮아서 작성하는 나를 위한 가이드문서미래에 다시 Mac 셋팅을 하게 될 나와 다른 사람들을 위해 작성하는 글입니다.본 글에서는 Dock 설정, Finder 설정, 키보드 설정을 포함하고 있습니다. Dock 설정Dock 크기 조정 (작게)옵션으로 '자동으로 Dock 가리기와 보기' 혹은 '스테이지 매니저'를 사용할 수 있으나 개인 취향이라 생략 Finder 설정우선 'Cmd + ,' 단축키로 설정에 접근하여 설정하는 것을 모두 처리한다.일반 > 데스크탑에서 항목 보기: 하드디스크 체크일반 > 새로운 Finder 윈도우에서 보기 (데스크탑 혹은 유저홈) 변경최근 항목으로 시작하는 Finder를 변경하기 위..

개발/꿀팁 2025.12.16