[ㄴr의 ㅇi직일ㄱl] 드디어 이직을 했다.
·
개발
내가 이직을 해야겠다고 결심하게된 이유는 기존의 개발환경에 지나치게 익숙해져 스스로를 챌리지해 볼 수 없었다.지나친 자유로움과 여유로움이 불안으로 다가왔다. 또한 운영하던 플랫폼의 규모가 지나치게 작아서 비즈니스적인 지표를 확인할 수도 더 많은 트래픽을 경험할 수 없는 환경이었다.2026년 7월 기준으로 만 4년 개발자가 되었는데, 규모가 큰 서비스를 운영해 본 경험이 없다는 것이 아쉬움으로 다가왔다. 한줄로 정리하자면, 자유로움과 여유 그리고 작은 규모가 나의 큰 고민이었다. 그렇게 나의 욕구들을 채우기에 적합한 회사들을 찾아 지원을 하기 시작했다. 이직 과정에서 느꼈던 것은 내가 아쉬움으로 느꼈던 부분들이 이직하면서 다른 지원자대비 나의 확실한 약점이었다는 점이다. 그럼에도 운 좋게 새로운 회사로 ..
Redis 장애 시나리오 분석 및 대응 전략 — 호텔 예약 시스템 10만 트래픽
·
개발/Server
핵심 정리1. 현재 시스템 아키텍처 분석현재 호텔 예약 시스템은 다음과 같은 구조로 되어 있다.Client → Spring Boot API → JPA (Pessimistic Lock) → H2 (In-Memory DB)현재 동시성 제어 방식비관적 락(Pessimistic Lock): SELECT FOR UPDATE로 재고 행을 잠근다3계층 방어: Application 검증 → DB Lock → CHECK 제약조건단일 DB 의존: 모든 읽기/쓰기가 RDB를 직접 타격한다현재 구조의 한계10만 트래픽(동시 요청)이 들어오면, 모든 요청이 DB에 직접 접근한다. 특히 객실 가용성 조회(GET /v1/hotels/{hotelId}/availability)는 읽기 전용인데도 매번 DB 쿼리를 실행한다. 이는 불필..
Spring StateMachine으로 FSM 구현하기 — 카카오뱅크 알림 시스템 사례"
·
개발
Spring StateMachine으로 FSM 구현하기 — 카카오뱅크 알림 시스템 사례핵심 정리FSM(Finite State Machine, 유한 상태 머신) 은 시스템이 가질 수 있는 상태(State)와 그 상태들 사이의 전이(Transition)를 명시적으로 모델링하는 패턴이다. 메시지 발송, 주문 처리, 결제 승인처럼 여러 단계를 거치며 각 단계에서 분기·예외 처리가 필요한 도메인에서 코드가 if-else 지옥이 되기 쉬운데, FSM은 "상태 + 이벤트 + 전이"라는 선언적 구조로 이를 정리한다.1. FSM은 왜 필요한가상태 전이가 복잡한 도메인의 문제알림 발송 같은 도메인은 메시지 하나의 라이프사이클이 단순하지 않다.[접수 완료(RECEIVED)] │ ├── 발송 → [발송 성공(SEN..
코틀린은 왜 등장했나, 그리고 자바를 거쳐 컴파일되는가?
·
개발
핵심 정리1. 코틀린 등장 배경 (Why Kotlin?)JetBrains의 자가 발화만든 곳: JetBrains (IntelliJ IDEA, PyCharm, WebStorm 등을 만드는 IDE 회사)시기: 2010년 사내 프로젝트 시작 → 2011년 공개 → 2016년 1.0 → 2017년 Google이 Android 공식 언어로 채택 → 2019년 Google이 "Kotlin-first" 선언이름: 러시아 상트페테르부르크 인근 코틀린(Kotlin) 섬에서 따옴 (자바 섬에서 따온 Java처럼)JetBrains는 자사 IDE를 수백만 라인 자바 코드로 개발하고 있었다. 그러다 보니 자바의 한계가 매일 체감되었다:자바의 문제매일 마주치는 고통Verbosity (장황함)getter/setter, equals..
코루틴과 비동기의 모든 것 Part 1 — 커널 레벨에서 이해하는 비동기의 본질
·
개발/Server
핵심 정리비동기를 제대로 이해하려면 "왜 비동기가 필요한가" 부터 커널 레벨에서 시작해야 한다. 코루틴, CompletableFuture, Virtual Thread 모두 결국 OS 커널의 I/O 처리 방식 위에서 동작한다. 이 문서는 그 바닥부터 파고든다.비동기의 존재 이유 (한 줄 요약): "CPU는 나노초 단위로 일하는데, I/O(디스크/네트워크)는 밀리초 단위다. 그 수백만 배 차이를 놀리지 않으려고 비동기가 존재한다."시간 스케일 비교: CPU 레지스터 접근 : ~0.3ns L1 Cache : ~1ns L3 Cache : ~10ns RAM : ~100ns NVMe SSD : ~25,000ns (25μs) ..
프록시(Proxy)와 리버스 프록시(Reverse Proxy)
·
개발
프록시(Proxy)와 리버스 프록시(Reverse Proxy)핵심 정리프록시(Forward Proxy)란?클라이언트 측에서 동작하는 중간 서버로, 클라이언트가 인터넷에 직접 접근하지 않고 프록시를 통해 요청을 보낸다.[클라이언트] → [Forward Proxy] → [인터넷/서버]클라이언트의 IP를 숨긴다 (서버는 프록시의 IP만 본다)회사/학교에서 특정 사이트 차단 용도로 사용캐싱을 통한 응답 속도 향상대표 예시: Squid Proxy, 기업 방화벽 프록시리버스 프록시(Reverse Proxy)란?서버 측에서 동작하는 중간 서버로, 클라이언트는 리버스 프록시에 요청을 보내고, 리버스 프록시가 실제 백엔드 서버로 전달한다.[클라이언트] → [Reverse Proxy] → [Backend Server A]..
컨테이너 vs 가상머신 — Docker, Kubernetes, 그리고 왜 컨테이너인가
·
개발
컨테이너 vs 가상머신 — Docker, Kubernetes, 그리고 왜 컨테이너인가핵심 정리가상머신(VM)의 구조┌───────────┐ ┌───────────┐ ┌───────────┐│ App A │ │ App B │ │ App C │├───────────┤ ├───────────┤ ├───────────┤│ Guest OS │ │ Guest OS │ │ Guest OS │ ← 각각 완전한 OS│ (Ubuntu) │ │ (CentOS) │ │ (Debian) │└─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └──────────────┼──────────────┘ ┌──────┴──────┐ ..
08. 사모펀드 그게 뭔데?
·
경제
사모펀드, 그게 뭔데요즘 뉴스를 보면 "사모펀드"라는 단어가 심심치 않게 나온다.라임, 옵티머스 사태 때 한번 크게 터졌고, 정치권에서도 사모펀드 이야기가 나올 때마다 여론이 들끓는다.그런데 정작 사모펀드가 뭔지 제대로 아는 사람은 많지 않다.오늘은 사모펀드가 도대체 뭔지, 왜 존재하는지, 그리고 왜 사고가 나는지를 한번 풀어본다.펀드(Fund)라는 건 결국 "돈을 모아서 대신 투자해주는 것"이다.내가 주식을 직접 고르기 어려우니까, 전문가한테 돈을 맡기고, 전문가가 알아서 굴려주는 구조다.이걸 법적으로 "집합투자"라고 부른다. 여러 사람의 돈을 모아서(집합) 투자한다는 뜻이다.그런데 이 펀드에는 크게 두 종류가 있다. 공모펀드와 사모펀드다.**공모(公募)**는 말 그대로 "공개적으로 모집"한다는 뜻이다..