전체 글 263

Kafka란?

🔍1. 이벤트 기반 아키텍처(Event-Driven Architecture)란?분산된 애플리케이션 서비스들이 이벤트를 기반으로 통신하고 서로의 동작을 야기하는 패턴을 이벤트 기반 아키텍처라고 한다.서비스들이 이벤트를 발행(publish)하고, 다른 서비스가 이를 구독(subscribe)하여 처리.Kafka, RabbitMQ, SQS, EventBridge 등과 같은 메시징 시스템을 통해 구현.⭐ 이벤트 기반 아키텍처를 사용하는 이유1️⃣ 서비스 간 결합도↓ → 각 서비스가 독립적으로 동작 가능 (확장성↑)2️⃣ 비동기 처리 → 빠른 응답 가능, 대량 트래픽 처리에 유리3️⃣ 확장성 & 유연성 → 새로운 기능 추가 시 기존 시스템에 영향 최소화  📌 2. Kafka란?Kafka는 대규모 데이터를 실시간..

[Spring Security] CSRF & CORS 개념 및 설정 방법

📌 1. CSRF(Cross-Site Request Forgery)란?사용자가 로그인된 상태에서 악성 사이트를 통해 원치 않는 요청을 보내도록 유도하는 공격 방식예를 들어, 사용자가 은행 웹사이트에 로그인한 상태에서 악성 스크립트가 계좌이체 요청을 보내면 공격이 성공할 수 있음 ✅ 1-1. Spring Security에서 CSRF 설정 방법🔹 CSRF 방어 활성화 (기본값)Spring Security에서는 CSRF 보호가 기본적으로 활성화됨폼 기반 로그인(formLogin())을 사용할 때 CSRF 방어가 필요함@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http ..

Backend/spring 2025.02.23

[Spring Security] Web vs WebFlux Spring Security 설정

📌 Spring Security 설정 방법 비교Spring Security 설정 방식은 Spring MVC(Web)와 Spring WebFlux에서 차이가 있다!! 🚀아래에서 클래스 차이, 필터 적용 방식, UserDetailsService 사용 방식을 비교해보자. 😊 🔥 Spring MVC vs WebFlux 차이 요약 Spring MVC (Web)Spring WebFluxSecurity 설정 클래스@EnableWebSecurity@EnableWebFluxSecurityFilterChain 타입SecurityFilterChainSecurityWebFilterChain요청 인증 설정authorizeHttpRequests()authorizeExchange()필터 추가 방식addFilterBefore..

Backend/spring 2025.02.23

web vs webflux

📌 Spring Boot와 각 Starter(web, webflux)의 역할✅ 1. Spring BootSpring Boot는 Spring 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크.애플리케이션 실행을 자동화하고, 필요한 설정을 최소화하는 역할을 한다.🎯 Spring Boot가 하는 일1️⃣ Spring 설정 자동화@SpringBootApplication을 사용하면 @Configuration, @ComponentScan, @EnableAutoConfiguration이 포함됨application.properties 또는 application.yml을 기반으로 자동 설정 수행2️⃣ 내장 웹 서버 제공Tomcat, Jetty, Undertow, Netty 등을 내장하여 별도 WAS 설치 없이..

Backend/spring 2025.02.23

자바(Spring) 기본 예외 처리

📌1.  try-catch 문과 throws Exception 사용법기본적인 예외 처리는 다음 두 가지 방법으로 구현할 수 있다.✅ 1-1. try-catch 문try-catch 문은 코드 실행 중 발생하는 예외를 감지하고 처리하는 가장 일반적인 방식이다.로직을 중단하지 않고 즉각적인 예외 처리.Spring MVC에서 주로 Controller 📖 try-catch 예시try { int result = 10 / 0; // 예외 발생 (ArithmeticException)} catch (ArithmeticException e) { System.out.println("예외 발생: " + e.getMessage()); // 예외 메시지 출력 e.printStackTrace(); // 스택 ..

Backend/JAVA 2025.02.23

GitHub Repository 통합

📌 GitHub Repository 통합 관리MSA의 여러 서비스 레포지토리들이 별도로 생성되어 보기에도 복잡하고 서비스간 연결되어 있는지 알 수가 없었다. 그래서 하나의 레포지토리로 보이게 하고싶었다. 요구사항은 아래와 같음.각 서비스(주문, 상품, 유저)가 독립적으로 실행 가능하고 다른 프로젝트에 포함될 가능성이 있음.커밋은 따로 하고 레포지토리 화면에서는 1개의 메인 레포지토리처럼 보이길 원함. (개별 서비스는 private해둠.) 🔥 서브모듈 vs 서브트리 비교레포지토리 통합 방식은 주로 2가지를 활용하는 듯. 서브모듈 (Submodule)서브트리 (Subtree)구성 방식외부 레포를 참조 (포인터만 저장)외부 레포를 직접 포함 (파일이 통째로 추가됨)커밋 관리서브모듈 내부에서 개별 커밋 필요..

tool/git 2025.02.23

[Spring Security] Spring Security 임시 계정

📌 Spring Security 임시 계정Security filterChain 에서 권한 검사를 설정한 경우 이를 통과하기 위해 로그인이 필요!!기본 폼을 활성화 하면 자동으로 로그인창이 뜬다. 이때 DB연결 전 이라면 임시계정이 필요하다. 📖 인증 필터http.authorizeExchange(exchanges -> exchanges.anyExchange().authenticated()); 📖 기본 로그인 폼 활성화http.authorizeHttpRequests() .anyRequest().authenticated() .and() .formLogin(); // 기본 로그인 폼 활성화 📌 Spring Security 계정 생성 방법✅ 1. 자동 생성 - 로그 확인Sp..

Backend/spring 2025.02.23

[Java] 비동기 작업 처리 (ExecutorService VS CompletableFuture)

📌 Java에서 비동기 작업 처리Java에서 비동기 작업을 처리하는 방법은 다양하지만, ExecutorService와 CompletableFuture가 가장 일반적이고 널리 사용된다.😆 ✅ 1. Thread 직접 사용Thread 클래스를 직접 생성하여 작업을 실행하는 방법. 📖 예제Thread thread = new Thread(() -> { System.out.println("비동기 작업 실행");});thread.start(); ✔ 장점간단한 작업에 적합. ❌ 단점스레드 풀 관리가 불가능하고, 직접 관리해야 해서 복잡해짐.성능 및 자원 관리 측면에서 비효율적. ✅ 2. ExecutorService스레드 풀을 관리하며 효율적으로 비동기 작업을 처리.Runnable 또는 Callable을 활용..

Backend/JAVA 2025.02.23

[Spring Security] Spring Security란?

📌 1. Spring Security란?Spring Security는 Spring Framework의 서브 프로젝트로, 애플리케이션의 인증(Authentication)과 권한 부여(Authorization)를 처리하는 보안 프레임워크 🛠 Spring Security 핵심 기능 🔹 1. 인증(Authentication)사용자가 누구인지 확인하는 과정. 👉 Spring Security에서 지원하는 인증 방식폼 로그인 (formLogin()) – ID/PW 입력 후 세션 기반 로그인HTTP Basic 인증 (httpBasic()) – 간단한 API 인증 방식 (ID/PW Base64 인코딩)JWT 기반 인증 – 토큰을 이용한 인증 방식OAuth2 로그인 (oauth2Login()) – Google, G..

Backend/spring 2025.02.16