blob: 98834850d979e1af533e94310bc9b96a28e36ca0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
<!DOCTYPE html>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="nsfisis">
<meta name="copyright" content="© 2023 nsfisis">
<meta name="description" content="ISUCON 13 に参加した。チーム名「うつしもゆ」、最終スコア 13,580 点">
<meta name="keywords" content="ISUCON">
<meta property="og:type" content="article">
<meta property="og:title" content="ISUCON 13 に参加した|REPL: Rest-Eat-Program Loop">
<meta property="og:description" content="ISUCON 13 に参加した。チーム名「うつしもゆ」、最終スコア 13,580 点">
<meta property="og:site_name" content="REPL: Rest-Eat-Program Loop">
<meta property="og:locale" content="ja_JP">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>ISUCON 13 に参加した|REPL: Rest-Eat-Program Loop</title>
<link rel="stylesheet" href="/style.css?h=be0ee160f3d759f939c4a7f090117ae8">
</head>
<body class="single">
<header class="header">
<div class="site-logo">
<a href="/">REPL: Rest-Eat-Program Loop</a>
</div>
<nav class="nav">
<ul>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/posts/">Posts</a>
</li>
<li>
<a href="/slides/">Slides</a>
</li>
<li>
<a href="/tags/">Tags</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="post-single">
<header class="post-header">
<h1 class="post-title">ISUCON 13 に参加した</h1>
<ul class="post-tags">
<li class="tag">
<a href="/tags/isucon/">ISUCON</a>
</li>
</ul>
</header>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
<ol>
<li class="revision">
<time datetime="2023-12-03">2023-12-03</time>: 公開
</li>
</ol>
</section>
<section id="section--intro">
<h2><a href="#section--intro">はじめに</a></h2>
<p>
先日 11月25日、 <a href="https://isucon.net/archives/57801192.html" rel="noreferrer" target="_blank">ISUCON 13</a> に参加した。 ISUCON への参加は今回が初めてとなる。 私 nsfisis の1人チーム「うつしもゆ」として参加し、最終スコアは 13,580 点だった。使用言語は Go。
</p>
<div class="admonition">
<div class="admonition-label">
NOTE
</div>
<div class="admonition-content">
<p>
「ISUCON」は、LINEヤフー株式会社の商標または登録商標です。 <a href="https://isucon.net/" rel="noreferrer" target="_blank">ISUCON 公式サイトはこちら。</a>
</p>
</div>
</div>
</section>
<section id="section--goals">
<h2><a href="#section--goals">目標</a></h2>
<p>
今回は初参加ということもあり、目標を以下のように定めた。
</p>
<ul>
<li>
正のスコアを取る
<ul>
<li>
ISUCON ではサーバ動作の整合性がチェックされ、失敗するとスコア 0 となる
</li>
</ul>
</li>
<li>
速度改善以外に時間を浪費しない (= ハマらない)
<ul>
<li>
プロビジョニング、デバッグ、ミドルウェアの設定方法の調査など、性能改善に寄与しない時間を最小限にする
</li>
</ul>
</li>
</ul>
</section>
<section id="section--strategy">
<h2><a href="#section--strategy">戦略</a></h2>
<p>
ISUCON で高スコアを出す戦略については、戦闘力の高い方々が良質な記事を書いてくださっている。 ここでは、上述したような低い目標を達成するための戦略について書こうと思う。
</p>
<section id="section--strategy--do-not-destroy-environment">
<h3><a href="#section--strategy--do-not-destroy-environment">環境を破壊しない</a></h3>
<p>
ミドルウェアの設定やアプリケーションコードなど、変更を加えるあらゆるものは、必ずバックアップを取るか Git で管理する。 復旧不能になって環境ごと作り直すことだけは必ず避ける。
</p>
</section>
<section id="section--strategy--revert-changes-immediately">
<h3><a href="#section--strategy--revert-changes-immediately">すぐに変更を取り消す</a></h3>
<p>
それでも壊してしまったときは、即座に変更を取り消す。壊れた理由を調べることに固執しない。
</p>
</section>
<section id="section--strategy--do-small-deployment">
<h3><a href="#section--strategy--do-small-deployment">小さくデプロイする</a></h3>
<p>
一度に複数の変更を加えず、可能な限り小さな単位でデプロイする。そしてその都度ベンチマークを走らせ、整合性チェックが通るかどうかを (当然速くなっているかどうかも) 確かめる。
</p>
</section>
<section id="section--strategy--use-familiar-tools">
<h3><a href="#section--strategy--use-familiar-tools">使い慣れた道具を使う</a></h3>
<p>
使用する言語、ミドルウェア、ツール類を、使い慣れたものに限定する。 「このツールのオプションはほとんどそらで指定できる」と言えるようなものだけを使う。 「自分では使ったことがないが ISUCON 強者がお勧めしていた」といった理由でツールを選定しない (もちろん、本番までに練習して習熟するという選択肢は存在する)。
</p>
</section>
</section>
<section id="section--performance-optimization">
<h2><a href="#section--performance-optimization">パフォーマンスの最適化</a></h2>
<p>
もっと強い人の記事を参考にしてほしい。
</p>
</section>
<section id="section--outro">
<h2><a href="#section--outro">おわりに</a></h2>
<p>
事前の準備も含めて、大変楽しいイベントだった。次回があるなら是非また参加したい。その際は、順位やスコアを目標として立てられるようになりたいものである。
</p>
</section>
</div>
</article>
</main>
<footer class="footer">
© 2021 nsfisis
</footer>
</body>
</html>
|