대머리개발자

아르메리아(Armeria) 더더더 공부 해자. 본문

개발이야기/오픈소스 설치

아르메리아(Armeria) 더더더 공부 해자.

대머리개발자 2024. 10. 22. 16:51
728x90

서버는... 개똥같이 만들어도 돌아간다...우리도.. 예쑬을 해야지

 

 

https://hcnmy.tistory.com/182

 

Armeria를 사용하는 이유

모든 리소스를 아르메리아로 조지고 있는데 문득 왜 쓰고 있는지 의문이 들었다. https://engineering.linecorp.com/ko/blog/hello-armeria-bye-spring LINE 개발자들이 Spring 대신 Armeria를 사용하는 이유 LINE DEV Meetup

hcnmy.tistory.com

 

올해 4월달에 올렸던 글인데.. 굳이???라는 내용으로 썻던 글인데..

나의 무지에서 나온 명백한 헛소리다. 반성합니다.... 무조건 무조건이닷!!!

 

앞으로는 나는 webFlux + r2dbc 조합만을 이용해서 프로젝트를 진행 할건데

아르메리아의 의존성 추가하는 것만으로도 통합된다.

 

와탭(whatap)에서 아르메리아를.. 모니터링 지원이 안 된다... 이 역시 일전에 블로그를 했던것 같다.

물론 오픈소스인 프로메테우스와 그라파나를 적용하면 된다고는 하지만.. 너무 일단 백이당 ㅠ 이 정도는 상용을...좀...

 

모니터링을 테스트를 해보니..webflux는 지원이 되었다. 핀포인트도 되더라. 

 

아르메리아로 적용했던 endpoint(콘트롤러)를 일부 webflux로 변경하려고 한다.

 

여기서 의문점이 있었는데... 다행이도 전부 해결되는 문구들을 찾았다.

 

단순 webflux를 사용하는 것인데... 아르메리아 프로세스가 적용이 되나??

결론은 엔진만 교체되는 것이기 때문에 인터페이스를 변경해도 되는 부분이다... 진짜 확장성 굳굳굳!!!

 -> serverBuilder에 적용된 로깅, 권한체크, 크로스 도메인 처리 모두 동일하게 적용된다.

 

뿐만 아니라 모니터링이 필요한 endPoint만 정리해서 별도 webflux로 만들면 되겠다. ㅎㅎ

기본적으로 모든 모니터링을 하면 좋지만... 고민 좀 해보고

 

 

webFlux를 쉽게 통합 할 수 있다는 캡쳐 내용이다.

https://engineering.linecorp.com/ko/blog/reactive-streams-with-armeria-2

 

:: 그래들

// spring webflux
//implementation 'org.springframework.boot:spring-boot-starter-webflux'

// armeria
implementation 'com.linecorp.armeria:armeria-spring-boot3-webflux-starter'
implementation platform('com.linecorp.armeria:armeria-bom:1.30.1')

 

 

 

처음부터 만드는 과정에서는 굳이 srping-webflux를 이용 할 필요는 없으나 

와탭 모니터링을 이용하기 위해 spring-webflux 이용!!!

 

## 아르메리아를 이용해서 end-point 바인딩

import com.linecorp.armeria.server.annotation.Get
import org.springframework.stereotype.Service
import reactor.core.publisher.Mono

@Service
class ArmeriaEndPoint {
    @Get("/test-armeria")
    fun search() : Mono<String> {
        return Mono.just( "hello-armeria")
    }
}

...
 // endpoint 바인딩
 serverBuilder.annotatedService(ArmeriaEndPoint())
...

 

 

## spring-webflux

package com.v1.simple1

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController
import reactor.core.publisher.Mono

@RestController
class SimpleEndPoint {
    @GetMapping("/test-webflux")
    fun search() : Mono<String> {
        return Mono.just( "hello-webflux")
    }
}

 

모니터링을 할 수 있는 webflux end-point 있고  엔진만 교체를  

01010101012121212121212  -- > | armeria | --> 01010101012121212121212

01010101012121212121212  -- > | armeria | -->  | webflux |  -- > | armeria | -->  01010101012121212121212

 

 

또한 엔진이 교체 되었으니 고성능 아르메리아 엔진을 이용할 수 있고. 떡 먹고! 알 먹고!

 

좋다... 야무지게 쓰자!!

728x90