저희는 최근 기업용 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!