Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Katsunori Kanda
PPTX, PDF
661 views
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
Bazelを使ってDataflowアプリをビルドするとつらかったという話。gRPC+golangの組み合わせであればそれなりに使える。
Technology
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 15
2
/ 15
3
/ 15
4
/ 15
5
/ 15
6
/ 15
7
/ 15
8
/ 15
9
/ 15
10
/ 15
11
/ 15
12
/ 15
13
/ 15
14
/ 15
15
/ 15
More Related Content
PPTX
Reactive Workflow Argo Eventsの紹介
by
Daisuke Taniwaki
PDF
GCP でも Serverless!!
by
Igarashi Toru
PDF
A practical guide to machine learning on GCP
by
Hayato Yoshikawa
PDF
FirebaseAnalytics_BigQuery_Datastudio
by
さとる なかむら
PDF
OSC Hiroshima 2013
by
Yuya Adachi
PDF
2018 07-19dist
by
Yuji Oshima
PPTX
俺とGitHubとcodeシリーズ
by
Masayuki KaToH
PDF
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
by
Yoichi Kayama
Reactive Workflow Argo Eventsの紹介
by
Daisuke Taniwaki
GCP でも Serverless!!
by
Igarashi Toru
A practical guide to machine learning on GCP
by
Hayato Yoshikawa
FirebaseAnalytics_BigQuery_Datastudio
by
さとる なかむら
OSC Hiroshima 2013
by
Yuya Adachi
2018 07-19dist
by
Yuji Oshima
俺とGitHubとcodeシリーズ
by
Masayuki KaToH
自由な空間情報利用のためのツールQGISと日本語化プロジェクトの紹介
by
Yoichi Kayama
What's hot
PDF
Datalab and colaboratory
by
Hayato Yoshikawa
PDF
FirebaseとNuxtでLPを作って見た
by
Kenjiro Kubota
PDF
Serverless on GCP
by
Hayato Yoshikawa
PDF
2018 07-23
by
Yuji Oshima
KEY
Chrome osとgo言語からgoogleの今後を妄想してみる
by
Masakazu Muraoka
PPTX
Mongodb World 2014
by
Yoshihiro Iwanaga
PDF
ClojureでElectronアプリを作ろう
by
Kazuhiro Hara
PDF
mruby_nginx_module at pyfes 2013.11
by
Tatsuhiko Kubo
PDF
mruby_nginx_module
by
Tatsuhiko Kubo
PPTX
Tfug kansai vol3
by
Natsutani Minoru
PPTX
Google Apps Script 概要
by
Y OCHI
PDF
mruby_nginx_module〜Embedded mruby into Nginx〜
by
Tatsuhiko Kubo
PDF
The History of Reactive Extensions
by
Yoshifumi Kawai
PDF
Gatsby & React Static
by
Kazuhiro Hara
PDF
ng build --prod & Continuous Delivery
by
bitbank, Inc. Tokyo, Japan
PDF
The Twelve-Factor (A|M)pp with C#
by
Yuta Matsumura
PDF
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
PDF
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
by
Kazuhiro Hara
PDF
Excite beer bash06
by
Arata Honda
PDF
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
by
Yoshifumi Kawai
Datalab and colaboratory
by
Hayato Yoshikawa
FirebaseとNuxtでLPを作って見た
by
Kenjiro Kubota
Serverless on GCP
by
Hayato Yoshikawa
2018 07-23
by
Yuji Oshima
Chrome osとgo言語からgoogleの今後を妄想してみる
by
Masakazu Muraoka
Mongodb World 2014
by
Yoshihiro Iwanaga
ClojureでElectronアプリを作ろう
by
Kazuhiro Hara
mruby_nginx_module at pyfes 2013.11
by
Tatsuhiko Kubo
mruby_nginx_module
by
Tatsuhiko Kubo
Tfug kansai vol3
by
Natsutani Minoru
Google Apps Script 概要
by
Y OCHI
mruby_nginx_module〜Embedded mruby into Nginx〜
by
Tatsuhiko Kubo
The History of Reactive Extensions
by
Yoshifumi Kawai
Gatsby & React Static
by
Kazuhiro Hara
ng build --prod & Continuous Delivery
by
bitbank, Inc. Tokyo, Japan
The Twelve-Factor (A|M)pp with C#
by
Yuta Matsumura
MagicOnion~C#でゲームサーバを開発しよう~
by
torisoup
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
by
Kazuhiro Hara
Excite beer bash06
by
Arata Honda
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
by
Yoshifumi Kawai
More from Katsunori Kanda
PDF
Airflow 2.0 migration ガイド
by
Katsunori Kanda
PDF
Web Privacy Survival Guide
by
Katsunori Kanda
PDF
Airflowを広告データのワークフローエンジンとして運用してみた話
by
Katsunori Kanda
PDF
GCSでstatic web hosting
by
Katsunori Kanda
PDF
Dockerだけではないコンテナのはなし
by
Katsunori Kanda
PDF
RealSenseを使ってCrazyflieを自律飛行させてみた
by
Katsunori Kanda
PDF
KINECT WITH ROS
by
Katsunori Kanda
PDF
Docker超入門
by
Katsunori Kanda
PPTX
Hadoopことはじめ
by
Katsunori Kanda
PDF
データファースト開発
by
Katsunori Kanda
PDF
Spark Summit 2015 参加報告
by
Katsunori Kanda
PDF
20150207 何故scalaを選んだのか
by
Katsunori Kanda
PDF
Discretized Streams: Fault-Tolerant Streaming Computation at Scaleの解説
by
Katsunori Kanda
KEY
自動テストのすすめ
by
Katsunori Kanda
Airflow 2.0 migration ガイド
by
Katsunori Kanda
Web Privacy Survival Guide
by
Katsunori Kanda
Airflowを広告データのワークフローエンジンとして運用してみた話
by
Katsunori Kanda
GCSでstatic web hosting
by
Katsunori Kanda
Dockerだけではないコンテナのはなし
by
Katsunori Kanda
RealSenseを使ってCrazyflieを自律飛行させてみた
by
Katsunori Kanda
KINECT WITH ROS
by
Katsunori Kanda
Docker超入門
by
Katsunori Kanda
Hadoopことはじめ
by
Katsunori Kanda
データファースト開発
by
Katsunori Kanda
Spark Summit 2015 参加報告
by
Katsunori Kanda
20150207 何故scalaを選んだのか
by
Katsunori Kanda
Discretized Streams: Fault-Tolerant Streaming Computation at Scaleの解説
by
Katsunori Kanda
自動テストのすすめ
by
Katsunori Kanda
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
1.
Bazelでビルドしたアプリを GCPにデプロイしようとしてハマった話 (Dataflowのあたり) GCPUG Tokyo DevOps
Day September 2017 Katsunori Kanda (@potix2)
2.
自己紹介 神田勝規(かんだかつのり) @potix2 株式会社サイバーエージェント アドテクスタジオ サーバーサイドエンジニア 興味があること ROS
/ droneの自律制御 Minecraft
3.
結論 ● gRPC使うならbazelは良い選択肢 ● golangは依存関係の解決にやや難があるが使えなくは無い ○
最近、cross compileできるようになった:) ● bazelを使ってJavaのビルドをするのは辛い(とくにDartaflow)
4.
bazelとは? ● 最近、google関連のOSSでよく使われているビルドツール ○ tensorflow,
kubernetes, istioなど ● 分散ビルドシステム ● 多言語マルチプロジェクトが扱いやすい(DAG) ● 競合プロダクト: pants service.proto java client server app golang client protocol bufferも プロジェクトとして扱える (オススメポイント)
5.
Bazelの簡単な使い方 ● ルートディレクトリにWORKSPACEファイルを置く ○ 読み込むbazelのrule(プラグインのようなもの)など、 全体設定を書く ●
ビルド対象のディレクトリにBUILDファイルを置く ○ プログジェクトのビルド設定を書く。バイナリーの生 成ルールや、テストの実行方法など。
6.
gRPCサービス・クライアントの例(golang) . ├── BUILD ├── WORKSPACE └──
hello ├── BUILD ├── client │ ├── BUILD │ └── client.go ├── hello.proto └── server ├── BUILD └── server.go ファイル一式: https://github.com/potix2/grpc-with-bazel hello hello/server hello/client ファイル構造 プロジェクトの依存関係
7.
WORKSPACEの例 git_repository( name = “io_bazel_rules_go”, remote
= “https://github.com/bazelbuild/rules_go.git”, tag = “0.5.2”, ) load(“@io_bazel_rules_go//go:def.bzl”, “go_repositories”, “go_repository”) git_repository( name = "org_pubref_rules_protobuf", remote = "https://github.com/pubref/rules_protobuf.git", tag = "v0.7.2", ) load("@org_pubref_rules_protobuf//go:rules.bzl", "go_proto_repositories") go_proto_repositories() go_repositories( go_version = "1.8.3", ) ...
8.
package(default_visibility = ["//visibility:public"]) load("@org_pubref_rules_protobuf//go:rules.bzl",
"go_proto_library") go_proto_library( name = "hello-go-proto", protos = [ "hello.proto", ], with_grpc = True, ) BUILDの例: hello(gRPC) hello/BUILD
9.
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( name
= "go_default_library", srcs = ["server.go"], visibility = ["//visibility:private"], deps = [ "//hello:hello-go-proto", "@org_golang_google_grpc//:go_default_library", "@org_golang_x_net//context:go_default_library", ], ) go_binary( name = "server", library = ":go_default_library", visibility = ["//visibility:public"], ) BUILDの例: hello/server (golang) hello/server/BUILD
10.
ここからはbazelのつらいはなし
11.
Dataflowアプリのビルド ● 一言で言うと地獄 ● Transitive
dependencyを解決する良い方法がない ● jarのバージョンコンフリクトした時の解決ルールが mavenと違う ○ bazelはプロジェクト初期からJavaのビルドをサポートしているはずな のに・・・
12.
Transitive Dependencyとは? dependency Transitive dependency ... ...
13.
Dataflowアプリをビルドするためにやったこと ● 公式ページに書いてある方法だとうまく行かない ○ 参考:
https://docs.bazel.build/versions/master/generate-workspace.html ● https://github.com/bazelbuild/miglation-tooling を使ってみた ○ が、これもうまく行かない ● mavenの実行結果から依存関係を抽出するスクリプトを書いて対処した ○ チームメンバーが作ってくれた!ありがとう:)bazelのjava_rulesがmavenと同じルールで依存関係を解決してくれるようになるといいな・・・
14.
結論(ふたたび) ● gRPC使うならbazelは良い選択肢 ● golangは依存関係の解決にやや難があるが使えなくは無い ○
最近、cross compileできるようになった:) ● bazelを使ってJavaのビルドをするのは辛い(とくにDartaflow)
15.
おしまい
Download