GDG DevFest Tokyo 2019の講演メモ
tokyo.gdgjapan.org
ML Kit の最新情報/あんざいゆき
「見る」に特化していたため、メモはしなかったのですが、
ML Kitがあれば、機械学習わからない人でもいろいろ作れそうで、すごかった。
動画もたくさんあり、見ていて楽しかった講演。
マイクロサービスの開発とテストファースト/テスト駆動開発/柴田 芳樹
www.slideshare.net
- 会場にアンケート:テスト駆動開発やテストファーストしてる人は少ない
- 手でテストしていると、ソフトウェアがどんどん腐っていく
- 開発費があがる
- メルペイのマイクロサービス間通信はgRPC
- 多くのマイクロサービスが同時開発
- gRPCのAPI仕様をコメントで.protoファイルに書いた
- API仕様をMarkdownに反映するCIの仕組み
- 依存しているサービスの振る舞いをテストコードを書く
- 最初はAPI仕様ばかり書いてた
- 依存しているサービスのテストの振る舞いを定義できるテストフレームワークを作成した
- 依存するマイクロサービスをFakeする
- 外部サービスに依存する部分もFakeにした
- 例
- PubSub
- Slack
- Googleドライブ保存
- 外部サービス用APIのソースを追って、ハックして、Fakeにするのすごいw
- 次は、ゲートウェイ経由でから外から叩くテスト
- 同時実行など、簡単な負荷テストもする
- API仕様をきちんと記述する
- 自分が作ったマイクロサービスのテストをきちんと行う
- gRPCはFake作るのやりやすかった
- Q.Webと組み込み、どちらが楽しかったですか?
- A.組み込み。理由は、技術的難易度の高さ。今は週4勤務や労働時間に上限ある中で、如何に自分の成果を出すかに注力している。
還暦過ぎて、現役の現場エンジニアでコード書いてる。めちゃめちゃすごい方でした。
柴田さん翻訳のfective Java 第3版
- 作者:Joshua Bloch
- 出版社/メーカー: 丸善出版
- 発売日: 2018/10/30
- メディア: 単行本(ソフトカバー)
CloudNative 時代における GKE/Kubernetes ではじめる開発 / 青山 真也
- 「おうちに手のひらサイズのk8sクラスタある人」はいますか?
- k8s入門とCloud Native
- ちょっとGKE
- (会場に)Docker使ったことある人は多い。k8sを開発環境以上で使ったことある人は少ない。
- サーバ1000台にコンテナを1個1個デプロイは大変
- それを解決してくれるのがKubernetes
- k8sは、Google社内のクラスタ管理ツールのBorgが元になっている
- 今はCNCFに寄贈して管理している
- 目的:Cloud Nativeな組織や時代を構築したい
- 疎結合
- 回復性がある
- 管理しやすい
- 可観測である
- 堅牢な自動化
- オープンかつスケーラブル
- Cloud NativeはKubernetesか?
- それは「違います」
- 便利なものだが使えばいいというものではない
- 疎結合性
- 管理しやすい
- Pod(コンテナ)の起動
- 指定した数のコンテナを「維持」してくれる
- LBとの連携。ラベルをメタデータとして付与できる
- 自動的にL4LBを提供してくれる。GKEだと簡単にできる
- L7LBもManifestで管理できる。証明書もSecretサービス管理してくれるので、書き換えて証明書は登録するだけいい。変更の生合成はk8sが管理
- クラスタ内部通信は、IPアドレスを隠蔽して、管理してくれる。魔のエクセルからの解放。
- 外部との通信もグローバルIP、DNS、証明書を自動化する昨日もある
- k8sは、ネットワークやストレージなどを抽象化して、YAML管理できる
- 逆にYAMLたくさん書かないといけないデメリットもある
- 回復性
- k8sのコアコンセプト
- 自動回復・セルフヒーリング
- 「あるべき状態」を維持する機能。リコンサイルループ
- 状態を監視する機能がある
- 3ステップのループ
- Observe
- Diff
- Act
- 例えば、理想がコンテナ3つだけど、コンテナ2つだけを発見する。1つ足りない。1つ追加する。をやってくれる。
- これは、コントローラと呼ばれるもの。k8sの中に100個くらいある。
- 今まで、人手でやっていた作業を自動でやってくれる
- X as a Service基盤の側面もある
- 分散フレームワークとしての一面
- 特定の事業ドメインに特化した、アプリケーションを作って任せることもできる
- フレームワークなのでコントローラは簡単に書けることになっている
- 可観測性
- メトリクス
- トレーシング
- サービスメッシュ
- ロギング
- 周辺技術と連携して、可観測性を維持して下さい。あとから考えるので、システム設計
- 可観測性だけで2時間くらい話できる
- ローリングアップデート
- インフラストラクチャー
- ビジネスバリューはここで作られるわけではない。オープンなもので作って行くのでいいんじゃないか?
- k8sのリポジトリ
- スケーラビリティ
- 水平スケーリングと垂直スケーリング
- クラスタ自体のスケールはオートスケールの対象外(サーバ台数が自動手的に増えるわけではない)
- ここでGKE
- GKE
Perspective of Angular in 2020 / 稲富 駿
- 2020年のAngularの話
- 2019年のAngular
- 2.0.0リリースから3年経ってどうなったか?
- あんまり変わってない
- なぜなら、彼らは3のValueを決めている
- 常に3つのどれかにフォーカスしているため、変わっていない
- 2.0.0リリースから3年経ってどうなったか?
AngularのValues#DevFest19 #GDGTokyo pic.twitter.com/RshSchZ1nR
— こばせ🥴 (@kobase555) 2019年12月14日
- Googleにとっても簡単には捨てられない、重要なプロダクトになっている
- 7.x
- 8.x
- Differential Loading by Default
- Traditional Loadingからの変化。
- 新しいブラウザには、バンドルサイズを削減したものを送る。古いブラウザには今までと同じもの。20〜30%削減
- 自動的にPolyfillingの追加をやってくれる
- 型安全にDynamic importが書けるようになった
- Webpackの人たちが頑張った。
- Web Worker : Module Worker Support
- ちゃんと型安全に書けます
- ng deploy
- ライブラリの場合はnpmにデプロイすることができる
- production build問題が少なくない割合がある。本来望ましくない。
- ng deoloyすると、必ず「ng build -prod」する。これが狙い
- わざわざ使う必要はないが、新規に採用する場合は使うと良い
- 2019年はパフォーマンス改善目的が中心
- Differential Loading by Default
- 2020年〜
- 9.x
- 10.x
- 11.x
- Ivy by Default
- CDK Clipboard API
- CDK TestHarness
- Angular official components
- Strict Template Type-Checking
- 名前が変わったり、書かなくてよくなったりのAPI(?)もある
- Breaking Changes
- Ivy がデフォルト
- AoT がデフォルト(JITに戻したい場合は指定)
- Type Script 3.6以上
- 今まではEnterprise利用が多かった
- 2019年かけて、簡単に軽量に作れるようにした
- よく使われるアプリをAngularでサクッと作れる世界を目指した
- これからのAngular
- Project Photon
- Growing Angular Values