{"id":20934772,"url":"https://github.com/oracle-japan/ochacafe-faststart-go","last_synced_at":"2026-01-30T19:05:05.892Z","repository":{"id":220058751,"uuid":"734653071","full_name":"oracle-japan/ochacafe-faststart-go","owner":"oracle-japan","description":"OCHaCafe Season8 #1 速習Golangのデモコード","archived":false,"fork":false,"pushed_at":"2025-04-10T07:21:41.000Z","size":1265,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-06T18:01:43.460Z","etag":null,"topics":["faststart","golang","learning-golang","ochacafe"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oracle-japan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-22T08:45:17.000Z","updated_at":"2025-04-10T07:21:37.000Z","dependencies_parsed_at":"2024-03-26T02:33:51.420Z","dependency_job_id":"2344fab7-f442-4b1a-a709-8ce69c25d42e","html_url":"https://github.com/oracle-japan/ochacafe-faststart-go","commit_stats":null,"previous_names":["oracle-japan/ochacafe-faststart-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oracle-japan/ochacafe-faststart-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-japan%2Fochacafe-faststart-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-japan%2Fochacafe-faststart-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-japan%2Fochacafe-faststart-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-japan%2Fochacafe-faststart-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oracle-japan","download_url":"https://codeload.github.com/oracle-japan/ochacafe-faststart-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oracle-japan%2Fochacafe-faststart-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28917458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T16:37:38.804Z","status":"ssl_error","status_checked_at":"2026-01-30T16:37:37.878Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["faststart","golang","learning-golang","ochacafe"],"created_at":"2024-11-18T22:11:09.718Z","updated_at":"2026-01-30T19:05:05.869Z","avatar_url":"https://github.com/oracle-japan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ochacafe-faststart-go\n\n## Oracle Cloud Hangout Cafe Season8 #1 Fast-Start Golang!!\n\n### Directory Configuration\n\n```\n.\n├── k8s\n│   └── app.yaml -\u003e デモアプリケーションのManifest\n├── oke-app　-\u003e デモアプリケーションのソースコード\n│   ├── backend-app　-\u003e バックエンドアプリ\n│   └── frontend-app　-\u003e フロントエンドアプリ(Next.js製。今回はおまけの位置付け)\n└── README.md\n```\n\n### バックエンドアプリケーション(golang)の構成\n\n\n```\n.\n├── cmd\n│   └── demo\n│       ├── main.go -\u003e メイン処理\n│       └── main_test.go -\u003e テストコード\n├── docker-compose.yaml -\u003e UnitTest用PostgreSQLコンテナ起動ファイル\n├── Dockerfile\n├── go.mod\n├── go.sum\n└── internal\n    └── pkg\n        ├── crud -\u003e CRUD処理(データベースへの操作)\n        │   └── crud.go\n        ├── db -\u003e DB処理(コネクションやMigrateなど)\n        │   └── db.go\n        ├── http -\u003e HTTPのメソッド(GET/POST/DELETE)に応じた処理\n        │   └── methods.go\n        └── repo -\u003e データ定義\n            └── items.go\n```\n\n### アプリケーションのローカル実行と動作確認\n\n#### PodtgreSQLコンテナの実行\n\n```sh\n$ docker-compose up -d\n[+] Running 2/2\n ✔ Network backend-app_default       Created                                                                                                                                                    0.0s \n ✔ Container test-db            Started                                                                                                                                                     0.3s  \n```\n\n\n#### アプリケーション実行\n\n```sh\n$ go run oke-app/backend-app/cmd/demo/main.go\n[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\n\n[GIN-debug] [WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\n - using env:   export GIN_MODE=release\n - using code:  gin.SetMode(gin.ReleaseMode)\n\n[GIN-debug] GET    /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetAll (5 handlers)\n[GIN-debug] GET    /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetItemById (5 handlers)\n[GIN-debug] POST   /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.UpdateItem (5 handlers)\n[GIN-debug] DELETE /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.DeleteItem (5 handlers)\n[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\nPlease check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.\n[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default\n[GIN-debug] Listening and serving HTTP on :8080\n```\n\n```sh\n$ curl http://localhost:8080/items\n[\n    {\n        \"ID\": 1,\n        \"CreatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"UpdatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"DeletedAt\": null,\n        \"Name\": \"速習Golang\",\n        \"Date\": \"20240207190000\",\n        \"Topics\": \"Golang\",\n        \"Presenters\": \"Takuya Niita\"\n    },\n    {\n        \"ID\": 2,\n        \"CreatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"UpdatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"DeletedAt\": null,\n        \"Name\": \"基礎から学ぶNext.js\",\n        \"Date\": \"TBD\",\n        \"Topics\": \"SSR, SSG, React\",\n        \"Presenters\": \"Kyotaro Nonaka\"\n    },\n    {\n        \"ID\": 3,\n        \"CreatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"UpdatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"DeletedAt\": null,\n        \"Name\": \"シン・Kafka\",\n        \"Date\": \"TBD\",\n        \"Topics\": \"kRaft, Strimzi Operator\",\n        \"Presenters\": \"Shuhei Kawamura\"\n    },\n    {\n        \"ID\": 4,\n        \"CreatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"UpdatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"DeletedAt\": null,\n        \"Name\": \"NewSQLのランドスケープ\",\n        \"Date\": \"TBD\",\n        \"Topics\": \"TiDB, CockroachDB\",\n        \"Presenters\": \"Yutaka Ichikawa\"\n    },\n    {\n        \"ID\": 5,\n        \"CreatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"UpdatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"DeletedAt\": null,\n        \"Name\": \"Kubernetesで作るIaaS基盤\",\n        \"Date\": \"TBD\",\n        \"Topics\": \"KubeVirt, VM, libvirt, QEMU\",\n        \"Presenters\": \"Takuya Niita\"\n    },\n    {\n        \"ID\": 6,\n        \"CreatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"UpdatedAt\": \"2024-01-18T10:45:03.039866+09:00\",\n        \"DeletedAt\": null,\n        \"Name\": \"LLMのエコシステム\",\n        \"Date\": \"TBD\",\n        \"Topics\": \"Langchain, LlamaIndex, Vector Database\",\n        \"Presenters\": \"Shuhei Kawamura\"\n    }\n]\n```\n\n###　UnitTestの実行とカバレッジレポート出力\n\n#### テスト実行\n\n```sh\n$ cd oke-app/backend-app/cmd/demo\n$ go test -coverpkg=./... -cover -coverprofile=cover.out\n[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\n\n[GIN-debug] [WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\n - using env:   export GIN_MODE=release\n - using code:  gin.SetMode(gin.ReleaseMode)\n\n[GIN-debug] GET    /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetAll (5 handlers)\n[GIN-debug] GET    /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetItemById (5 handlers)\n[GIN-debug] POST   /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.UpdateItem (5 handlers)\n[GIN-debug] DELETE /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.DeleteItem (5 handlers)\n[GIN] 2024/01/18 - 11:20:15 | 200 |   24.287988ms |                 | GET      \"/items\"\n[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\n\n[GIN-debug] [WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\n - using env:   export GIN_MODE=release\n - using code:  gin.SetMode(gin.ReleaseMode)\n\n[GIN-debug] GET    /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetAll (5 handlers)\n[GIN-debug] GET    /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetItemById (5 handlers)\n[GIN-debug] POST   /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.UpdateItem (5 handlers)\n[GIN-debug] DELETE /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.DeleteItem (5 handlers)\n[GIN] 2024/01/18 - 11:20:15 | 200 |    20.98895ms |                 | GET      \"/items\"\n[GIN] 2024/01/18 - 11:20:15 | 200 |   23.427264ms |                 | GET      \"/items/1\"\n[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\n\n[GIN-debug] [WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\n - using env:   export GIN_MODE=release\n - using code:  gin.SetMode(gin.ReleaseMode)\n\n[GIN-debug] GET    /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetAll (5 handlers)\n[GIN-debug] GET    /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetItemById (5 handlers)\n[GIN-debug] POST   /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.UpdateItem (5 handlers)\n[GIN-debug] DELETE /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.DeleteItem (5 handlers)\n[GIN] 2024/01/18 - 11:20:15 | 200 |   26.024088ms |                 | POST     \"/items\"\n[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\n\n[GIN-debug] [WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\n - using env:   export GIN_MODE=release\n - using code:  gin.SetMode(gin.ReleaseMode)\n\n[GIN-debug] GET    /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetAll (5 handlers)\n[GIN-debug] GET    /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.GetItemById (5 handlers)\n[GIN-debug] POST   /items                    --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.UpdateItem (5 handlers)\n[GIN-debug] DELETE /items/:id                --\u003e github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app/http.DeleteItem (5 handlers)\n[GIN] 2024/01/18 - 11:20:15 | 200 |   26.021975ms |                 | GET      \"/items\"\n[GIN] 2024/01/18 - 11:20:15 | 200 |   30.236654ms |                 | DELETE   \"/items/1\"\nPASS\ncoverage: 76.1% of statements in ./...\nok      github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app       0.239s\n```\n\n#### カバレッジレポート出力(HTML形式)\n\n```sh\n$ go tool cover -html=cover.out -o cover.html\n```\n\n#### レポート確認\n\nChromeなどで確認できる\n\n![coverage](images/coverage.png)\n\n### ソースコードドキュメント\n\n#### godoc\n\ngodocをインストールする\n\n```sh\ngo install golang.org/x/tools/cmd/godoc@latest\n```\n\n起動する\n\n```sh\n$ godoc -http=:8080\nusing module mode; GOMOD=/home/opc/ochacafe-faststart-go/oke-app/backend-app/go.mod\n```\n\n`http://localhost:8080`にアクセスする\n\n#### pkgsite\n\npkgsiteをインストールする\n\n```sh\n$ go install golang.org/x/pkgsite/cmd/pkgsite@latest\n```\n\n起動\n\n```sh\n$ pkgsite\n2024/01/18 11:42:32 Info: go/packages.Load([\"all\"]) loaded 388 packages from . in 913.238129ms\n2024/01/18 11:42:33 Info: go/packages.Load(std) loaded 276 packages from /home/opc/sdk/go1.21.6 in 1.464614884s\n2024/01/18 11:42:33 Info: FetchDataSource: fetching github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app@v0.0.0\n2024/01/18 11:42:33 Info: FetchDataSource: fetching std@latest\n2024/01/18 11:42:33 Info: FetchDataSource: fetched github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app@v0.0.0 using *fetch.goPackagesModuleGetter in 18.803446ms with error \u003cnil\u003e\n2024/01/18 11:42:33 Info: Listening on addr http://localhost:8080\n```\n\n`http://localhost:8080/github.com/oracle-japan/ochacafe-faststart-go/oke-app/backend-app`にアクセスする\n\n\n![doc2](images/doc2.png)\n\n\n### Kubernetes(OKE)上での実行\n\n#### OKEのプロビジョニング\n\nOKEのプロビジョニングは[こちら](https://oracle-japan.github.io/ocitutorials/cloud-native/oke-for-commons/)を参考に実施\n\n#### OCI Database with PostgreSQLのプロビジョニング\n\n##### プロビジョニング\n\nOCI Database with PostgreSQLのプロビジョニングは[こちら](https://qiita.com/yama6/items/ec8cd7652a1c0cf9e13d#3-oci-database-with-postgresql%E3%81%AE%E4%BD%9C%E6%88%90)を参考に実施\n\n##### データベースの作成\n\n上記で作成したPostgreSQLにpsqlでログイン\n\n```sh\n$ psql -h \u003cendpoint\u003e -U \u003cusename\u003e -d postgres\n```\n\nデータベース(demo)を作成\n\n```sh\npostgres=\u003e create database demo;\nCREATE DATABASE\n```\n\n#### OCI Application Performance Monitoringのプロビジョニング\n\n[こちら](https://qiita.com/western24/items/bfd9bd9e6a20afe43376#apm%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E6%88%90)を参考に実施\n\nプロビジョニング時に指定したユーザ名とパスワード、プロビジョニング時に確認できるエンドポイントをメモ\n\n##### データアップロードエンドポイントとプライベートデータキーの取得\n\n上記の手順に従い、データアップロードエンドポイントとプライベートデータキーをメモ\n\n#### OKEへのSecret登録\n\n##### OCI Database with PostgreSQLの情報\n\n```sh\n$ kubectl create secret generic db-secret --from-literal=username=\u003cOCI Database with PostgreSQLプロビジョニング時に指定したユーザ名\u003e --from-literal=password=\u003cOCI Database with PostgreSQLプロビジョニング時に指定したパスワード\u003e --from-literal=host=\u003cOCI Database with PostgreSQLのエンドポイント\u003e  \n```\n\n##### OCI Application Performance Monitoringの情報\n\n```sh\n$ kubectl create secret generic apm-secret --from-literal=endpoint=\u003cAPMのエンドポイント\u003e --from-literal=key=\u003cAPMのプライベートデータキー\u003e  \n```\n\n#### 動作確認\n\n##### デプロイ\n\n```sh\n$ kubectl apply -f k8s/app.yaml \n```\n\n##### アクセス確認\n\n```sh\n$ kubectl get svc golang-demo-lb\nNAME             TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE\ngolang-demo-lb   LoadBalancer   10.96.75.89   xxx.xxx.xxx.xxx   80:31898/TCP   20h\n```\n\nEXTERNAL-IPでアクセス\n\n![app](images/app.png)\n\nOCI APMのトレースエクスプローラーからの確認\n\n![apm1](images/apm1.png)\n\n![apm2](images/apm2.png)\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-japan%2Fochacafe-faststart-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foracle-japan%2Fochacafe-faststart-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foracle-japan%2Fochacafe-faststart-go/lists"}