본문 바로가기

MSA (MicroServiceArchitecture)/Eureka & Spring Cloud Gateway

MSA (Netflix zuul 프로젝트 생성 및 라우팅)

728x90
반응형

# 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 필터에 대해서 알아보자.

728x90
반응형