tech.kayac.com

暑い日が続きますが、皆様いかがお過ごしでしょうか。 @Konboiです。 いよいよYAPCまで10日程となりました!

今日は、宣伝の意味も込めてトーク内容を簡単に紹介しようと思います!

それは僕たちのドメイン・DNS運用 by @jigyakkuma

本トークではドメイン登録代行サービスを使用した人力による運用を経てAWS Route53にドメイン・DNSを集約するまでの背景やメリット、注意点を中心に会社としてどのように管理・運用するのがよいかを実例を交えてお話しいたします。

実体験や失敗談を時系列で追うことにより、皆様のお困りの点や今度どのようにするのがいいかなどの参考になればと思います。 また、組織×運用×仕組みといった技術以外のところについても触れながら、ドメイン・DNSをどのように管理・運用するのがよいのかを考察したいと思います。

Consulと自作OSSを活用した100台規模のWebサービス運用 by @fujiwara

カヤックが運営しているスマートフォン向けSNS Lobi は、Amazon Web Services(AWS)上でHashicorp社が開発しているオーケストレーションツール Consul を活用し、EC2インスタンス100台規模のサーバと、AWSのマネージドサービスを利用して運用しています。

Consulの機能と、それを活用するために開発したOSSとともに実践的に運用している事例をご紹介します。

どうしてもPerlでドローンを飛ばしたい人のためのハードウェアハック概論 by @macopy

  • クアッドコプターの仕組み
  • 外部から操作する
    • 波形を見てかーらーのー電気的介入
    • それでもダメなら例えば物理で抑えこむ
  • みんな大好き電波の話
  • 乗っ取るのがダメなら基板ごと入れ替える
  • Perlによるハードウェア制御
    • Perlでもリアルタイムしたい! でもイベントドリブンは嫌だ!

ソーシャルゲームにおける AWS 移行事例 by @tkuchiki

株式会社カヤックでは今年の 1 ~ 3 月にかけて、 運用しているソーシャルゲーム 3 タイトルをオンプレミス環境から AWS に移行しました。

Perl で実装されているそれぞれのタイトルを事例に、 AWS 移行の知見を共有し、アーキテクチャについてお話ししたいと思います。 事例はソーシャルゲームですが、他の分野にも応用ができるお話しになる予定です。 全てのゲームで consul を活用していますので、consul の導入事例もお話しできると思います。

以上4名のトーク是非ご期待下さい。 ( 今頃必死にスライドを作っていることでしょう
ソーシャルメディアを通じて投票してくださった皆様、ありがとうございました!

カヤックからはスピーカー以外のエンジニアもたくさん参加します

以上の採択されたスピーカー以外にもエンジニアが参加する予定です。 採択されなかった

  • Dockerを使った開発環境の運用の話
  • 多言語対応アプリの裏側の話
  • 20人を超えるチームで行われているChatOpsの話
  • PerlとGoが同居するアプリ運用の話

について興味がある方、 KAYACに興味のある方、そうでもない方も当日お気軽に話しかけていただけると幸いです!

では当日お会いしましょう!!!

はじめに

早く梅雨が開けないかなと感じる今日この頃。 どうも技術部の@Konboiです。 今日は、先日行った社内勉強会の取り組みを紹介しようかなと思い記事を書いてみましたのでお暇なときに是非読んで見てくださいm(_ _)m

社内勉強会とは?

カヤックでは毎週金曜日に技術部勉強会を行っています。 普段の技術部勉強会では、担当持ち回りで

  • 担当しているサービスの新規機能の紹介と実装の話
  • 最近気になる技術の紹介
  • 各エンジニアの開発環境の見せ合いっこ

と色々な事を発表し合っています。 先日の勉強会では、趣向を変えkoebuのリリースから譲渡までの約7年間運用してきた裏話を、長らく担当していたエンジニア2人(@fujiwara, @takihito)から対話形式で聞くという勉強会を行いました。

スクリーンショット 2015-07-07 14.00.42.png

当日の様子

当日は昔話に花を咲かせるためにはビールが必要だろうと思い人事に交渉したら2つ返事で用意してもらえました。 おかげ様で今回の記事では残念ながら紹介できない、あんな事やこんな事が出てきていつもと違った形式ではありましたが、非常に楽しく充実した勉強会になりました。

スクリーンショット 2015-07-07 14.01.30.png

今回は勉強会で出た話の中で紹介できる物を幾つか紹介しようと思います!

2008年頃からnginxを導入

当時のkoebuは愛のある(ありすぎる?)ユーザーさんの自作ツールにより、一時的にサービスが高負荷状態になりレスポンスが悪化することがあったそうです。

その時、避難方法として目をつけたのが nginxのモジュールの1つだったそうです。 最近ではよく使われるnginxですが、2008年当時から使用し自作ツール対策に効果を発揮していたのには驚きました。

2009年からAmazon S3を利用

最近ではAWSGCPなどのクラウドサービスを使う事はそれほど珍しくなくなりましたが、koebuでは2009年から音声データやアップロードデータをS3を利用してサービスを運用していました。 2009年当時は、日本リージョンがまだ無くアメリカのリージョンを利用していたそうです。

当時はS3のようなストレージサービスはあまり無く、日々サーバーを圧迫するデータファイルに頭を悩ませていたそうです。 本当大変だったなと染み染み語る担当エンジニアからは当時の苦労が垣間見えました。

2011年 はじめてのデータセンター移行

2011年にはじめてデータセンター移行を行いました。 その時実施した際の経緯や、併せてどのようにアプリのチューニングを行ったかの話を聞きました。 この時のデータセンター移行からchefを利用したサーバ構築が導入され、現在の自社サービスやゲームタイトルのサーバ構築の基礎が作られたという話もでて、聞いていたエンジニアは関心して聞き入っていました。

※こちらはYAPC::Asia 2011での @fujiwaraトークの一部になりますので詳しくはスライドをご覧ください。

さいごに

長らく運用されていたサービスを振り返ってみると

  • 蓄積されたノウハウの共有
  • 今や当たり前になっているサービスが無い時にどのように解決していたのか
  • サービス自身の成長と推移

などの話が聞けて非常に面白かったです!!

カヤックでは酒を片手に技術の話がしたいエンジニアを募集中です!

また、 カヤックと合同で勉強会を開催したい!会場を貸してもいいよ!という会社・企業の方がいましたら、是非お声がけください!

新人研修で Chef, Serverspec, TCP, HTTP, MySQL, ISUCON を担当した @tkuchiki です。

研修は 4/9 - 4/16 の 6日間 で実施し、 2013年技術部新卒研修 の内容を一部変更して行いました。
Go の研修については、今年の新人研修はgoでした を、
ISUCON については 新卒研修の最終日に社内ISUCONを開催しました 〜運営死闘てか死亡編〜 を御覧ください。

研修の目的

研修の目的は以下のとおりです。

  • Linux サーバ構築スキルの習得
  • Serverspec の必要性を学ぶ
  • Chef の cookbook を作成できるようになる
  • TCP・HTTP の理解を深める
  • MySQL の基礎を理解する
  • 実践(ISUCON)を通して課題発見・解決能力を養う

研修の内容

Chef, Serverspec

2013年に行った新人研修同様、予め用意しておいた Serverspec のテストを通るように手でサーバ構築してもらいました。
その後、サーバをまっさらな状態にして、手で構築した内容を Chef の recipe に落としこんで Serverspec のテストを通るように作業してもらいました。

TCP, HTTP

こちらも2013年の新人研修と同じくTCP についてざっくり説明した後に、
tcpdump を使いながら、 3 way handshake がどのように行われているか説明しました。
http についても同様に、telnet で HTTP Request を送り、nc で HTTP Response を返す作業をハンズオン形式で行いました。

MySQL

RDB についての話しや、MySQL の歴史、MySQL の index、 MySQL の lock の話しをしました。
lock については、@ichirin2501MySQLのInnoDBのロック挙動調査 をもとに話しをしてもらいました。
よくまとめられていますので、ぜひご一読ください。

ISUCON

ベンチマーカーやベンチマーカーのジョブスケジューラーも Go で実装しました。

良かった点

TCP・HTTP の研修をハンズオン形式で行った

アンケートの結果で最も要望が少なかったのが、TCP・HTTP の研修でした(特筆してよかった点がなかったことは課題だと思います)。
手で HTTP Request, Response を送る例は、書籍ではあまり見かけないと思いますので、
研修を行う意義のある内容だったのではないかと思います。

MySQL のテキストの質を高められた

@ichirin2501 が良い資料を作成してくれたので、
新卒社員以外にも有益な資料を社内に共有することができました。

改善点

それぞれのスキルセットにあった研修内容ではなかった

今回、サーバサイドエンジニア、フロントエンドエンジニアともに同じ内容の研修を受けてもらいましたが、
サーバ構築演習は内容的にサーバ構築を行ったことがある前提の内容になってしまいましたので、
フロントエンドエンジニアの新入社員には一部内容が難しかったようでした。

フロントエンドの研修がなかった

研修担当者が全員サーバサイドエンジニアだったこともあり、フロントエンドエンジニアの業務に関係する研修が一切行えませんでした。
サーバサイドエンジニアもフロントエンドの知識を持っていたほうが良いと思いますので、今後の課題としたいと思います。

まとめ

短い研修期間だったこともあり、基礎的なことしか教えられませんでしたが、
概ね目標は達成できたのではないかと思います。
今後は、研修期間を長くできるように社内調整を行ったり、基礎だけでなく実践的なことを教えられるようにしていきたいです。