> 백엔드 개발 > Golang > DevOps 여정을 시작하기 위해 Go-lang 프로젝트를 소개합니다.

DevOps 여정을 시작하기 위해 Go-lang 프로젝트를 소개합니다.

Linda Hamilton
풀어 주다: 2024-12-12 14:21:11
원래의
551명이 탐색했습니다.

? 소개

DevOps의 세계에 오신 것을 환영합니다! ? 오늘 저는 DevOps 작업을 위한 실용적인 프로그래밍에 대해 더 자세히 알아볼 수 있도록 또 다른 흥미로운 블로그로 돌아왔습니다. 이전 블로그에서는 DevOps 자동화의 기반을 마련한 3가지 Python 프로젝트를 살펴보았습니다.

이제 방향을 바꿔 Go-lang의 힘을 살펴보겠습니다! 이 블로그는 실용적이고 초보자에게 친숙한 3가지 Go-lang 프로젝트를 구축하는 방법을 안내합니다.

  • 스토리지 통계를 추적하기 위한 디스크 사용량 모니터링 도구입니다.
  • HTTP 서버를 사용하여 이력서 웹사이트를 호스팅합니다.
  • DevOps 도구를 관리하기 위한 RESTful API 프로그램

좋아하는 코드 편집기를 선택하고 시작해 보세요! ?


? 사전 요구 사항

이러한 프로젝트를 구축하기 전에 환경이 설정되어 있고 준비가 되었는지 확인하세요. 필요한 것은 다음과 같습니다.

1. 고(고랑)
시스템에 Go가 설치되어 있어야 합니다. 운영 체제에 따라 다음 단계를 따르세요.

윈도우

  • 공식 홈페이지에서 최신 Go 설치 프로그램을 다운로드하세요.
  • 설치 프로그램을 실행하고 화면의 지시를 따릅니다.
  • 명령 프롬프트 또는 PowerShell을 열고 다음을 입력하여 설치를 확인합니다.
go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

우분투

  • 터미널을 열고 다음을 실행하세요.
sudo apt update  
sudo apt install -y golang
로그인 후 복사
로그인 후 복사
로그인 후 복사
  • 설치 확인:
go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

macOS

  • Homebrew를 사용하여 Go를 설치하세요. 달리다:
brew install go
로그인 후 복사
로그인 후 복사
로그인 후 복사
  • 설치 확인:
go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

2. Go에 대한 기본 이해

전문가가 될 필요는 없지만 변수, 함수, 구조체와 같은 Go 개념에 대한 기본적인 이해가 있으면 원활하게 따라가는 데 도움이 됩니다. 바둑을 처음 접하신다면 바둑투어를 통해 빠르게 소개받으시길 추천드립니다.

이러한 전제 조건이 충족되면 멋진 Go-lang 프로젝트 구축을 시작할 준비가 된 것입니다! ?


? 디스크 사용량 모니터링 앱

첫 번째 프로젝트인 디스크 사용량 모니터링 도구로 여정을 시작하겠습니다. 이 프로그램은 시스템의 특정 디렉토리에 대한 디스크 사용량을 분석하는 데 도움이 됩니다.

내 GitHub 저장소에서 소스 코드를 찾을 수 있습니다. disk_usage.go라는 파일을 만들고 다음 코드를 추가하는 것부터 시작하겠습니다.

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

프로그램 진행 방식:

  • 프로그램은 syscall.Statfs 함수를 사용하여 전체 공간, 사용된 공간, 여유 공간을 포함한 디스크 통계를 가져옵니다.
  • 사용된 디스크 공간의 비율을 계산하고 사용자 친화적인 방식으로 출력 형식을 지정합니다.
  • 제공된 경로가 존재하는지, 접근에 문제가 있는지 확인하기 위해 오류 처리가 구현되었습니다.

프로그램 운영
프로그램을 실행하려면 다음 명령을 사용하십시오.

  • 특정 디렉터리의 디스크 사용량을 확인하세요.
go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
  • 경로를 지정하지 않으면 프로그램은 기본적으로 루트 디렉터리(/)를 사용합니다.
sudo apt update  
sudo apt install -y golang
로그인 후 복사
로그인 후 복사
로그인 후 복사

xciting Go-lang Projects to Kickstart Your DevOps Journey

파티션이 하나이기 때문에 다른 경로를 제공해도 같은 결과가 나옵니다.

이 프로젝트는 Go가 시스템의 기본 API와 어떻게 상호작용하여 시스템 모니터링 작업을 위한 훌륭한 출발점이 될 수 있는지 보여줍니다. ?


? HTTP 서버 프로그램: 포트폴리오 웹사이트 호스팅

두 번째 프로젝트는 Go에서 포트폴리오 웹사이트를 호스팅하는 HTTP 서버를 만드는 것입니다. 이 프로젝트는 모니터링을 위해 상태 확인 엔드포인트를 통합하면서 정적 웹사이트를 구축하고 제공하는 방법을 보여줍니다.

내 GitHub 저장소에서 소스 코드를 찾을 수 있습니다.

HTTP 서버 구축 단계

  • http_server.go라는 파일을 만들고 다음 코드를 추가합니다.
go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

작동 방식

  • 정적 파일 서버: http.FileServer 함수는 ./static 디렉토리의 파일을 제공합니다.
  • 상태 확인 엔드포인트: 간단한 상태 확인 지표를 제공하기 위해 /health 경로가 정의됩니다.
  • 서버 설정: 서버는 기본적으로 포트 8090에서 수신 대기하며 시작 중 오류가 모두 기록됩니다.

포트폴리오 홈페이지 제작

  1. 구조: static 폴더 내에서 다음을 생성합니다:

    • index.html
    • style.css
    • profile.jpeg라는 이름의 프로필 사진이 포함된 이미지라는 폴더입니다.
  2. 파일에 다음 콘텐츠를 추가하세요.

index.html:

brew install go
로그인 후 복사
로그인 후 복사
로그인 후 복사

프로그램 운영

  • 다음 명령을 사용하여 HTTP 서버를 시작합니다.
go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
  • 귀하의 포트폴리오 웹사이트는 이제 다음에서 이용 가능합니다: 로컬호스트:8090

상태 확인 액세스
서버 상태를 확인하려면 다음을 방문하세요.

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

xciting Go-lang Projects to Kickstart Your DevOps Journey

이 프로젝트는 Go-lang을 사용하여 상태 확인 엔드포인트를 통한 추가 모니터링과 함께 정적 콘텐츠 호스팅을 위한 기능적인 웹 서버를 만드는 방법을 보여줍니다. ?


? RESTful API 프로젝트: DevOps 도구 관리

이 블로그의 마지막 프로젝트에서는 DevOps 도구 목록을 관리할 수 있는 RESTful API를 만들겠습니다. 이 프로그램은 Go의 net/http 패키지를 사용하여 RESTful 경로를 처리하고 데이터를 관리하는 방법을 보여줍니다.

전체 소스 코드는 내 GitHub 저장소에서 확인할 수 있습니다.

RESTful API 구축
1단계: 메인 프로그램
main.go라는 파일을 만들고 다음 코드를 추가하세요.

go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

2단계: 데이터 처리
도구 디렉터리에서 data.go라는 파일을 만들고 다음을 추가합니다.

sudo apt update  
sudo apt install -y golang
로그인 후 복사
로그인 후 복사
로그인 후 복사

3단계: 처리기
도구 디렉터리에서 handler.go라는 이름의 다른 파일을 만들고 다음을 추가합니다.

go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

모듈 초기화

프로그램을 실행하기 전에 Go 모듈을 초기화하세요.

brew install go
로그인 후 복사
로그인 후 복사
로그인 후 복사

이렇게 하면 프로젝트에서 프로젝트/도구 패키지를 사용할 수 있습니다.

프로그램 운영
다음을 실행하여 서버를 시작하세요.

go version
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사
로그인 후 복사

API 테스트

  1. 모든 도구 나열 도구 목록을 가져오려면 다음을 사용하세요.
package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}
로그인 후 복사
로그인 후 복사
로그인 후 복사

xciting Go-lang Projects to Kickstart Your DevOps Journey

출력:

go run disk_usage.go /path/to/directory
로그인 후 복사
  1. 새 도구 추가 새 도구를 추가하려면 다음을 사용하십시오.
go run disk_usage.go
로그인 후 복사

xciting Go-lang Projects to Kickstart Your DevOps Journey

출력:

package main
import (
    "fmt"
    "net/http"
)
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("OK"))
}
func main() {
    fs := http.FileServer(http.Dir("./static"))
    http.Handle("/", fs)
    http.HandleFunc("/health", healthCheckHandler)
    port := "8090"
    fmt.Printf("Starting server on port %s....", port)
    err := http.ListenAndServe(":"+port, nil)
    if err != nil {
        fmt.Println("Error starting server:", err)
    }
}
로그인 후 복사
  1. 가져오기 도구 세부정보 특정 도구의 세부정보를 가져오려면 다음을 사용하세요.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pravesh Sudha - Portfolio</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <div>



<p><strong>style.css:</strong><br>
</p>

<pre class="brush:php;toolbar:false">body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    line-height: 1.6;
    color: #333;
    background-color: #f9f9f9;
}

header {
    background: #4caf50;
    color: #fff;
    padding: 20px 0;
    text-align: center;
}
header .profile-picture {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    margin-bottom: 15px;
}
header h1 {
    font-size: 2.5em;
    margin: 0;
}
header .subtitle {
    font-size: 1.2em;
    margin: 0;
}
main {
    padding: 20px;
    max-width: 800px;
    margin: 20px auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
main .about,
main .links {
    margin-bottom: 20px;
}
main .links ul {
    list-style: none;
    padding: 0;
}
main .links li {
    margin: 10px 0;
}
main .links a {
    color: #4caf50;
    text-decoration: none;
    font-weight: bold;
}
main .links a:hover {
    text-decoration: underline;
}
footer {
    text-align: center;
    padding: 10px 0;
    background: #333;
    color: #fff;
}
로그인 후 복사

출력:

go run http_server.go
로그인 후 복사

xciting Go-lang Projects to Kickstart Your DevOps Journey


? 결론

이 블로그에서는 소프트웨어 개발의 다양한 측면을 직접 경험하는 데 도움이 되는 세 가지 실용적인 Go 프로젝트를 살펴보았습니다. 디스크 사용량 모니터링부터 간단한 HTTP 서버 구축, 포트폴리오 웹사이트 호스팅, 마지막으로 DevOps 도구 관리를 위한 RESTful API 생성에 이르기까지 이러한 프로젝트는 Go 프로그래밍 기술을 연마하려는 모든 사람에게 견고한 기반을 제공합니다.

  • 디스크 사용량 모니터링 애플리케이션에서는 Go의 시스템 호출과 기본 파일 처리 방법을 소개하여 머신의 파일 시스템과 상호 작용하는 방법에 대한 통찰력을 제공합니다.
  • HTTP 서버 프로젝트를 통해 정적 파일을 제공하고 기본적인 상태 확인 엔드포인트를 처리하는 방법을 배울 수 있었고 Go에서 웹 개발을 시작하는 데 도움이 되었습니다.
  • RESTful API 프로젝트에서는 API를 구성하고, 동시성 제어를 통해 데이터를 관리하고, POST 및 GET 요청을 통해 애플리케이션을 대화형으로 만드는 방법을 시연했습니다.

이러한 각 프로젝트는 실제 애플리케이션에 맞게 확장할 수 있는 구성 요소입니다. 시스템 모니터링, 웹 애플리케이션 개발, API 구축에 관심이 있다면 Go는 효율적인 개발에 필요한 단순성과 성능을 제공합니다.

? 더 많은 정보를 제공하는 블로그를 원하시면 Hashnode, X(Twitter) 및 LinkedIn에서 저를 팔로우하세요.

그때까지 즐거운 코딩하세요!!

즐거운 배움! ?

위 내용은 DevOps 여정을 시작하기 위해 Go-lang 프로젝트를 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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