Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- S&P500
- 현금흐름표
- 오버라이딩
- 금리인하
- 잉여현금흐름
- Java
- 배당성장
- object
- javascript
- XLF
- 인플레이션
- 주린이
- 자바
- 다형성
- 미국주식
- 금리인상
- 백준
- StringBuffer
- 그리디 알고리즘
- 프로그래머스
- 기업분석
- mco
- etf
- 무디스
- 제태크
- FCF
- 주식
- 접근제어자
- 객체지향
- 알고리즘
Archives
- Today
- Total
오늘의하루
Spring Cloud Eureka와 Go의 만남 본문
반응형
최근 Go 언어에 대한 흥미가 생겨 간단한 API 서버를 Go로 만들고 이를 Spring Eureka에 등록해보자는 생각이 들어서 이에 대한 방법을 작성했습니다.
1. 필요한 Package
Go에서 사용할 패키지는 Gin과 eureka-client이며 설치하려면 Go 모듈을 사용하여 필요한 의존성들을 추가해야 합니다.
go get github.com/gin-gonic/gin
go get github.com/xuanbo/eureka-client
2. Go 구현 코드
package main
import (
"fmt"
"log"
"net"
"vaultis-go-module/module/decryption"
"github.com/gin-gonic/gin"
eureka "github.com/xuanbo/eureka-client"
)
func main() {
// 사용 가능한 포트 동적 할당
// 포트 0으로 바인딩하면 OS가 사용 가능한 포트를 자동으로 할당
// Spring의 server.port=0 과 같은 역할
listener, err := net.Listen("tcp", ":0")
if err != nil {
log.Fatalf("포트 바인딩 오류: %v", err)
}
port := listener.Addr().(*net.TCPAddr).Port
// 닫아주지 않으면 사용중이라는 오류가 발생한다.
listener.Close()
// Eureka 클라이언트 설정
client := eureka.NewClient(&eureka.Config{
// Eureka 서버 URL
DefaultZone: "http://127.0.0.1:8761/eureka/",
// 애플리케이션 이름
App: "decryption-go",
// 동적으로 할당된 포트 사용
Port: port,
// 갱신 주기
RenewalIntervalInSecs: 10,
// 서비스 등록 주기
DurationInSecs: 30,
Metadata: map[string]interface{}{
// 서비스 버전 정보
"VERSION": "0.1.0",
// 노드 그룹 ID (여러 인스턴스가 있을 경우 구분용)
"NODE_GROUP_ID": 0,
// 서비스가 속한 제품 코드
"PRODUCT_CODE": "DEFAULT",
// 제품의 버전 코드
"PRODUCT_VERSION_CODE": "DEFAULT",
// 서비스가 운영되는 환경 코드 (예: "PROD", "DEV")
"PRODUCT_ENV_CODE": "DEFAULT",
// 서비스의 버전 코드
"SERVICE_VERSION_CODE": "DEFAULT",
},
})
client.Start()
// Gin 라우터 설정
r := gin.Default()
r.POST("/decryption", decryption.Decrypt)
log.Printf("서버가 포트 %d에서 실행 중입니다.", port)
r.Run(fmt.Sprintf(":%d", port))
}
코드 설명
- Port 동적 할당
- net.Listen("tcp", ":0")을 사용하여 OS에서 사용 가능한 포트를 자동 할당 받습니다.
- 추후 스케일 아웃시 포트 충돌을 방지할 수 있습니다.
- Eureka Client 설정
- eureka.NewClient() 메소드를 사용하여 Eureka Client를 설정합니다.
반응형
'Spring' 카테고리의 다른 글
[레거시 리팩토링] 상속을 넘어 컴포지션으로 가보자 (0) | 2024.12.17 |
---|---|
DTO(Data Transfer Object)를 쓰는 이유? (1) | 2024.11.11 |
BeanPostProcessor 사용법: 빈 초기화 과정에서의 조작과 시점 이해하기 (0) | 2024.11.07 |
[Spring] Proxy 내부 호출 문제 해결 및 순환 참조 문제 해결 (1) | 2024.08.28 |
[Spring] Thread Local 사용 시 주의 사항 (0) | 2024.08.03 |
Comments