본문 바로가기
개발/Armeria

[Java] Armeria - Restful API 서버 구축하기 - (1) Application 생성

by Mingvel 2022. 6. 29.

이번 글에서는 LINE에서 탄생 한 Open Source FrameworkArmeria를 이용하여, Restful API 서버를 간단하게 구축해보려고 합니다.

 

Armeria는 LINE 내에서 사용 중이던 어떤 기술의 한계점을 극복하기 위해 자체 개발한 Framework라고 알고 있는데, 자세한 배경은 알지 못합니다.

 

Armeria는 Java, Kotlin 언어를 지원하여 기존 Spring 기반 Framework를 개발 및 운영하던 개발자들에게도 어느 정도 친숙하게 접근할 수 있는 접근성을 가진 것으로 보입니다.

 

또한 Eureka, Grpc, Kafka, Kotlin(coroutines), HTTP client/server 등과 같은 의존성을 제공함으로써, 다양한 서비스, Infra를 구축할 수 있도록 지원합니다.

 

이번 글에선 Java를 사용하여 HTTP Server를 간단히 생성해보도록 하겠습니다.

 

 

Armeria를 사용할 Java Application을 생성 후, 

(Armeria는 JDK 11 Version 이상 사용을 권장하고 있어, JDK는 11 이상을 사용하도록 합니다

 

 

의존성 관리를 위해 Project root에 build.gradle 파일을 생성해줍니다

 

이번에 사용할 armeria dependency version은 1.16.0 입니다

 

Contribution이 활발히 진행되고 있는 OpenSource 이기에, 이 글도 언제 `구 버전 예시`가 될 지 몰라 Version을 기록합니다

 

//build.gradle
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'eclipse'

repositories {
    mavenCentral()
}

dependencies {
    implementation "com.linecorp.armeria:armeria:1.16.0" //Armeria Dependency

    // For Logging
    runtimeOnly 'ch.qos.logback:logback-classic:1.2.11'
    runtimeOnly 'org.slf4j:log4j-over-slf4j:1.7.36'
}

 

 

그 이후, Package 및 Main 클래스를 생성해주고 Netty Server를 관리 및 실행하기 위한 설정 정보를 포함시켜 줍니다.

//Netty Server 동작을 위한 설정

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.linecorp.armeria.common.HttpResponse;
import com.linecorp.armeria.server.Server;
import com.linecorp.armeria.server.ServerBuilder;

public class Main {

    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
    private static final int PORT = 8080;

    public static void main(String[] args) {
        Server server = newServer();

        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            server.stop().join();
            logger.info("Server has been stopped.");
        }));

        server.start().join();

        logger.info("Server has been started. Serving dummy service at http://127.0.0.1:{}",
                    server.activeLocalPort());
    }

    static Server newServer() {
        ServerBuilder sb = Server.builder();
        return sb.http(Main.PORT)
                 .service("/", (ctx, req) -> HttpResponse.of("This is Book Server"))
                 .build();
    }
}

 

 

간단한 Netty Server 설정만 끝나면, Web으로 접근이 가능합니다. 

Armeria Web Server 접근

 

 

 

이번 글에선 Armeria Framework 사용을 위해

Java Application 생성 및 의존성 관리, Netty Server를 사용한 Web 연동까지 진행해 보았습니다.

 

 

다음 글에선 실제 도메인 서비스 구현 및 연동에 대해 다루도록 하겠습니다.

다음 글 - [Java] Armeria - Restful API 서버 구축하기 - (2) 도메인서비스 연동

 

[Java] Armeria - Restful API 서버 구축하기 - (2) 도메인서비스 연동

이번 글에선 이전 글에 이어, Armeria Framework에 Restful HTTP API 서비스 연동을 진행해보겠습니다. 이전 글 보러 가기 - [Java] Armeria - Restful API 서버 구축하기 - (1) Application 생성 [Java..

far-ming.tistory.com

github Source

 

GitHub - meeingjae/armeria-book-service: Armeria Restful Http Server

Armeria Restful Http Server. Contribute to meeingjae/armeria-book-service development by creating an account on GitHub.

github.com

 

반응형

댓글