タグ

ブックマーク / techblog.kayac.com (23)

  • 既存リソースをTerraformでimportする作業を楽にする - KAYAC engineers' blog

    SREチームの今です。 カヤックでは、クラウドリソースの管理にはTerraformを利用することが多いです。 クラウドリソースの構成や設定をコードで管理することで、リソースの変更内容の差分をレビューできる、意図しない設定変更を発見できるなどの利点があり、SREの目的であるサービスを安定して提供する上で重要な要素の一つです。 実際の作業として、既に運用中のサービスを新たにTerraform管理下に置く場合や、多くのリソースが既にweb consoleから作成されているものをTerraform管理下に追加する場合も多いと思います。 その際にはTerraform importをする必要があります。しかし、Terraform importは単純作業とはいえ時間と手間がかかり、優先順位を下げてついつい後回しにしてしまうことも多いのではないでしょうか。 今回は、手作業でTerraform import

    既存リソースをTerraformでimportする作業を楽にする - KAYAC engineers' blog
  • GitHub APIを使うBotたちのGitHub Appsへの移行 - KAYAC engineers' blog

    どうもこんにちは、ソーシャルゲーム事業部ゲーム技研の谷脇です。 この記事はTech KAYAC Advent Calendar 2019 Migration Trackの14日目の記事です。13日目はAmazon S3 Signature V2 廃止対応にまつわるあれこれでした。 従来のGitHub APIを使うBot カヤックではGitHubを使っています。また、各プロジェクトでは自動化されたワークフローの一環として、Slack上でのコマンドからPull Requestを作成したり、レビュワースロットを実行したり、勝手に手順書を生成してissueに貼るなどしています。 こういったBotたちはGitHub上のリソースを操作するために、GitHub APIを使用しています。Organization内のPrivateリポジトリを操作するためには、認証のためにGitHub Tokenが必要です。

    GitHub APIを使うBotたちのGitHub Appsへの移行 - KAYAC engineers' blog
  • Dockerで開発環境構築を10倍楽にしたはなし - KAYAC engineers' blog

    Lobi事業部 サービス基盤チームの長田です。 最近プロジェクト内で使用する開発環境にDockerを利用するようになったので、その紹介をします。 Dockerにしたってどういうこと? 公開済みのWebサービスに変更を加えて動作確認をする場合、番環境でそれを行うわけにはいきません。 ほとんどの場合はローカルマシンでWebサービスの全体または一部のコピーを動かして動作確認を行うことでしょう。 その後ステージング環境などの他の開発メンバーも触ることができる環境で動作確認やQAを行い、 問題がなければ晴れて番環境に反映、という流れが一般的かと思います。 この「ローカルマシンでWebサービスのコピーを動かす」部分にDockerを利用している、ということです。 Dockerにしてどうなった? Before 開発環境構築に1〜2日かかっていた After 開発環境構築がランチに行っている間に終わるよ

    Dockerで開発環境構築を10倍楽にしたはなし - KAYAC engineers' blog
  • #11 AlfredのWorkflowをgoで書くと捗る話 - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2014 11日目です。 今年の夏にカヤックはGo言語を積極的に推進していきます 宣言が出た影響で今年のAdvent Calenderはgoの話題多めとなっております。 去年辺りから周囲がにわかにgoづいてきた時に「仕事で使うようになったら勉強する(キリッ」 って言ってたらほんとに仕事で使うようになって現在勉強中の @handlenameがお送りします。 多分にもれずgo関連のはなしです。 Alfred便利 AlfredというMac用のアプリケーションがあります。 検索して候補を絞り込んで対応するアクションを実行する、というのが主な機能で、 Webで検索したり他のアプリを起動したりが素早く行えます。 基的な機能は無料で使えるのですが、 有料のPowerpackを購入すると Workflowという拡張機能が追加ができるようになり

    #11 AlfredのWorkflowをgoで書くと捗る話 - KAYAC engineers' blog
  • 分散環境でユニークなidを発番するGo製プロダクト「katsubushi」のご紹介 - KAYAC engineers' blog

    Lobiチームの長田です。 今回はkatsubushiというアプリケーションを紹介します。 https://github.com/kayac/go-katsubushi katsubushiはid発番を行うアプリケーションです。 水平分割されたデータベースに対してユニークなidを発番するために作られました。 なお、記事中の「データベース」はMySQLを指します。 katsubushiの特徴 Snowflakeと同様のアルゴリズムでid発番 SnowflakeはTwitter社がかつて公開していたid発番アプリケーションです。 https://github.com/twitter/snowflake/tree/master 既にメンテナンスされておらず、masterブランチにはその旨が書かれたREADMEしか残されていません。 タグが切られているので、ソースコード等はそちらで確認できます。

    分散環境でユニークなidを発番するGo製プロダクト「katsubushi」のご紹介 - KAYAC engineers' blog
    oinume
    oinume 2016/11/08
    https://github.com/sony/sonyflake と何が違うんだろう。プロトコル?
  • Push通知のためのProvider Server「Gunfish」 - KAYAC engineers' blog

    Lobiチームの吉村です。 今回はチャットサービスの品質を高める上で重要になってくる「Push通知」について、Lobiのアプローチのひとつである「Gunfish」を紹介します。 Push通知はユーザが「自分に返信が来た」「運営からお知らせが来た」などの情報をリアルタイムに知ることができる機能で、チャットをメインコンテンツとして展開しているLobiにおいて非常に重要な要素となっています。 Gunfishは「Push通知を漏れなくすべてのユーザへ届けたい」という想いを込めて開発したアプリケーションです。 LobiのPush通知と今までの実装 Lobiのアプリでは、ユーザに気づいて欲しいイベントが発生したとき、ユーザにPush通知が届きます。例えば、 自分のコメントにレスがついたとき 自分のコメントに「ぐー(※1)」をされたとき ユーザが所属するグループ内で「シャウト(※2)」がなされたとき 運

    Push通知のためのProvider Server「Gunfish」 - KAYAC engineers' blog
  • 世界の何処かで MySQL(InnoDB)の REPEATABLE READ に嵌る人を1人でも減らすために - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2015 8日目担当の @m0t0k1ch1 です。 今年は MySQL さんにいろいろ泣かされた1年でした。特に、あの夏、幾夜をともにした実行計画のゆらぎは一生忘れな(ry さて。。。今回は、そんな中でも誰もが一度は嵌るであろう(?)MySQL(InnoDB)の REPEATABLE READ の嵌りどころについて自分なりにまとめてみようと思います。 この記事が目指すこと MySQL の各トランザクション分離レベルの嵌りどころについては、現状でも種々のブログ記事などでまとめられており、そんなに真新しい話ではないと思います。が、過去の自分のように、嵌ったことがない人間からすると、 話としてはなんとなく理解できる が、抽象的でいまいち身につかない というのが現実でした。嵌りどころに実際に嵌った今読み返してみると、「あーーー、、、そ

    世界の何処かで MySQL(InnoDB)の REPEATABLE READ に嵌る人を1人でも減らすために - KAYAC engineers' blog
  • #5「GitDDLまじイノベーティブ」 tech.kayac.com Advent Calendar 2012 - KAYAC engineers' blog

    好きな IPA は志賀高原ビールの @soh335 です。 早くビール飲みたいのですが書かないと怒られるので今日は、隣の発明家が作った GitDDL というモジュールについて説明しますね。 (隣の発明家に任せると「GitDDLまじイノベーティブ(完)」としか説明してくれないので) なにするものなの 名前を見て通り、Gitdatabase の schema 管理をするものです。それ以前は、DBIx::Class::Schema::Versioned とかを使っていたようです。 仕組み まず、Git で管理されている schema ファイルを指し示すコミットのハッシュを database 上で管理します。 schema に変更があった場合、このコミットのハッシュが databse 上のものとで差異が生まれます。よって database 上の schema は期待する schema ではな

    #5「GitDDLまじイノベーティブ」 tech.kayac.com Advent Calendar 2012 - KAYAC engineers' blog
  • #20 Amazon CloudSearchで検索サジェスト機能を作った話 - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2014 20日目を担当する@ken39argです。 近況報告 お久しぶりです。 前回ブログを書いたのが、2012年のアドベントカレンダーでしたので、2年ぶりということになります。 前回のブログの出だしが、 「最近子供が産まれた」 でしたが、 4日前の 12/16の朝に2人目の男の子が産まれ、 日嫁と子供が病院から帰ってました。とてもバタバタしております。 長年、特にFlashLiteの動的生成などを得意分野としてガラケーを始めとするケータイ向けブラウザゲームを作ってきましたが、 昨年末から心機一転 LobiチームにJoinして、主にLobi REC SDKのサーバーサイドの開発を担当しています。 今年も様々な人やサービスの助けを借りてオートスケールする動画変換サーバーやニコニコ動画へのアップロード、 プレイ動画を見るためのL

    #20 Amazon CloudSearchで検索サジェスト機能を作った話 - KAYAC engineers' blog
  • #10 Consulと連携するpull型デプロイツール stretcher - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2014 10日目担当の @fujiwara です。 最近書いている stretcher というデプロイツールの紹介をしたいと思います。 長いので3行で push型デプロイはホスト台数が増減しやすい環境に適さない 各種問題を解決するpull型デプロイツールを書いた Consul と連携するよ 中央ホスト配布(push)型デプロイの問題点 カヤックの自社サービスでは久しく Archer というツールを利用し、中央ホストから各デプロイ対象ホストrsync でファイルを配布する形のデプロイを行っていました。ここではこれを push 型と呼びます。 push型のデプロイは、ホスト台数が頻繁に増減する環境で以下のような問題があります。 新しくホストが起動してきた場合に、中央ホストからデプロイを行ったあとでないと (古い状態で起動してい

    #10 Consulと連携するpull型デプロイツール stretcher - KAYAC engineers' blog
  • Dockerで非エンジニアでも開発環境を上げ下げできる、mirageというツールを作りました - KAYAC engineers' blog

    いやー今年もISUCONの予選参加募集がはじまりましたね! 昨年は出題側だったので胃が痛かったですが、今年は参加側ですので大変楽しみにしております。@acidlemonです。 Docker使ってますか? さてみなさん、Docker使ってますか? 使ってる? 使ってない? ぼくは使ってませんでした。えー今どきBlue-Green Deploymentやってないの? Immutable Infrastuctureじゃないの? と言われそうですが、世の中にはいろんなしがらみとかもあってなかなか簡単にエイヤーでコンテナに移行できるわけでもないのは皆さんなんとなく感じているのではないでしょうか。 とはいえ、最近これだけ話題になっているDockerですので、そろそろ使ってみたいなぁ…ということで、まずは開発環境をDockerで上げられるようにしました。 Dockerでコンテナを作るときには2つのアプロ

    Dockerで非エンジニアでも開発環境を上げ下げできる、mirageというツールを作りました - KAYAC engineers' blog
  • #10 2012年に作ったものを振り返りつつProcletマジ便利 - KAYAC engineers' blog

    2012年も残すところあと20日ほどとなりましたが皆様いかがお過ごしでしょうか。@fujiwara です。 このエントリは tech.kayac.com Advent Calendar 2012 10日目の記事です。 テーマが「私の中のマイイノベーション 2012」ということで、まずこの1年に作ったものを自分の blog エントリから振り返ってみますと… Perl から Fluentd にログ出力 - Fluent::Logger リリース 今年一番話題になったミドルウェアといえば fluentd でしょうか。その fluentd に Perl からログを出力するためのモジュールです Parallel::Benchmark というモジュールを書きました 並列にプロセスを起動して負荷を掛けるベンチマークを簡単に作るためのフレームワークです。弊社の主にソーシャルゲーム案件で、リリース前の負荷テ

    #10 2012年に作ったものを振り返りつつProcletマジ便利 - KAYAC engineers' blog
  • Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog

    「つくるための三種の神器」というテーマで続けている「777ブログウェイ」! 9日目となる日は「Rubyで開発するときに入れておきたい三種のRubyGems」と題して、定番の RubyGems を3つご紹介します。 1. bundler「bundler」は、アプリケーションが依存するgemを管理するツールです。今やgem管理のデファクトスタンダードです。 「gem install hoge」のようにコマンドで gem をインストールしていくと、あれよあれよとグローバルな領域にどんどん色んなgemが…それも複数バージョン混在していきます。そして、いずれは、このアプリケーションで必要なgemはどれだっけ…バージョンはいくつだっけ…といった具合に、どんどん依存関係が分からなくなってきます。ここで活躍するのが「bundler」です。 使い方はいたって簡単。1) bundler のインストールgem

    Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog
  • instagramAPI公開!OAuth触りました - KAYAC engineers' blog

    ついに21歳になりました!itaniです。 みなさん!! つい先日、iPhoneで気軽に写真を共有できるサービス「instagram」のAPIが一般公開されましたね。 というわけで、さっそくOAuthを触ってみたので自分なりにまとめてみました。 なにができるの? instagramAPIを使えば以下のようなことが簡単にできます。 ユーザー情報を取得 ユーザーの写真を取得 写真に対してコメントやいいねを投稿する フォローしている人、フォローされている人を取得 上で挙げたものはほんの一例です。 まだ調査不足ですが、リアルタイム系のAPIも用意されています。面白そうですよね。 OAuthってなんだ!? 最近twitterやfacebookでよく聞く『OAuth認証』という言葉。 果たしてこれはなんなのか。お願いしますgoogle先生。 OAuth (オー オース) は、ブレイン・クックとクリス・

    instagramAPI公開!OAuth触りました - KAYAC engineers' blog
  • カヤック流ソーシャルアプリの作り方 インフラ編 - KAYAC engineers' blog

    入社4年目にもなってtech.kayac初登場のせいです。 ブログ書けプレッシャーにとうとう屈する時がきました。 これで夢にkyo_agoが出てうなされなくてすみます。(彼はtech.kayacの尻たたき担当でした) 先々月「ぼくらの甲子園!熱闘編」というゲームをモバゲー内にてリリースしました。 これは去年リリースした「ぼくらの甲子園!」の続編です。 モバゲーユーザの方、是非遊んでみてください。 今回はこの「ぼくらの甲子園!熱闘編」がどういうインフラ構成になってるか紹介したいと思います。 注) 題名に「カヤック流」とはつけましたが、カヤックでは多様性を善としている風潮があり、 ゲームによってインフラの構成が違うどころか、利用しているプログラミング言語すら違います。 なので全てのゲームがこのような構成になってるわけではありません。 前提 今回のインフラ構成を決めるに至って考慮した点は「ラクに

    カヤック流ソーシャルアプリの作り方 インフラ編 - KAYAC engineers' blog
    oinume
    oinume 2011/10/11
    localにHAProxyいいなぁ。
  • 安全なバッチ処理の作り方 - KAYAC engineers' blog

    このまえ登り坂の途中でロードバイクのタイヤが破裂しました。ながたです。 今回はバッチ処理について書いてみようと思います。 バッチ処理? Webサービスの処理開始条件は、大まかに次の2つに分けることができます。 ユーザーのアクションに起因するもの ユーザーのアクションに起因しないもの このうち後者の処理をバッチ処理が担当することになります。 バッチ処理の担当分はさらに、 特定の条件(時間やサービスの状態)で実行するもの 手動で実行するもの の2つに分けられます。 今回はこの「手動で実行するもの」について書きたいと思います。 バッチを手動実行するのはどんなとき? バッチ処理を手動で実行するのは、十中八九イレギュラーな状況が発生したときです。 ルーチンワークや実行の条件が決まっているものは何らかの方法で自動化できるはずです。 そしてイレギュラーな状況のほとんどは不具合が発生したとき。 つまり 重

    安全なバッチ処理の作り方 - KAYAC engineers' blog
  • nginxのHttpLimitReqModuleを試してみる - KAYAC engineers' blog

    ※この記事はnginxの現時点での最新stable 0.8.54を使っています。 2回目の投稿になります、sugyanです こんにちは。 最近、jsdo.itでちょっとしたAPIを作ってみているのですが、連続で大量のリクエストが来るのはちょっと困るので、防御策としてnginxのリクエスト制御モジュール"HttpLimitReqModule"を導入してみることにしました。 http://wiki.nginx.org/HttpLimitReqModule 何も設定しない場合 まずは普通のnginx設定でhttpサーバを立ち上げて、動かしてみます。 worker_processes 1; error_log logs/error.log info; events { worker_connections 256; } http { log_format test '$remote_addr -

    nginxのHttpLimitReqModuleを試してみる - KAYAC engineers' blog
    oinume
    oinume 2011/03/26
    Apacheでもあったらいいのに!
  • FlashLite 動的生成の全てを教えます(その1?) - KAYAC engineers' blog

    こんにちは。 カヤック自転車部盛り上げ担当でおなじみのaragaです。 自転車好きの方は是非一緒にヤビツ峠を登りましょう 今回は、いつか公開しようと2年間暖め続けていた、携帯サービスのFlashLite動的生成についてお話しします。 携帯サービスのFlash合成技術は、スマートフォンブームの普及により、この先の寿命は長くない技術かもしれません。しかし、モバゲーやGREEのガラケーソーシャルゲームの人気により現在進行形では最も熱い分野とも言えます。 今回はPHPライブラリの公開と、動的生成でできることの紹介をさせていただきます。 もし、携帯コンテンツのFlashで技術的に諦めて困っている人がいたら、少しでも参考になれば幸いです。 その前に、全ての機能を説明する為に、今回サンプルとして使用したサービスを簡単に紹介させてください。 ポケットフレンズコンチ 愛をモチーフにした可愛いペットのきせかえ

    FlashLite 動的生成の全てを教えます(その1?) - KAYAC engineers' blog
  • node.jsはじめました - KAYAC engineers' blog

    はじめまして! 技術部2年目のsugyanと申します。 初めてtech.kayac.comに投稿します! 先日自分のブログで書いた記事が思いのほか好評だったので、これについてもう少し詳しく書いてみようと思います。 node.js+socket.ioを使ったライブコーディングwebアプリを作ってる - すぎゃーんメモ node.jsについて 最近話題の、サーバーサイドJavaScript「node.js」。みなさん触ってみてますか? 「Google V8 JavaScript Engineによるイベント駆動の…」と、どんなものかは知っているものの実際には触っていない、という人がまだ多いような気がします。 僕も昨年の12月くらいにようやく触ってみた という程度なのですが、意外にお手軽で簡単に使えるし面白いので、 「JavaScriptはまだニガテで ><」というヒトでも安心して始められるのでは

  • emacs lisp でよりよいコーディングを - KAYAC engineers' blog

    ようやく社員紹介ページができました。nagata (@handlename) です。 先日の @soh335の記事に感化されて emacs 版を書いてみました。章立てはだいたい同じになってます。 ※ elisp = emacs lisp elispの管理 auto-install.el URLから elisp を直接インストールすることができます。 EmacsWiki: auto-install.el .emacs にはこんな設定を書いておきます。 (require 'auto-install) (add-to-list 'load-path auto-install-directory) (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) (setq ediff-window-

    emacs lisp でよりよいコーディングを - KAYAC engineers' blog