본문 바로가기

Total62

[React] SpringBoot 와 React 연동하기 - vite build Thymeleaf와 같은 템플릿 엔진 기능 없이 SpringBoot를 API 서버로만 활용하고 React와 같은 별도의 애플리케이션을 통해 UI를 제공할 수 있다. 백엔드와 프런트엔드 기술스택을 각각 SpringBoot와 React로 결정했을 때 이 둘을 어떻게 연결하는지 간단한 예시코드로 살펴본다. 1. Spring Boot project 생성- 프로젝트 의존성스프링 스타터 (https://start.spring.io/) 를 통해 Spring 프로젝트를 생성한다.Spring과 React의 연결방법을 살펴보는 것이기 때문에 아래와 같이 web과 lombok만 의존성으로 추가하였다.dependencies { implementation 'org.springframework.boot:spring-boot-s.. 2025. 10. 3.
[Server] CORS ERROR를 피하는 방법 - 교차 출처 리소스 공유(CORS) CORS란?CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)는 브라우저가 서로 다른 출처(Origin) 간의 리소스 공유를 안전하게 허용하기 위해 사용하는 HTTP 헤더 기반 보안 메커니즘이다. 교차 출처 요청은 다른 서버에서 응답받은 리소스를 기존 웹페이지에서 사용할 때 발생하는데, 도메인 A (https://domain-a.com)의 웹페이지에서 script를 통해 도메인 B의 이미지(https://domain-b.com/images/sample.jpg)를 요청해서 웹페이지에 공유하는 경우가 간단한 예시다. 보안상의 이유로 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한하기 때문에 javascript의 fetch() 메서드와 XMLHttpRequ.. 2025. 9. 21.
[설계] 멀티 테넌트 아키텍처 (Multi-Tenant Architecture) 살펴보기 멀티 테넌트 아키텍처(Multi-Tenant Architecture)란?멀티 테넌트 아키텍처는 '멀티 테넌시(Multi-tenancy)' 시스템을 구현하는 구체적인 설계 방식이나 구조를 말한다. 멀티 테넌시는 하나의 애플리케이션이 여러 고객들에게 서비스를 제공할 수 있도록 하는 소프트웨어 아키텍처이다.여기서 고객은 테넌트(tenant)라는 개념으로 다루어지는데, 특정 접근 권한을 공유하는 사용자들의 그룹을 나타낸다. 예를 들어, B2B 서비스로 제공되는 '재고관리 전산시스템'이 클라우드 시스템으로 제공되는 상황을 가정해보자. 해당 서비스를 사용하는 기업 A와 B가 있을 때, 양 기업은 서로의 데이터와 환경에 접근할 수 없으며 서비스를 실제로 사용하는 기업의 구성원들은 본인이 속한 기업의 데이터에 접근할 .. 2025. 9. 6.
[SpringBoot] Testcontainers로 통합테스트 환경 구성하기 - 개념과 사용법 Testcontainers란?Testcontainers는 Docker 컨테이너로 구동되는 실제 서비스와의 통합 테스트 환경을 자동으로 구성하고 시작하기 위해 쉽고 가벼운 API를 제공하는 테스트 라이브러리이다. Testcontainers를 사용하면 목(mock)이나 인메모리 서비스 없이 운영환경에서 사용하는 것과 동일한 유형의 서비스와 통신하는 테스트를 작성할 수 있다. 통합 테스트의 어려움 - Testcontainers를 사용해야 하는 이유오늘날 소프트웨어 시스템은 다양한 기술과 도구를 활용하여 복잡한 비즈니스 문제를 해결한다. 대부분의 소프트웨어 시스템은 독립적으로 작동하지 않고 데이터베이스, 메시징 시스템, 캐시 서버 등 다른 서비스와 상호작용한다. 시스템끼리 서로 상호작용하는 이러한 환경은 애.. 2025. 7. 9.
[Server] Docker를 활용한 로컬 DNS 서버 구축 방법 DNS 서버란?DNS(Domain Name System) 서버는 도메인 이름을 해당하는 IP 주소로 바꿔주는 역할을 하는 서버다. 인터넷을 구성하는 모든 네트워크 기기들은 주소 값으로 숫자로 구성된 IP를 가지고 있고 우리가 이를 기억하고 사용하는 데는 다소 어려움이 존재한다. 이를 해결하기 위해 불편한 IP 주소 대신 익숙한 문자열로 구성된 이름(도메인)을 대신 사용하는데, 도메인 이름과 IP 주소를 연결하여 관리하는 체계를 도메인 네임 시스템이라 한다.예를 들어 웹사이트 티스토리에 접근하기 위해서 아이피 주소(211.183.222.4) 대신 도메인 주소 'www.tistory.com'를 사용할 수 있다. 로컬 DNS 서버 구축하기 - Docker와 dnsmasq 기반Docker로 내부 DNS .. 2025. 6. 22.
[Java] Annotation Processor 사용법 & 예제 어노테이션 프로세서(Annotation Processor)란? 어노테이션 프로세서란 Java 파일을 컴파일하거나 프로젝트 빌드 시 선언된 어노테이션을 감지하고 그에따라 정해진 작업을 수행하는 도구를 의미한다. 이러한 프로세서는 코드 생성, 검증, 문서화 등 다양한 작업을 자동화할 수 있으며, 특히 반복적인 보일러플레이트 코드(Boilerplate Code)를 줄이는데 효과적이다. 이러한 처리 과정을 Annotation Processing이라고 하며, 대표적인 예로는 롬복(Lombok) 라이브러리, Jpa 모델 검증(Hibernate), Spring REST Docs 등이 있다. 표준 annotation processing API는 새로운 파일을 생성할 수 있지만 기존 파일을 수정할 수 없다는 제약조건을 .. 2025. 6. 9.