Backend Chapter Lead · AIJINET
안녕하세요 🤚 Max입니다.
Spring / Java 생태계에서 마주친 문제, 의사결정, 그리고 그 이면의 트레이드오프를 기록합니다.
추상적인 best-practice 나열보다 재현 가능한 코드와 측정값을 우선합니다.
About me
Backend Chapter Leader - 글을 남기는 사람
- 백엔드 챕터의 기술 방향과 코드 품질, 그리고 챕터원의 성장을 책임집니다.
- 어려운 문제일수록 좋아합니다. "풀 수 있을지 모르겠다" 싶은 과제가 떨어졌을 때 가장 즐겁게 일합니다.
- 혼자 얻은 인사이트는 절반만 가치 있다고 믿습니다. 학습한 것, 실패한 것, 회고한 것을 글로 남기고 챕터에 공유하는 데 진심입니다.
- 본 블로그는 그 공유의 1차 채널입니다.
What I write about
다루는 주제
잡담 · 일상 · 홍보 글은 올라오지 않습니다. 글의 톤은 “읽고 나면 내일 출근해서 바로 써먹을 수 있는 것”을 지향합니다.
JVM / Java 내부
GC 튜닝JIT메모리 모델CompletableFutureLoom
Spring 생태계
Boot 3 ↔ 4 마이그레이션WebFluxJPA N+1트랜잭션 전파
Spring AI / LLM 응용
AI 상담사RAG 파이프라인프롬프트 회귀 테스트토큰 관측
분산 / 데이터
RabbitMQ DLXMySQL 인덱스Redis 캐시 일관성Outbox
아키텍처
DDD 경계HexagonalClean Architecture모듈러 모놀리스
운영 / SRE
장애 회고OpenTelemetry부하 테스트
챕터 활동 회고
코드 리뷰 문화기술 스터디온보딩
Backend Chapter Stack
주력 스택
Language
Java 21, 25 (LTS)
챕터 전 모듈 단일 스택, Kotlin 미사용
Framework (운영)
Spring Boot 3.x · Cloud
Spring Framework 6.x
Framework (신규)
Spring Boot 4.x
2026~ 신규 프로젝트의 기본 선택
AI / LLM
Spring AI
사내 AI 상담사 · RAG · 토큰 모니터링
Persistence
JPA · QueryDSL
MySQL 9.x · Redis
Messaging
RabbitMQ · Spring AMQP
Direct/Topic · DLX 재시도 전략
Build / Test
Gradle (Groovy)
JUnit 5 · Mockito · Testcontainers · AssertJ
Observability
Micrometer · OpenTelemetry
Prometheus · Grafana
CI / CD
GitLab CI · ArgoCD
Docker · Kubernetes
Code Conventions
코드 컨벤션 요약
01
테스트는 Given-When-Then
시나리오가 곧 명세입니다.
02
Optional.orElseThrow 기본
get() / isPresent() 직접 호출은 리뷰에서 제동을 겁니다.
03
객체 생성은 Builder
생성자 인자 4개 초과 시 강제 적용.
04
Stream API 우선
단, 한 줄을 위한 가독성 희생은 거부합니다.
05
트랜잭션 경계는 서비스 레이어
도메인 객체에 @Transactional 금지.
06
불변(immutable) 우선
record · final 필드 · 방어적 복사를 기본값으로.
Contact
연락하기
기술 토론 · 피드백 · 오탈자 제보는 모두 환영합니다.
E-Mail · max@aijinet.comDooray · @Max