본문 바로가기

전체 글

(184)
Java 멀티 쓰레드 멀티스레드 도메인 3요소도메인역할 (Role)비유실제 자바 타입1. 작업 (Task)'무엇'을 할 것인가? (로직)요리 레시피Runnable, Callable2. 일꾼 (Worker)'누가' 실행할 것인가? (스레드)요리사Thread3. 관리자 (Executor)'언제/어디서' 시킬 것인가? (제어)주방장 (매니저)ExecutorService, ThreadPool 관리자는 일꾼들을 미리 뽑아놓고(Thread Pool), 들어오는 작업들을 줄 세워(Blocking Queue) 관리합니다.① 일꾼 바구니: 스레드 풀 (Thread Pool)역할 : 관리자를 "일꾼 10명"이라고 설정하면, 부팅 시점에 OS에 요청하여 스레드 10개를 미리 만들어 넣어둡니다.이득: 매번 new Thread()를 하지 않아도 되..
JDBC, HikariCP JDBCJava와 RDBMS를 연결하는 표준 인터페이스. 정의된 규칙DriverManager : DB Driver를 직접 가동시켜 매번 물리적인 DB 연결을 새로 생성.DataSource: 컨넥션을 재사용 하기 위해서 컨넥션 풀을 관Connection: DB와의 연결 세션을 표현. 트랜잭션(commit, rollback) 및 Statement 생성 담당Statement / PreparedStatement: SQL 쿼리를 DB로 전송하고 실행하는 규칙 (executeQuery(), executeUpdate())ResultSet: DB가 돌려준 조회 결과 데이터를 다루는 규칙" (next(), getString()) Connection 객체DB와의 물리적 연결(세션)을 관리합니다.트랜잭션 관리(setAut..
OS의 I/O 시스템 I/O 시스템I/O(Input/Output) 프로세스가 외부 장치(디스크, 네트워크, 키보드 등)와 데이터를 주고받는 과정 OS 커널 I/O 시스템은 두 가지 계층(Layer)으로 나뉘어 작동합니다.장치 독립적 계층 : 프로세스가 시스템 콜을 통해서 커널에 요청한 데이터 전송을 처리하는 계층 (I/O 서브시스템)장치 종속적 계층 : 커널에서 하드웨어 간 실제 데이터를 전송하는 계층 (인터럽트 핸들러와 장치 드라이버) 장치 종속적 계층관심사 : 하드웨어와 커널이 어떻게 데이터를 주고받을 것인가구성 : 장치 드라이버, 인터럽트 핸들러 디스크, 네트워크 카드, 키보드 등 각 장치에 특화된 장치 드라이버가 따로 작성되어 동작장치 드라이버는 커널이 정한 공통 인터페이스를 장치별로 맞게 구현역할:드라이버는 커..
분산 시스템의 문제점과 보완 네트워크의 불확실성네트워크의 불확실성으로 인해 한번의 요청으로 처리 완료( Exactly-Once Delivery)를 확신하는 방법이 존재하지 않는다.케이스 1: 전송 자체가 유실 → Producer 재전송 필요케이스 2: Consumer 처리는 됐는데 ACK가 유실 → 재전송하면 중복 발생케이스 3: Consumer 처리 중 timeout → 됐는지 안됐는지 모름메시지 전송 보장 전략At-Most-Once (최대 한 번) : ACK를 확인하지 않고 한 번만 보냅니다. 유실되면 끝입니다.At-Least-Once (최소 한 번) : ACK를 받을 때까지 계속 재전송합니다.Exactly-Once (정확히 한 번) : At-Least-Once로 ACK를 받을때 까지 계속 전송하지만 멱등성 처리일반적으로 일..
TypeScript Typiescript본질 : TypeScript는 실행 엔진이 따로 없는 정적 타입 레이어(Static Type Layer)로 실제실행은 Javascript가 담당사용이유 : 에러를 실행 시점이 아니라 컴파일 시점에서 잡기 위해서도입문법 type (타입 별칭): 객체, 기본 타입, 유니온 타입 등 다양한 형태에 이름을 붙입니다.interface (인터페이스): 주로 객체의 구조를 정의할 때 사용합니다. (확장성이 좋음) 변수 / 함수 타입 지정: 변수나 함수의 매개변수, 반환값의 타입을 지정하는 선언입니다enum (열거형): 상수의 집합을 정의합니다. (주의: enum은 TS 문법이지만 JS 런타임 객체로 남는 예외적 선언입니다.)declare (앰비언트 선언): 외부 라이브러리나 JS 파일처럼 이미 존..
동시성 문제 동시성 문제 : 여러 스레드(Thread)나 프로세스가 동일한 자원(데이터, 파일, 메모리 등)에 동시에 접근하여 수정하려고 할 때, 예상치 못한 잘못된 결과가 발생하는 현상 동시성 프로그램 지표코드는 데이터의 일관성이 훼손되는 것을 막고 (Safety), 잠금으로 인해서 동작이 멈추는 것을 방지해야합니다 (Liveness) 멀티스레드 환경에서 코드가 안전하게 돌아가는지 평가할 때 보통 두 가지 축을 봅니다.개념의미한 줄 요약 Safety (안전성)"나쁜 일은 절대 일어나지 않는다."데이터가 꼬이거나 망가지지 않음(Race Condition 방지) Liveness (활성도)"좋은 일은 결국 일어난다."프로그램이 멈추지 않고 언젠가는 반드시 실행됨( 데드락 / 라이브락 / 기아 방지) 동시성 문제├──..
분산 시스템, 분산 트랜잭션 분산 시스템 (Distributed Systems)│├── 데이터 (Data)│ ├── 일관성 보장 (Consistency)│ │ ├── Outbox Pattern│ │ ├── Inbox / Idempotent Consumer│ │ ├── Two-Phase Commit (2PC)│ │ ├── Saga Pattern│ │ │ ├── Choreography│ │ │ └── Orchestration│ │ └── TCC (Try-Confirm-Cancel)│ ││ ├── 저장 방식 (Storage)│ │ ├── Event Sourcing│ │ └── CQRS│ ││ └── 동기화 (Synchronization)│ ..
Server-MCP 모델 1. 아키텍처의 변화: Server-Client → Server-MCP Host과거에는 서버가 클라이언트(브라우저/앱)에 데이터를 전달하는 것이 주 목적이었다면, 이제는 AI 에이전트(Claude 등)가 비즈니스 로직을 수행할 수 있도록 '환경'을 제공하는 구조로 변하고 있습니다.기존: [Server] ↔ [Client (Human Interface)]현재: [LLM (Brain)] ↔ [MCP Host (Orchestrator)] ↔ [MCP Server (Back-end/Tools)]핵심: 이제 백엔드의 직접적인 사용자는 '사람'이 아니라 **'지능을 가진 AI 에이전트'**가 됩니다. 2. 설계 중심의 이동: 자원(Resource) → 행위(Action)RESTful API가 데이터베이스의 엔티티..