? 導(dǎo)入
DevOps の世界へようこそ! ?今日は、DevOps タスクの実踐的なプログラミングをさらに深く掘り下げるのに役立つ、別の刺激的なブログに戻ってきました。前回のブログでは、DevOps 自動化の基礎(chǔ)を築く 3 つの Python プロジェクトについて説明しました。
さあ、ギアを変えて、Go-lang のパワーを探ってみましょう!このブログでは、実用的で初心者にも優(yōu)しい 3 つの Go-lang プロジェクトの構(gòu)築について説明します。
- ストレージ統(tǒng)計を追跡するための ディスク使用量の監(jiān)視 ツール。
- HTTP サーバー を使用して履歴書 Web サイトをホストしています。
- DevOps ツールを管理するための RESTful API プログラム。
それでは、お気に入りのコード エディターを入手して、始めましょう! ?
?前提條件
これらのプロジェクトの構(gòu)築に入る前に、環(huán)境がセットアップされ、準備ができていることを確認してください。必要なものは次のとおりです:
1. Go (Golang)
Go をシステムにインストールする必要があります。オペレーティング システムに基づいて次の手順に従ってください:
Windows
- 公式 Web サイトから最新の Go インストーラーをダウンロードします。
- インストーラーを?qū)g行し、畫面上の指示に従います。
- コマンド プロンプトまたは PowerShell を開いて次のように入力して、インストールを確認します。
go version
Ubuntu
- ターミナルを開いて次を?qū)g行します。
sudo apt update sudo apt install -y golang
- インストールを確認します:
go version
macOS
- Homebrew を使用して Go をインストールします。走る:
brew install go
- インストールを確認します:
go version
2. Go の基本的な理解
専門家である必要はありませんが、変數(shù)、関數(shù)、構(gòu)造體などの Go の概念を基本的に理解していると、スムーズに進めることができます。 Go を初めて使用する場合は、Go ツアーを參照して簡単に紹介することをお勧めします。
これらの前提條件が満たされていれば、これらの素晴らしい Go-lang プロジェクトの構(gòu)築を開始する準備が整いました。 ?
?ディスク使用量を監(jiān)視するアプリ
最初のプロジェクトであるディスク使用量監(jiān)視ツールから旅を始めましょう。このプログラムは、システム上の指定されたディレクトリのディスク使用量を分析するのに役立ちます。
ソース コードは私の 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 関數(shù)を使用して、合計スペース、使用済みスペース、空きスペースなどのディスク統(tǒng)計を取得します。
- 使用されているディスク容量の割合を計算し、使いやすい方法で出力をフォーマットします。
- 指定されたパスが存在するかどうか、またはそのパスへのアクセスに問題があるかどうかを確認するために、エラー処理が実裝されています。
プログラムの実行
プログラムを?qū)g行するには、次のコマンドを使用します:
- 特定のディレクトリのディスク使用量を確認します。
go version
- パスが指定されていない場合、プログラムはデフォルトでルート ディレクトリ (/) に設(shè)定されます。
sudo apt update sudo apt install -y golang
パーティションが 1 つあるため、異なるパスを指定しても同じ結(jié)果が得られます。
このプロジェクトは、Go がシステムの基盤となる API とどのように対話できるかを示し、システム監(jiān)視タスクの優(yōu)れた出発點となります。 ?
? HTTP サーバー プログラム: ポートフォリオ Web サイトのホスティング
2 番目のプロジェクトには、ポートフォリオ Web サイトをホストする HTTP サーバーを Go で作成することが含まれます。このプロジェクトでは、監(jiān)視用のヘルス チェック エンドポイントを組み込みながら、靜的 Web サイトを構(gòu)築して提供する方法を示します。
ソース コードは私の GitHub リポジトリにあります。
HTTP サーバーを構(gòu)築する手順
- http_server.go という名前のファイルを作成し、次のコードを追加します。
go version
仕組み
- 靜的ファイル サーバー: http.FileServer 関數(shù)は、./static ディレクトリからファイルを提供します。
- ヘルス チェック エンドポイント: /health ルートは、単純なヘルス チェック メトリックを提供するために定義されています。
- サーバーのセットアップ: サーバーはデフォルトでポート 8090 をリッスンし、起動中のエラーはすべてログに記録されます。
ポートフォリオ Web サイトの作成
-
構(gòu)造: 靜的フォルダー內(nèi)に以下を作成します:
- index.html
- スタイル.css
- profile.jpeg という名前のプロフィール寫真を含む、images という名前のフォルダー。
次のコンテンツをファイルに追加します:
index.html:
brew install go
プログラムの実行
- 次のコマンドを使用して HTTP サーバーを起動します。
go version
- あなたのポートフォリオ Web サイトは次の場所から利用できるようになります。 ローカルホスト:8090
ヘルスチェックへのアクセス
サーバーの狀態(tài)を確認するには、
にアクセスしてください。
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) }
このプロジェクトでは、Go-lang を使用して靜的コンテンツをホストする機能的な Web サーバーを作成し、ヘルス チェック エンドポイントによる追加の監(jiān)視を行う方法を紹介します。 ?
? RESTful API プロジェクト: DevOps ツールの管理
このブログの最後のプロジェクトでは、DevOps ツールのリストを管理できる RESTful API を作成します。このプログラムは、Go の net/http パッケージを使用して RESTful ルートを処理し、データを管理する方法を示します。
完全なソース コードは私の GitHub リポジトリで入手できます。
RESTful API の構(gòu)築
ステップ 1: メインプログラム
main.go という名前のファイルを作成し、次のコードを追加します:
go version
ステップ 2: データの処理
tools ディレクトリに、data.go という名前のファイルを作成し、以下を追加します:
sudo apt update sudo apt install -y golang
ステップ 3: ハンドラー
tools ディレクトリに、handler.go という名前の別のファイルを作成し、以下を追加します:
go version
モジュールの初期化
プログラムを?qū)g行する前に、Go モジュールを初期化します。
brew install go
これにより、プロジェクトで project/tools パッケージを使用できるようになります。
プログラムの実行
次のコマンドを?qū)g行してサーバーを起動します:
go version
API のテスト
- すべてのツールをリストする ツールのリストを取得するには、次を使用します。
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) }
出力:
go run disk_usage.go /path/to/directory
- 新しいツールを追加する 新しいツールを追加するには、次を使用します。
go run disk_usage.go
出力:
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) } }
- フェッチツールの詳細 特定のツールの詳細を取得するには、次を使用します。
<!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
?結(jié)論
このブログでは、ソフトウェア開発のさまざまな側(cè)面を?qū)g際に體験するのに役立つ 3 つの実踐的な Go プロジェクトを検討してきました。ディスク使用量の監(jiān)視から、シンプルな HTTP サーバーの構(gòu)築、ポートフォリオ Web サイトのホスティング、そして最後に DevOps ツールを管理するための RESTful API の作成に至るまで、これらのプロジェクトは、Go プログラミング スキルを磨きたい人にとって強固な基盤を提供します。
- ディスク使用量監(jiān)視アプリケーションでは、Go でのシステム コールと基本的なファイル処理について紹介し、マシンのファイル システムと対話する方法について説明しました。
- HTTP サーバー プロジェクトでは、靜的ファイルの提供方法と基本的なヘルスチェック エンドポイントの処理方法を?qū)W習でき、Go で Web 開発を始めるのに役立ちます。
- RESTful API プロジェクトは、API を構(gòu)造化し、同時実行制御でデータを管理し、POST リクエストと GET リクエストを通じてアプリケーションをインタラクティブにする方法を示しました。
これらの各プロジェクトは、実際のアプリケーションに合わせて拡張できる構(gòu)成要素です。システムの監(jiān)視、Web アプリケーションの開発、API の構(gòu)築に興味がある場合でも、Go は効率的な開発に必要なシンプルさとパワーを提供します。
?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。
それまで、ハッピーコーディング!!
楽しく學習してください! ?
以上がDevOps の旅を始めるための Go-lang プロジェクトの引用の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

統(tǒng)合されたservicesと統(tǒng)合されたpothonistoninfrastructure、userestapisorgrpcforinter-servicecommunication、goandpythonappstoStoStosandizedprotocols.1.userestapis(Frameworkslikeginingoand flaskinpython)またはuserestapisを許可します

Golangofferssuperiorporformance、nativeconconcurrencyviagoroutines、および効率的なresourceusage、makingitidealforhigh-raffic、low-latencyapis;

Golangは主にバックエンド開発に使用されますが、フロントエンドフィールドで間接的な役割を果たすこともできます。その設(shè)計目標は、高性能、同時処理、システムレベルのプログラミングに焦點を當てており、APIサーバー、マイクロサービス、分散システム、データベース操作、CLIツールなどのバックエンドアプリケーションの構(gòu)築に適しています。 GolangはWebフロントエンドの主流言語ではありませんが、Gopherjsを介してJavaScriptにコンパイルしたり、Tinygoを介してWebAssemblyで実行したり、テンプレートエンジンを備えたHTMLページを生成してフロントエンド開発に參加できます。ただし、最新のフロントエンド開発は、JavaScript/TypeScriptとそのエコシステムに依存する必要があります。したがって、Golangは、コアとして高性能バックエンドを備えたテクノロジースタック選択により適しています。

GOをインストールするための鍵は、正しいバージョンを選択し、環(huán)境変數(shù)を構(gòu)成し、インストールを検証することです。 1.公式Webサイトにアクセスして、対応するシステムのインストールパッケージをダウンロードします。 Windowsは.msiファイルを使用し、macosは.pkgファイルを使用し、Linuxは.tar.gzファイルを使用し、 /usr /localディレクトリに解凍します。 2.環(huán)境変數(shù)を構(gòu)成し、linux/macOSで?/.bashrcまたは?/.zshrcを編集してパスとgopathを追加し、Windowsがシステムプロパティに移動するパスを設(shè)定します。 3.政府コマンドを使用してインストールを確認し、テストプログラムを?qū)g行してhello.goを?qū)g行して、編集と実行が正常であることを確認します。プロセス全體のパス設(shè)定とループ

Golangは通常、Webサービスを構(gòu)築するときにPythonよりもCPUとメモリを消費します。 1. GolangのGoroutineモデルは、スケジューリングに効率的であり、強力なリクエスト処理機能を備えており、CPUの使用量が少ない。 2。GOはネイティブコードにコンパイルされ、ランタイム中に仮想マシンに依存せず、メモリの使用量が小さくなります。 3. Pythonは、GILと解釈実行メカニズムのために、同時シナリオでより大きなCPUとメモリオーバーヘッドを持っています。 4. Pythonには高い開発効率と豊富なエコシステムがありますが、低リソースを消費します。これは、並行性要件が低いシナリオに適しています。

GOでGraphQlapiを構(gòu)築するには、GQLGenライブラリを使用して開発効率を向上させることをお勧めします。 1.最初に、スキーマに基づいた自動コード生成をサポートするGQLGENなどの適切なライブラリを選択します。 2。次に、graphqlschemaを定義し、投稿の種類やクエリメソッドの定義など、API構(gòu)造とクエリポータルを説明します。 3。次に、プロジェクトを初期化し、基本コードを生成して、リゾルバにビジネスロジックを?qū)g裝します。 4.最後に、graphqlhandlerをhttpserverに接続し、組み込みの遊び場を介してAPIをテストします。メモには、プロジェクトのメンテナンスを確保するためのフィールドネーミング仕様、エラー処理、パフォーマンスの最適化、セキュリティ設(shè)定が含まれます

マイクロサービスフレームワークの選択は、プロジェクトの要件、チームテクノロジースタック、パフォーマンスの期待に基づいて決定する必要があります。 1.高性能の要件を考えると、GoのKitexまたはGomicroが優(yōu)先されます。特にKitexは複雑なサービスガバナンスと大規(guī)模システムに適しています。 2. PythonのFastapiまたはFlaskは、小規(guī)模チームやMVPプロ??ジェクトに適した、急速な発展および反復(fù)シナリオにより柔軟に対応しています。 3.チームのスキルスタックは選択コストに直接影響し、すでに蓄積している場合、より効率的になり続けます。 Pythonチームの発疹転換は、効率に影響を與える可能性があります。 4. GOフレームワークは、サービスガバナンスエコシステムでより成熟しており、將來的に高度な機能に接続する必要がある中および大規(guī)模システムに適しています。 5.単一の言語やフレームワークに固執(zhí)することなく、モジュールに従ってハイブリッドアーキテクチャを採用できます。

sync.waitgroupは、ゴルチンのグループがタスクを完了するのを待つために使用されます。そのコアは、3つの方法で協(xié)力することです。追加、完了、待機です。 1.ADD(n)待機するゴルチンの數(shù)を設(shè)定します。 2.done()は各ゴルチンの端で呼び出され、カウントは1つ減少します。 3.wait()すべてのタスクが完了するまでメインコルーチンをブロックします。使用する場合は、注意してください。Goroutineの外部で追加する必要があります。重複を避け、Donが呼び出されていることを確認してください。 Deferで使用することをお勧めします。これは、Webページの同時クロール、バッチデータ処理、その他のシナリオで一般的であり、並行性プロセスを効果的に制御できます。
