728x90
반응형
SMALL

MSA 12

[MSA] Part. 12 Catalog Service

이제 새로운 마이크로 서비스인 CatalogService를 만들자. 이 서비스는 상품에 대한 데이터를 관리하는 서비스이다. 상품명, 상품아이디, 수량, 단일가격 등에 대한 정보를 가지고 있는 엔티티를 가지고 있을 것이고 그 엔티티에 대한 관리가 일어나는 서비스이다. 우선, 스프링 프로젝트를 만들어야 하는데 Spring Initializer를 사용하는 방법은 기존 포스팅에 작성해 두었으니 dependencies부터 시작하자. build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' } group = 'springmsa' versi..

MSA 2024.01.08

[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 8. H2 Database 연동 그리고 'ddl-auto' property

H2 Database를 연동해서 좀 더 그럴싸한 서비스를 구현해 보자. H2 Database는 Java로 만들어진 오픈 소스 형태의 RDBMS다. H2 Dependency Maven Repository 사이트에 들어가서 H2라고 검색해보자. https://mvnrepository.com 검색하면 가장 상단에 H2 Database Engine 이라는 dependency가 노출된다. 거기에 가장 최신 버전을 클릭해서 dependency를 복사한 후 pom.xml 파일에 추가하자. com.h2database h2 2.2.224 runtime 한 가지 변경사항이 있는데 scope를 runtime으로 변경해 주자. test로 하게 되면 실제로 서비스를 실행할 때 H2 Database를 사용할 수 없기 때문에 ru..

MSA 2023.10.11

[MSA] Part 7. API Gateway를 Eureka에 등록하기

이전 Part 6 까지는 API Gateway Service는 Eureka에 등록하지 않았다. 이제 이 Gateway도 등록을 해야한다. 등록해서 Load Balancer를 사용해보자. API Gateway Service의 application.yml server: port: 8000 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka spring: application: name: api-gateway-service cloud: gateway: default-filters: - name: GlobalFilter args: baseMessage:..

MSA 2023.10.10

[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
728x90
반응형
LIST