Google Cloud in Action読んだ
- 2018年に出たGoogle Cloud Platformの本です。
- 著者の John J. GeewaxさんはGoogleのエンジニアです
- サンプルプログラムはNodeJS(あんまり依存しないと思いますが)です
以下のGCPサービスが紹介されており、
- DB・ストレージ系(GCS.BigTable,Datastore,CloudSQL,Spanner)
- Compute系(GCE,GKE,GAE,Cloud Function)
- 機械学習系(Cloud Vision, Cloud Natural Language, Cloud Speech, Cloud Translation, Cloud Machine Learning Engine)
- ビッグデータ系(BigQuery, Pub/Sub, Dataflow)
それぞれのサービスに関して、
- 概要
- 特性(レイテンシ、スケール、耐久性)
- 合う合わない(小規模なTODOアプリ、大規模SNS、証券取引)
- 価格感
が説明されています。GCPのサービスの感じを掴むのにいい感じです。
個人的に勉強になったのは、Pub/Subの属性とメッセージ データの使い分けの記載です。
メッセージデータはデコード(Base64。任意で暗号化)が必要、属性は不要なので、メッセージのルーティング(※)的な事をするためのデータは属性に入れるのが、想定してる使い分けらしいです。
※サブスクライバーが処理すべきメッセージか判定したり、データ内容によって処理内容を変更する
O'Reillyのサブスクリプション(Safari)登録してみた
すべての情報は2020/06時点のものです
Safariとは
O'Reillyが運営している、オンライン学習プラットフォームです。
何が見れんの
などが使えます。
- O'reilly以外の本は、例えば、Efffective Java(ピアソン)、Scrum Book(Pragmatic Bookshelf)などが読めます
- 基本英語の情報のみで、O'Reillyの本であっても、水野さんのWeb API: The Good Partsや、渋川さんのReal World HTTPは読めません
(2020/6/17時点のコンテンツの状況。英語だと5万タイトル)
でもお高いんでしょ
O'reilly直接では、月$49もしくは年$499です。
月1・2冊O'reillyの本読めば元とれるレベルです。
ACM(Professinal Membership)に加入すると、Safariを使うことが出来ます。
年$99なので、年2・3冊読めば元取れるレベルです。
なお、ACMに入るには会員資格があります(ただし審査はない?):
Membership Qualifications
You must satisfy one of the qualifications below:
- Bachelor's Degree (in any subject area); or
- Equivalent Level of Education; or
- Two years full-time employment in the IT field.
登録
閲覧
で閲覧出来ます。
いずれの方法でも、ACM経由で登録した場合は、ACMから発行されるメールアドレス(名前@acm.org)を入力する必要があります。
なお、iPadで閲覧した感じ、アプリにストレスは感じませんでした。
Apache Beam katasやってみる #2(課題編)
katasでは、下のような内容を行います。
- Hello World
- ParDo
- MapElements
- FlatMapElements
- GroupByKey
- CoGroupByKey
- Combine
- Flatten
- Partition
- Side input
- Side Output
- Branch
- Compositte Transform
- DoFnへの追加のパラメータ(Timestampなど)
- Filter
- Aggregation系(Count, Sum, Mean, Min, Max)
- WithKeys
- TextIO
- Window
- Trigger(Event time, early triggering, accumulation)
- WordCount
Beamの学習といえば、Programming Guide
が人気ですが、Katasはその多くをカバーしていることがわかります。
なお、
- Coders
- Schema
- Metrics
- Timer
- State
あたりは、Katasに無いので、Programming Guideを読む必要があります。
(Coder以外は新しい機能なので、知らなくてもBeamのコード書けると思いますが)
Apache Beam katasやってみる #1 (操作編)
Apache Beam katasを始めると、下のような画面が表示されます。
- 右側のペインに、kataの説明、ヒント、Beamドキュメントへのリンクが表示されます
- 中央のペインに、kataのコードが表示されます
- 左側のペインに、kataの一覧が表示されます
練習の流れとしては、
- 与えられた課題と、コードを確認
- 必要ならBeamのドキュメントを確認
- TODOの部分にコードを記載
- 右側のペインのcheckを実行
- 成功したらConguratulationsが出る
- テスト・コンパイル失敗した場合は、ツールウィンドウの"Run"(下図)で詳細を確認
- (わからなければ)check後、「Peek Solution」が右ペインに出るので、模範解答を除く
な感じです。
Apache Beam katasやってみる #0
Beam Katasとは
Apache Beamのコード書くの難しい(こともある)から、インタラクティブに勉強しようねという教材です。
Beamのページに説明あったり、
Googleの動画でも紹介されてたりします。
(動画で謎に日本語入たり、エフェクトが面白い)
Katasのどこが良いか
- Beamの基本的な処理を、一通り体験出来る
- 手を動かすので、ドキュメント読むだけより頭に入りやすい(気がする)
- ちょうどいい感じの量(1時間~半日くらいだと思います)
Beam入門
Katas以外だと、
あたりがポピュラーな入門方法だと思います【要出典】。
インストール
- 専用のIDE IntelliJ IDEA Edu
- 既存のIDE(Intellij/Pycharm)のプラグイン
のどちらでも出来るようですが、私はIntellij IDEA(Community)でやりました。
な流れ。
プラグインインストール
EduToolsインストール後は、「Learn and Teach」がWelcome画面に追加される。
Beam Katasの選択
Kataの開始
Katasコード
Githubに、
のコードが公開されています。
今日のPodcast: Software Engineering DailyでDruidの話
概要
Druidのマネージドサービス(+α)を提供しているImplyの Jad Naousさん(R&D担当のVP)がゲストで、Apache Druidの話。
内容
- Druidの概要説明。「Druid is kind of the open-source OLAP real-time data」で、時系列DB(Graphiteとか)と、データウェアハウス(BigQueryとか)の中間にあたるとのこと
- Druidのアーキテクチャの説明
- 他のデータウェアハウス(Redshift/Snowflake/BigQuery)、Prestoとの比較
- Druidのユースケース。Airbnbの例
- パフォーマンスモニタリングに使っているらしい
- リアルタイム性&集計の両方が必要
- Airbnbさんのエンジニアブログ
How Druid enables analytics at Airbnb - Airbnb Engineering & Data Science - Medium
- Implyの話
- 歴史的な話
- Druidはネット広告のために開発された(Metamarkets)
- BIツールとの鶏と卵問題(ストレージが遅いとBIが意味ない、BIが無いとストレージが意味ない)
その他
- LINE/Naverさんがヘビーユーザーな印象
(LINE/Naverさんの事例)Web analytics at scale with Druid at naver.com
- アーキテクチャ部分の説明に関しては、HortonworksさんのDruid deep diveの図がわかりやすいかも
Flask Web Development読んだ
O'reillyのSafariで読んだ二冊目の本。
Flask自体だけでなく、サーバーサイドの話が広く載っていて、Pythonやサーバーサイド開発始める時に読みたかったなーと思うような本でした。
- jinja2によるテンプレート
- SQLAlchemyによるDBアクセス
- Blueprint
などのFlaskの基本的な機能に加え、
- Flask-Bootstrapによる画面のおしゃれ化
- Flask-Mailによるメール送信
- Flask-WTFによるフォーム作成
- マークダウン系(flask-pagedown, markdown, bleach)によるユーザ入力のリッチ化
などのFlaskの拡張機能を、ブログ投稿のサービスを作りながら学んでいきます。
(Githubで公開されています)
また、プロダクション的な話として、
- alembicによるDBのマイグレーション
- unittestによる単体テスト、seleniumによるe2eテスト
- logger
- WerkzeugのApplication profiler
- Herokuにデプロイ
- Docker・Docker compose
あたり付随的な機能も紹介されています。