728x90
반응형
SMALL

MSA 9

[MSA] Part 11. User Service (WebSecurity)

유저 서비스에서 Security 관련 설정을 진행해보자. 사실 지금 딱히 Security 관련 설정할 내용이 있는건 아니다만 구현하고자 하는 서비스는 웹 관련 서비스가 아니기 때문에 설정해주면 좋을만한게 있다. WebSecurity 다른 설정 파일과 똑같이 @Configuration 애노테이션으로 클래스를 만들고 그 안에 @Bean 등록으로 설정 내용을 적용하면 된다. WebSecurity package springmsa.springmsa_user_service.security; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.spr..

MSA 2024.01.08

[MSA] Part 10. User Service (Find User/s)

이번에는 UserService에서 조회 부분에 대한 API를 만들어보자. Service 기존에 만들었던 UserService 인터페이스에 다음 메서드들을 추가한다. UserDto findUserById(Long id); Iterable findAll(); UserService package springmsa.springmsa_user_service.service; import springmsa.springmsa_user_service.dto.UserDto; import springmsa.springmsa_user_service.entity.Users; public interface UserService { Users createUser(UserDto userDto); UserDto findUserByI..

MSA 2024.01.08

[MSA] Part 9. UserService (Create User)

UserService의 API 중 Create 부분을 만들어보자. VO 우선, vo 패키지를 하나 추가하고 그 패키지 안에서 CreateUser.java 파일을 생성한다. 이 클래스는 User를 생성하고자 하는 사용자의 요청을 받을 때 Payload를 담는 클래스다. package com.example.tistoryuserservice.vo; import lombok.Data; @Data public class CreateUser { private String email; private String name; private String password; } 위처럼 작성하면 되는데 좀 더 완성도를 높여보자. 각 필드 별 Validation을 걸 수 있다. 예를 들면 최소한의 길이, 최대 길이, NotNul..

MSA 2023.10.11

[MSA] Part 6. Gateway Filter

외부의 요청이 Gateway를 통해 들어올 때 요청을 가로채서 추가적인 작업을 수행할수도 있다. 이 때 사용되는 방법이 Filter이다. Filter 설정하기 config 파일 하나를 만들기 위해 config라는 패키지 하나를 만들고 그 안에 FilterConfig.java 파일을 만들었다. package com.example.tistorygateway.config; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder; import org.springframework.context.annotation.Bean; im..

MSA 2023.10.10

[MSA] Part 5. API Gateway

API Gateway를 구현해보자. 그 전에 API Gateway가 있을 때 얻는 이점이 무엇이길래 이 녀석을 구현하는지 알아보자. API Gateway가 없을 때 외부에서 어떤 요청을 하면 그 요청을 앞 단에서 해당 요청을 처리하는 서비스(뒷 단)와 통신하여 응답을 외부에게 돌려주는 구조가 될 것이다. 이 상태에서는 어떤 문제도 없지만 만약 기존에 있던 서비스들 중 어떤 것이 URL이 변경된다던지, 서비스를 운영하는 서버가 이전된다던지 등 어떤 변화가 생기게 되면 서비스의 URL같은 호출 정보가 변경된다. 호출 정보가 변경되면 그 변경 사항에 맞게 앞 단은 다시 설정 작업을 해야하고 그 작업으로 인해 서비스는 다운타임이 발생한다. 이와 반대로 API Gateway와 같은 중개자가 있는 구조를 살펴보자...

MSA 2023.10.06

[MSA] Part 4. Service 등록 (User)

이제 Eureka Server를 만들었으니 하나씩 비즈니스 서비스를 만들어보자. 그 중 첫 번째는 User Service. 똑같이 IntelliJ로 Spring Initializr를 사용하자. User Service 생성 위처럼 설정했고 Next Dependencies 설정하는 부분이 Eureka보다 더 많은데 하나씩 설정해보자. 필요한 Dependencies Spring Boot DevTools Lombok Spring Web Eureka Discovery Client 위처럼 다 체크했으면 Create해서 프로젝트를 생성 pom.xml 역시 마찬가지로 가장 먼저 확인할 파일은 pom.xml파일이다. 4.0.0 org.springframework.boot spring-boot-starter-parent ..

MSA 2023.10.06

[MSA] Part 3. Spring Cloud Netflix Eureka

Spring Cloud Netflix Eureka는 Service discovery tool을 말한다. Service discovery는 분산 시스템에서 각 인스턴스(서비스)들을 등록하고 관리해 주는데 관리해 준다는 건 외부에서 요청이 들어올 때 그 요청을 처리할 수 있는 인스턴스(서비스)가 어떤 서비스인지를 찾아주는 것을 포함한다. 위 그림에서 Netflix Eureka는 API Gateway 바로 다음 단계에 존재하는데, 서비스에 외부 요청이 들어오면 API Gateway는 요청을 받아 해당 요청을 처리할 수 있는 서비스를 찾기 위해 Eureka에게 물어본다. Eureka는 해당 요청을 처리할 수 있는 서비스가 본인한테 등록된 게 있는지 확인 후 있다면 해당 서비스에게 요청을 전달한다. 이렇게 각 서..

MSA 2023.10.06

[MSA] Part 2. Spring Cloud란?

Spring Cloud는 분산 시스템 (MSA 역시 포함)에서 흔하게 사용되는 구조 및 패턴을 쉽게 빌드 및 배포할 수 있도록 도와주는 툴을 제공해 준다. 그런 분산 시스템에서 흔하게 사용되는 기능(툴)이란 건 configuration management, service discovery, circuit breakers, routing, proxy, control bus, authentication, cluster 등 여러 기술이 있다. 참고 문서 (Spring Cloud 공식 문서) Spring Cloud Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems..

MSA 2023.10.06

[MSA] Part 1. Spring Microservices Architecture

요즘 한창 재미 들려 공부하는 MSA. 하나도 빠짐없이 배우고 공부한 내용을 기록해 보고자 한다. MSA(MicroService Application) 우선 MSA는 Micro Service Application의 약자로, 어떤 서비스가 가진 기능을 제공할 때 하나의 큰 애플리케이션에서 모든 기능을 수행하는 것이 아니라 기능별, 특징별, 구성별로 서비스들을 작게 나누어 각 기능에 특화된 하나의 작은 서비스를 구축하고 그 구축한 여러 개의 서비스들이 모여 거대한 하나의 애플리케이션이 되는 형태를 말한다. 위 사진에서 우측 SERVICE A, SERVICE B가 있다. 이 두 개의 서비스들은 각자 자신이 수행해야 할 최소 단위의 기능들만을 모아 구성된 하나의 작은 서비스다. 예를 들어, 쇼핑몰 기능을 제공하..

MSA 2023.10.05
728x90
반응형
LIST