푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 1498편 · 1 / 150 페이지)
-
[팹 IoT 연구 4] 가상 계측(VM) — 25장에 1장만 재면 드리프트를 얼마나 따라가나
먼저 밝혀 둔다. 이 글의 모든 수치는 합성(synthetic) 데이터에서 나왔다. 식각 장비의 센서 요약값과 식각 깊이 사이의 관계, 장비 드리프트, PM(예방정비) 주기, 계측 잡음을 내가 직접 정한 식으로 만들었다. 식의 모양은 물리적 직관(RF 파워가 크면 식각률이 오른다, 챔버 벽이 오염되면 식각률이 떨어진다 등)을 따랐지만 어떤 실제 장비에도 맞춘 것이 아니다. 따라서 아래 숫자는 방법이 어떻게 행동하는지를 보여 줄 뿐, 실제 팹에서 VM이 몇 nm 정확도를 낸다는 주장이 아니다.
-
코틀린 × 스프링부트 — 버전 호환표, 널 안전(JSR-305 → JSpecify), suspend 컨트롤러와 Flow, 라우터·빈 등록 DSL
자바·코틀린 20편 시리즈의 코틀린 10번째 글(K10), 코틀린 편의 마지막이다. 스프링부트에서 코틀린을 쓸 때 “어느 버전에서 무엇이 되는가” 를 다섯 덩어리로 정리한다. (1) 버전 호환표 — Boot 3.x / 4.x 와 Spring Framework 6.2 / 7.0 의 코틀린 요구사항, (2) 널 안전 — JSR-305 에서 JSpecify 로, (3) 코루틴 —
suspend컨트롤러·Flow반환·트랜잭션·컨텍스트 전파, (4) Kotlin DSL — 라우터 DSL, 빈 등록 DSL, MockMvc DSL, (5) 부트 고유 지원과 Boot 3 → 4 이행 체크리스트. -
[팹 IoT 연구 3] SECS/GEM → MQTT 게이트웨이 시제품과 브로커 재시작 실험
이 글의 장비는 가상의 식각 장비 시뮬레이터이고, 모든 값(챔버 온도, 웨이퍼 ID, 알람)은 시드를 고정한 합성 데이터다. 실제 장비나 팹 데이터는 하나도 쓰지 않았다. 브로커·게이트웨이·장비·구독자 네 프로세스를 노트북 한 대의
127.0.0.1위에서 돌렸고, 수치는 그 환경에서 실제로 측정한 값이다. -
코틀린 × 스프링 — kotlin-spring(all-open)·kotlin-jpa(no-arg) 플러그인, 생성자 주입, Jackson 코틀린 모듈, JPA 엔티티 함정
자바·코틀린 20편 시리즈의 코틀린 9번째 글(K9) 이다. 코틀린으로 스프링 애플리케이션을 만들 때 부딪히는 마찰 지점을 다섯 덩어리로 나눈다. (1) “기본 final” 과 프록시 —
kotlin-spring플러그인, (2) 의존성 주입과 설정 주입, (3) JSON — Jackson 코틀린 모듈과 kotlinx.serialization, (4) JPA —kotlin-jpa플러그인과 엔티티 설계 함정, (5) 테스트. 각 항목은 “무엇인가 → 코드 → 실무 사용사례 → 함정” 순서다. -
코틀린 제네릭과 변성 — 선언 지점 변성 in/out, 타입 프로젝션, 스타 프로젝션, reified, 그리고 자바 와일드카드와의 대응
자바·코틀린 20편 시리즈의 코틀린 8번째 글(K8) 이다. 제네릭 변성을 다섯 덩어리로 나눈다. (1) 왜 변성이 필요한가 — 자바 와일드카드의 동기, (2) 선언 지점 변성
out/in, (3) 사용 지점 변성(타입 프로젝션), (4) 스타 프로젝션과 타입 소거, (5) 제약(upper bound)·reified·자바 상호운용. 각 문법은 “무엇인가 → 코드 → 사용사례 → 함정” 순으로 쓴다. -
코틀린 코루틴과 Flow — suspend, 구조적 동시성, Dispatcher, 취소, 예외, 그리고 자바 가상 스레드와의 비교
자바·코틀린 20편 시리즈의 코틀린 7번째 글(K7) 이다. 코틀린 코루틴을 여섯 덩어리로 나눈다. (1)
suspend함수와 코루틴 빌더, (2) 구조적 동시성, (3) Dispatcher 와 컨텍스트, (4) 취소와 타임아웃, (5) 예외 전파와 Supervisor, (6)Flow. 마지막에 자바 가상 스레드와 무엇이 같고 무엇이 다른지 표로 정리한다. -
코틀린 컬렉션과 Sequence — 읽기 전용 vs 가변, 컬렉션 연산, 지연 평가, 그리고 자바 Stream 과의 대응
자바·코틀린 20편 시리즈의 코틀린 6번째 글(K6) 이다. 이번 글은 코틀린 컬렉션을 네 덩어리로 나눠 정리한다. (1) 타입 계층: 읽기 전용 인터페이스와 가변 인터페이스의 분리, (2) 컬렉션 연산: 변환·필터·그룹핑·집계, (3)
Sequence와 지연 평가, (4) 자바Stream·자바 컬렉션과의 상호운용. 각 항목은 “무엇인가 → 코드 → 실무 사용사례 → 함정” 순서로 쓴다. -
코틀린 스코프 함수 let·run·with·apply·also — 언제 무엇을 쓰나, 그리고 남용의 함정
자바·코틀린 20편 시리즈의 코틀린 5편(K5) 이다. 코틀린 코드 리뷰에서 가장 자주 의견이 갈리는 주제가 스코프 함수다. 다섯 개가 기술적으로 거의 같은 일을 하기 때문에 “아무거나 써도 된다” 와 “아무것도 쓰지 마라” 사이에서 팀마다 기준이 흔들린다. 이 글은 공식 문서의 기준을 뼈대로 삼아 (1) 다섯 함수를 두 개의 축으로 분류하고, (2) 각각의 정석 사용사례를 보여준 뒤, (3) 실무에서 반복해서 보이는 남용 패턴을 카탈로그로 정리한다.
-
코틀린 함수 — 기본·이름 인자, 확장 함수, 고차 함수, 수신 객체 지정 람다, inline·reified
자바·코틀린 20편 시리즈의 코틀린 4편(K4) 이다. 코틀린 함수 문법을 다섯 묶음으로 나눈다. (1) 선언과 호출(기본·이름 인자, 단일 식, infix), (2) 확장 함수, (3) 함수 타입과 람다(고차 함수, SAM), (4) 수신 객체 지정 람다와 DSL, (5) inline·reified. 마지막에 2.4.0 에서 Stable 이 된 컨텍스트 파라미터를 짧게 붙인다.
-
코틀린 클래스 — 기본 final, data·sealed·enum class, object·companion, value class
자바·코틀린 20편 시리즈의 코틀린 3편(K3) 이다. 코틀린 클래스 모델을 “어떤 문제를 풀려고 이 종류의 클래스가 있는가” 기준으로 분류한다. 일반 클래스의 기본 final 에서 시작해, 값을 담는 data class, 닫힌 계층을 만드는 sealed, 고정된 상수 집합 enum, 단 하나의 인스턴스 object/companion, 그리고 런타임 비용 없는 래퍼 value class 까지 간다.