๐Ÿš€_๊ถ๊ทน์˜_์›น_ํ”„๋ ˆ์ž„์›Œํฌ_์†๋„_๋Œ€๊ฒฐ[20260103113810]

๋ฐœํ–‰: (2026๋…„ 1์›” 3์ผ ์˜คํ›„ 08:38 GMT+9)
11 min read
์›๋ฌธ: Dev.to

Iโ€™m happy to help translate the article for you. Could you please paste the text youโ€™d like translated (excluding the source line you already provided)? Once I have the content, Iโ€™ll translate it into Korean while preserving the original formatting, markdown, and any code blocks or URLs.

์ปจํ…์ŠคํŠธ

  • ์—ฐ๋„: 2024
  • ์ผ๋ฐ˜์ ์ธ ์š”๊ตฌ ์‚ฌํ•ญ: ์ „์ž ์ƒ๊ฑฐ๋ž˜, ์†Œ์…œ ํ”Œ๋žซํผ ๋ฐ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ฐ€๋ฆฌ์ดˆ ์ˆ˜์ค€์˜ ์‘๋‹ต ์‹œ๊ฐ„.

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ

๊ตฌ์„ฑ ์š”์†Œ์‚ฌ์–‘
์„œ๋ฒ„Intel Xeonโ€ฏE5โ€‘2686โ€ฏv4 @โ€ฏ2.30โ€ฏGHz
๋ฉ”๋ชจ๋ฆฌ32โ€ฏGB DDR4
๋„คํŠธ์›ŒํฌGigabit Ethernet
์šด์˜ ์ฒด์ œUbuntuโ€ฏ20.04โ€ฏLTS

1๏ธโƒฃ wrk โ€“ Keepโ€‘Alive ํ™œ์„ฑํ™”

ํ”„๋ ˆ์ž„์›Œํฌ์ดˆ๋‹น ์š”์ฒญ ์ˆ˜ (QPS)์ง€์—ฐ ์‹œ๊ฐ„์ „์†ก ์†๋„์ˆœ์œ„
Tokio340,130.921.22โ€ฏms30.17โ€ฏMB/s๐Ÿฅ‡
Hyperlane334,888.273.10โ€ฏms33.21โ€ฏMB/s๐Ÿฅˆ
Rocket298,945.311.42โ€ฏms68.14โ€ฏMB/s๐Ÿฅ‰
Rust std lib291,218.961.64โ€ฏms25.83โ€ฏMB/s4๏ธโƒฃ
Gin242,570.161.67โ€ฏms33.54โ€ฏMB/s5๏ธโƒฃ
Go std lib234,178.931.58โ€ฏms32.38โ€ฏMB/s6๏ธโƒฃ
Node std lib139,412.132.58โ€ฏms19.81โ€ฏMB/s7๏ธโƒฃ

2๏ธโƒฃ ab โ€“ Keepโ€‘Alive ํ™œ์„ฑํ™”

ํ”„๋ ˆ์ž„์›ŒํฌQPS์ง€์—ฐ ์‹œ๊ฐ„์ „์†ก ์†๋„์ˆœ์œ„
Hyperlane316,211.633.162โ€ฏms32,115.24โ€ฏKB/s๐Ÿฅ‡
Tokio308,596.263.240โ€ฏms28,026.81โ€ฏKB/s๐Ÿฅˆ
Rocket267,931.523.732โ€ฏms70,907.66โ€ฏKB/s๐Ÿฅ‰
Rust std lib260,514.563.839โ€ฏms23,660.01โ€ฏKB/s4๏ธโƒฃ
Go std lib226,550.344.414โ€ฏms34,071.05โ€ฏKB/s5๏ธโƒฃ
Gin224,296.164.458โ€ฏms31,760.69โ€ฏKB/s6๏ธโƒฃ
Node std lib85,357.1811.715โ€ฏms4,961.70โ€ฏKB/s7๏ธโƒฃ

3๏ธโƒฃ wrk โ€“ Keepโ€‘Alive Disabled

ํ”„๋ ˆ์ž„์›Œํฌ์ดˆ๋‹น ์š”์ฒญ ์ˆ˜ (QPS)์ง€์—ฐ์‹œ๊ฐ„ (Latency)์ „์†ก ์†๋„ (Transfer Rate)์ˆœ์œ„ (Ranking)
Hyperlane51,031.273.51โ€ฏms4.96โ€ฏMB/s๐Ÿฅ‡
Tokio49,555.873.64โ€ฏms4.16โ€ฏMB/s๐Ÿฅˆ
Rocket49,345.763.70โ€ฏms12.14โ€ฏMB/s๐Ÿฅ‰
Gin40,149.754.69โ€ฏms5.36โ€ฏMB/s4๏ธโƒฃ
Go std lib38,364.064.96โ€ฏms5.12โ€ฏMB/s5๏ธโƒฃ
Rust std lib30,142.5513.39โ€ฏms2.53โ€ฏMB/s6๏ธโƒฃ
Node std lib28,286.964.76โ€ฏms3.88โ€ฏMB/s7๏ธโƒฃ

4๏ธโƒฃ ab โ€“ Keepโ€‘Alive ๋น„ํ™œ์„ฑํ™”

ํ”„๋ ˆ์ž„์›Œํฌ์ดˆ๋‹น ์š”์ฒญ ์ˆ˜ (QPS)์ง€์—ฐ ์‹œ๊ฐ„ (Latency)์ „์†ก ์†๋„ (Transfer Rate)์ˆœ์œ„ (Ranking)
Tokio51,825.1319.296โ€ฏms4,453.72โ€ฏKB/s๐Ÿฅ‡
Hyperlane51,554.4719.397โ€ฏms5,387.04โ€ฏKB/s๐Ÿฅˆ
Rocket49,621.0220.153โ€ฏms11,969.13โ€ฏKB/s๐Ÿฅ‰
Go std lib47,915.2020.870โ€ฏms6,972.04โ€ฏKB/s4๏ธโƒฃ
Gin47,081.0521.240โ€ฏms6,436.86โ€ฏKB/s5๏ธโƒฃ
Node std lib44,763.1122.340โ€ฏms4,983.39โ€ฏKB/s6๏ธโƒฃ
Rust std lib31,511.0031.735โ€ฏms2,707.98โ€ฏKB/s7๏ธโƒฃ

์ฃผ์š” ๊ด€์ฐฐ

  • Keepโ€‘Alive ํ™œ์„ฑํ™” (wrk): Tokio๊ฐ€ 340,130.92โ€ฏQPS๋กœ 1์œ„๋ฅผ ์ฐจ์ง€ํ–ˆ์ง€๋งŒ, Hyperlane์ด 1.5โ€ฏ% ๋‚ฎ์€ ์ฐจ์ด๋กœ ๊ทผ์†Œํ•˜๊ฒŒ 2์œ„์ด๋ฉฐ ์ „์†ก ์†๋„์—์„œ Tokio๋ฅผ ์•ž์„ ๋‹ค (33.21โ€ฏMB/s ๋Œ€ 30.17โ€ฏMB/s).
  • Keepโ€‘Alive ํ™œ์„ฑํ™” (ab): Hyperlane์ด Tokio๋ฅผ ์•ž์„ ๋‹ค (316,211.63โ€ฏQPS ๋Œ€ 308,596.26โ€ฏQPS), ์ด๋ฒˆ ํ…Œ์ŠคํŠธ์—์„œ โ€œ์ง„์ •ํ•œ ์„ฑ๋Šฅ ์™•โ€์ด ๋œ๋‹ค.
  • Keepโ€‘Alive ๋น„ํ™œ์„ฑํ™” (wrk): Hyperlane์ด ๋‹ค์‹œ 1์œ„๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  (51,031.27โ€ฏQPS), Tokio๋Š” ์•ฝ๊ฐ„ ๋’ค์ฒ˜์ง„๋‹ค.
  • Keepโ€‘Alive ๋น„ํ™œ์„ฑํ™” (ab): Tokio๊ฐ€ ๋‹ค์‹œ 1์œ„๋ฅผ ์ฐจ์ง€ํ•˜์ง€๋งŒ, Hyperlane๊ณผ์˜ ์ฐจ์ด (โ‰ˆโ€ฏ0.5โ€ฏ%)๋Š” ๋ฏธ๋ฏธํ•˜์—ฌ ์‹ค์งˆ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ๋ณ€๋™ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋Š” Hyperlane์˜ ์—ฐ๊ฒฐ ๊ด€๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์ด ๋งค์šฐ ํšจ์œจ์ ์ž„์„ ์‹œ์‚ฌํ•˜๋ฉฐ, ํŠนํžˆ ๋‹จ์‹œ๊ฐ„ ์—ฐ๊ฒฐ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋‘๋“œ๋Ÿฌ์ง„๋‹ค.

Sample Implementations

Node.js (standard library)

// server.js
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello');
});

server.listen(60000, '127.0.0.1');

๊ตฌํ˜„์€ ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ๋™์‹œ์„ฑ ํ•˜์—์„œ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๋ณ‘๋ชฉ ํ˜„์ƒ๊ณผ ์ž ์žฌ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์—์„œ๋Š” Node.js ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋†’์€ ๋ถ€ํ•˜์—์„œ 811,908๊ฐœ์˜ ์‹คํŒจ ์š”์ฒญ์„ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

Go (standard library)

// main.go
package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Hello")
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":60000", nil)
}

Go์˜ ๊ณ ๋ฃจํ‹ด ๋ชจ๋ธ์€ ๋” ๋‚˜์€ ๋™์‹œ์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ธก๋ฉด์—์„œ ๊ฐœ์„  ์—ฌ์ง€๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ๋Š” 234,178.93โ€ฏQPS๋ฅผ ๊ธฐ๋กํ–ˆ์œผ๋ฉฐ, Node๋ณด๋‹ค ํ›จ์”ฌ ์šฐ์ˆ˜ํ•˜์ง€๋งŒ ์ตœ์ƒ์œ„ Rust ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค๋Š” ์•„์ง ๋’ค์ฒ˜์ง‘๋‹ˆ๋‹ค.

Rust (standard library)

// main.rs
use std::io::prelude::*;
use std::net::{TcpListener, TcpStream};

fn handle_client(mut stream: TcpStream) {
    let response = "HTTP/1.1 200 OK\r\n\r\nHello";
    stream.write_all(response.as_bytes()).unwrap();
    stream.flush().unwrap();
}

fn main() {
    let listener = TcpListener::bind("127.0.0.1:60000").unwrap();

    for stream in listener.incoming() {
        let stream = stream.unwrap();
        handle_client(stream);
    }
}

Rust์˜ ์ œ๋กœ ์ฝ”์ŠคํŠธ ์ถ”์ƒํ™”์™€ ์†Œ์œ ๊ถŒ ๋ชจ๋ธ์€ 291,218.96โ€ฏQPS๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธ์ƒ์ ์ด์ง€๋งŒ, ์—ฐ๊ฒฐ ๊ด€๋ฆฌ๋Š” ๊ทนํ•œ ๋™์‹œ์„ฑ์„ ์œ„ํ•ด ์•„์ง ์กฐ์ •๋  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Takeaway

๋น„๊ต ํ…Œ์ŠคํŠธ๋Š” Hyperlane์ด ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” Rust ํ”„๋ ˆ์ž„์›Œํฌ(Tokio, Rocket)์˜ ์„ฑ๋Šฅ์— ์ง€์†์ ์œผ๋กœ ๋„์ „ํ•˜๊ฑฐ๋‚˜ ๋Šฅ๊ฐ€ํ•˜๋ฉฐ, Go, Node ๋ฐ ์ผ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌํ˜„๋ณด๋‹ค ํ›จ์”ฌ ์•ž์„ ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ดˆ์ €์ง€์—ฐ ๋ฐ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์š”๊ตฌํ•˜๋Š” ์›Œํฌ๋กœ๋“œโ€”ํŠนํžˆ keepโ€‘alive๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐโ€”์— ๋Œ€ํ•ด Hyperlane์˜ ์—ฐ๊ฒฐ ์ฒ˜๋ฆฌ์™€ ๋ฐ์ดํ„ฐ ์ „์†ก์— ๊ด€ํ•œ ์„ค๊ณ„ ์„ ํƒ์ด ๋งค๋ ฅ์ ์ธ ์˜ต์…˜์ด ๋ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ์ž์œ ๋กญ๊ฒŒ ์‹คํ—˜ํ•˜๊ณ  ๊ตฌ์„ฑ๋“ค์„ ์—ฌ๋Ÿฌ๋ถ„์˜ ์›Œํฌ๋กœ๋“œ์— ๋งž๊ฒŒ ์กฐ์ •ํ•˜์„ธ์š”.

์—ฐ๊ฒฐ ๊ด€๋ฆฌ

  • Hyperlane ํ”„๋ ˆ์ž„์›Œํฌ๋Š” connection reuse์— ๋›ฐ์–ด๋‚˜๋ฉฐ, ์ด๋Š” Keepโ€‘Alive ํ…Œ์ŠคํŠธ์—์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์ „ํ†ต์ ์ธ ์›น ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ๅคง้‡ไธดๆ—ถๅฏน่ฑก๋ฅผ ์ž์ฃผ ์ƒ์„ฑํ•˜์—ฌ GC ์••๋ฐ•์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
  • Hyperlane๋Š” objectโ€‘pool technology๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค.

Memory Management

  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์›นโ€‘ํ”„๋ ˆ์ž„์›Œํฌ ์„ฑ๋Šฅ์˜ ๋˜ ๋‹ค๋ฅธ ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ์—์„œ๋Š” Rust์˜ ์†Œ์œ ๊ถŒ ์‹œ์Šคํ…œ์ด ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ณต์žกํ•œ ๋ผ์ดํ”„ํƒ€์ž„ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • Hyperlane์€ Rust์˜ ์†Œ์œ ๊ถŒ ๋ชจ๋ธ์— ๋งž์ถค ๋ฉ”๋ชจ๋ฆฌ ํ’€์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์ œ๋กœโ€‘๋ณต์‚ฌ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค โ€“ ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ „์†ก์— ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ํ˜„๋Œ€ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • Tokio๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์—์„œ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ด์ง€๋งŒ, ๋†’์€ ๋™์‹œ์„ฑ ํ•˜์—์„œ๋Š” ์ž‘์—… ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Hyperlane์€ ์‹œ์Šคํ…œ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์ž‘์—… ํ• ๋‹น์„ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ๋ณด๋‹ค ์ง„๋ณด๋œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธ‰์ฆํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์— ํŠนํžˆ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์‚ฌ๋ก€ ๊ถŒ์žฅ ์‚ฌํ•ญ

์ „์ž ์ƒ๊ฑฐ๋ž˜

  • ์„ฑ๋Šฅ์€ ์ง์ ‘์ ์œผ๋กœ ๋งค์ถœ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
  • Hyperlane๋Š” ์ œํ’ˆ ๋ชฉ๋ก, ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ์—์„œ ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ฒœ: ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ์Šคํ…œ์— Hyperlane๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํŠนํžˆ ์ œํ’ˆ ๊ฒ€์ƒ‰ ๋ฐ ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์€ CPU ์ง‘์•ฝ์ ์ธ ์ž‘์—…์— ํ™œ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ์ •์  ์ž์‚ฐ์˜ ๊ฒฝ์šฐ Nginx์™€ ๊ฐ™์€ ์ „์šฉ ์„œ๋ฒ„๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

์†Œ์…œ ํ”Œ๋žซํผ

  • ์ˆ˜๋งŽ์€ ์—ฐ๊ฒฐ๊ณผ ๋นˆ๋ฒˆํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ํŠน์ง•์ž…๋‹ˆ๋‹ค.
  • Hyperlane๋Š” WebSocket ์—ฐ๊ฒฐ ๊ด€๋ฆฌ์— ๋›ฐ์–ด๋‚˜๋ฉฐ ์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ๋™์‹œ ์—ฐ๊ฒฐ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ฒœ: Hyperlane์™€ Redis์™€ ๊ฐ™์€ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ „๋‹ฌ์„ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ํ‘ธ์‹œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜์‹ญ์‹œ์˜ค.
  • ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(์˜ˆ: ์‚ฌ์šฉ์ž ๊ด€๊ณ„ ๊ด€๋ฆฌ)์˜ ๊ฒฝ์šฐ GraphQL ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Hyperlane๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ฒœ: ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ์Šคํ…œ์„ Hyperlane์™€ PostgreSQL๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌ์ถ•ํ•˜์‹ญ์‹œ์˜ค.
  • ๋ณด๊ณ ์„œ ์ƒ์„ฑ๊ณผ ๊ฐ™์€ CPU ์ง‘์•ฝ์ ์ธ ์ž‘์—…์—๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์‹ญ์‹œ์˜ค.

์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ–ฅํ›„ ๋ฐฉํ–ฅ

  1. ์„ฑ๋Šฅ ํ™•์žฅ โ€“ ์ง€์†์ ์ธ ํ•˜๋“œ์›จ์–ด ๊ฐœ์„ ์— ๋”ฐ๋ผ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ฐฑ๋งŒ ์ˆ˜์ค€ QPS์™€ ๋งˆ์ดํฌ๋กœ์ดˆ ์ˆ˜์ค€ ์ง€์—ฐ์‹œ๊ฐ„์„ ๋ชฉํ‘œ๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜ โ€“ ํ–ฅ์ƒ๋œ IDE ํ†ตํ•ฉ, ๋””๋ฒ„๊น… ๋„๊ตฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ๋Š” ๊ณ ์„ฑ๋Šฅ ๊ฐœ๋ฐœ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ โ€“ ์ปจํ…Œ์ด๋„ˆํ™”, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ํšŒ๋กœ ์ฐจ๋‹จ์— ๋Œ€ํ•œ ๋‚ด์žฅ ์ง€์›์ด ํ‘œ์ค€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ด ์‹ฌ์ธต ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋ฏธ๋ž˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ๋ณด๋‹ค ๋ช…ํ™•ํ•œ ์ดํ•ด๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. Hyperlane ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋“ฑ์žฅ์€ ์›น ๊ฐœ๋ฐœ์—์„œ Rust๊ฐ€ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌดํ•œํ•œ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ์—์„œ๋Š” Tokio๊ฐ€ Hyperlane๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ, Hyperlane์€ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์—์„œ ๋” ์šฐ์ˆ˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ €๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ ๋‹จ์ˆœํžˆ ์›์‹œ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐœ๋ฐœ ๊ฒฝํ—˜, ์ƒํƒœ๊ณ„, ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›๋„ ๊ณ ๋ คํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. Hyperlane์€ ์ด๋Ÿฌํ•œ ์ธก๋ฉด์—์„œ๋„ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋ฐ›์œผ๋ฉฐ ์ฃผ๋ชฉ๋ฐ›์„ ๋งŒํ•˜๊ณ  ๅฐ่ฏ•ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น ๊ฐœ๋ฐœ์˜ ๋ฏธ๋ž˜๋Š” ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ์— ๋”์šฑ ์ดˆ์ ์„ ๋งž์ถœ ๊ฒƒ์ด๋ฉฐ, ์ €๋Š” Hyperlane์ด ์ ์  ๋” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์›นโ€‘๊ฐœ๋ฐœ ๊ธฐ์ˆ  ํ˜์‹ ์„ ํ•จ๊ป˜ ๊ธฐ๋Œ€ํ•ฉ์‹œ๋‹ค!

GitHub Homepage:

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

๐Ÿš€_๊ถ๊ทน์˜_์›น_ํ”„๋ ˆ์ž„์›Œํฌ_์†๋„_๋Œ€๊ฒฐ[20251231195712]

๐Ÿ“š ์†Œ๊ฐœ 10๋…„ ๊ฒฝ๋ ฅ์˜ fullโ€‘stack ์—”์ง€๋‹ˆ์–ด๋กœ์„œ, ๋‚˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋– ์˜ค๋ฅด๊ณ  ์‚ฌ๋ผ์ง€๋Š” ๊ณผ์ •์„ ์ง€์ผœ๋ดค๋‹คโ€”์ดˆ๊ธฐ jQuery ์‹œ๋Œ€๋ถ€ํ„ฐ ์˜ค๋Š˜๋‚ ๊นŒ์ง€โ€ฆ