雑記帳

怪文書書庫

サイバーエージェントのおうちkubernetesインターンに参加した

巷では話題のおうちkubernetesインターンに参加してきました。おうちkubernetesについて詳しく知りたい方はこちらのブログを読んでみてください。

developers.cyberagent.co.jp

参加した動機

クラウドネイティブ技術に以前から興味があったのと、kubernetesを使ってみたいという気持ちで応募しました。参加特典でIntel NUCも貰えるという事でアツかった。

サイバーエージェントインターンは昨年度アドテクコンペに参加して以来です。この時もkubernetes(GKE)を使っていたのですが、最近業務でkubernetesを使っているとはいえ、ほぼ一年ぶりのkubernetesということになります。

www.cyberagent.co.jp

普段アプリケーション寄りの事をやることが多いのであまりインフラに触れるという事はないのですが、アプリケーションの運用に関しての知識は増やしたかったのでちょうどいい機会だと思いました。

f:id:shikugawa:20190921010847j:plain
人数分用意されているIntel NUC

内容

2日間で行うインターンで、1日目の午前中で軽い座学を行った後、各自でテーマを設定してやっていくって感じでした。このインターンの面白い所は実際にIntel NUCが配布されて、その中で仮想的なマルチノードクラスタを作ってその中で色々と作業を行っていくという形だった事です。今回はクラスタの構成ツールとしてkindを使っていました。

kind.sigs.k8s.io

やったこと

最近EnvoyにハマっていたのでEnvoyを使ってなにかしたいと思ってました。EnvoyはクラウドネイティブなHTTP Proxyで、Circuit BreakerやService DiscoveryみたいなService Meshの構築に必要な機能を一通り備えています。HTTP/2にも対応しているので、gRPCのロードバランシングなんかも出来ます。モダンなC++で書かれているのも個人的に好感度高くて最高です。C++はいいぞ。

www.envoyproxy.io

EnvoyにはHTTP Filterという機能があって、L7なIngress/Egressを掴んでヘッダを書き換えたりする機能があります。このフィルタはLua Scriptingでプログラマブルな通信の制御を行うことが可能なのでかなり色々な事ができそうです。これをうまく使ってA/Bテストのような仕組みに必要なネットワーク周りの処理をEnvoyに切り出せないかどうかを確かめるということをやりました。kubernetesインターンなので、必要なアプリやミドルウェアは全てkubernetesで再現できるようにしております。

github.com

詳しい内容に関しては後日Qiitaかなんかに上げます。

感想

新しめの技術を実際に手を動かして触ってみるという事を最近あまりやっていなかったのですが、このインターンでその楽しさを思い出しました。コードを書き始めた高校生の頃に戻ったかのような心持ちです。2日間しかないので作業時間はあまりないのですが、メンターさんのサポートがあるというのが心理的安全性につながっており、詰まったら積極的に質問できるという環境があったのが非常にありがたかったと思いました。おかげ様で最優秀逸般の誤家庭賞(!?)を頂くこともできました。

f:id:shikugawa:20190921011511j:plain
アベマ君ぬいぐるみとTシャツをもらった

ちなみに真ん中の青いぬいぐるみはGo言語のマスコットキャラクターのGopher君です。このインターンの参加者だった知り合いに購入をお願いしていたのですが、それが期間中に届いたみたいなので会場で引き取りました。このキモかわいさがいい味出してます。

参加特典のIntel NUCはもう一台買ってきて物理kubernetesクラスタを組んで使ってみたいと思います。

2日間ありがとうございました!!!!!!!

ベッド買い換えた

最近ベッドを買った。シングルサイズで予算15万以内というとこで探していた。新宿の大塚家具に行っていろいろ寝て試してみた結果ボトムマットレスマットレスを即購入するに至った。総額11万くらいだったので予算よりも安く済んだ。

 

今まで5000円くらいのパイプベッドとぺらぺらのマットレスで寝ていた。ベッドは人生の1/3過ごす場所なので金かけた方がいいのは間違いないのだが、そのことに気づいたのは今まで使っていたベッドが壊れてからの話だった。

 

新しいベッド、使用して3日目くらいになるのだが、どうも寝付きが悪い。多分今までと寝心地が違いすぎて体が馴染んでないのだと思う。

 

それでも毎日の睡眠が楽しみになったのは間違いない。今までの安いベッドと比較すると圧倒的な寝そべり心地の良さがそこにはある。

「響け!ユーフォニアム」という作品と向き合いたい

のんのんびより ばけーしょん」の感想を書いていたのですが、余りにもオタクオタクした記事になっていてキツい感じになってしまって公開したくなくなったので、代わりに武田綾乃さんの小説、「響け!ユーフォニアム 北宇治高校吹奏楽部へようこそ!」を読んだ感想でも書きます。

この作品は、アニメ「響け!ユーフォニアム」の原作小説という位置づけのものです。ちなみにアニメは冒頭しか見てないです。理由は後で話します。

なぜこの本を手に取ったのか

武田綾乃さんの小説は、「青い春を数えて」「その日、朱音は空を飛んだ」を読んだのが最初で、その後に「響け!ユーフォニアム」の原作小説を書いている人だという事を知りました。同アニメの存在は前から知っており、友人に強く視聴を勧められたこともあり、一話の冒頭だけ見たことがあったのですが、「再現度の高い、下手な吹奏楽部の演奏」の音に圧倒され、同時に過去の渋い記憶を呼び喚こされたので正気を保つのが難しくなったため視聴を断念しました。

響け!ユーフォニアム」というコンテンツと接していると、吹奏楽部に所属していた頃の青臭い思い出とかその時感じていた気持ちがフラッシュバックしてくる想いになりました。作品のクオリティーが高いのは百も承知だった。いや、高すぎるからこそ僕はこのコンテンツから意図的に遠ざかったんだと思います。

2019年7月、六地蔵京都アニメーション第一スタジオが放火され、多数の尊い命が犠牲になるという痛ましい事件が起こりました。日本の宝とも言えるクリエイター達の命が一瞬にして奪われたこの事件に胸を痛めた僕は、再び京都アニメーションが生み出したコンテンツに触れ、その素晴らしさを改めて実感する必要があると思ったのです。

私は、京都アニメーションのTVアニメ作品は9割方視聴していたのですが、唯一、「響け!ユーフォニアム」というコンテンツは向き合うことが出来ていませんでした。丁度良い機会だと感じた私は、再びこの作品と向き合おう思ったのです。

いきなりアニメを視聴するのは精神的な負担が大きいので、まずは原作小説から楽しもうと思い立ち、武田綾乃さんの小説だったこともあり手に取るに至ったのです。

感想

一巻しか読んではいないものの、武田綾乃さんの描く思春期の少女達の姿の耽美さは他の作品と比べても遜色ない形で発揮されており、また、吹奏楽部という学内においては微妙な立ち位置にあるこの部活を、生々しいくらいのリアリティーを持って描き切っています。吹奏楽を経験したことがある方なら共感できるシーンが多くあります。ただ、武田綾乃さんの描くまるで血が通ってるかのような思春期の少年少女と、吹奏楽部における人間ドラマが掛け合わさったこの作品は、やはり凄まじい暴力にもなり得るのです。私はページを捲る手が度々止まりました。それでも最後まで読み切った後は雲の切れ間から覗く光線のような、そんな少し清々しい気持ちになりました。武田綾乃さんは吹奏楽部に所属していた経験があるらしく、この部活の光の部分や影の部分が生き生きと描かれている点にも納得がいきます。

総括

本コンテンツを映像という媒体から楽しむための足掛かりとして小説を読み始めたのですが、小説単体としての完成度は非常に高く、多くの人に勧める価値のある素晴らしい作品だと感じました。文章という媒体から感じられたこの「響け!ユーフォニアム」という作品の素晴らしさを、映像という形で楽しみたいという気持ちが芽生えたのは間違いありません。作品の中で確かに生きている少女たちのあふれんばかりの青春の情熱が、アニメを通してこの作品と向き合う勇気を与えてくれているように感じざるを得ません。

世俗から離れることの必要性

一泊二日でスマホと小説と着替えとヘッドホンだけを持ち、極力ネットにアクセスしないという縛りを設けた上で箱根に行った。箱根で何をしたのかと言うと、言ってしまえば「何もしない」をした 。温泉に浸かったり、酒を飲みながら「ゆるキャン△」を視聴したり、湯本や仙石原をぶらぶら散歩したり。

ネット環境を断ったことによる効果は覿面であり、そのことに思考のリソースが割かれることがなくなった分、頭脳のキャパシティが上がったわけであり、その余剰分を読書といった文化的な活動に充てることが出来るようになったのである。

とても良かったので月一くらいでこれをやりたい人生である。

yurucamp.jp

Fixstarsのインターンに行ってた話

書けることはほぼないのですが、一応参加記だけは残しておきます。詳しいことは以下のリンクを見てもらえれば。

www.fixstars.com

何をやったのか

ここは本当に書けることがないのですが、量子コンピューティング関連のなにかをやっていました。量子コンピューティングに関連したプロジェクトに関わることが出来るインターンは国内ではここ以外にほとんどないと思うのでとても貴重な体験が出来たのではないかと思っています。

www.fixstars.com

感想

期間は1ヶ月という短い間だったのですが、就業型インターンシップなので、フルタイムで業務に関わることが出来ました。週5で出勤するのはとても大変でした。時間の流れがとても早く感じられて、1ヶ月とは思えないくらい濃密だったのではないかと思います。また、社員さん達や他のインターン生達はとても技術力が高い人達ばかりで非常に刺激的でした。AtCoderJobsにも求人があったり、社内プロコンが定期的に開催されていることから分かる通り、競技プログラミングに精通している人が多いという印象を受けました。(私は競プロとても弱いですが....) 職場環境もかなり良くて、貸与マシンのスペックは十分だったし、10円でコーヒー等のドリンクが飲めるのがとても有り難かったです。面白そうな技術書がたくさんあったのも魅力的でした。総合的に見てとても充実したものだったのではないかと思います。ありがとうございました!

サイバーエージェント アドテクコンペ2018に参加した

サイバーエージェントのアドテクコンペに参加してきました。

www.cyberagent.co.jp

参加した動機

サポーターズという組織主催の逆求人イベントで知り合った人事さんに勧められて、アドテクコンペは結構高負荷なインフラを体験出来ると聞いたので興味を持ったのがきっかけです。

内容

データ分析チームとサーバーサイドチームでチームを作って、三日間でDSPを開発するって感じの内容でした。自分はサーバーサイドでインフラの方をやりました。GCPが無尽蔵に使えるとのことでアツかった。

成果物

インフラ自体はGoogle Kubernetes Engineをガッツリ使って組みました。また、継続的インテグレーションを使ってイメージをGithubにプッシュしてDocker Imageをいい感じにビルドしてほぼダウンタイムゼロでシュッとKubernetesクラスタにデプロイ出来る環境とかも作りました。私は使い慣れているという理由も合ってCircle CIを使ったのですが、無料枠で使ってたのもあってかビルドからデプロイまでめっちゃ時間かかっていたのが難点でした。GCPGoogle Cloud Buildを使ったほうが良かった。あとはリソースの可視化とかもやりました。折角なのでNodeにexpoter仕込んでPrometheus+Grafanaでかっこよく可視化とかしたかったのですが、結局DatadogというSaaSを使いました。Datadogを使ったのは初めてだったのですが、かなりkubernetes環境に最適化されている感じで良かったです。出してくれるグラフも結構それっぽくてかっこいい。

f:id:shikugawa:20180924123302p:plain

全体としてはこんな感じになりました。GKEを触ったのは初めてだったのですが、これがかなりよく出来ていて、特にServiceをapplyすると自動でTCPロードバランサを作ってくれるとことかすごいなあと思いました。(小並感)

f:id:shikugawa:20180924123409p:plain

反省点としては、データ分析チームに作っていただいた予測モデルが予想以上に計算時間がかかるというところを考えないで設計してしまったところかなあと思います。予測用のAPIとアプリケーションとの通信がボトルネックになると想定して同一Pod内で動かしていたのが失敗でした。予測APIに関してはGAEに切り出すとか、別のkubernetesクラスタで回すとか(これだとアプリと一緒にGCR経由でシュッとデプロイ出来そう)、Cloud FunctionsにAPI本体を乗せるというのもありだったかもしれない。あとはStackDriverを完全に理解しておらず、レスポンスタイム等の詳細なメトリクスを取る方法が分からなかったのがつらい。

感想

GCPを触ったことがなかったのでAWSと比較してどうなんだろうとかずっと思ってたんですが、AWSにひけをとらないくらい使いやすかったです。GCPでは無料枠として$300/Yearのクレジットが付与されるので個人的にも使いたいと思いました。kubernetesも実際にクラスタ組んで使ったことはなかったのでいろいろ触れて良かったです。最近よく聞くようになったService Meshという奴も結構Control Planeがkubernetesに優しいという印象があるのでkubernetesを使えるようになりたいと思っていたのでかなり勉強になりました。参加してよかったです。

ISUCON8 予選参加記

ISUCON8の予選に出ました。チームメンバーは僕だけです。一人でやるのはめちゃつらかったです。

やったこととしては、足りなそうな所にインデックス貼ったりクエリキャッシュ挟んだり無駄にリバースプロキシをnginxに差し替えたり(予選で使われていたリバースプロキシはh2oだった)、冗長化構成を試みたりといったところで(サーバーが3台与えられたのでこれは冗長化するしかないのでは)、アプリ本体には手をつけませんでした。(明らかにN+1クエリが流れている箇所があったのでここに手を入れていればもう少し点数伸びたかもしれない......)

後から見てムーヴが明らかに洗練されておらず、alpでプロファイリングするためにltsv形式のログを吐かせるのに無駄に用意していたnginx.conf食わせたnginxに差し替えたり、冗長化構成しようとしてタイムアウトで困ってしまったりしていました。(原因が結局よく分からなかった。firewalldのせいかと思ったけど設定上は問題なさげな感じだった。initializeがそもそも通っていなかったんですかね.....)

ちなみにnginxよりh2oの方が速くてすげえってなってました。今度趣味で使ってみたい。

あとはアプリ本体に手を入れるのを後回しにしすぎたのがダメでした。冗長化周りに注力しすぎてハマって完全に椅子に座るだけコンテストになっていました。来年はちゃんといい感じにスピードアップコンテストにしたい。