# Netflix zuul이란? 이녀석이 Ingress 역할을 해주는것 같다. API GW 역할
- 간단하게 구글링 해보면, Overview ZUUL은 넷플릿스에서 사용 하는 JVM 기반의 라우터로 마이크로 서비스에서 라우팅, 모니터링, 에러처리, 보안 등을 담당한다. > 간단하게 이렇다... 주로하는 일은 라우팅 기능을 도맡아 하는거 같다.
그렇다면 이제 zuul 프로젝트를 생성하고 간단한 코드를 작성해 보자.
1. 스프링 이니셜라이져를 사용하여 스프링 first-service 프로젝트를 생성하자.
2. 동일하게 second-service 프로젝트를 생성하자.
다운받은 zip 파일을 압축을 해제 한 뒤 InteliJ에서 open하여 프로젝트를 띄운다.
그리고 나서 src > main > java > com.example.firstservice > FirstServiceController 라는 컨트롤러 파일을 생성하자. 생성 후 아래와 같이 코드를 입력해 준다.
@RestController
@RequestMapping("/")
public class FirstServiceController {
@GetMapping("/welcome")
public String welcome() {
return "Welcome to the First Service.";
}
}
3. application.yml 파일에 내용을 추가하자. (사전에 확장자를 yml로 바꾸는것을 잊지말자)
second-service의 포트번호는 8082번이며, name은 my-sercond-service 나머지 옵션은 동일하다.
동일하게 second 서비스도 생성해준다.
server:
port: 8081
spring:
application :
name: my-first-service
eureka:
client:
fecth-registry: false
register-with-eureka: false
4. 접속 시도 - first-service와 second-service에 대해 접속을 시도해보자.
- 정상적으로 first 서비스와 second 서비스에 접속이 되는것을 확인할 수있다.
5. Netflix zuul을 통한 라우팅을 해보자.
- 일단 스프링 이니셜라이져에서 프로젝트 생성을 하자.
- 버전이 업그레이드 되면서 zuul [Maintenance] 가 겁색이 안된다.
build.gradle 파일을 아래 내용을 참고하여 수정하자. 그냥 복사해서 붙여넣어주면 된다.
plugins {
id 'java'
id 'org.springframework.boot' version '2.3.9.RELEASE'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
}
group = 'MSA'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:Hoxton.RELEASE"
}
}
tasks.named('test') {
useJUnitPlatform()
}
6. IntelliJ에서 프로젝트를 open 한 뒤 ZuulServiceApplication의 내용을 수정해주자.
@EnableZuulProxy 하나만 추가해 주자.
7. 다음으로 application.yml파일을 수정해주자.
server:
port: 8000
spring:
application:
name: my-zuul-service
zuul:
routes:
first-service:
path: /first-service/**
url: http://localhost:8081
second-service:
path: /second-service/**
url: http://localhost:8082
위의 내용을 추가해주고 사이트에 접속을 해보자.
8. http://127.0.0.1:8000/first-service/welcome, http://127.0.0.1:8000/second-service/welcome 으로 접속하면 접속이 잘 되는 것을 확인 할 수 있다.
즉 800번 포트가 first와 second를 연결해주는 라우팅 기능을 수행하는것을 확인 할 수 있다.
- 다음시간에는 zuul 필터에 대해서 알아보자.
'MSA (MicroServiceArchitecture) > Eureka & Spring Cloud Gateway' 카테고리의 다른 글
MSA (Spring Cloud Gateway 프로젝트 생성) (0) | 2021.06.17 |
---|---|
MSA (Zuul Filter + Log 찍기) (0) | 2021.06.17 |
MSA (동적으로 포트와 인스턴스 ID를 할당받아 실행하기) (0) | 2021.06.16 |
MSA (스프링 부트 어플리케이션을 실행하는 4가지 방법) (0) | 2021.06.16 |
MSA (유저 서비스 생성하기) (0) | 2021.06.16 |