Upgrade to Pro — share decks privately, control downloads, hide ads and more …

無料で楽しむ Go サーバー開発のススメ

無料で楽しむ Go サーバー開発のススメ

Kotaro Otaka

August 08, 2024
Tweet

More Decks by Kotaro Otaka

Other Decks in Programming

Transcript

  1. #golangtokyo 無料で楽しむ 
 Go サーバー開発のススメ
 おーたかこーたろー @otakakot The Go gopher

    was designed by Renée French. The icon was designed by @avocadoneko. golang.tokyo #36 〜真夏のLTナイト2024〜 2024.08.08
  2. #golangtokyo bio Web Engineer 新卒入社 2020 年 4 月 ~

    Hello Golang ! 2021 年 4 月~ @otakakot
 @otakakot
 Web Engineer 株式会社ビットキー 2022 年 11 月 ~ Kotaro Otaka / 大高 浩太郎 The Go gopher was designed by Renée French. The icon was designed by @avocadoneko.
  3. #golangtokyo 1. Koyeb https://www.koyeb.com/ • コンテナを無料でデプロイできちゃうサービス • (おすすめという割に私自身そこまで遊んでない) • 普段の

    Go 開発と同じ体験でコンテナは用意 • 用意したコンテナを指定するだけでデプロイが可能 • ( 手軽にコンテナビルドできる ko というツールもおすすめ )
  4. #golangtokyo 2. Cloudflare https://www.cloudflare.com/ • CDN ( Content Delivery Network

    ) やセキュリティ対策などを提供する サービス • エッジコンピューティングを活用した開発者向けのプラットフォームも提供 • Cloudflare Workers という FaaS ( Function as a Service ) にて無料でサー バー構築が可能
  5. #golangtokyo • Cloudflare Workers は JavaScript (TypeScript) もしくは Wasm (Rust)

    • syumai/workers を活用することで Go の開発が可能に • 参考: Goで始めるCloudflare Workers ( SpeakerDeck ) Cloudflare Workersで簡単にGoのHTTPサーバーを動かすためのライブラリを作った ( Zenn ) 2. Cloudflare
  6. #golangtokyo • ほかにも無料で利用できるリソースが存在 ◦ Cloudflare Workers KV ( Key Value

    Store ) ◦ Cloudflare D1 ( Edge SQLite ) ◦ Cloudflare R2 ( <-> AWS S3 ) • Cloudflare Workers の無料版の制限 ◦ デプロイサイズ上限が 1 MB ◦ 実行時間制限が 10 [ms] etc ... 2. Cloudflare
  7. #golangtokyo 3. Vercel https://vercel.com/ • PaaS ( Platform as a

    Service ) • Next.js ( React Framework ) からホスティングのイメージが強いが サーバーサイドの構築も可能 ◦ Vercel Functions • Go のデプロイも可能
  8. #golangtokyo 3. Vercel • ほかにも無料で利用できるリソースが存在 ◦ Vercel Postgres ( RDB

    ) ◦ Vercel KV ( Key Value Store ) ◦ Vercel Blob ( ファイルストレージ ) ◦ Vercel Edge Config ( Read Only Datastore )
  9. #golangtokyo 3. Vercel いくつか記事を書いたので気になる方がいましたらチェックしてみてください • Vercel に Go サーバーを無料でデプロイできるんです! ◦

    紹介記事 • Vercel × Go で開発するときの Tips ◦ パスルーティングの話 • Vercel Storage を Go で扱う ◦ 各種 Storage を実際に Go で扱うサンプルコード
  10. #golangtokyo 事例紹介:Slack に送信した記事URLを収集するサービス • Slack の無料版で 90 日でメッセージが非表示になることがきっかけ • いろんな無料サービスを組み合わせる

    • あえて複雑(?)にしたりして遊ぶ • Okteto という Kubernetes が無料で使えるサービスがメイン • Okteto の無料版が廃止になったため開発停止 ( + 飽きた ... ) ◦ 参考:【deprecated】oktetoで無料Kubernetesを遊び尽くす
  11. #golangtokyo おまけ • CockroachDB (PostgreSQL) • yugabyteDB (PostgreSQL) • Xata

    (PostgreSQL) • Neon (PostgreSQL) • Upstash (Redis, Kafka, etc ... ) • Resend (メール送信)
  12. #golangtokyo 事例紹介:OpenID Connect • Cloudflare で遊びたいなというモチベーション • 絶賛遊んでいる最中 • OpenID

    Provider 側をデプロイ • Relying Party 側は手抜きでローカルのみ • Web 画面も手抜き • 実装コードを閲覧できますが OIDC として不完全なのであまり参考にはせず
  13. #golangtokyo おまけ • Supabase • Deno Deploy JavaScript 実行環境 +

    Wasm 対応 Deno Deploy は syumai/deno-deploy-scale-image で Go を利用