2019年05月09日(木)

RubyKaigi 2019 Day1 コンテナ軽量化チャレンジ

kento-hamasu

こんにちは。GMO kitaQ ハマスです。
*GMO kitaQはGMOインターネット小倉拠点の愛称です。

先日イベント情報に載せました【RubyKaigi 2019に協賛します!】に記載のRubyKaigi 2019に参加してまいりました!

このブログはDay1の様子をお伝えいたします。

 

概要

本RubyKaigiは3日間の日程で開催され、GMOインターネットとしましてはブース出展と共にブースにて、

各日「GMO kitaQ VS GMOインターネット東京拠点」を開催しておりました。

以下は日程です。


Day1
コンテナ軽量化チャレンジ
Dockerイメージのファイル軽量化に挑みます。


Day2
アプリケーション高速化チャレンジ
Rubyで動くWebアプリケーションの高速化に挑みます。


Day3
サービスメッシュ適合チャレンジ
マイクロサービスに関わる様々な課題に挑みます。


本記事はDay1【コンテナ軽量化チャレンジ】にて白熱した戦いを演じた(つもり)の私がその戦いを記した手記となります。
*Dockerとは:非常に軽量なコンテナ型のアプリケーション実行環境。(ConoHaテンプレート一覧説明より)

出題者&挑戦者

挑戦者(GMO kitaQ):インフラの運用保守担当。業務でInfrastructure as Codeでインフラを開発/構築する経験は浅い。

出題者(東京拠点):スーパー凄腕敏腕辣腕エンジニア

 

↑↑ブースはこんな感じ

 

~10:00

Ruby会議へ参加するため小倉から博多へ向かう。<小倉⇔博多間は新幹線で約15分!近い!早い!>
Ruby会議の看板を写真撮影したらMatzが映り込み若干テンションが上がる
本会議の盛況ぶりを想像しながら会場の設営にいそいそと勤しむ下っ端ハマス

 

10:00

出題者より Day1の概要が発表される。
では改めて


【コンテナ軽量化チャレンジ!】Dockerイメージのファイル軽量化に挑みます。

 コンテナイメージを2.3G[Byte]から1.2G[Byte]にできるのか!?


・・・頑張ろう。
スタート直後は設営で甘かったところを少し少し補填しながら本挑戦の環境確認より開始する。
今回はMySQLとRuby on railsをDockerで構築。RubyKaigiで活躍するRubyistたちのために砂粒程度に役に立つために、初心者でもこの程度軽量化できるんだよ!やってみてね!を見せようと意気込む。

 

11:00~

少しだけ事前に調べていた前情報と共にイメージ軽量化を始める。
MySQL,Railsは出題者により無駄に肥大に肥大を重ねたイメージファイル。

つまり、「Docker」「軽量化」でネット検索をした際に”やるべきこと”の逆を行っているはず!

 

午前中の試行錯誤

-RUNコマンドを極力一つに
レイヤーを減らす

-apt-getにno-install-recommendsつけて推奨パッケージを入れない
パッケージをできるだけ小さく

-apt install後にclean,またパッケージのキャッシュクリア
軽量化の妨げになるものを省く

 

結果:2.3G[Byte]⇒1.4G[Byte]

 

13:00~14:00

しばしの休憩。ほかのブースの出し物見学やノベルティ収集にてほくほく
スタンプラリーに参戦。謎のこだわりを発動しGMOインターネットから始まりGMOペパボさんで終わる回り方

 

14:00~

つかの間のリフレッシュから戻り、ラストスパートに突入。現在の値は1.4G[Byte]目標の1.2G[Byte]まではあと0.2G[Byte]…

あとちょっとだし挑戦者が勝つはず!!という応援の声が聞こえてくる・・・


来場者の皆様もチャレンジャーへの勝利予想ステッカーが捗ること捗ること・・・
しかしながら、この0.2G[Byte]が遠い。簡単な書き換えだけでできることはやりつくした。

残り挑戦時間は1時間…こうなれば抜本的改良を!

(これの考え方が納期目前のプロジェクトに舞い込むとデスマーチを生み出します。用法容量をお守りください。)

*弊社にはそんなものありません。この考え方はフィクションです。実在の人物や団体などとは関係ありません。

 

最後の挑戦

-イメージベースをalpine linuxやBusyBoxなどに変更する。
付け焼き刃の知識では短絡的変更ではビルドに失敗し続ける・・・・
-マルチステージビルドが出題者より解禁されたので手を出し始める。
付け焼き刃の知識では(以下略
-いろいろ試行錯誤・・・

 

最後の戦いを繰り広げている間、どこからともなく神(会場に訪れる屈強なRubyist達)からのお告げが聞こえてくる

 

( ˘ω˘ )。oO(RailsのBundle install時にはwithoutオプションを使うと不要なドキュメントが省けるよ・・・)

( ˘ω˘ )。oO(マルチステージビルドをもうちょっと早くから導入するのです・・・)

( ˘ω˘ )。oO(軽量なベースイメージをもっと早く導入したらうまくいったかもです・・・)

( ˘ω˘ )。oO(不要なコマンドやライブラリが残っているようです・・・)

 

彼らの力を受け最後の戦いは過熱していく

 

結果発表

2.3G[Byte]から1.4G[Byte]まで軽量化されたDockerイメージ、

果たして最後の挑戦により目標までの差分0.2G[Byte]がどれだけ縮めることができたのか!!

・・・( ˘ω˘ )?

 

チャレンジ失敗・・・1.4G[Byte]まで軽量化されたイメージファイルが1.6G[Byte]まで増えている?
短納期で新たな挑戦はこけることが多いようです。皆さん今後とも用法用量にはお気を付けください。
個人的には付け焼き刃でしのいだDay1【コンテナ軽量化チャレンジ!】もう一度セルフチャレンジを実施してみたいと思います。

RybyKaigiの開催された4/18~4/20,その後1週間働けばゴールデンウイーク!

このゴールデンウイークの10連休を活用し自己学習に努めます。

出題者からの出題に敗北を喫してしまったGMO kitaQ、この戦いはDay2/Day3に続きます。今後の戦いに期待・・・

 

その他情報

Docker環境が最初から構築されているテンプレートまでも用意されているVPS、ConoHa↓↓
https://www.conoha.jp/vps/

みんな大好きこのはちゃん公式サイト↓↓
https://conoha.mikumo.com/

 

 

Rubykaigi Day2/Day3の記事は下記

RubyKaigi 2019 Day2

RubyKaigi 2019 Day3 k8s&Istioチャレンジ

この記事をシェアする

関連のおすすめ記事

CAREERS
エンジニア積極採用中

GMOインターネットグループでは、積極的な採用活動も行っています。GMOインターネットグループのエンジニア採用情報は下記リンクからご覧になれます。