최근 시스템 설계나 백엔드 아키텍처 이야기에서 빠지지 않고 등장하는 단어가 바로 "MSA (Microservice Architecture)"이다.하지만 '좋다더라', '확장성 좋다더라'는 말만 듣고는 정확히 무엇이고, 어떤 장단점이 있는지 파악하기 어렵다.이번 포스팅에서는 MSA의 개념부터, 모놀리식과의 비교, 그리고 실제로 MSA로 전환할 때 어떤 점을 고려해야 하는지까지 깊이 있게 정리해보려고 한다. 1️⃣ MSA란 무엇인가?MSA(Microservice Architecture)는 하나의 시스템을 작고 독립적인 서비스들로 분리하여 운영하는 아키텍처 스타일이다.각 서비스는 자기만의 도메인, 자기 데이터베이스, 자기 비즈니스 로직을 가지고 서로 API 혹은 메시지로 통신한다. 📌 MSA의 핵심 특징작고..
🧠 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..