アプリケーションエンジニアから強いデータエンジニアへの歩き方 / How to transition and become a Data Engineer from an Application Engineer
by
yuuki takezawa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
アプリケーションエンジニアから 強いデータエンジニアへの歩き方 ytake
Slide 2
Slide 2 text
データへの関わりのきっかけ - Apache HadoopやHBaseを通じてデータ処理を学ぶ - 分散処理に強いクエリエンジンやストリーム処理などを手がけ る - データからどこに問題がありそうか 予測できるようになり 解決のために自分で行動することが多くなる
Slide 3
Slide 3 text
これからのキャリアを考えたい 行動範囲を広げていきたい そんな方に
Slide 4
Slide 4 text
Agenda - データエンジニアってなにするの? - データエンジニアとして活動するための思考 - データエンジニアリングのための技術
Slide 5
Slide 5 text
データ基盤が必要なんだ でもなにをするものなのかわからない
Slide 6
Slide 6 text
データエンジニアとは - データ活用を前提にデータ収集や、管理、作成など データに関する基盤を作るエンジニア - データを元にアプリケーションに フィードバックをするなどもあり、 機械学習や一般的なアプリケーション作りも含まれる
Slide 7
Slide 7 text
データエンジニアへ - データ設計が好きなアプリケーションエンジニア - 自分がやりたいタイミングでデータを用意して 整備も自分でやりたいデータサイエンティスト - DB管理してるのインフラでしょ、やってよ
Slide 8
Slide 8 text
データエンジニアとは - データが整備されていないとなにもできないところから 整えていく - データの性質によって転送方法、加工方法が無数にある - 簡単なものか高難易度まで - データクレンジング
Slide 9
Slide 9 text
データ活用とは - 会社活動などにおける「意思決定」や「業務効率化」、 「マーケティング」などの向上に役立てるもの - どういうデータをエビデンスにしていけば良いか、 などは会社によって全く違うため、 何かを参考にすると活用ができるわけではない
Slide 10
Slide 10 text
データエンジニアをやるには - 事業・会社の課題を知る - 実際にデータを自分で見る、業務を知る - 今あるデータすらも信用しない
Slide 11
Slide 11 text
データエンジニアをやるには - まずは自分のために仮説検証ができるように - どこからデータがきているのか、どこが起点なのか - 自分が欲しいデータを見つける・見る・集約する
Slide 12
Slide 12 text
- 実装以外のやることが多い(兼務はおすすめしないです
Slide 13
Slide 13 text
誰かが教えてくれるわけではない 教えてくれても その人の視点だけでしかない
Slide 14
Slide 14 text
ドメインを噛み砕く
Slide 15
Slide 15 text
見つけ方が難しい! - どこからデータがきているのか、どこが起点なのか
Slide 16
Slide 16 text
イベントストーミング - どういうところでどういう事象が発生するのか - サービスにおけるイベントを見つけ出す - なぜなら データは事象のスナップショット
Slide 17
Slide 17 text
思考を鍛える - 自分が欲しいデータを見つける・見る・集約する 参考: https://www.ibm.com/docs/ja/spss-modeler/saas?topic=dm-crisp-help-overview
Slide 18
Slide 18 text
CRISP-DM - ビジネス課題の理解 - データの理解 - データの準備 - モデル作成 - 評価 - 共有
Slide 19
Slide 19 text
モデル作成・評価・共有 - DWHやデータマートなど - アプリケーションへフィードバックする仕組み - 機械学習 - 効果検証
Slide 20
Slide 20 text
データエンジニアもマインド必要なの? - データが揃った・揃ったら何がどうなりそうか、 これを意識して基盤作りなどをする必要がある - ただ持ってきただけだと、何を解決するためにあるのか 誰もわからない・使われない基盤になります
Slide 21
Slide 21 text
品質をあげる
Slide 22
Slide 22 text
データの品質を上げていく - 仕組みを作るだけではどうにもならない - データに関するリテラシーを上げていく - SREと同じくデータを軸にした品質向上活動をしていく - 一般的なアプリケーション開発とちょっと違う
Slide 23
Slide 23 text
すこし強くなる - 当事者意識を強く持つ - 今ないデータに価値がありそうか - 見えない範囲やネガティブなデータに価値がある - コミュニティを頼る(大事
Slide 24
Slide 24 text
今ないデータとは
Slide 25
Slide 25 text
生存バイアス - 装甲を厚くして撃墜されにくくする - 帰ってきた爆撃機のデータしかない、 撃墜されたものに価値がある - あるものだけに偏ってしまう - ちなみにこの図も仮説なので嘘の図
Slide 26
Slide 26 text
注意すること - ただのデータ抽出チームにならないこと - チームはエンジニアだけで閉じないこと - なんとなくやらない、しっかりと思想をもつ - うまくできなさそうな時は諦めること
Slide 27
Slide 27 text
注意すること - 97%は燃え尽きる - アプリケーションや業務フローで簡単に壊れるデータ パイプライン維持でほとんど終わってしまう - なぜ必要なのか、実現するためには文化と意識作り - 参考: https://datadeveloperplatform.org/why_ddp_for_data/
Slide 28
Slide 28 text
なぜデータ基盤が必要なのか WHYが明らかになってからが最初の一歩
Slide 29
Slide 29 text
サイクルを回すための 実現可能な手法を習得
Slide 30
Slide 30 text
データ基盤ができてきた - データの取り出し方、保管の仕方、モデリングなど ドメインに合わせて最適化する - 全てSQLだけで済む、ということはあまりない - 共有するにはある程度加工が必須
Slide 31
Slide 31 text
ELT/ETL / そんなにフレッシュじゃない - 小難しい転送がなければdbt、Embulk、Glueなど - 転送に関して データの鮮度・更新頻度が高くないものは非常に簡単 - 鮮度がよくなるほど難しくなる
Slide 32
Slide 32 text
ELT/ETL / フレッシュ - イベントストーミングのイベント発生時から 保管すべきもの - Apache Kafka、Kinesisなど - CDC(Change Data Capture)、ストリーミング処理少々 - 転送効率から選ぶことも
Slide 33
Slide 33 text
ELT/ETL / フレッシュ同士の結合 - Spark Streaming、Storm、Flinkなど - アプリケーション層に近いところまで寄ると マイクロサービスアーキテクチャと変わらなくなる - アクターモデル導入
Slide 34
Slide 34 text
データ集約・抽出 - 静的なデータを全てGoogleに預けていい場合は BigQuery を軸に - AWSの場合はS3+Athenaが低コストで鉄板 - それらを包括したSnowflakeなど
Slide 35
Slide 35 text
データ加工・抽出 - 事業の課題やフィードバックの仕方によって様々 - BIツールは可視化に - レコメンデーションや自然言語処理の結果など データを利用できる様に 全文検索エンジンやワイドカラム対応の設計など
Slide 36
Slide 36 text
データを軸にしたプロダクトがあるのならば・・
Slide 37
Slide 37 text
連携システム グランドデザイン
Slide 38
Slide 38 text
連携システム グランドデザイン
Slide 39
Slide 39 text
まとめ - アプリケーションエンジニアと知識と技術 - データ分析のための思考 - パイプラインを作るためのインフラ知識 - データそのものをプロダクトとして考える
Slide 40
Slide 40 text
総合格闘技として様々な領域を鍛えていきましょう