rabbit-slide-unasuke-cndf2023 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2112e88dacf8cb6e7310ccf2022c76ca218b1b650f8adbb3e2a8c8fe54da534e
4
+ data.tar.gz: cf400e387301f2427c5f6cfd8b51f7b5e45a87fd122b44989dab70543167c034
5
+ SHA512:
6
+ metadata.gz: 5ededba3c91e07496228738ebd72d460c62fc934dbb57d3f09eb5d688f4932e9ce5642eaa686eb83f668aec1a5c92d40c2f06ee12dd385b5fbe6e88d6f4529db
7
+ data.tar.gz: a9f1e1827583fe14e7ba5eec49390717408975df25098d5ab11f20c74e9c086077eb2ee018f8f41aeae697d3e06a5047575dd93cd714882f0cdaa08e9b0f26bf
data/.rabbit ADDED
@@ -0,0 +1,2 @@
1
+ --size 1920,1080
2
+ slide.md
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # CNDF2023
2
+
3
+ * https://event.cloudnativedays.jp/cndf2023/talks/1890
4
+ * https://github.com/unasuke/cndf2023-infra
5
+
6
+ ## 作者向け
7
+
8
+ ### 表示
9
+
10
+ rake
11
+
12
+ ### 公開
13
+
14
+ rake publish
15
+
16
+ ## 閲覧者向け
17
+
18
+ ### インストール
19
+
20
+ gem install rabbit-slide-unasuke-cndf2023
21
+
22
+ ### 表示
23
+
24
+ rabbit rabbit-slide-unasuke-cndf2023
25
+
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
data/config.yaml ADDED
@@ -0,0 +1,23 @@
1
+ ---
2
+ id: cndf2023
3
+ base_name: slide
4
+ tags: ['quic', 'aws', 'gcp']
5
+ presentation_date: '2023-08-03'
6
+ presentation_start_time:
7
+ presentation_end_time:
8
+ version: 1.0.0
9
+ licenses: ['MIT']
10
+ slideshare_id:
11
+ speaker_deck_id:
12
+ vimeo_id:
13
+ youtube_id:
14
+ width: 1920
15
+ height: 1080
16
+ author:
17
+ markup_language: :rd
18
+ name: unasuke
19
+ email: yusuke1994525@gmail.com
20
+ rubygems_user: unasuke
21
+ slideshare_user:
22
+ speaker_deck_user:
23
+ source_code_url: https://github.com/unasuke/cndf2023
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/img/icon.jpg ADDED
Binary file
Binary file
data/img/title_bg.png ADDED
Binary file
Binary file
data/slide.md ADDED
@@ -0,0 +1,219 @@
1
+ # パブリッククラウドにおける\\nQUIC現状確認2023年8月編
2
+
3
+ author
4
+ : unasuke (Yusuke Nakamura)
5
+
6
+ content-source
7
+ : CloudNative Days Fukuoka 2023
8
+
9
+ date
10
+ : 2023-08-03
11
+
12
+ theme
13
+ : theme
14
+
15
+ # 自己紹介
16
+
17
+ * Name: うなすけ
18
+ * Work: フリーランス
19
+ * Kaigi on Rails オーガナイザー (10/27-28 開催)
20
+ * RubyでQUICを実装しようとしている
21
+ * {::tag name='x-small'}GitHub <https://github.com/unasuke>{:/tag}
22
+ * {::tag name='x-small'}ActivityPub <https://mstdn.unasuke.com/@unasuke>{:/tag}
23
+ * {::tag name='x-small'}X (Twitter) <https://twitter.com/yu_suke1994>{:/tag}
24
+
25
+ ![](img/icon.jpg){:relative_width='24' align='right' relative_margin_right='-8' relative_margin_top='20'}
26
+
27
+ # "QUIC" ?
28
+
29
+ * > QUIC is a secure general-purpose transport protocol.
30
+ * <https://www.rfc-editor.org/rfc/rfc9000.html>
31
+ * 2021年5月に標準化
32
+ * UDPを用いる
33
+ * [QUICをゆっくり解説 – 新しいインターネット通信規格 \| IIJ Engineers Blog](https://eng-blog.iij.ad.jp/quic)
34
+
35
+ # 実はもう身近なQUIC
36
+
37
+ * <https://www.youtube.com>
38
+ * <https://fonts.google.com/>
39
+ * <https://fonts.gstatic.com>
40
+
41
+ 気づいていないだけで、普段の通信の数割はもうQUICかも
42
+
43
+ # 最近のQUIC
44
+
45
+ * QUIC Version 2 (2023-05)
46
+ * <https://www.rfc-editor.org/rfc/rfc9369.html>
47
+ * > QUIC version 2 is meant to mitigate ossification concerns and exercise the version negotiation mechanisms.
48
+ * IETF 117 San Francisco (2023-07-24〜)
49
+ * draft-ietf-quic-multipath-05
50
+ * draft-ietf-quic-load-balancers-16
51
+ * draft-ietf-quic-reliable-stream-reset-01
52
+ * etc
53
+
54
+ # NGINX 1.25.0
55
+
56
+ ![](img/nginx_news.png){:relative_width="90" align="center"}
57
+
58
+ {:.center}
59
+ {::tag name='x-small'}<https://nginx.org>{:/tag}
60
+
61
+ # このセッションで話すこと
62
+
63
+ * 静的WebサイトでQUICを使う
64
+ * アプリケーションプロセスに対してQUICでアクセスする
65
+ * AWS, GCP
66
+ * NGINX, H2O
67
+ * **2023年8月時点での状況**
68
+
69
+ # このセッションで話さないこと
70
+
71
+ * QUICをサービスに導入する際の注意事項
72
+ * 話者にQUICのproductionでの運用経験はありません
73
+ * まだ仕様が固まってない(後述)
74
+
75
+ # 前準備
76
+
77
+ ![](img/chrome_devtools.png){:relative_width='70' align='center'}
78
+
79
+ {:.center}
80
+ Open DevTools!
81
+
82
+ # テスト用Webサイトについて
83
+ * <https://github.com/unasuke/cndf2023-infra>
84
+ * inspired by <https://www.httpvshttps.com>
85
+ * HTTP/2との速度比較が目的**ではない**
86
+ * 同じ経路でHTTP/2とHTTP/3を両方用意するのがちょっと面倒
87
+ * 多分わかりやすい差が出ない
88
+ * 長くても2023年8月いっぱいまでしか動かしません
89
+ * 静的なものは残すかも
90
+
91
+ # 静的WebサイトでQUICを使う
92
+ * Firebase Hosting (Fastly)
93
+ * Cloudflare Pages
94
+ * AWS CloudFront & S3
95
+ * GCP Cloud Load Balancing & Cloud Storage
96
+
97
+ # Firebase Hosting (Fastly)
98
+
99
+ ![](img/arch_firebase.png){:relative_width='70' align='center'}
100
+
101
+ * <https://firebase.cndf2023.unasuke.dev>
102
+ * Fastlyによる配信
103
+ * <https://firebase.google.com/terms/subprocessors>
104
+
105
+ # Cloudflare Pages
106
+
107
+ ![](img/arch_cloudflare.png){:relative_width='70' align='center'}
108
+
109
+ * <https://cndf2023.unasuke.dev>
110
+ * 正確にはこれはCloudflareをCloudFrontの前段に配置したもの
111
+
112
+ # AWS CloudFront & S3
113
+
114
+ ![](img/arch_aws_cf_s3.png){:relative_width='70' align='center'}
115
+
116
+ * <https://aws-cloudfront-s3.cndf2023.unasuke.dev>
117
+ * CloudFrontは明示的にHTTP/3を有効にできる
118
+ * <https://aws.amazon.com/jp/about-aws/whats-new/2022/08/amazon-cloudfront-supports-http-3-quic/>
119
+
120
+ # CloudFrontは明示的にHTTP/3を有効にできる
121
+
122
+ ![](img/cloudfront_http3.png){:relative_width='90' align='center'}
123
+
124
+ # AWS CloudFront & S3 (HTTP/3 VS HTTP/2)
125
+
126
+ * HTTP/3 (QUIC)
127
+ * <https://aws-cloudfront-s3.cndf2023.unasuke.dev>
128
+ * HTTP/2
129
+ * <https://aws-cloudfront-s3-http2.cndf2023.unasuke.dev>
130
+ * 違いが体感できますか?
131
+
132
+ # GCP Cloud Load Balancing & Cloud Storage
133
+
134
+ ![](img/arch_gcp_clb_cs.png){:relative_width='70' align='center'}
135
+
136
+ * <https://gcp-lb-storage.cndf2023.unasuke.dev>
137
+ * Cloud Storage単体でも……?
138
+
139
+ # 動的なアプリケーションでQUICを使う
140
+ * AWS CloudFront & ALB & Fargate
141
+ * AWS NLB & Fargate
142
+ * GCP Cloud Load Balancing & Cloud Run
143
+
144
+ # AWS CloudFront & ALB & Fargate
145
+
146
+ ![](img/arch_aws_cf_alb_fargate.png){:relative_width='80' align='center'}
147
+
148
+ * {::tag name='small'}<https://aws-cloudfront-fargate-nginx.cndf2023.unasuke.dev>{:/tag}
149
+ * nginx
150
+ * {::tag name='small'}<https://aws-cloudfront-fargate-h2o.cndf2023.unasuke.dev>{:/tag}
151
+ * h2o
152
+
153
+ # AWS NLB & Fargate
154
+
155
+ ![](img/arch_aws_nlb_fargate.png){:relative_width='80' align='center'}
156
+
157
+ * <https://aws-nlb-fargate-nginx.cndf2023.unasuke.dev>
158
+ * nginx
159
+ * <https://aws-nlb-fargate-h2o.cndf2023.unasuke.dev>
160
+ * h2o
161
+
162
+ # AWS NLB & Fargate
163
+ * NLBとFargateの組み合わせでUDP通信ができるようになっている(2020年)
164
+ * [AWS Fargate for Amazon ECS が Network Load Balancer を使用した UDP ロードバランシングのサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/aws-fargate-for-amazon-ecs-now-supports-udp-load-balancing-with-network-load-balancer/)
165
+
166
+ # GCP Cloud Load Balancing & Cloud Run
167
+
168
+ ![](img/arch_gcp_clb_cr.png){:relative_width='80' align='center'}
169
+
170
+ * <https://gcp-lb-cloudrun-nginx.cndf2023.unasuke.dev>
171
+ * <https://gcp-lb-cloudrun-h2o.cndf2023.unasuke.dev>
172
+ * Cloud Run単体でも……?
173
+
174
+ # GCP Cloud Load Balancer
175
+
176
+ ![](img/gcp_load_balancer_protocols.png){:relative_width='55' align='center'}
177
+
178
+ * {::tag name='small'}[ロードバランサの機能比較  \|  負荷分散  \|  Google Cloud](https://cloud.google.com/load-balancing/docs/features?hl=ja#protocol-to-backends){:/tag}
179
+ * {::tag name='small'}[Cloud CDN とロード バランシングで QUIC を使用して HTTP/3 でコンテンツを取得 \| Google Cloud 公式ブログ](https://cloud.google.com/blog/ja/products/networking/cloud-cdn-and-load-balancing-support-http3){:/tag}
180
+
181
+
182
+
183
+ # QUICをLoad Balancingするということ
184
+
185
+ * <https://datatracker.ietf.org/doc/draft-ietf-quic-load-balancers/>
186
+ * [HTTP/3をUDPロードバランサで分散するときの問題点 (AWS NLBで試してみた) - ASnoKaze blog](https://asnokaze.hatenablog.com/entry/2019/12/30/201331)
187
+ * [インフラエンジニアなら気になるQUICのロードバランサ (方式編) \| by Jun-ya Kato \| nttlabs \| Medium](https://medium.com/nttlabs/quic-load-balancer-design-82c5fbae8305)
188
+ * 議論&実験中
189
+
190
+ # 個人的所感
191
+ * CDNを前段に挟める静的WebサイトでQUICを使うのはよさそう
192
+ * 趣味の範囲でもHTTP/3を使える
193
+ * Web AppがQUICを受け付るのはまだ発展途上
194
+ * 標準化が見えてきている
195
+ * HTTP/2で通信できていれば十分なのでは
196
+ * HTTP/3にできなくて困るケースって?
197
+ * 静的assetsだけはHTTP/3というのは一手?
198
+
199
+ # まとめ 2023年8月
200
+
201
+ * 実は既に日常生活でQUICが使われている
202
+ * 静的WebサイトでHTTP/3を有効にするのはすぐできる時代
203
+ * 大手CNDもHTTP/3での配信が可能
204
+ * 静的なassetsだけHTTP/3で配信というのはアリかも
205
+ * QUIC-awareなload balancingはまだ議論段階
206
+
207
+
208
+ # 参考URL (1/2)
209
+ * [QUICをゆっくり解説 – 新しいインターネット通信規格 \| IIJ Engineers Blog](https://eng-blog.iij.ad.jp/quic)
210
+ * [サイトの HTTP3 化と DNS HTTPS RR および Alt-Svc Header によるアドバタイズ \| blog.jxck.io](https://blog.jxck.io/entries/2022-02-05/http3.html)
211
+ * [AWS Fargate for Amazon ECS が Network Load Balancer を使用した UDP ロードバランシングのサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/aws-fargate-for-amazon-ecs-now-supports-udp-load-balancing-with-network-load-balancer/)
212
+ * [ロードバランサの機能比較  \|  負荷分散  \|  Google Cloud](https://cloud.google.com/load-balancing/docs/features?hl=ja#protocol-to-backends)
213
+ * [Cloud CDN とロード バランシングで QUIC を使用して HTTP/3 でコンテンツを取得 \| Google Cloud 公式ブログ](https://cloud.google.com/blog/ja/products/networking/cloud-cdn-and-load-balancing-support-http3)
214
+ * <https://datatracker.ietf.org/doc/draft-ietf-quic-load-balancers/>
215
+ * [HTTP/3をUDPロードバランサで分散するときの問題点 (AWS NLBで試してみた) - ASnoKaze blog](https://asnokaze.hatenablog.com/entry/2019/12/30/201331)
216
+
217
+ # 参考URL (2/2)
218
+ * [インフラエンジニアなら気になるQUICのロードバランサ (方式編) \| by Jun-ya Kato \| nttlabs \| Medium](https://medium.com/nttlabs/quic-load-balancer-design-82c5fbae8305)
219
+ * [QUIC-LBを読んでみる Zenn](https://zenn.dev/eugene/articles/3b730bac2759da)
data/theme.rb ADDED
@@ -0,0 +1,113 @@
1
+ @default_foreground ||= @foreground
2
+ @default_background ||= @background
3
+ @default_shadow_color ||= @shadow_color
4
+
5
+ # pp font_families
6
+ font_color = '#333'
7
+ @default_font = 'BIZ UDPGothic'
8
+ @font_family = find_font_family(@default_font)
9
+ @bold_font = @default_font
10
+ @bold_font_family = find_font_family(@bold_font)
11
+ @monospace_font = 'Cica'
12
+ @monospace_font_family = find_font_family(@monospace_font)
13
+
14
+ @xxxx_large_font_size = screen_size(10 * Pango::SCALE)
15
+ @xxx_large_font_size = screen_size(8 * Pango::SCALE)
16
+ @xx_large_font_size = screen_size(6 * Pango::SCALE)
17
+ @x_large_font_size = screen_size(4.5 * Pango::SCALE)
18
+ @large_font_size = screen_size(4 * Pango::SCALE)
19
+ @normal_font_size = screen_size(3.5 * Pango::SCALE)
20
+ @small_font_size = screen_size(3.2 * Pango::SCALE)
21
+ @x_small_font_size = screen_size(3 * Pango::SCALE)
22
+ @xx_small_font_size = screen_size(2.8 * Pango::SCALE)
23
+ @xxx_small_font_size = screen_size(2.5 * Pango::SCALE)
24
+ @script_font_size = @x_small_font_size
25
+ @large_script_font_size = @small_font_size
26
+ @x_large_script_font_size = @large_font_size
27
+ @title_slide_title_font_size = @xxx_large_font_size
28
+
29
+ @block_quote_fill_color = "#f8f8f8"
30
+ @preformatted_fill_color = "#f8f8f8"
31
+ @default_headline_line_color = font_color
32
+
33
+ @title_slide_background_image = 'img/title_bg.png'
34
+ # @slide_background_image = 'img/bg.png'
35
+
36
+ # set_foreground(@default_foreground)
37
+ # set_background(@default_background)
38
+
39
+ add_image_path("ruby-images")
40
+ include_theme("default-icon")
41
+ # include_theme("default-title-text")
42
+ include_theme("default-text")
43
+ include_theme("default-title-slide")
44
+ include_theme("default-slide")
45
+ include_theme("default-item-mark")
46
+ include_theme("default-method-list")
47
+ include_theme("default-preformatted")
48
+ include_theme("default-block-quote")
49
+ include_theme("default-foot-text")
50
+ include_theme("default-description")
51
+ include_theme("image")
52
+ include_theme("table")
53
+ include_theme("newline-in-slides")
54
+ include_theme("per-slide-background-color")
55
+ include_theme("background-image-toolkit")
56
+ include_theme("per-slide-background-image")
57
+ include_theme("body-background-image")
58
+ include_theme("tag")
59
+ include_theme("syntax-highlighting")
60
+ include_theme("default-comment")
61
+
62
+ include_theme("title-slide-background-image")
63
+ include_theme("slide-background-image")
64
+
65
+ match(TitleSlide, "*") do |elems|
66
+ elems.horizontal_centering = true
67
+ elems.prop_set("size", @large_font_size)
68
+ set_font_family(elems)
69
+ end
70
+
71
+ match(TitleSlide, Title) do |titles|
72
+ titles.prop_set("size", @title_slide_title_font_size)
73
+ titles.padding_bottom = @space * 2
74
+ titles.prop_set("weight", "SemiBold")
75
+ end
76
+
77
+ match(Slide, HeadLine) do |heads|
78
+ heads.prop_set("size", @large_font_size)
79
+ heads.prop_set("weight", "bold")
80
+ end
81
+
82
+ match(TitleSlide) do |slides|
83
+ # slides.margin_left = 900
84
+ slides.vertical_centering = true
85
+ slides.prop_set "foreground", font_color
86
+ slides.prop_set("weight", "bold")
87
+ end
88
+ match(TitleSlide, Subtitle) do |subtitle|
89
+ subtitle.margin_top = -20
90
+ subtitle.prop_set("size", @large_font_size)
91
+ end
92
+ match(TitleSlide, Author) do |author|
93
+ author.margin_top = 50
94
+ author.prop_set("size", @large_font_size)
95
+ author.prop_set("weight", "normal")
96
+ end
97
+ match(TitleSlide, Place) do |place|
98
+ place.prop_set("size", @small_font_size)
99
+ end
100
+ match(TitleSlide, "*") do |elems|
101
+ elems.horizontal_centering = true
102
+ end
103
+
104
+ match(TitleSlide, Date) do |dates|
105
+ dates.prop_set("size", @small_font_size)
106
+ # dates.prop_set("style", "italic")
107
+ end
108
+
109
+ match(TitleSlide, ContentSource) do |sources|
110
+ sources.prop_set("size", @small_font_size)
111
+ sources.margin_bottom = @space
112
+ # sources.prop_set("style", "italic")
113
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-unasuke-cndf2023
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - unasuke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-08-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: |-
28
+ * https://event.cloudnativedays.jp/cndf2023/talks/1890
29
+ * https://github.com/unasuke/cndf2023-infra
30
+ email:
31
+ - yusuke1994525@gmail.com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - ".rabbit"
37
+ - README.md
38
+ - Rakefile
39
+ - config.yaml
40
+ - img/arch_aws_cf_alb_fargate.png
41
+ - img/arch_aws_cf_s3.png
42
+ - img/arch_aws_nlb_fargate.png
43
+ - img/arch_cloudflare.png
44
+ - img/arch_firebase.png
45
+ - img/arch_gcp_clb_cr.png
46
+ - img/arch_gcp_clb_cs.png
47
+ - img/chrome_devtools.png
48
+ - img/cloudfront_http3.png
49
+ - img/gcp_load_balancer_protocols.png
50
+ - img/icon.jpg
51
+ - img/nginx_news.png
52
+ - img/title_bg.png
53
+ - pdf/cndf2023-slide.pdf
54
+ - slide.md
55
+ - theme.rb
56
+ homepage: https://slide.rabbit-shocker.org/authors/unasuke/cndf2023/
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubygems_version: 3.4.6
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: CNDF2023
79
+ test_files: []