본문 바로가기

스프링 부트로 개발하는 MSA 컴포넌트 - 김병부

(6)
[Spring] CORS 이란? CORS 에러 해결방법 프로젝트를 할때마다 CORS 설정을 해주고 있지만 매번 CORS 에러를 만나는게 정확한 이해없이 사용하고 있는 것 같아 한번 정리하고 넘어가려고 합니다. CORS 란? CORS란 Cross Origin Resource Sharing의 약자로 출처가 다른 리소스들을 공유하는 것을 의미합니다. 여기서 출처란 프로토콜, 호스트, 포트로 구성된 서버 위치를 의미하는데 두 리소스들 간에 프로토콜, 호스트, 포트 중 하나만 달라도 다른 리소스에서 요청을 보냈을 때 CORS 에러가 발생합니다. ex) https://spring.io:8080 프로토콜 : https, http 호스트 : spring.io 포트 : 8080 그렇다면 왜 이처럼 출처가 다른 리소스의 요청을 막는 것일까? 출처가 다른 리소스를 공유하여 브라..
[Spring] MSA 프로젝트 만들기 (3) 2023.03.22 - [Spring] - [Spring] MSA 프로젝트 만들기 (2) [Spring] MSA 프로젝트 만들기 (2) 2023.03.19 - [Spring] - [Spring] MSA 프로젝트 만들기 (1) [Spring] MSA 프로젝트 만들기 (1) 2023.02.28 - [Server] - [Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) [Spring] 마이크로서비스 아키텍쳐 (Micro keylog.tistory.com 이전 글에서 gateway-service에서 Custom Filter를 구현하여 권한이 필요한 요청에 인증된 회원의 요청만 전달되도록 하는 방법과 Spring Cloud Gateway에서 CORS 설정을 하는 방..
[Spring] 통합테스트와 Junit과 Mockito 프레임워크를 이용한 단위테스트 작성 테스트 코드를 작성하는 것은 개발단계에서 서비스 코드를 작성하는 것 만큼이나 매우 중요하다. 그 이유는 다음과 같다. 1. 작성한 코드가 의도한대로 동작하는지 알 수 있다. 작성한 코드를 테스트하는 방법은 포스트맨을 사용하거나 QA 과정에서 직접 서비스를 사용해 보면서 기능을 테스트하는 방법이 있는데 테스트 해야할 기능이 많다면 전부 테스트하는데 많은 시간이 걸린다. 하지만 테스트 코드를 미리 작성해 놓으면 애플리케이션을 실행하지 않고도 클릭 한번으로 테스트할 수 있으며 프로젝트 빌드 툴인 메이븐이나 그레이들 같은 툴을 사용하여 작성된 테스트 케이스들을 한 번에 모두 실행할 수도 있다. 2. 리팩토링 하기 쉬워진다. 리팩토링이란 결과값에 영향을 주지 않으면서 코드의 가독성과 유지보수성을 높이기 위해 내부..
[Spring] Interceptor와 ServletFilter의 차이 ServletFilter SerlvetFilter는 서블릿 스펙에서 제공하는 서블릿 전체에 공통 기능을 추가할 수 있는 기능으로 DispatcherServlet 앞에서 사용자의 요청과 응답을 처리할 수 있다. ServletFilter는 여러 개도 등록이 가능하며 특정 URI에만 필터 기능을 걸 수 있도록 설정할 수도 있다. ServletFilter 구현체를 만드려면 javax.servlet.Filter 인터페이스를 구현해야 한다. public interface Filter { public default void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(Servlet Request request, Serv..
[Spring] 마이크로서비스 아키텍쳐 (Micro Service Architecture, MSA) 모놀리식 아키텍처 모놀리식 아키텍처는 하나의 시스템이 서비스 전체 기능을 처리하도록 설계한 방법이다. 그렇기 때문에 전반적으로 서비스 구조가 매우 간단하며 이 간단한 구조 덕분에 시스템 운영과 개발이 편리하다는 장점이 있다. 소규모 개발 팀이 비교적 간단하고 작은 기능을 제공하는 서비스를 개발할때 효율적이다. 장점 개발자는 하나의 데이터 저장소에 하나의 애플리케이션만 개발하면 되므로 데이터를 처리하는 일에만 집중하면 된다. 하나의 서비스안에서 클래스들간에만 데이터를 주고 받으면 되기 때문에 데이터가 유실될 걱정이 없다. (MSA 방식은 분산된 서비스들 간에 데이터를 주고받아야 하기 때문에 네트워크를 통해 전송된다.) 시스템 장애나 기능에 버그가 생기면 하나의 애플리케이션에서만 원인을 파악하면 되기 때문에..
도커 컨테이너 컨테이너란 호스트 OS상에 논리적인 구획(컨테이너)을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것 도커 Docker(도커)는 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용하기 위한 오픈소스 플랫폼. 내부에서 컨테이너 기술을 사용하고 있는 것이 특징 도커는 인프라 환경을 컨테이너로 관리한다. 애플리케이션의 실행에 필요한 모든 파일 및 디렉토리들을 컨테이너로서 모아버린다. 컨터이너의 바탕이 되는 Docker 이미지를 Docker Hub와 같은 리포지토리에서 공유한다. 도커의 특징 - 확장성/이식성 도커가 설치되..