Movatterモバイル変換


[0]ホーム

URL:


Taisuke Yamada, profile picture
Uploaded byTaisuke Yamada
193 views

DIY Akamai Globe in 50 Minutes

Delivered in Akamai Japan Tech Conf 2019.Presented on how you can visualize a site traffic and build one's "Akamai Globe" which visualizes traffic happening worldwide across the globe. With appropriate selection of APIs and OSS stack, it is a doable DIY project in 50 minutes!

Embed presentation

Download to read offline
1 | © 2019 Akamai | ConfidentialDIY Akamai Globein 50 MinutesTaisuke Yamada<tayamada@akamai.com>
2 | © 2019 Akamai | Confidential今日のお題: Akamai Globe
3 | © 2019 Akamai | Confidential今日のお題: Akamai Globe最近のAkamai APIを使って、自分専用のAkamai Globe(みたいなもの)を作ってみよう!
4 | © 2019 Akamai | Confidentialこのセッションのゴール• データ可視化の楽しさを知ってほしい• 既成ツールにない機能も案外作れると感じてほしい• ついでに、Akamai APIももっと使ってみてほしい!
5 | © 2019 Akamai | Confidentialこのセッションのゴール• データ可視化の楽しさを知ってほしい• 既成ツールにない機能も案外作れると感じてほしい• ついでに、Akamai APIももっと使ってみてほしい!ついでに、Akamai APIももっと使ってみてほしい!
6 | © 2019 Akamai | Confidential今日お伝えしたいこと「巨人の肩に乗ろう」
7 | © 2019 Akamai | Confidential巨人の肩に乗る「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3
8 | © 2019 Akamai | Confidential現代ITの巨人 「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3Cloud Computing
9 | © 2019 Akamai | Confidential現代ITの巨人 「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3Cloud ComputingOpen Source Software
10 | © 2019 Akamai | Confidentialそういうわけで、今日の話は・・・1. まず、クラウドサービスを使って、ノープログラミングでのデータ可視化をやってみよう!2. 次に、オープンソースソフトウェアを使って、簡単なプログラミングだけでAkamai Globeを作ってみよう!3. おまけに、Akamai Globeにはない機能まで追加してみよう!
11 | © 2019 Akamai | Confidentialクラウドサービスの肩に乗る
12 | © 2019 Akamai | Confidential大変・面倒なことはクラウドサービス送りの時代• ストレージ• DAS, NAS, SAN,ObjectStorage, ...• データベース• SQL-DB, KVS, DocumentDB, ...• サーバ、処理系• VM, Container, Runtime, Function• ネットワーク• LAN, WAN, VPN• クラスタ構築・運用• トレーシング• ロギング• 認証・認可• メッセージキュー• プッシュ通知• 各種APIサービス• データ分析・可視化
13 | © 2019 Akamai | Confidential大変・面倒なことはクラウドサービス送りの時代• ストレージ• DAS, NAS, SAN,ObjectStorage, ...• データベース• SQL-DB, KVS, DocumentDB, ...• サーバ、処理系• VM, Container, Runtime, Function• ネットワーク• LAN, WAN, VPN• クラスタ構築・運用• トレーシング• ロギング• 認証・認可• メッセージキュー• プッシュ通知• 各種APIサービス• データ分析・可視化
14 | © 2019 Akamai | Confidentialやってみよう3クラウド連携のノープログラミング可視化Amazon Simple StorageService (S3)Google BigQuery
15 | © 2019 Akamai | Confidential協力・データ提供: https://www.scalemates.com/
16 | © 2019 Akamai | Confidential実は弊社社員協力のプラモ趣味サイトで、そこそこのトラフィックがあり、当然アカマイ化されている協力・データ提供: https://www.scalemates.com/
17 | © 2019 Akamai | Confidential素材: Akamai DataStream APIカスタマイズした形で、アカマイ基盤でのログ、パフォーマンスデータ、エラー、発生イベントを生ログ・集約データの形でPush/Pullアクセスできる
18 | © 2019 Akamai | ConfidentialAkamai as DataSourceの歴史• Log Delivery Service (LDS)• 生ログ蓄積・管理サービス• 指定先ストレージにバッチ転送 or メール(歴史を感じる・・・)• Download Receipt• ログ蓄積ではなくアクセス情報をストリーム的に流してくれる(Push)• Akamai Cloud Monitor• DR同様だが、より情報・形式がリッチな形で形式も扱いやすい(Push)• Akamai DataStream• サーバサイドの生ログでも要約データでも好きな方を収集できる• ストリーム的にPushもするし、アカマイ側で集積しているデータをPullもできる• Akamai mPulse API• クライアント側から採取したデータにPull方式でアクセスできる
19 | © 2019 Akamai | ConfidentialAkamai as DataSourceの歴史• Log Delivery Service (LDS)• 生ログ蓄積・管理サービス• 指定先ストレージにバッチ転送 or メール(歴史を感じる・・・)• Download Receipt• ログ蓄積ではなくアクセス情報をストリーム的に流してくれる(Push)• Akamai Cloud Monitor• DR同様だが、より情報・形式がリッチな形で形式も扱いやすい(Push)• Akamai DataStream• サーバサイドの生ログでも要約データでも好きな方を収集できる• ストリーム的にPushもするし、アカマイ側で集積しているデータをPullもできる• Akamai mPulse API• クライアントから採取したデータにPull方式でアクセスできる歴史的には様々な提供形態がありますが、生ログ保管用のLDS、そして下2つのDataStreamとmPulse APIが主力となります。
20 | © 2019 Akamai | ConfidentialAkamai DataStream API• リアルタイムでアカマイ基盤からのログ・モニタリング情報を取得可能• 詳細な生ログ、集約された統計情報のどちらにも対応• 設定で伝達・取得項目を選択し、きめ細かく制御可能• Push API• 規定のエンドポイント・サービスにJSON形式で送り込む• Splunk, SumoLogic, Amazon S3に対応• Pull API• 最大24h分のデータから、任意のデータをJSON形式で取得可能
21 | © 2019 Akamai | ConfidentialAkamai mPulse API• リアルタイムでウェブブラウザ側からのモニタリングデータを提供• ブラウザ側でのモニタリングのため、直帰率などの行動指標も取得可能• 詳細な時系列データ、集約された統計情報の両方に対応• REST APIのクエリパラメータで多様な絞り込みに対応• Pull APIのみサポート• 最大13ヶ月分の蓄積データからJSON形式でデータ取得可能Akamai DataStreamがアカマイ基盤側から見たデータ、Akamai mPulse APIがエンドユーザー(ブラウザ)側から見たデータ、とちょうど対になっている形となります。
22 | © 2019 Akamai | Confidentialはじめよう: 登場人物Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo Viz
23 | © 2019 Akamai | Confidential動作の流れ (1/3)Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo VizAkamai DataStream のデータプッシュ機能を使い、Amazon S3にリアルタイムにデータ投入を行う①
24 | © 2019 Akamai | Confidential動作の流れ(2/3)Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo VizGBQのData Transfer機能を使い、適時S3上のデータをインポートする①②
25 | © 2019 Akamai | Confidential動作の流れ(3/3)Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo VizBigQuery Geo Viz よりGBQにクエリを発行し、取得したデータをマッピング①②③
26 | © 2019 Akamai | Confidentialノープログラミング。でも設定はあります。• Akamai DataStream• Raw DataStream の Push 設定• Amazon S3• バケットの用意と読み書き用のアクセスキー情報• Google BigQuery• DataStreamデータの保存先テーブル(スキーマ定義)• S3からのData Transfer設定• BigQuery Geo Viz• 可視化したい情報を抜いてくるためのクエリ• 可視化パラメータ(描画色や大きさなど)
27 | © 2019 Akamai | ConfidentialAkamai DataStreamの設定
28 | © 2019 Akamai | ConfidentialAkamai DataStreamの設定DataStreamからS3のどのバケット・フォルダにPushするのかを指定し、AWS側で発行したアクセスキーをあわせて設定します。
29 | © 2019 Akamai | ConfidentialAkamai DataStreamの設定最後に、ログデータのどのフィールドをプッシュ送信するか指定します。サンプリングレートも1-100%の間で指定できるので、ストレージ側の容量にあわせたデータ取得が可能です。
30 | © 2019 Akamai | ConfidentialGoogle BigQuery の設定今度は最終的にデータを入れるGBQ側でテーブルを作成します。ここでのポイントは、DataStreamからプッシュされるJSONデータの構造に合わせて、GBQでサポートされているRECORD型をテーブル定義に使うことです。
31 | © 2019 Akamai | ConfidentialDataStream JSONとBigQuery Table SchemaJSONのような構造のあるデータは、RECORD型にマッピングすると変換ルーチン不要で取り込める
32 | © 2019 Akamai | ConfidentialGBQ Data Transfer 設定〜〜テーブル定義ができれば、後は転送設定だけです。設定画面の下にある形式・許容エラー数・未知データのスキップ設定も忘れずに!取得データはJSON形式多少のエラーでは止めない未知データはスキップ
33 | © 2019 Akamai | Confidential転送結果
34 | © 2019 Akamai | Confidential3クラウド連携の可視化をしてみよう!DEMO
35 | © 2019 Akamai | Confidential
36 | © 2019 Akamai | Confidential
37 | © 2019 Akamai | Confidential可視化完了
38 | © 2019 Akamai | Confidentialまとめ• ノープログラミングでもここまでできる• システム間の配管作業、プラレール遊びのような楽しさがある• 学び:自己記述的なデータでのシステム連結は強力
39 | © 2019 Akamai | Confidentialところで・・・
40 | © 2019 Akamai | Confidentialまだ、地球になってないよね?
41 | © 2019 Akamai | Confidentialオープンソースの肩に乗る
42 | © 2019 Akamai | Confidential現代ITの巨人 「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3Cloud ComputingOpen Source Software
43 | © 2019 Akamai | Confidential世の様々なサービスで使われるOSSサービスオープンソースなミドルウェア・ライブラリ・OS・運用管理基盤・etc・etc・・・サービスだけ使っていると標準提供されていないものが欲しい場合に詰んでしまう。。。
44 | © 2019 Akamai | Confidential世の様々なサービスで使われるOSSサービスオープンソースなミドルウェア・ライブラリ・OS・運用管理基盤・etc・etc・・・ないものは作ってみよう!OSSの肩も結構高いよ!APIデータ
45 | © 2019 Akamai | Confidential今回利用するOSSGIO.js C3.js
46 | © 2019 Akamai | Confidential全体構成今回作る何か(*1) 画像はイメージです
47 | © 2019 Akamai | Confidential全体動作serverclient①今度はDataStream Pull APIを使い、サーバ側より定期的にログデータを取得し、GIO.js用のデータに変換・保存しますloop DataStream Pull API
48 | © 2019 Akamai | Confidential全体動作serverclient①ブラウザでDIY Globe画面を開くと、XHR callでこの定期取得しているデータを取得し、GIO.jsで可視化。DIY Akamai Globeの完成です!loop DataStream Pull API②GET pageGET statusloop③
49 | © 2019 Akamai | Confidential全体動作serverclient①loop DataStream Pull API②GET pageGET statusloop③④GET country?cc=FRmPulse Query APIせっかくのDIYなので拡張しましょう。GIO.jsの国選択イベントを拾い、その国でのパフォーマンスデータをXHR call→mPulseAPIのリレーをしつつ取得し、C3.jsで可視化。これで本当の完成!
50 | © 2019 Akamai | ConfidentialDIY Akamai Globeを動かしてみたDEMO
51 | © 2019 Akamai | Confidential超はやわかりGIO.js
52 | © 2019 Akamai | Confidential超はやわかりDIY Akamai Globe単に非同期ループで定期的に取得した内容をGIO.jsのaddData APIに渡し続けるだけ
53 | © 2019 Akamai | ConfidentialDataStream Raw Log → GIO.js 形式の変換{"data": [{"type": "Raw",..."geo": {"country": "US",...},"network": {..."bw": "5000"},...}, {"type": "Raw",...左の DataStream Raw Log (JSON) 形式のたった2つのフィールドを抜き出し、GIO.jsが求める{e:, i:, v:}の形式にすればいいだけ
54 | © 2019 Akamai | Confidential定番JSON加工ツール: jq(1)$ jq -r '[.data[] | select(.geo.country) | {"e": .geo.country,"v": .network.bw | tonumber}] | group_by(.e) | map({"i": "GB","e": .[0].e,"v": map(.v) | add})' < raw.json > status.json{"data": [{"type": "Raw",..."geo": {"country": "US",...},"network": {..."bw": "5000"},...}, {"type": "Raw",...左のDataStream Raw LogのJSON形式は上の7行ほどのjqコマンドでGIO.jsに渡すデータ構造に変換できる。つまり、ここもプログラミング不要に。この生成された結果をGIO.jsでロードする
55 | © 2019 Akamai | ConfidentialDataStream API + 変換の全体像上の3行がDataStream APIを呼び出し、GIO.js向けのデータ変換をする中核部分
56 | © 2019 Akamai | ConfidentialmPulse API + C3.js地球全体の可視化選択した国のデータ可視化DataStream APImPulse API
57 | © 2019 Akamai | ConfidentialmPulse Query APIhttps://developer.akamai.com/api/web_performance/mpulse_query/v2.htmlAPI 機能$API_URL/summary ロードタイム中央値などの全体的な集計結果を返す$API_URL/histogram ロードタイムの区間毎に、そのアクセス件数を分布として返す$API_URL/sessions-per-page-load-time ロードタイムの区間毎に、その範囲に収まったセッション数を返す$API_URL/metric-per-page-load-time ロードタイムの区間毎に、その群での直帰率などの追加データを返す$API_URL/by-minutes 指定日のアクセスについて、分単位でロードタイムを返す$API_URL/geography 各国別に集計したパフォーマンス集計結果を返す$API_URL/page-groups ページグループ別に集計したパフォーマンス集計結果を返す$API_URL/browsers ブラウザ別に集計したパフォーマンス集計結果を返す$API_URL/bandwidth 帯域別に集計したパフォーマンス集計結果を返す$API_URL/ab-tests A/Bテストパターン別に集計したパフォーマンス集計結果を返す$API_URL/timers-metrics 各種パフォーマンス指標や追加指標単位の集計結果を返す$API_URL/metrics-by-dimension 指定の指標を軸にして、ユーザーの行動計測データを返す$API_URL/dimention-values 個々の指標で、フィルタ条件として指定できる値の一覧を返す
58 | © 2019 Akamai | ConfidentialmPulse Query APIhttps://developer.akamai.com/api/web_performance/mpulse_query/v2.htmlAPI 機能$API_URL/summary ロードタイム中央値などの全体的な集計結果を返す$API_URL/histogram ロードタイムの区間毎に、そのアクセス件数を分布として返す$API_URL/sessions-per-page-load-time ロードタイムの区間毎に、その範囲に収まったセッション数を返す$API_URL/metric-per-page-load-time ロードタイムの区間毎に、その群での直帰率などの追加データを返す$API_URL/by-minutes 指定日のアクセスについて、分単位でロードタイムを返す$API_URL/geography 各国別に集計したパフォーマンス集計結果を返す$API_URL/page-groups ページグループ別に集計したパフォーマンス集計結果を返す$API_URL/browsers ブラウザ別に集計したパフォーマンス集計結果を返す$API_URL/bandwidth 帯域別に集計したパフォーマンス集計結果を返す$API_URL/ab-tests A/Bテストパターン別に集計したパフォーマンス集計結果を返す$API_URL/timers-metrics 各種パフォーマンス指標や追加指標単位の集計結果を返す$API_URL/metrics-by-dimension 指定の指標を軸にして、ユーザーの行動計測データを返す$API_URL/dimention-values 個々の指標で、フィルタ条件として指定できる値の一覧を返すmPulse APIはAPIとしての提供機能がかなり多いため、本日は概要までの紹介に留めさせていただきます。
59 | © 2019 Akamai | ConfidentialmPulse APIの応答をグラフ化するDataStream+GIO.js よりは若干長くなるが、mPulse APIの呼び出しが145、それをC3.jsで利用するための変換が146-149、以降の151-行の部分はすべてグラフ作成と見た目制御の部分で、かなり簡潔に書くことができる。
60 | © 2019 Akamai | Confidentialまとめ
61 | © 2019 Akamai | Confidentialまとめ• Akamai DataStream 紹介(アカマイ基盤側のログ取得)• Akamai mPulse API 紹介(クライアント側データの取得)• クラウドサービスによるノープログラミングでのデータ可視化• GIO.js, C3.jsといったオープンソースライブラリでのデータ可視化• 案外簡単なDIY Akamai Globe(もどき)の制作
62 | © 2019 Akamai | Confidentialまとめ• Akamai DataStream 紹介(アカマイ基盤側のログ取得)• Akamai mPulse API 紹介(クライアント側収集データの取得)• クラウドサービスによるノープログラミングでのデータ可視化• GIO.js, C3.jsといったオープンソースライブラリでのデータ可視化• 案外簡単なDIY Akamai Globe(もどき)の制作このセッションを通じ、「なんだ、案外簡単じゃないか」「これならちょっとつついてみようかな」と思って頂けたなら幸いです。ありがとうございました!
© 2019 Akamai | Confidential63

Recommended

PDF
AMIMOTO on AWS Market Place
PDF
[和歌山] 網元AMI on AWS MarketPlace
PDF
[Jaws ug香川] 網元ami on aws market place
PDF
[Jawsug愛媛]網元ami on aws market place
PPTX
Japan Wrap Up re:Invent2018
PDF
エンジニア向け初めてのAWS (2015年1月6日)
PDF
【JAWS-UG東京発表資料】AWS Summit Tokyo 2018の振り返りと最新アップデート
PDF
Web制作/SIerのためのAWS
PDF
[最新版(12/5 最新版) が別にございます! Descriptionをご確認ください] AWS Black Belt Online Seminar A...
PDF
[最新版は別にございます! Descriptionをご確認ください] AWS Black Belt Online Seminar AWS re:Inven...
PDF
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
PDF
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
PDF
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
PDF
AWS re:Invent 2018 アップデート紹介 re:Invent Media & Entertainment Launches
PDF
JAWS DAYS 2015
PDF
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
PDF
AWS Summit Tokyo 2019 - re:Mix refrain
PDF
20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
PDF
Best Practices for Running PostgreSQL on AWS
PPTX
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
PPTX
AWS Premier Night #2 in Osaka『Amazon Elasticsearch Serviceのおもしろい使い方』
PPTX
AWSで稼働している ブログ(ヤマムギ+3)の コスト
PPTX
re:Invent 2018 ML サービスアップデート
PDF
初めてのAWS 90分version
PDF
エンジニアの為のAWS実践講座
PDF
20180417 AWS White Belt Online Seminar クラウドジャーニー
PPTX
AWSセキュリティ新機能と共に進化した My Individual blog (私の個人ブログ) since 2014
PPTX
技術選択とアーキテクトの役割
PPTX
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介

More Related Content

PDF
AMIMOTO on AWS Market Place
PDF
[和歌山] 網元AMI on AWS MarketPlace
PDF
[Jaws ug香川] 網元ami on aws market place
PDF
[Jawsug愛媛]網元ami on aws market place
PPTX
Japan Wrap Up re:Invent2018
PDF
エンジニア向け初めてのAWS (2015年1月6日)
PDF
【JAWS-UG東京発表資料】AWS Summit Tokyo 2018の振り返りと最新アップデート
PDF
Web制作/SIerのためのAWS
AMIMOTO on AWS Market Place
[和歌山] 網元AMI on AWS MarketPlace
[Jaws ug香川] 網元ami on aws market place
[Jawsug愛媛]網元ami on aws market place
Japan Wrap Up re:Invent2018
エンジニア向け初めてのAWS (2015年1月6日)
【JAWS-UG東京発表資料】AWS Summit Tokyo 2018の振り返りと最新アップデート
Web制作/SIerのためのAWS

What's hot

PDF
[最新版(12/5 最新版) が別にございます! Descriptionをご確認ください] AWS Black Belt Online Seminar A...
PDF
[最新版は別にございます! Descriptionをご確認ください] AWS Black Belt Online Seminar AWS re:Inven...
PDF
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
PDF
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
PDF
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
PDF
AWS re:Invent 2018 アップデート紹介 re:Invent Media & Entertainment Launches
PDF
JAWS DAYS 2015
PDF
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
PDF
AWS Summit Tokyo 2019 - re:Mix refrain
PDF
20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
PDF
Best Practices for Running PostgreSQL on AWS
PPTX
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
PPTX
AWS Premier Night #2 in Osaka『Amazon Elasticsearch Serviceのおもしろい使い方』
PPTX
AWSで稼働している ブログ(ヤマムギ+3)の コスト
PPTX
re:Invent 2018 ML サービスアップデート
PDF
初めてのAWS 90分version
PDF
エンジニアの為のAWS実践講座
PDF
20180417 AWS White Belt Online Seminar クラウドジャーニー
PPTX
AWSセキュリティ新機能と共に進化した My Individual blog (私の個人ブログ) since 2014
[最新版(12/5 最新版) が別にございます! Descriptionをご確認ください] AWS Black Belt Online Seminar A...
[最新版は別にございます! Descriptionをご確認ください] AWS Black Belt Online Seminar AWS re:Inven...
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
20190410 AWS Black Belt Online Seminar Amazon Elastic Container Service for K...
AWS re:Invent 2018 アップデート紹介 re:Invent Media & Entertainment Launches
JAWS DAYS 2015
AWS Black Belt Online Seminar 2018 AWS Well-Architected Framework
AWS Summit Tokyo 2019 - re:Mix refrain
20180328 AWS Black Belt Online Seminar Amazon Kinesis Video Streams
AWS Black Belt Online Seminar - Amazon Lightsail
Best Practices for Running PostgreSQL on AWS
AWSを使って沖縄から世界へ (JAWS DAYS 2015 A-1 GP LT大会)
AWS Premier Night #2 in Osaka『Amazon Elasticsearch Serviceのおもしろい使い方』
AWSで稼働している ブログ(ヤマムギ+3)の コスト
re:Invent 2018 ML サービスアップデート
初めてのAWS 90分version
エンジニアの為のAWS実践講座
20180417 AWS White Belt Online Seminar クラウドジャーニー
AWSセキュリティ新機能と共に進化した My Individual blog (私の個人ブログ) since 2014

Similar to DIY Akamai Globe in 50 Minutes

PPTX
技術選択とアーキテクトの役割
PPTX
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
PDF
AWS Black Belt Online Seminar AWS上でのスピードと高可用性を両立したゲームインフラの構築と事例
PDF
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
PPTX
コンテキストデータの永続化のための戦略
 
PPT
Inside mobage platform
PDF
AWS Black Belt Techシリーズ Amazon Kinesis
PDF
AWS SDK for Haskell開発
PDF
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
PDF
Serverless backendformobilegame and_aws-appsync_gamingtechnight-2
PDF
オープンソースNW監視ツールのご紹介
PDF
OpenStack Summit November 2014 Paris出張報告
PDF
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
PDF
AWSクラウドサービスツアー
PDF
20141129第1回九州IoT/M2M勉強会 〜IoTでのクラウド利用〜
PDF
170827 jtf garafana
PDF
AWS Summit Chicago 2016発表のサービスアップデートまとめ
PDF
Elastic7.12 release-new-features-on-0428
PDF
OpenStack の利用
PDF
[db tech showcase OSS 2017] A14: IoT時代のデータストア--躍進するNoSQL、拡張するRDB by OSSコンソーシア...
技術選択とアーキテクトの役割
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
AWS Black Belt Online Seminar AWS上でのスピードと高可用性を両立したゲームインフラの構築と事例
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
コンテキストデータの永続化のための戦略
 
Inside mobage platform
AWS Black Belt Techシリーズ Amazon Kinesis
AWS SDK for Haskell開発
私がMuninに恋する理由 - インフラエンジニアでも監視がしたい! -
Serverless backendformobilegame and_aws-appsync_gamingtechnight-2
オープンソースNW監視ツールのご紹介
OpenStack Summit November 2014 Paris出張報告
ベンチャーCTO、AWSエバンジェリストを経て考える、クラウド時代に向き合うエンジニア像のこれから
AWSクラウドサービスツアー
20141129第1回九州IoT/M2M勉強会 〜IoTでのクラウド利用〜
170827 jtf garafana
AWS Summit Chicago 2016発表のサービスアップデートまとめ
Elastic7.12 release-new-features-on-0428
OpenStack の利用
[db tech showcase OSS 2017] A14: IoT時代のデータストア--躍進するNoSQL、拡張するRDB by OSSコンソーシア...

More from Taisuke Yamada

PDF
ウェブパフォーマンス計測の落とし穴
PDF
InfiniBand on Debian
PDF
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
PDF
VSCode Remoteでも画像コピペがしたいです!
PDF
Getting Started with SDR in Python
PDF
Pythonではじめるソフトウェア無線
PDF
Introduction to Initramfs - Initramfs-tools and Dracut
PDF
The CAcert Project - An Invitation to CAcert ATE at OSC/Tokyo 2011 (JP)
PDF
ウェブサイト最適化101 - 正しく測ろうあなたのサイト -
PDF
IoT Deep Dive - Be an IoT Developer for an Hour
PDF
Quick QUIC Technical Update (2017)
PDF
Infinite Debian - Platform for mass-producing system every second
PDF
The CAcert Project - An Invitation to CAcert ATE in OSC/Tokyo 2011 (EN)
PDF
Hacking Ruby with Python
PDF
Casual Web-browsing with gPXE and SYSLINUX
PDF
Hadoop book-2nd-ch3-update
PDF
Charity Items from Debian JP Project
PDF
Invitation to Kernel Parameter and Code Exploration
PDF
201012 cacert-at-tokyodebian
PDF
Nilfs usage-report-and-comparison-at-tokyodebian
ウェブパフォーマンス計測の落とし穴
InfiniBand on Debian
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
VSCode Remoteでも画像コピペがしたいです!
Getting Started with SDR in Python
Pythonではじめるソフトウェア無線
Introduction to Initramfs - Initramfs-tools and Dracut
The CAcert Project - An Invitation to CAcert ATE at OSC/Tokyo 2011 (JP)
ウェブサイト最適化101 - 正しく測ろうあなたのサイト -
IoT Deep Dive - Be an IoT Developer for an Hour
Quick QUIC Technical Update (2017)
Infinite Debian - Platform for mass-producing system every second
The CAcert Project - An Invitation to CAcert ATE in OSC/Tokyo 2011 (EN)
Hacking Ruby with Python
Casual Web-browsing with gPXE and SYSLINUX
Hadoop book-2nd-ch3-update
Charity Items from Debian JP Project
Invitation to Kernel Parameter and Code Exploration
201012 cacert-at-tokyodebian
Nilfs usage-report-and-comparison-at-tokyodebian

DIY Akamai Globe in 50 Minutes

  • 1.
    1 | ©2019 Akamai | ConfidentialDIY Akamai Globein 50 MinutesTaisuke Yamada<tayamada@akamai.com>
  • 2.
    2 | ©2019 Akamai | Confidential今日のお題: Akamai Globe
  • 3.
    3 | ©2019 Akamai | Confidential今日のお題: Akamai Globe最近のAkamai APIを使って、自分専用のAkamai Globe(みたいなもの)を作ってみよう!
  • 4.
    4 | ©2019 Akamai | Confidentialこのセッションのゴール• データ可視化の楽しさを知ってほしい• 既成ツールにない機能も案外作れると感じてほしい• ついでに、Akamai APIももっと使ってみてほしい!
  • 5.
    5 | ©2019 Akamai | Confidentialこのセッションのゴール• データ可視化の楽しさを知ってほしい• 既成ツールにない機能も案外作れると感じてほしい• ついでに、Akamai APIももっと使ってみてほしい!ついでに、Akamai APIももっと使ってみてほしい!
  • 6.
    6 | ©2019 Akamai | Confidential今日お伝えしたいこと「巨人の肩に乗ろう」
  • 7.
    7 | ©2019 Akamai | Confidential巨人の肩に乗る「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3
  • 8.
    8 | ©2019 Akamai | Confidential現代ITの巨人 「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3Cloud Computing
  • 9.
    9 | ©2019 Akamai | Confidential現代ITの巨人 「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3Cloud ComputingOpen Source Software
  • 10.
    10 | ©2019 Akamai | Confidentialそういうわけで、今日の話は・・・1. まず、クラウドサービスを使って、ノープログラミングでのデータ可視化をやってみよう!2. 次に、オープンソースソフトウェアを使って、簡単なプログラミングだけでAkamai Globeを作ってみよう!3. おまけに、Akamai Globeにはない機能まで追加してみよう!
  • 11.
    11 | ©2019 Akamai | Confidentialクラウドサービスの肩に乗る
  • 12.
    12 | ©2019 Akamai | Confidential大変・面倒なことはクラウドサービス送りの時代• ストレージ• DAS, NAS, SAN,ObjectStorage, ...• データベース• SQL-DB, KVS, DocumentDB, ...• サーバ、処理系• VM, Container, Runtime, Function• ネットワーク• LAN, WAN, VPN• クラスタ構築・運用• トレーシング• ロギング• 認証・認可• メッセージキュー• プッシュ通知• 各種APIサービス• データ分析・可視化
  • 13.
    13 | ©2019 Akamai | Confidential大変・面倒なことはクラウドサービス送りの時代• ストレージ• DAS, NAS, SAN,ObjectStorage, ...• データベース• SQL-DB, KVS, DocumentDB, ...• サーバ、処理系• VM, Container, Runtime, Function• ネットワーク• LAN, WAN, VPN• クラスタ構築・運用• トレーシング• ロギング• 認証・認可• メッセージキュー• プッシュ通知• 各種APIサービス• データ分析・可視化
  • 14.
    14 | ©2019 Akamai | Confidentialやってみよう3クラウド連携のノープログラミング可視化Amazon Simple StorageService (S3)Google BigQuery
  • 15.
    15 | ©2019 Akamai | Confidential協力・データ提供: https://www.scalemates.com/
  • 16.
    16 | ©2019 Akamai | Confidential実は弊社社員協力のプラモ趣味サイトで、そこそこのトラフィックがあり、当然アカマイ化されている協力・データ提供: https://www.scalemates.com/
  • 17.
    17 | ©2019 Akamai | Confidential素材: Akamai DataStream APIカスタマイズした形で、アカマイ基盤でのログ、パフォーマンスデータ、エラー、発生イベントを生ログ・集約データの形でPush/Pullアクセスできる
  • 18.
    18 | ©2019 Akamai | ConfidentialAkamai as DataSourceの歴史• Log Delivery Service (LDS)• 生ログ蓄積・管理サービス• 指定先ストレージにバッチ転送 or メール(歴史を感じる・・・)• Download Receipt• ログ蓄積ではなくアクセス情報をストリーム的に流してくれる(Push)• Akamai Cloud Monitor• DR同様だが、より情報・形式がリッチな形で形式も扱いやすい(Push)• Akamai DataStream• サーバサイドの生ログでも要約データでも好きな方を収集できる• ストリーム的にPushもするし、アカマイ側で集積しているデータをPullもできる• Akamai mPulse API• クライアント側から採取したデータにPull方式でアクセスできる
  • 19.
    19 | ©2019 Akamai | ConfidentialAkamai as DataSourceの歴史• Log Delivery Service (LDS)• 生ログ蓄積・管理サービス• 指定先ストレージにバッチ転送 or メール(歴史を感じる・・・)• Download Receipt• ログ蓄積ではなくアクセス情報をストリーム的に流してくれる(Push)• Akamai Cloud Monitor• DR同様だが、より情報・形式がリッチな形で形式も扱いやすい(Push)• Akamai DataStream• サーバサイドの生ログでも要約データでも好きな方を収集できる• ストリーム的にPushもするし、アカマイ側で集積しているデータをPullもできる• Akamai mPulse API• クライアントから採取したデータにPull方式でアクセスできる歴史的には様々な提供形態がありますが、生ログ保管用のLDS、そして下2つのDataStreamとmPulse APIが主力となります。
  • 20.
    20 | ©2019 Akamai | ConfidentialAkamai DataStream API• リアルタイムでアカマイ基盤からのログ・モニタリング情報を取得可能• 詳細な生ログ、集約された統計情報のどちらにも対応• 設定で伝達・取得項目を選択し、きめ細かく制御可能• Push API• 規定のエンドポイント・サービスにJSON形式で送り込む• Splunk, SumoLogic, Amazon S3に対応• Pull API• 最大24h分のデータから、任意のデータをJSON形式で取得可能
  • 21.
    21 | ©2019 Akamai | ConfidentialAkamai mPulse API• リアルタイムでウェブブラウザ側からのモニタリングデータを提供• ブラウザ側でのモニタリングのため、直帰率などの行動指標も取得可能• 詳細な時系列データ、集約された統計情報の両方に対応• REST APIのクエリパラメータで多様な絞り込みに対応• Pull APIのみサポート• 最大13ヶ月分の蓄積データからJSON形式でデータ取得可能Akamai DataStreamがアカマイ基盤側から見たデータ、Akamai mPulse APIがエンドユーザー(ブラウザ)側から見たデータ、とちょうど対になっている形となります。
  • 22.
    22 | ©2019 Akamai | Confidentialはじめよう: 登場人物Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo Viz
  • 23.
    23 | ©2019 Akamai | Confidential動作の流れ (1/3)Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo VizAkamai DataStream のデータプッシュ機能を使い、Amazon S3にリアルタイムにデータ投入を行う①
  • 24.
    24 | ©2019 Akamai | Confidential動作の流れ(2/3)Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo VizGBQのData Transfer機能を使い、適時S3上のデータをインポートする①②
  • 25.
    25 | ©2019 Akamai | Confidential動作の流れ(3/3)Amazon Simple StorageService (S3)Google BigQuery BigQuery Geo VizBigQuery Geo Viz よりGBQにクエリを発行し、取得したデータをマッピング①②③
  • 26.
    26 | ©2019 Akamai | Confidentialノープログラミング。でも設定はあります。• Akamai DataStream• Raw DataStream の Push 設定• Amazon S3• バケットの用意と読み書き用のアクセスキー情報• Google BigQuery• DataStreamデータの保存先テーブル(スキーマ定義)• S3からのData Transfer設定• BigQuery Geo Viz• 可視化したい情報を抜いてくるためのクエリ• 可視化パラメータ(描画色や大きさなど)
  • 27.
    27 | ©2019 Akamai | ConfidentialAkamai DataStreamの設定
  • 28.
    28 | ©2019 Akamai | ConfidentialAkamai DataStreamの設定DataStreamからS3のどのバケット・フォルダにPushするのかを指定し、AWS側で発行したアクセスキーをあわせて設定します。
  • 29.
    29 | ©2019 Akamai | ConfidentialAkamai DataStreamの設定最後に、ログデータのどのフィールドをプッシュ送信するか指定します。サンプリングレートも1-100%の間で指定できるので、ストレージ側の容量にあわせたデータ取得が可能です。
  • 30.
    30 | ©2019 Akamai | ConfidentialGoogle BigQuery の設定今度は最終的にデータを入れるGBQ側でテーブルを作成します。ここでのポイントは、DataStreamからプッシュされるJSONデータの構造に合わせて、GBQでサポートされているRECORD型をテーブル定義に使うことです。
  • 31.
    31 | ©2019 Akamai | ConfidentialDataStream JSONとBigQuery Table SchemaJSONのような構造のあるデータは、RECORD型にマッピングすると変換ルーチン不要で取り込める
  • 32.
    32 | ©2019 Akamai | ConfidentialGBQ Data Transfer 設定〜〜テーブル定義ができれば、後は転送設定だけです。設定画面の下にある形式・許容エラー数・未知データのスキップ設定も忘れずに!取得データはJSON形式多少のエラーでは止めない未知データはスキップ
  • 33.
    33 | ©2019 Akamai | Confidential転送結果
  • 34.
    34 | ©2019 Akamai | Confidential3クラウド連携の可視化をしてみよう!DEMO
  • 35.
    35 | ©2019 Akamai | Confidential
  • 36.
    36 | ©2019 Akamai | Confidential
  • 37.
    37 | ©2019 Akamai | Confidential可視化完了
  • 38.
    38 | ©2019 Akamai | Confidentialまとめ• ノープログラミングでもここまでできる• システム間の配管作業、プラレール遊びのような楽しさがある• 学び:自己記述的なデータでのシステム連結は強力
  • 39.
    39 | ©2019 Akamai | Confidentialところで・・・
  • 40.
    40 | ©2019 Akamai | Confidentialまだ、地球になってないよね?
  • 41.
    41 | ©2019 Akamai | Confidentialオープンソースの肩に乗る
  • 42.
    42 | ©2019 Akamai | Confidential現代ITの巨人 「私がさらに遠くを見ることができたとしたら、それは単に私が巨人の肩に乗っていたからです。」https://ja.wikiquote.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B6%E3%83%83%E3%82%AF%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3Cloud ComputingOpen Source Software
  • 43.
    43 | ©2019 Akamai | Confidential世の様々なサービスで使われるOSSサービスオープンソースなミドルウェア・ライブラリ・OS・運用管理基盤・etc・etc・・・サービスだけ使っていると標準提供されていないものが欲しい場合に詰んでしまう。。。
  • 44.
    44 | ©2019 Akamai | Confidential世の様々なサービスで使われるOSSサービスオープンソースなミドルウェア・ライブラリ・OS・運用管理基盤・etc・etc・・・ないものは作ってみよう!OSSの肩も結構高いよ!APIデータ
  • 45.
    45 | ©2019 Akamai | Confidential今回利用するOSSGIO.js C3.js
  • 46.
    46 | ©2019 Akamai | Confidential全体構成今回作る何か(*1) 画像はイメージです
  • 47.
    47 | ©2019 Akamai | Confidential全体動作serverclient①今度はDataStream Pull APIを使い、サーバ側より定期的にログデータを取得し、GIO.js用のデータに変換・保存しますloop DataStream Pull API
  • 48.
    48 | ©2019 Akamai | Confidential全体動作serverclient①ブラウザでDIY Globe画面を開くと、XHR callでこの定期取得しているデータを取得し、GIO.jsで可視化。DIY Akamai Globeの完成です!loop DataStream Pull API②GET pageGET statusloop③
  • 49.
    49 | ©2019 Akamai | Confidential全体動作serverclient①loop DataStream Pull API②GET pageGET statusloop③④GET country?cc=FRmPulse Query APIせっかくのDIYなので拡張しましょう。GIO.jsの国選択イベントを拾い、その国でのパフォーマンスデータをXHR call→mPulseAPIのリレーをしつつ取得し、C3.jsで可視化。これで本当の完成!
  • 50.
    50 | ©2019 Akamai | ConfidentialDIY Akamai Globeを動かしてみたDEMO
  • 51.
    51 | ©2019 Akamai | Confidential超はやわかりGIO.js
  • 52.
    52 | ©2019 Akamai | Confidential超はやわかりDIY Akamai Globe単に非同期ループで定期的に取得した内容をGIO.jsのaddData APIに渡し続けるだけ
  • 53.
    53 | ©2019 Akamai | ConfidentialDataStream Raw Log → GIO.js 形式の変換{"data": [{"type": "Raw",..."geo": {"country": "US",...},"network": {..."bw": "5000"},...}, {"type": "Raw",...左の DataStream Raw Log (JSON) 形式のたった2つのフィールドを抜き出し、GIO.jsが求める{e:, i:, v:}の形式にすればいいだけ
  • 54.
    54 | ©2019 Akamai | Confidential定番JSON加工ツール: jq(1)$ jq -r '[.data[] | select(.geo.country) | {"e": .geo.country,"v": .network.bw | tonumber}] | group_by(.e) | map({"i": "GB","e": .[0].e,"v": map(.v) | add})' < raw.json > status.json{"data": [{"type": "Raw",..."geo": {"country": "US",...},"network": {..."bw": "5000"},...}, {"type": "Raw",...左のDataStream Raw LogのJSON形式は上の7行ほどのjqコマンドでGIO.jsに渡すデータ構造に変換できる。つまり、ここもプログラミング不要に。この生成された結果をGIO.jsでロードする
  • 55.
    55 | ©2019 Akamai | ConfidentialDataStream API + 変換の全体像上の3行がDataStream APIを呼び出し、GIO.js向けのデータ変換をする中核部分
  • 56.
    56 | ©2019 Akamai | ConfidentialmPulse API + C3.js地球全体の可視化選択した国のデータ可視化DataStream APImPulse API
  • 57.
    57 | ©2019 Akamai | ConfidentialmPulse Query APIhttps://developer.akamai.com/api/web_performance/mpulse_query/v2.htmlAPI 機能$API_URL/summary ロードタイム中央値などの全体的な集計結果を返す$API_URL/histogram ロードタイムの区間毎に、そのアクセス件数を分布として返す$API_URL/sessions-per-page-load-time ロードタイムの区間毎に、その範囲に収まったセッション数を返す$API_URL/metric-per-page-load-time ロードタイムの区間毎に、その群での直帰率などの追加データを返す$API_URL/by-minutes 指定日のアクセスについて、分単位でロードタイムを返す$API_URL/geography 各国別に集計したパフォーマンス集計結果を返す$API_URL/page-groups ページグループ別に集計したパフォーマンス集計結果を返す$API_URL/browsers ブラウザ別に集計したパフォーマンス集計結果を返す$API_URL/bandwidth 帯域別に集計したパフォーマンス集計結果を返す$API_URL/ab-tests A/Bテストパターン別に集計したパフォーマンス集計結果を返す$API_URL/timers-metrics 各種パフォーマンス指標や追加指標単位の集計結果を返す$API_URL/metrics-by-dimension 指定の指標を軸にして、ユーザーの行動計測データを返す$API_URL/dimention-values 個々の指標で、フィルタ条件として指定できる値の一覧を返す
  • 58.
    58 | ©2019 Akamai | ConfidentialmPulse Query APIhttps://developer.akamai.com/api/web_performance/mpulse_query/v2.htmlAPI 機能$API_URL/summary ロードタイム中央値などの全体的な集計結果を返す$API_URL/histogram ロードタイムの区間毎に、そのアクセス件数を分布として返す$API_URL/sessions-per-page-load-time ロードタイムの区間毎に、その範囲に収まったセッション数を返す$API_URL/metric-per-page-load-time ロードタイムの区間毎に、その群での直帰率などの追加データを返す$API_URL/by-minutes 指定日のアクセスについて、分単位でロードタイムを返す$API_URL/geography 各国別に集計したパフォーマンス集計結果を返す$API_URL/page-groups ページグループ別に集計したパフォーマンス集計結果を返す$API_URL/browsers ブラウザ別に集計したパフォーマンス集計結果を返す$API_URL/bandwidth 帯域別に集計したパフォーマンス集計結果を返す$API_URL/ab-tests A/Bテストパターン別に集計したパフォーマンス集計結果を返す$API_URL/timers-metrics 各種パフォーマンス指標や追加指標単位の集計結果を返す$API_URL/metrics-by-dimension 指定の指標を軸にして、ユーザーの行動計測データを返す$API_URL/dimention-values 個々の指標で、フィルタ条件として指定できる値の一覧を返すmPulse APIはAPIとしての提供機能がかなり多いため、本日は概要までの紹介に留めさせていただきます。
  • 59.
    59 | ©2019 Akamai | ConfidentialmPulse APIの応答をグラフ化するDataStream+GIO.js よりは若干長くなるが、mPulse APIの呼び出しが145、それをC3.jsで利用するための変換が146-149、以降の151-行の部分はすべてグラフ作成と見た目制御の部分で、かなり簡潔に書くことができる。
  • 60.
    60 | ©2019 Akamai | Confidentialまとめ
  • 61.
    61 | ©2019 Akamai | Confidentialまとめ• Akamai DataStream 紹介(アカマイ基盤側のログ取得)• Akamai mPulse API 紹介(クライアント側データの取得)• クラウドサービスによるノープログラミングでのデータ可視化• GIO.js, C3.jsといったオープンソースライブラリでのデータ可視化• 案外簡単なDIY Akamai Globe(もどき)の制作
  • 62.
    62 | ©2019 Akamai | Confidentialまとめ• Akamai DataStream 紹介(アカマイ基盤側のログ取得)• Akamai mPulse API 紹介(クライアント側収集データの取得)• クラウドサービスによるノープログラミングでのデータ可視化• GIO.js, C3.jsといったオープンソースライブラリでのデータ可視化• 案外簡単なDIY Akamai Globe(もどき)の制作このセッションを通じ、「なんだ、案外簡単じゃないか」「これならちょっとつついてみようかな」と思って頂けたなら幸いです。ありがとうございました!
  • 63.
    © 2019 Akamai| Confidential63

[8]ページ先頭

©2009-2025 Movatter.jp