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

sue445とOSSと社内ツール #subcul_dev

sue445
March 17, 2023

sue445とOSSと社内ツール #subcul_dev

サブカル業界Developers 勉強会 Vol.4( https://subculturedev.connpass.com/event/275395/ )の発表資料です

sue445

March 17, 2023
Tweet

More Decks by sue445

Other Decks in Technology

Transcript

  1. 2 自己紹介 • Go Sueyoshi a.k.a sue445 • 2018年 ピクシブ株式会社

    入社 • インフラ部所属 • OSS開発歴: 10年以上 sue445
  2. 3 最近のお仕事 (AWS, GCP) • Organization Owner • Solution Architect

    ◦ AWS Certified Solutions Architect – Professional ▪ https://www.credly.com/badges/07f0 df7e-3479-463a-8c3e-6d6e34320dc8 ◦ Google Cloud Professional Cloud Architect ▪ https://www.credential.net/9643f19d- 5584-40b6-a330-5b966a26f310 sue445
  3. • gitのリポジトリをホスティングするツール ◦ https://about.gitlab.com/ja-jp/ ◦ https://gitlab.com/gitlab-org/gitlab • 似たような立ち位置のツールだと GitHub Enterprise

    Server (GHE:S) • GitLab本体がRailsで、その周辺のいくつかのミドルウェアは Goで作られている • SaaS版(https://gitlab.com)とSelf-managed版があって、ピクシブではSelf-managed版 を利用している • 一部を除いて業務利用しているコードはほぼ全て社内の GitLabにある ◦ OSSはGitHub.comを利用 13 1: GitLab
  4. • 【宣伝】約1年かけてGitLabをオンプレミス環境からGCPに完全移行した記事を先日公開し ました ◦ 前編: https://inside.pixiv.blog/2022/11/29/110000 ◦ 中編: https://inside.pixiv.blog/2022/12/20/113000 ◦

    後編: https://inside.pixiv.blog/2022/12/22/110000 ◦ 計4万文字 • 全部読むのに1時間くらいかかると思うのでこの会が終わってから読んでください 14 1: GitLab
  5. • 色々なアプリのエラーを収集して見やすくしたり通知するためのツール ◦ https://github.com/getsentry/sentry • 似たような立ち位置のツールだと Rollbar, Errbit辺り • SaaS版(https://sentry.io)とSelf-Hosted版がある

    • ピクシブではオンプレミス環境で Self-Hosted版を動かしていて、2020年にGKEに移行した • 詳細: https://speakerdeck.com/sue445/migrated-to-gke-sentry-number-pixivdevmeetup 15 2: Sentry
  6. • Sentry本体はPythonとRustで作られていて、その他KafkaやClickHouseなどのミドルウェ アも必要 • Kubernetesであれば https://github.com/sentry-kubernetes/charts で必要なミドルウェ ア含めてまとめて構築できる ◦ Helm

    chartを利用するにあたって必要なパラメータを渡せず困ったので 10個くらい パッチを投げた ◦ https://github.com/sentry-kubernetes/charts/pulls?q=is%3Apr+author%3Asue 445+is%3Aclosed 16 2: Sentry
  7. • 社内ツールであっても積極的に OSSにすべき ◦ 社内のリポジトリにしか無いと、転職した時にそのツールが使えなくて困る ▪ 前職時代に作ったOSSを現職に導入した事例もいくつかある ◦ OSSにしておけば自分で機能を実装しなくても利用者が PRを送ってくれる

    • 今までの経験上、社内で動かしてるものを後から OSSにするよりも、最初からOSSにしてお いて社内に導入する方が楽なことが多かった • 会社にOSS活動に関するガイドラインがあればそれに従う 31 1: OSSにすべきかどうか
  8. • GitHubのリポジトリのみ公開するパターン ◦ CI上で動くツールならこれでもいい • メリット ◦ 公開する側は簡単 • デメリット

    ◦ 利用する側は初期セットアップやバージョンアップに追従するのが大変 ◦ アプリケーションの依存(aptやyumなどのパッケージなど)は自分でインストールが必 要 ◦ 実際にサーバ側で動かす時のdaemonizeやdeployの部分もケアされてないことが多 いので自作する必要がある 35 1: ソースコードのみ配布
  9. • 最近だとDockerイメージにしてDocker Hubなどで配布するのが主流 ◦ Goでビルド済のスタンドアロンバイナリをリポジトリの releasesで配布 • メリット ◦ 利用者はdocker

    pullやwgetするだけで利用可能 ◦ Dockerはエコシステムが充実してるので deployやdaemonize周りを自作しなくてい いことが多い • デメリット ◦ 実行環境は自分で用意する必要がある 36 2: ウェブアプリをパッケージにして配布
  10. • アプリケーションコードやDockerfileは普通に書けばいい ◦ 手元でビルドしてdocker runで動作確認できたらCloud Runでもだいたい動く • 環境構築が楽 ◦ Dockerイメージさえ作れば

    gcloud run deployや google_cloud_run_service (Terraform)だけでアプリケーション、ログ、ロードバランサー、ウェブからアクセスでき るURLが一式作成される 38 Cloud Runのメリット
  11. • ちょっとしたウェブアプリであればほぼ無料で運用できる • GCPだと他にAppEngine (Flexible Edition)でもDockerイメージを動かすことができるが、 料金体系がちょっと違うのでCloud Runがおすすめ ◦ AppEngine:

    一度起動したインスタンスは最低 15分間起動するため、その分の費用 が発生する ◦ Cloud Run: 100ミリ秒単位での課金 ◦ リクエスト数が少ないアプリの場合、 Cloud Runの方がコスパがいい 39 Cloud Runのメリット
  12. • GCPでホスティングされているDockerイメージ(Container Registry, Artifact Registry)しか 使えない • https://cloud.google.com/run/docs/release-notes#February_16_2023 🆕 ◦

    > You can now deploy public container images from Docker Hub to Cloud Run. • ひゃっほおおおおおお!!!!!!!!!!!!!!!! • 前述のinsideだとGitLab移行直後のPlantUMLはGKEで動かしていたが、先日Cloud Run へ移行した 40 Cloud Runのデメリット(OLD)
  13. • Herokuの「Deploy to Heroku button」 ◦ https://devcenter.heroku.com/articles/heroku-button ◦ GitHubのリポジトリにあるボタンをクリックしたら Herokuの自分のアカウント上に同じ

    アプリをデプロイできて便利 • Cloud Run Button ◦ https://cloud.google.com/blog/ja/products/gcp/introducing-cloud-run-button- click-to-deploy-your-git-repos-to-google-cloud ◦ HerokuのやつのCloud Run版 • ベンダーロックインを気にしなければ便利 43 3: 実行環境含めて配布