전체 글 (185) 썸네일형 리스트형 변경관리 (Change Management) 변경관리 운영 환경(DB, 애플리케이션, 서버 인프라 등)에 무언가를 바꾸거나 배포할 때, 서비스가 터지지 않도록 사전에 계획하고 검증하는 모든 표준 절차 변경관리의 필요성테스트의 한계버그가 있다는 걸 보여줄 순 있어도, 버그가 없다는 걸 증명할 순 없다"confidence를 높이는 것"이지 "correctness를 증명하는 것"이 아님.. 고로, "증명"은 아니고, 아주 강력한 "경험적 증거"여기서 핵심은 "각 단계를 통과해도 다음 단계의 위험은 별도" 라는 것.단위테스트 → 통합테스트 → 인수테스트(E2E) → 프로덕션 변경관리 주요항목1. 변경 개요 (Summary)2. 영향도 및 위험도 평가 (Impact & Risk Analysis)3. 작업 및 배포 절차 (Deployment Steps)4... 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)│ .. 이전 1 2 3 4 ··· 24 다음