タグ

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

  • Rails+PostgreSQL+Apartmentでたった1行の変更がレスポンスタイムを3倍速にした話 - KAYAC engineers' blog

    こんにちは! Tech KAYAC Advent Calendar 2023 11日目を担当する荒賀(@ken39arg)です。 在籍期間15年と弊社の中でかなり古参になってしまった私ですが、アドベントカレンダーを年に2書くのは初めてです。1 今回の内容は、今年7月に無事に成功したお仕事の話で、完了したらブログに書くように言われていたものです。 が、どうしても筆が進まず、のらりくらりと逃げていたのですが、良い年越しをするためにいい加減書いておくか〜という内容です。 TL;DR Rails + PostgreSQL + Apartment という構成のサービスで下記の1行の設定変更コミットを取り込んだ結果・・・ $ git log -n1 -p 64b39f258e9adde2e55752e4f1d5b6be12bcb216 commit 64b39f258e9adde2e55752e4f

    Rails+PostgreSQL+Apartmentでたった1行の変更がレスポンスタイムを3倍速にした話 - KAYAC engineers' blog
  • 秘密情報には出どころも書いてくれ!頼む! - KAYAC engineers' blog

    SREチームの長田です。 KAYAC Advent Calendar 2022の11日目の記事です。 アプリケーションから何かしらの外部サービスを利用するとき、そのサービスを利用するためのAPI Keyなり秘密鍵なりの秘密情報を保持することになります。 暗号化したものをファイルとしてアプリケーションに持たせたり、 Amazon Web Services(AWS)ならAWS Secrets Managerや AWS Systems ManagerのParameter Store(SSM Paramater Store)に保存したものを実行時に読み込んだりするでしょう。 これらの秘密情報、どこから来たのかわかりますか? どこから来た秘密情報なのか 秘密情報を使って出どころを調べられるのであれば問題はないでしょう。 # 例えばAWSのIAM User Credenntialsとか $ AWS_A

    秘密情報には出どころも書いてくれ!頼む! - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2022/12/11
  • 絶対に真似してはいけない。闇のRedash入門 - KAYAC engineers' blog

    Lobi事業部データエンジニア(自称)の池田です。 この記事はKAYAC Advent Calendar 2018の4日目です。 Redashとは Redashは様々な種類のデータソースにアクセスできる、OSSの素晴らしいダッシュボードツールです。 以前、ブログでは、健康的な使用事例を紹介しました。 techblog.kayac.com techblog.kayac.com 今現在のKayacでも、事業の様々な数値や状態を可視化、お問い合わせからの調査等の業務支援ツールとして広く活用されています 日は、Redashの非健康的な使用事例を紹介します。 すべての始まり【Pythonデータソース】 Lobi - Chat & Game Communityは今年で開発・運用が8年目になるスマホゲーマーSNSサービスです。 Lobiを開発・運用するLobi事業部では、Redashを活用する上で2

    絶対に真似してはいけない。闇のRedash入門 - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2022/09/12
  • CloudFrontのS3 Originにはhostヘッダーを転送してはいけない - KAYAC engineers' blog

    SREチームの長田です。 CloudFrontでstaticなファイルを配信しようとした時に少々ハマったのでそのメモです。 TL;DR CloudFront distributionのS3 Originは、Managed Policyの Managed-AllViewer を使うと機能しない。 何をしたのか statcなファイルを配信する要件があり、その対応としてCloudFront distributionのOriginにS3を設定しました。 CloudFrontのOrigin Access Identity(OAI)を作成し、S3 bucket policyにはこのOAIからのAPIリクエストのみを受け付けるよう設定しました。 docs.aws.amazon.com いざ配信用URLにHTTPリクエストすると以下のようなエラーになってしまいました。 <Error> <Code>Sign

    CloudFrontのS3 Originにはhostヘッダーを転送してはいけない - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2021/08/18
  • DynamoDB から Redshift へデータ移送する話 (RedshiftのSUPER型の利用事例) - KAYAC engineers' blog

    こんにちは。技術部のSRE所属の池田です。 この記事では、昨年の2020年12月にPreviewが発表されたRedshiftの汎用データ型 SUPER の利用事例として、DynamoDBからRedshiftへデータ移送する話をします。 汎用データ型SUPERは、2020/12/9に 『Amazon Redshift が、ネイティブ JSON と半構造化データ処理のサポートを発表 (プレビュー) 』という記事が公開され、2021年04月時点でもPreview状態です。 このSUPER型は、ログやDynamoDBストリームに見られるJSONおよび半構造化データと非常に相性がよく、使い始めてみると【素晴らしい!】と言う感想を得るので、皆様も是非使ってみてください。 背景 2021年4月現在では、Tonamel という大会プラットフォームサービスのデータ基盤 構築業務・整備を行っております。 To

    DynamoDB から Redshift へデータ移送する話 (RedshiftのSUPER型の利用事例) - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2021/04/27
  • Firebase Realtime DatabaseとFirestoreを使い分けていこうなという話 - KAYAC engineers' blog

    こんにちは、今年もあっというまでしたね〜@fnobiです。この記事はTech KAYAC Advent Calendarの12日目になります。 毎年アドベントカレンダーでは、その時お世話になった技術の話をしているんですが、今回は去年に引き続きfirebaseで行かせていただきます。いちおう専門はWebフロントのはずなんですが、最近WebフロントエンジニアというよりはFirebaseエンジニアです。 Firebase Realtime DatabaseFirestore そもそもfirebaseとはなんぞや?という話は去年も書いたのでよろしければ読んでみてください。 さて現在Firebaseでは、データベースとしての機能がRealtime DatabaseFirestoreの2種類提供されています。いちおう公式でも並列に扱われていたり、比較を書いてくれたりしているんですが、全体を通してな

    Firebase Realtime DatabaseとFirestoreを使い分けていこうなという話 - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2019/12/13
    realtime database のフィールド追加一括更新は便利だな
  • Lobiの画像変換サーバーをImageFlux+Lambda@Edgeで置き換えたはなし - KAYAC engineers' blog

    SREチームの長田です。 先日Lobiの画像変換サーバーをImageFluxに移行したので、その過程を紹介します。 画像変換って? Lobiはチャットを主軸としたコミュニティサービスです。 ユーザーはチャットメッセージに画像を添付することができます。 また、ユーザーアイコンやチャットグループの壁紙などもスマホやPCからアップロードして設定することができます。 アップロードされた画像は利用箇所に応じて適切なサイズ・フォーマットに変換する必要があります。 投稿画像のプレビューでは表示速度と通信量削減を優先して解像度低めの画像を、 拡大表示する場合はオリジナルサイズの画像を表示します。 複数サイズの画像を用意する手段として、Lobiでは内製画像変換アプリケーションであるmagcian1を運用していました。 Amazon EC2上で動作するNodeJS製のアプリケーションで、AWS CloudFr

    Lobiの画像変換サーバーをImageFlux+Lambda@Edgeで置き換えたはなし - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2019/07/25
    Edge 何に使うんだろと思ったらレスポンスヘッダの一時的な補充か。確かにこの手のパターンにはいいかも
  • 世界の何処かで 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
    tofu-kun
    tofu-kun 2018/03/19
  • 中〜大規模なSPAを開発する時に抑えておきたい10のポイント - KAYAC engineers' blog

    こんにちは。カヤックのSPAおじさんこと島津です。 今年はReactVueを使ったSPA開発プロジェクトをいくつか担当してきたので、そこで得た知見の総まとめをしたいと思います。 ※ ここでのSPAとはすべてのViewをJavaScriptで書くWebアプリのことを指します。サーバーサイドMVCを主軸にViewの一部をReactVueで書くこともありますが、今回はそのケースではありません。 1. フレームワーク 数年前とは事情が変わり、 フレームワークを使わないという選択肢は昨今だともう無いでしょう。丸腰のJSでDOMを弄っていた時代に比べると、かなり安定したフロントエンドの開発ができるようになりました。 人気フレームワークの台頭になっている React + Redux Vue + Vuex をこの1年使ってきましたが、書き方は違えどFluxアーキテクチャ・仮想DOM・コンポーネント志向

    中〜大規模なSPAを開発する時に抑えておきたい10のポイント - KAYAC engineers' blog
  • 中規模チームを支える自動化とノウハウ共有の仕組み - KAYAC engineers' blog

    はじめに こんにちは、面白法人KAYAC SG事業部バックエンドエンジニアの矢吹です。 8月30,31日,9月1日に開催されたCEDEC2017にて 「中規模チームを支える自動化とノウハウ共有の仕組み」 と題しましてカヤックでの日々の取り組みを発表しました。 こちらが当日の資料になります。 当日は体験したことのない会場の大きさと人数に圧倒され緊張でどうにかなりそうでしたが無事終わりなによりです。 発表後にはたくさんの方に質問をして頂き、改めて講演に参加いただきました皆様には御礼申し上げます。 以下に当日受けた質問と回答を載せておきますので、資料と合わせて参考になれば幸いです 当日のQ&A Q. 分割したシートに入力したデータをどうやってデプロイしていますか 分割したシートに入力したデータのQAが終わったタイミングで開発用のブランチをベースブランチへPull Request & マージをしデ

    中規模チームを支える自動化とノウハウ共有の仕組み - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2017/10/11
  • スケーラブル tail -f | grep on AWS - KAYAC engineers' blog

    こんにちは。組長こと @fujiwara (id:sfujiwara) です。 早速ですが皆さん、ログは見ていますか? 当然見ていますよね。tail -f で追いかけるとか大好きですよね。という前提で話を進めましょう。 この記事は Tech KAYAC Advent Calendar 2016 の24日目の記事です。 TL;DR 多種多様なホストから発生するログの末尾を tail -f で追いかけたい fluentd + ローカルファイルで行うのはちょっと面倒 Amazon Kinesis + Lambda を使ってスケーラブルな仕組みを考えてみた kinesis-tailf というツールも作った 既存の仕組みと問題点 techblog.kayac.com 弊社の Lobi とソーシャルゲームでは、この記事で紹介されたような Fluentd を活用したログ集約の仕組みを整備しています。この

    スケーラブル tail -f | grep on AWS - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2017/06/06
  • ソーシャルゲームのカスタマーサポートを支える行動ログとredash - KAYAC engineers' blog

    この記事はTech KAYAC Advent Calendar 2016の21日目の記事です。 こんにちは、ソーシャルゲーム事業部のぼくらの甲子園!ポケットのサーバサイド開発・運用を担当しておりますマコピーことid:mackee_wです。 ↑のヘッダ画像の人物はワタクシ、という噂があります。みなさま答えはあっていましたでしょうか。 ぼくらの甲子園!ポケットとは 2014年9月にリリースされた共闘スポーツRPGのスマートフォン向けゲーム 現在3年目でございます!!! 甲子園をモチーフにしてプレイヤーとプレイヤーが協力して別のチーム(CPUではない)と対戦して甲子園の頂点を目指す チーム(高校)の部員がプレイヤー9人揃わなければ試合が始まらない縛りとかも特徴です そんな感じで運営しておりますので興味を持たれましたらこちらからダウンロードのほどよろしくお願いしますm( )m。 ちなみにこの記事は

    ソーシャルゲームのカスタマーサポートを支える行動ログとredash - KAYAC engineers' blog
  • ウェブページをできる限りネイティブアプリっぽく魅せるテクニックまとめ 〜アップルにリジェクトされつづけるなら、ウェブアプリとストアをつくって自前で配信してしまおうという企み〜 - KAYAC engineers' blog

    https://kimizuka.github.io/web-app-store/example/ 北斗市公式キャラクター ずーしーほっきー ©2013 北海道北斗市 を使用させていただいております。 ウェブページをできる限りネイティブアプリっぽくみせて配信するために色々研究しました。 もくじ はじめに ウェブアプリとは 今回制作したもの ネイティブアプリとの比較 ストア以外での配信方法 ホームアイコンの設定方法 フルスクリーンでの表示方法 オフラインでのアクセス プッシュ通知(断念) カメラへのアクセス GPS / 加速度センサ / ジャイロセンサ へのアクセス ランドスケープでの固定(断念) 大技(Safariから開かれたかホーム画面からひらかれたかの判定) 小技(タップした際の黒ずみ除去 / 長押しでメニューを開かない / テキスト選択不可 / スクロール不可) その他、実装の上で頑

    ウェブページをできる限りネイティブアプリっぽく魅せるテクニックまとめ 〜アップルにリジェクトされつづけるなら、ウェブアプリとストアをつくって自前で配信してしまおうという企み〜 - KAYAC engineers' blog
  • 突撃!隣のキーボード - KAYAC engineers' blog

    Lobiチームの長田です。 このエントリはTech KAYAC Advent Calendar 2016の8日目です。 昨日は「【DockerMySQLのフェイルオーバーをdocker-composeで構築」でした。 techblog.kayac.com 今回はゆる~く眺められる内容となっております。 皆さんキーボード使ってますよね。 他の人がどんなキーボードを使っているのか気になりますよね。 今回は何人かの社員にキーボードについてアンケートしてみました。 使っているキーボードは? そのキーボードを選んだ理由は? そのキーボードを選んでよかったことは? そのキーボードを選んで失敗したことは? ひとことコメント アンケートの回答を、実際にキーボードを使っている環境の写真と合わせてまとめてみました。 では見ていきましょう! osawa-junの場合 使っているキーボードは? Happy Ha

    突撃!隣のキーボード - KAYAC engineers' blog
    tofu-kun
    tofu-kun 2016/12/12
  • チャットメッセージの即時反映を支える技術 - KAYAC engineers' blog

    Lobiチームの長田です。 今回はLobiの根幹であるチャットサービスの、Streaming APIについて紹介します。 多くのチャットサービスがそうであるように、 Lobiでも新しいチャットメッセージが画面リロードの必要なく表示されるようになっています。 チャットメッセージをデータストリームとしてクライアントに送信するためのAPIがStreaming APIです。 LobiのチャットサービスはiOS・Android・Webブラウザで利用することができ、 これら全てでStreaming APIを使ったチャット画面の自動更新を実現しています。 即時反映の実装方法としては Polling Long Polling Web Socket など複数の方法が挙げられますが、LobiではHTTPリクエストのLong Pollingをベースにした 独自のフォーマットを使用しています。 仕組み app -

    チャットメッセージの即時反映を支える技術 - KAYAC engineers' blog
  • Lobiのログ集約・解析のはなし - KAYAC engineers' blog

    Lobiチームの長田です。 あらゆるWebサービスがそうであるように、Lobiでも日々大量のログが出力されています。 今回はこのログをどのように集約・解析しているかを紹介します。 TL;DR アクセスログ・アプリログなど、毎秒10000行以上のログが生成されている Fluentdを使用しログを集約 consul serviceを利用した集約サーバーの冗長化 ログ中のイベント検知・集約にはNorikraを使用 アクセスログの各種解析にはAmazon Redshiftを利用 ログの集約 ログ収集エージェント Lobiではログの集約にFluentdを利用しています。 Fluentd | Open Source Data Collector | Unified Logging Layer ログファイルの集約にはfluent-agent-hydraを、Perlアプリケーション内からのログ送信にはFl

    Lobiのログ集約・解析のはなし - KAYAC engineers' blog
  • jQueryのCSSセレクタAPIを高速に扱う方法 - KAYAC Engineers' Blog

    最近Androidとの抗争が激化しているago(@kyo_ago)です。 jQueryはCSSセレクタを多用する特徴がありますが、jQuery内では実行ブラウザやCSSセレクタの記述によって呼び出されるブラウザAPIが変わり、それによって実行速度にも影響が出ます。 この記事では「セレクタAPIとはなにか」、「CSSセレクタの記述によって呼び出されるセレクタAPIの種類」、「高速なセレクタAPIを使用するための方法」、「高速なセレクタAPIが使われるかどうか確認する方法」などを紹介したいと思います。 (※この記事はJavaScript Advent Calendar 2011 (フレームワークコース) : ATNDの1日目の記事です) セレクタAPIとはなにか セレクタAPIとは「#hoge .huga」のようなCSSセレクタから、DOM上に存在する要素を取得するためのAPIです。 jQue

    jQueryのCSSセレクタAPIを高速に扱う方法 - KAYAC Engineers' Blog
  • jQuery1.4の新機能を1.4だけに14個 - KAYAC engineers' blog

    時が経つのは早いもので、ぼーとしてたらもう1月も終わりそうですね。外村です。 先日リリースされたjQuery1.4で新しく追加されたメソッドや新しい使い方ができるようになった機能を全部ではないですがいくつか紹介します。以下に変更点が全て掲載されているのでそちらも参照するといいと思います。 Version 1.4 ? jQuery API 新規で追加されたメソッド 1. nextUntil()、prevUntil()、parentsUntil() 指定したセレクタまでの要素を返します。以下の例ではitem3とitem4の後ろにテキストが追加されます。 <ul> <li id="item1">item1</li> <li id="item2">item2</li> <li id="item3">item3</li> <li id="item4">item4</li> <li id="item5

    jQuery1.4の新機能を1.4だけに14個 - KAYAC engineers' blog
  • モテるプログラマになろう第一弾〜CLI好きのためのAIRで作るコマンドラインツール〜 - KAYAC Engineers' Blog

    モテたいですか?はい!!!モテたいです! アラガでございます。 サーバーサイドエンジニアのみなさん、こんにちは! モテてますか?イケてるプログラマしてますか? ちなみに僕のイメージするナウくてカッコいいプログラマは、以下の条件を満たすプログラマです (ActionScript||JavaScript)&&(Ruby||Perl)&&(vim||emacs)&&zsh 残念ながら、php + eclipse + bash な僕は相当イケてません。 話がそれましたが、プログラマがもっとも輝けそうなシーン、もっとも輝けそうな雰囲気なときに、モテそうな事を、モテそうな言語でスマートにやってしまおうという企画第一弾です。 1. シチュエーション 新人の 可愛い女の子 がPCの前で呆然としています。いったいどうしたのでしょう? 「Flash(SWF)を100個画像にしてサムネイルを作らないといけないん

    モテるプログラマになろう第一弾〜CLI好きのためのAIRで作るコマンドラインツール〜 - KAYAC Engineers' Blog
  • 高速にWeb開発をするために便利ないくつかのTIPS - KAYAC engineers' blog

    outputz でいまだに1位になれたことがない村瀬です。 社内で開発をスムーズにするための tips 集を紹介したので、まとめておきます。 記事ではデモができないので便利さが伝わらない物も多いですが参考になれば幸いです。 screenとかzshとか便利だよ!と言う話は社内ではさんざんしているのでありません。 また、OSX 限定の内容もあります。 でははじめましょう。 keychain keychain と言っても OSX の KeyChain ではなく、コマンドラインのツールです。 これは ssh-agent をより便利にするためのラッパーです。これを使用すると ssh の秘密鍵のパスワードを一度入力するとあとはパスワードなしで ssh 接続できるようになります。 「同じこと二回も言わせんな!」といつも切れているような人は導入すると良いでしょう。 使い方は $ keychain ~/.s

    高速にWeb開発をするために便利ないくつかのTIPS - KAYAC engineers' blog