eta_kyung.blog

모든 기록

8 / 14 페이지
·6분

Kafka를 활용한 CQRS (2) - CQRS

1. 개요 CQRS(Command and Query Responsibility Segregation) 는 데이터 저장소로부터 읽기와 업데이트 작업을 분리하는 아키텍처 패턴이다. 이름 그대로 상태를 변경하는 Command 와 상태를 조회하는 Query 의 책임을 나눠서,…

·6분

Kafka를 활용한 CQRS (3) - Spring Boot로 CQRS 구현하기

1. 개요 앞선 글에서 CQRS의 개념과 Kafka의 기초를 정리했으니, 이번 글에서는 Spring Boot로 실제 쓰기(Command)/읽기(Query) 서비스를 나눠 만들고 Kafka로 두 서비스를 연결하는 예제를 구현한다. 쓰기 서비스( cqrs write )는…

·6분

스프링 핵심 원리 (3) - IoC, DI 컨테이너

1. 개요 이전 글에서 AppConfig 를 만들어 구현 객체를 생성·연결하는 책임을 클라이언트로부터 분리했다. 이번 글에서는 이 변화를 좀 더 일반적인 용어로 정리해본다. AppConfig 가 등장하면서 프로그램의 제어 흐름이 어떻게 바뀌었는지를 제어의 역전(IoC)…

·7분

스프링 핵심 원리 (2) - 관심사의 분리

1. 개요 이전 글에서 좋은 객체 지향 설계의 핵심은 다형성이고, 이를 실제로 잘 활용하기 위한 지침이 SOLID 원칙이라는 것을 정리했다. 이번 글에서는 애플리케이션에 새로운 할인 정책을 추가해보면서 다형성만으로는 OCP와 DIP를 지킬 수 없다는 것을 직접 확인하고…

·2분

프로그래머스 - 디스크 컨트롤러 (lv2) C++

문제 디스크 컨트롤러 문제 풀이 아이디어 운영체제의 프로세스 스케줄링 알고리즘 중 하나를 구현하는 문제로, 비선점형(Non preemptive) 방식으로 동작하는 스케줄러를 작성해야 한다. 우선순위 큐를 이용하면 될 것 같다는 것은 운영체제를 공부한 사람이라면 어렵지…

·7분

JAVA (27) - Executor 기초

1. 개요 자바에서 멀티스레드 프로그래밍을 할 때 new Thread() 를 통해 직접 스레드를 생성하고 관리하는 방식은 여러 한계를 지닌다. 스레드 생성과 파괴에 소요되는 오버헤드가 크고, 무분별한 스레드 생성은 시스템 자원 고갈로 이어질 수 있다. 자바 5부터 도입…

·11분

JAVA (26) - synchronized와 동기화

1. 개요 멀티스레드(Multi thread) 환경에서는 여러 스레드가 하나의 공유 자원에 동시에 접근하여 값을 읽거나 수정할 수 있다. 이때 적절한 제어가 이루어지지 않으면 데이터의 일관성이 깨지는 신뢰성 문제가 발생한다. 자바에서는 이러한 멀티스레드 환경에서 발생할…

·4분

JAVA (25) - Thread 와 Runnable

1. 개요 자바(Java) 애플리케이션은 기본적으로 하나의 메인 스레드(Main Thread)에서 코드를 순차적으로 실행한다. 하지만 네트워크 통신, 파일 입출력, 복잡한 연산 등 시간이 오래 걸리는 작업을 처리할 때는 작업이 끝날 때까지 프로그램 전체가 대기하는 현상…