> 백엔드 개발 > Golang > INFINI 프레임워크 시작하기 - 엔터프라이즈 golang 애플리케이션 구축을 위한 자체 제작 프레임워크

INFINI 프레임워크 시작하기 - 엔터프라이즈 golang 애플리케이션 구축을 위한 자체 제작 프레임워크

Susan Sarandon
풀어 주다: 2024-12-17 16:23:18
원래의
207명이 탐색했습니다.

Getting Started with INFINI Framework - Our homemade framework for building enterprise golang applications

저희는 최근 기업용 golang 애플리케이션 구축을 위한 자체 제작 프레임워크인 INFINI Framework를 오픈소스로 공개했습니다.

github 저장소는 https://github.com/infinilabs/framework입니다.

이 글에서는 INFINI Framework를 시작하는 방법을 보여드리겠습니다.

새 애플리케이션 생성

예를 들어 NewAPP를 새 프로젝트로 사용해 보겠습니다.

프로젝트 폴더 생성

new_app이라는 이름을 프로젝트 ID로 사용하고 아래와 같이 프로젝트 폴더를 생성합니다.

cd ~/go/src/infini.sh/
mkdir new_app
로그인 후 복사

참고: new_app이 프레임워크 폴더와 동일한 디렉터리에 있는지 확인하세요. Makefile이 올바르게 작동하려면 이 구조가 필요합니다.

메인 파일 생성

빈 main.go 파일을 만들고 아래와 같이 코드를 붙여넣으세요.

package main

import (
        "infini.sh/framework"
        "infini.sh/framework/core/module"
        "infini.sh/framework/core/util"
        "infini.sh/framework/modules/api"
        "infini.sh/new_app/config"
)

func main() {

        terminalHeader := ("     __               _      ___  ___ \n")
        terminalHeader += ("  /\ \ \_____      __/_\    / _ \/ _ \\n")
        terminalHeader += (" /  \/ / _ \ \ /\ / //_\\  / /_)/ /_)/\n")
        terminalHeader += ("/ /\  /  __/\ V  V /  _  \/ ___/ ___/ \n")
        terminalHeader += ("\_\ \/ \___| \_/\_/\_/ \_/\/   \/     \n\n")

        terminalFooter := ("Goodbye~")
        app := framework.NewApp("new_app", "Make a golang application is such easy~.",
                util.TrimSpaces(config.Version), util.TrimSpaces(config.BuildNumber), util.TrimSpaces(config.LastCommitLog), util.TrimSpaces(config.BuildDate), util.TrimSpaces(config.EOLDate), terminalHeader, terminalFooter)
        app.IgnoreMainConfigMissing()
        app.Init(nil)
        defer app.Shutdown()
        if app.Setup(func() {
                module.RegisterSystemModule(&api.APIModule{})
                module.Start()
        }, func() {
        }, nil) {
                app.Run()
        }
}
로그인 후 복사

우리는 이 온라인 도구를 사용하여 아름다운 ASCII 기반 터미널 헤더를 생성합니다.

구성 파일 만들기

touch new_app.yml
로그인 후 복사

메이크파일 만들기

빈 Makefile을 만들고 아래와 같이 코드를 붙여넣으세요.

SHELL=/bin/bash

# APP info
APP_NAME := new_app
APP_VERSION := 1.0.0_SNAPSHOT
APP_CONFIG := $(APP_NAME).yml
APP_EOLDate ?= "2025-12-31T10:10:10Z"
APP_STATIC_FOLDER := .public
APP_STATIC_PACKAGE := public
APP_UI_FOLDER := ui
APP_PLUGIN_FOLDER := plugins
PREFER_MANAGED_VENDOR=fase

include ../framework/Makefile
로그인 후 복사

애플리케이션 빌드

➜  new_app OFFLINE_BUILD=true make build
building new_app 1.0.0_SNAPSHOT main
/Users/medcl/go/src/infini.sh/new_app
framework path:  /Users/medcl/go/src/infini.sh/framework
fatal: not a git repository (or any of the parent directories): .git
update generated info
update configs
(cd ../framework/  && make update-plugins) || true # build plugins in framework
GOPATH=~/go:~/go/src/infini.sh/framework/../vendor/ CGO_ENABLED=0 GRPC_GO_REQUIRE_HANDSHAKE=off  GO15VENDOREXPERIMENT="1" GO111MODULE=off go build -a  -gcflags=all="-l -B"  -ldflags '-static' -ldflags='-s -w' -gcflags "-m"  --work  -o /Users/medcl/go/src/infini.sh/new_app/bin/new_app
WORK=/var/folders/j5/qd4qt3n55dz053d93q2mswfr0000gn/T/go-build435280758
# infini.sh/new_app
./main.go:17:9: can inline main.deferwrap1
./main.go:21:12: can inline main.func2
./main.go:18:22: func literal does not escape
./main.go:19:45: &api.APIModule{} escapes to heap
./main.go:21:12: func literal escapes to heap
restore generated info
로그인 후 복사

애플리케이션 실행

➜  new_app git:(main) ✗ ./bin/new_app
     __               _      ___  ___
  /\ \ \_____      __/_\    / _ \/ _ \
 /  \/ / _ \ \ /\ / //_\  / /_)/ /_)/
/ /\  /  __/\ V  V /  _  \/ ___/ ___/
\_\ \/ \___| \_/\_/\_/ \_/\/   \/

[NEW_APP] Make a golang application is such easy~.
[NEW_APP] 1.0.0_SNAPSHOT#001, 2024-12-16 06:15:10, 2025-12-31 10:10:10, HEAD
[12-16 14:15:19] [INF] [env.go:203] configuration auto reload enabled
[12-16 14:15:19] [INF] [env.go:209] watching config: /Users/medcl/go/src/infini.sh/new_app/config
[12-16 14:15:19] [INF] [app.go:311] initializing new_app, pid: 64426
[12-16 14:15:19] [INF] [app.go:312] using config: /Users/medcl/go/src/infini.sh/new_app/new_app.yml
[12-16 14:15:19] [INF] [api.go:214] local ips: 192.168.3.17
[12-16 14:15:19] [INF] [api.go:312] api server listen at: http://0.0.0.0:2900
[12-16 14:15:19] [INF] [module.go:159] started module: api
[12-16 14:15:19] [INF] [module.go:184] all modules are started
[12-16 14:15:19] [INF] [instance.go:101] workspace: /Users/medcl/go/src/infini.sh/new_app/data/new_app/nodes/ctfs8hbq50kevmkb3m6g
[12-16 14:15:19] [INF] [app.go:537] new_app is up and running now.
^C
[NEW_APP] got signal: interrupt, start shutting down
[12-16 14:15:23] [INF] [module.go:213] all modules are stopped
[12-16 14:15:23] [INF] [app.go:410] new_app now terminated.
[NEW_APP] 1.0.0_SNAPSHOT, uptime: 4.13334s

Goodbye~
로그인 후 복사

결론

데모 코드는 여기에서 확인하실 수 있습니다.

INFINI 프레임워크를 활용하면 Go 애플리케이션을 훨씬 더 간단하고 효율적으로 만들 수 있습니다.
프레임워크는 내장된 명령과 모듈을 제공하여 개발 프로세스를 간소화하고 애플리케이션의 핵심 기능을 구축하는 데 집중할 수 있도록 해줍니다.

팔로우: https://github.com/infinilabs

위 내용은 INFINI 프레임워크 시작하기 - 엔터프라이즈 golang 애플리케이션 구축을 위한 자체 제작 프레임워크의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿