[Spring Cloud MSA] Config, Gateway, Eureka까지 MSA 핵심 구조 쉽게 이해하기
·
BackEnd/Spring & JPA
마이크로서비스 아키텍처(MSA, Microservice Architecture)를 처음 접했을 때, 여러 개의 서비스가 어떻게 서로를 찾고 통신하는지 궁금하지 않으셨나요?"수십 개의 서비스가 있는데, 클라이언트는 이걸 어떻게 호출하지?""매번 설정 파일을 서비스마다 일일이 고쳐야 하나?""서비스 IP가 바뀌면 호출은 어떻게 하지?"이러한 고민들을 해결하기 위해 등장한 것이 바로 Spring Cloud입니다.Spring Cloud는 마이크로서비스 환경에서 반복적으로 발생하는 문제들을 자동화하고 추상화하여 보다 쉽게 시스템을 구축할 수 있게 도와주는 도구입니다.이번 글에서는 Spring Cloud의 개념을 먼저 알아보고, 실무에서 자주 사용하는 핵심 구성 요소들인API GatewayConfig ServerS..
[Spring Boot] MySQL Master/Slave 복제 설정과 Read/Write 자동 분기 처리 방법 정리
·
BackEnd/Spring & JPA
1. 시작하며사이드 프로젝트를 운영하면서 현재는 단일 데이터베이스만 사용 중이었습니다. 단순한 개인 프로젝트 수준이라면 큰 무리는 없겠지만, 운영 환경에서 안정성과 확장성을 확보하려면 최소한의 DB 이중화 구조는 반드시 필요하다는 생각이 들었습니다.특히, 현재 운영 중인 프로젝트는 전체 쿼리 중 약 80~90%가 읽기(Read) 작업으로 이루어져 있기 때문에, 읽기/쓰기 분리 구조를 미리 연습해보는 것만으로도 큰 도움이 되겠다는 판단이 들었습니다.물론 단일 DB로도 운영은 가능하지만, 실무에서는 장애 대응, 확장성, 성능 분산 등의 이유로 Master/Slave 구조(Master-Replica)를 도입하는 경우가 많습니다.이에 따라, MySQL Master/Slave Replication 구조를 설정하고..
[Spring] @RequestPart를 활용하여 JSON + MultipartFile 동시 전송하기 (Feat. 게시판에서 게시물 생성과 첨부 파일 업로드 한번에 처리하기)
·
BackEnd/Spring & JPA
1. 시작하며웹 애플리케이션을 개발할 때, JSON 데이터와 파일을 함께 전송해야 하는 경우가 있습니다.예를 들어, 게시글 작성 시 게시글 정보(JSON)와 첨부파일(MultipartFile)을 함께 API에 전달해야 하는 경우를 생각해 볼 수 있습니다.보통 API에서 @RequestBody를 사용하여 JSON 데이터를 받지만, multipart/form-data 요청에서는 @RequestBody를 사용할 수 없습니다.이러한 경우, Spring의 @RequestPart 어노테이션을 활용하면 JSON과 파일을 동시에 전송할 수 있습니다.이 글에서는@RequestBody와 @RequestPart의 차이점@RequestPart를 활용하여 게시글 정보(JSON) + 첨부파일을 한 번의 요청으로 처리하는 방법프론..
[Spring Data JPA] JPA 엔티티 설계 시 생성자 접근 제한을 PROTECTED로 설정하는 이유
·
BackEnd/Spring & JPA
1. 시작하며Spring Data JPA를 활용하여 애플리케이션을 개발하다 보면 엔티티(Entity) 설계는 매우 중요한 요소로 다가옵니다. 특히, Entity의 생성자 접근 제한과 같은 세부적인 설계는 시스템의 안정성과 데이터 일관성을 유지하는 데 큰 영향을 미칩니다.이번 글에서는 회원 엔티티(Entity)를 설계하며 @NoArgsConstructor와 @AllArgsConstructor를 AccessLevel.PROTECTED로 제한한 이유를 다룹니다. 이러한 설계가 가지는 장점과 실제로 어떤 효과를 기대할 수 있는지에 대해 설명합니다.2. JPA 엔티티 기본 설계JPA 엔티티는 데이터베이스 테이블과 1:1로 매핑되는 클래스입니다. 아래는 Member 엔티티의 예시입니다.@Entity@Getter@B..
[Spring] @ResponseBody VS ResponseEntity<T>
·
BackEnd/Spring & JPA
1. @ResponseBody란?@ResponseBody는 Spring MVC에서 컨트롤러 메서드가 반환하는 값을 HTTP 응답 본문으로 직렬화하여 클라이언트에게 전달할 때 사용됩니다. 반환되는 데이터는 Jackson 라이브러리를 사용하여 JSON 형식으로 변환됩니다. 기본적으로 HTTP 상태 코드는 200 OK로 설정되며, 데이터만 반환하는 단순한 API 응답 처리에 주로 사용됩니다.1.1 @ResponseBody의 주요 특징JSON, XML과 같은 포맷으로 데이터를 반환HTTP 상태 코드는 기본적으로 200 OK주로 REST API 응답에서 사용뷰를 반환하지 않고 데이터를 직렬화하여 전달2. ResponseEntity란?ResponseEntity는 HTTP 응답의 상태 코드, 헤더, 본문을 모두 명시..
[Spring] @Controller VS @RestController
·
BackEnd/Spring & JPA
1. @Controller 란?@Controller는 Spring MVC 패턴에서 주로 사용되는 어노테이션으로, 웹 페이지(View)를 반환하기 위해 사용됩니다. 이 어노테이션을 통해 컨트롤러 클래스를 정의하면, 클라이언트 요청을 받아서 JSP나 Thymeleaf와 같은 뷰(View)를 생성하여 반환할 수 있습니다. Spring에서 @Controller는 주로 전통적인 웹 애플리케이션에서 페이지를 렌더링할 때 사용됩니다.1.1 @Controller 동작 흐름클라이언트 요청: 클라이언트는 브라우저 또는 HTTP 클라이언트를 통해 DispatcherServlet으로 URI에 해당하는 요청을 보냅니다. 예를 들어 /users/detailView와 같은 URI로 요청이 들어옵니다.Handler Mapping: ..
[Spring] 스프링 개념 및 동작 원리 정리
·
BackEnd/Spring & JPA
1. Spring framework란?Spring Framework는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크입니다. 엔터프라이즈급 애플리케이션을 개발할 수 있는 기능을 종합적으로 제공하면서도 경량화된 솔루션을 제시합니다.일반적인 엔터프라이즈급 개발에서는 과도한 엔지니어링 기술로 인해 고가의 WAS(Web Application Server)가 필요하지만, Spring은 필요한 기술을 가볍고 단순한 환경에서 사용할 수 있도록 제공합니다.2. Spring framework 특징2.1. IoC (Inversion of Control, 제어의 역전)IoC는 객체의 생성과 관리 제어권을 개발자가 아닌 스프링 컨테이너에 넘기는 개념입니다. 전통적으로는 개발자가 직접 객체를 생성하고 의존성을 관리해야 했지..