🧠 Kafka란?Kafka는 LinkedIn에서 개발하고 지금은 Apache 재단에서 관리하는 분산 메시징 시스템이다.기존의 MQ와 비교했을 때, 높은 처리량과 내구성, 확장성 때문에 대규모 시스템에서 널리 사용된다.단순히 "메시지를 주고받는 도구"가 아니라, 데이터 스트림을 처리하고 저장하는 플랫폼에 가깝다. 📌 Kafka의 핵심 구성 요소Producer메시지를 발행(publish)하는 주체예 : 주문 서비스가 "주문 생성됨" 이벤트를 Kafka로 발행Topic메시지를 분류해서 전달하는 단위 (이벤트의 카테고리 같은 개념)예 : order-created, payment-completedBrokerKafka 서버 하나를 의미여러 개의 브로커가 모여 Kafka 클러스터를 구성하고, 메시지를 저장하고 전..
최근 백엔드 개발을 하면서 마이클로서비스 환경이나 대규모 시스템에서 자주 등장하는 개념 중 하나가 바로 Event-driven Architecture, 즉 이벤트 기반 아키텍처이다.오늘은 이 개념에 대해 정리해보고자 한다.📌 이벤트 기반 아키텍처란?이벤트 기반 아키텍처는 말 그대로, 시스템이 어떤 '이벤트'가 발생했을 때 이를 감지하고 반응하는 구조를 의미한다.우리가 흔히 쓰는 REST API는 요청과 응답이 명확하게 이어지는 동기 방식인 반면, 이벤트 기반은 이벤트가 발생하면 이를 다른 컴포넌트들이 비동기적으로 처리한다는 점에서 구조가 다르다.아래 예시를 들어보자사용자가 쇼핑몰에서 상품을 주문하면 -> OrderCreated라는 이벤트가 발생하고이 이벤트를 수신한 결제 시스템이 자동으로 결제 준비를 ..
✅1. DI란 무엇인가?"DI(Dependency Injection, 의존성 주입)"은 객체가 의존하는 객체를 직접 생성하지 않고, 외부에서 주입 받는 설계 방식이다. DI는 DIP(의존 역전 원칙)을 실현하는 핵심 수단이며Spring의 핵심 원리 중 하나인 IoC(제어의 역전)를 구체적으로 구현하는 방법이기도 하다.2. Spring에서 DI는 어떻게 동작하는가?Spring은 ApplicationContext가 Bean을 생성하고,의존성 있는 객체를 자동으로 찾아서 주입한다.Bean 등록 방식에 따라 주입 방식이 다르게 동작할 수 있다.컴포넌트 스캔 기반 (@Component, @Service, @Repository)Java Config 기반 (@Bean 메서드)@Autowired나 여러 Bean이 있을..
Spring의 핵심은 결국 "Bean 관리"이다.이번 포스팅에서는 단순한 순서를 넘어서, Bean의 생성 -> 초기화 -> 사용 -> 소멸에 이르는 전 과정을 메서드, 인터페이스, 어노테이션, 내부 메커니즘까지 완전히 정복할 수 있도록 정리하겠다. ✅1. Spring Bean 이란?Spring Bean은 Spring IoC 컨테이너가 관리하는 객체이다.즉, 개발자가 new로 만들지 않고, Spring이 대신 생성하고 관리하는 객체가 Bean이다. @Componentpublic class UserService { ... }위 클래스는 컴포넌트 스캔 대상이 되어 Bean으로 등록된다.다른 객체에서 @Autowired, @Inject, @Bean 등을 통해 주입(Injection) 받을 수 있다.🌀 2. S..
✅1. Spring Framework란?Spring은 자바 기반의 엔터프라이즈 애플리케이션을 만들기 위한 경량화된 프레임워크이다.핵심 철학은 "객체 간의 결합도를 낮추고, 유연하고 확장 가능한 구조"를 만드는 것에 있다. 핵심 철학을 구성하는 키워드IoC (제어의 역전)DI (의존성 주입)AOP (관점 지향 프로그래밍)2. IoC - Inversion of Control (제어의 역전) 📌 개념객체의 생성과 생명주기 관리를 "개발자가 아니라 컨테이너(Spring)가 대신하는 것"개발자가 제어하던 객체 생성/연결을-> 스프링 컨테이너가 역으로 제어한다는 개념 ✅왜 중요한가?객체 간의 강결합을 제거애플리케이션 전체 흐름을 중앙 컨테이너가 제어테스트와 유지보수가 쉬워짐3. DI - Dependency Inj..
SOLID 원칙은 유지보수성, 확장성, 유연성, 테스트 용이성을 갖춘 객체지향 설계를 위한 핵심 5대 원칙이다.이 원칙을 제대로 이해하고 실무에 적용하면, 요구사항 변경에도 끄떡없는 탄탄한 시스템을 만들 수 있다. 1. SRP - 단일 책임 원칙 (Signle Responsibility Principle) 📌 정의"하나의 클래스는 하나의 책임만 가져야 한다."정확히 말하면 클래스는 오직 하나의 변경 이유만 가져야 한다. 🎯 왜 중요한가?여러 책임을 가진 클래스는 변경 범위가 커짐하나의 책임이 바뀔 때 전혀 관련 없는 기능까지 깨질 위험있음테스트가 어려워지고 응집도가 낮아짐❌ 위반 예시public class ReportManager { void generateReport() { ... } v..