タグ

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

  • Go サーバーで外部 API 操作の原子性を頑張る - KAYAC engineers' blog

    こんにちは、カヤック SRE の市川です。 このエントリは【カヤック】面白法人グループ Advent Calendar 2023の1日目の記事です。 はじめに いきなり鬼のように私事ですが、結婚することになりました。 ISUCON 起床試験に失敗し、成長への決意を込めて(?)購入したチュードル 技術ブログとは全く関係ない話と見せかけて、婚約者が MySQL 互換な分散 DB の会社で働いていることが、想像していた以上に「データの整合性と向き合う機運」の高まりに繋がりました。 ということで今年は気合を入れて 気合いで DDIA 読破 Advent Calendar 2023 なるものを計画しているのですが、会社のアドベントカレンダーも運営担当をしているので、トップバッターやっていきます。 GopherCon Singapore での学び 個人的な話が連続して恐縮ですが年末なので(?)お許しく

    Go サーバーで外部 API 操作の原子性を頑張る - KAYAC engineers' blog
  • 常時稼働が不要なRDSインスタンスを停止してAWS料金を節約する - KAYAC engineers' blog

    SREチームの長田です。 今回は開発・検証用Amazon RDS(以下RDS)の運用のはなしです。 はじめに 「常時使用するわけではないけど、一定の頻度で必要になるデータベース」というものがあります。 AWSリソースの動作確認を行う環境(カヤックではこれを「ステージング環境」と呼ぶことが多いです)や、 リリース後の負荷試験環境など、番環境とは異なる環境にあるデータベースがこれにあたります。 AWSのようなクラウドサービスを利用している場合、起動時間に対して課金が発生することが多いでしょう。 負荷試験用に用意したRDSインスタンスは、試験が実施されていない期間はただ課金が発生するだけのリソースになってしまいます。 たまにしか使われないデータベースを放置しておくのはもったいない 負荷試験で使用するものは、大抵の場合番環境と同じスペックのものを用意することになるでしょう。 すると番環境と同

    常時稼働が不要なRDSインスタンスを停止してAWS料金を節約する - KAYAC engineers' blog
  • 負荷試験とOSSツール選定の話 - KAYAC engineers' blog

    この記事は 面白法人グループ Advent Calendar 2022 の15日目の記事です。 こんにちは、カヤックボンドの松です。 今回は弊社の技術顧問をご担当いただいている、ドレッドノート株式会社の佐々木様よりご寄稿いただいた記事となります! みなさん、はじめまして! 主にパフォーマンスチューニングや検証用のボット開発等を行っているドレッドノート株式会社の佐々木と申します。 この度、カヤックグループの皆様より Advent Calendar 2022 に寄稿する機会を頂戴しましたので、2022年12月時点の方法を元に負荷試験とモダンなOSSツールについて書いてみたいと思います。 負荷試験の重要性 突然ですが、みなさんが関わっている案件で負荷試験を行っていますか? サービス開始前・提供中、どちらであっても負荷のかけ方によって様々な情報を得ることができます。 現状の性能・台数・実装で、ど

    負荷試験とOSSツール選定の話 - KAYAC engineers' blog
  • Terraform管理されたステージング環境・本番環境の差異を検出したくて頑張っている話 - KAYAC engineers' blog

    SREチームの橋です。今回はステージング環境の運用でありがちな番との差分に対処する試みを紹介します。 背景 ステージング環境について、例えばIT用語辞典では ステージング環境とは、情報システムやソフトウェアの開発の最終段階で検証用に用意される、実際の運用環境と変わらない環境のこと。 と説明しています。検証用ですから、インフラ面で言っても番環境となるべく一致した構成であってほしいということになります。 しかし実際にはさまざまな経緯(ステージング環境を後から立てたり!)から、たとえTerraform管理していたとしても差異が発生してしまうことがあります。 こうしたとき、その差異を検出する一つの方法としてはTerraformの.tfファイルを比較することですが、これにもいろいろな書き方がありえます。 例えばaws_db_proxy_endpointはterraform-provider-a

    Terraform管理されたステージング環境・本番環境の差異を検出したくて頑張っている話 - KAYAC engineers' blog
  • EKSからECSに移行して開発運用コストの削減を図る - KAYAC engineers' blog

    SREチームの長田です。 今回はカヤックで運用している「まちのコイン」というプロダクトのアプリケーション基盤を Amazon EKS(以下EKS)からAmazon ECS(以下ECS)に移行したはなしをします。 まちのコインとは coin.machino.co www.kayac.com まちのコインはカヤックが運営している、デジタル地域通貨を使ってその地域のコミュニティを活性化させるサービスです。 2019年11月から実証実験を開始し、翌年2月から正式リリースされました。 2022年9月現在、20の地域に導入されています。 一般ユーザーが使用するクライアントアプリと、導入地域の運営団体が使用するブラウザ用の管理画面、 それらにAPIを提供するRailsサーバーアプリがあります。 データベースはAmazon Aurora PostgreSQL、 その他AWSのマネージドサービスを組み合わせ

    EKSからECSに移行して開発運用コストの削減を図る - KAYAC engineers' blog
  • ecrm - Amazon ECRから不要イメージを安全に削除するOSSを作った - KAYAC engineers' blog

    SREチームの藤原です。今回は、AWSのコンテナレジストリであるAmazon ECRから、不要になったコンテナイメージを安全に削除するツールをOSSとして作った話です。 Amazon ECRのライフサイクルポリシーでは、設定によっては実際に利用中のイメージを削除してしまうことがあります 現在利用中のイメージを避けて、それ以外の不要なイメージを安全に削除できるCLIツールをOSSとして作成しました Amazon ECSとECRでのイメージ運用 カヤックでは、コンテナのオーケストレーションにAmazon ECSを主に使用しています。ECSにタスクをデプロイする場合は、イメージのタグにアプリケーションのGitリポジトリのコミットハッシュ(git log -1 --format=%Hで計算した値)を付与してAmazon ECRにpushし、タスク定義ではそのタグを含めたURLを指定しています。 例

    ecrm - Amazon ECRから不要イメージを安全に削除するOSSを作った - KAYAC engineers' blog
  • SLI/SLO運用の実践 shimesabaによる指標モニタリング - KAYAC engineers' blog

    カヤックSREの池田です。 先月は、カヤックのプロダクトの一つ『Tonamel』で導入したエラーバジェット算出ツール『shimesaba』の話をしました。 techblog.kayac.com github.com 今回は、実際にどのようにSLI/SLOを運用しているのか?という内容をshimesabaを使った設定例を交えつつ話します。 SLI/SLOの運用にお悩みの方の助けになれば幸いです。 最初のSLI/SLOはどう決定したのか? SLI/SLOの運用を始めるにあたって、多くの人が悩むのは以下の2つだと思います。 一体何をSLIとすれば良いのか? 最初のSLOはどのくらいにしたら良いのか? つまりは、最初の1歩をどうしたら良いか?と言う話ですが、こちらに関しては2つ参考になるものがあります。 『SLO決定のためのArt of SLO』 https://sre-next.dev/2022

    SLI/SLO運用の実践 shimesabaによる指標モニタリング - KAYAC engineers' blog
  • ステージング環境における検証用データベースの立ち上げを自動化する取り組み - KAYAC engineers' blog

    SREチーム(新卒)の市川恭佑です。 カヤックのサービスでは、信頼性の担保を目的として、ステージング環境を作成する方針を取っています。 ステージング環境では、検証の精度を高めるために、量・質ともに番環境に類似したデータベースが求められる局面が頻出します。 そこで今回は、Tonamel という自社サービスにおける、検証用データベースの立ち上げを自動化する取り組みについて紹介します。 サービスの置かれていた状況と解決方針 Tonamel の実行基盤は Amazon Web Services (AWS) 上にあり、番環境とステージング環境は別のアカウントとして、同一の AWS Organizations 組織内に構築されています。 もともと、ステージング環境では、番環境のデータは利用せず、手作業でダミーデータを作成していました。 それゆえに、データベースに格納されているデータ量は番環境と

    ステージング環境における検証用データベースの立ち上げを自動化する取り組み - KAYAC engineers' blog
  • SREチームでポストモーテムを1年半運用してみた - KAYAC engineers' blog

    SREチームの藤原です。今回は、SREチームが主導してポストモーテムを書く取り組みを、社内で1年半ほど運用してみたという話です。 ポストモーテムとは? 「ポストモーテム」(postmortem=事後検証)とは、システムにインシデントが発生したことによる影響、緩和や解決のために取られた行動、インシデントの原因、再発防止策などをまとめた文書です。 カヤックのSREチームは、各メンバーがそれぞれのプロダクトに参加し、他のエンジニアとともに開発と運用を行う、いわゆる「Embedded SRE」という形態を取っています。そのため、SREチームのメンバーでも自分が関わっていないプロダクトで発生したインシデントについては詳しく把握できないことがありました。SRE以外で運用に携わっている、プロダクト専任のサーバーサイドエンジニアにはなおさら困難でした。 また、インシデント発生時に実際に手を動かす人がどうし

    SREチームでポストモーテムを1年半運用してみた - KAYAC engineers' blog
  • MackerelでSLOとエラーバジェットを運用するためのツール shimesaba - KAYAC engineers' blog

    この記事はMackerel Advent Calendar 2021の7日目です。 こんにちは、SREチーム所属の@mashiikeです。 皆様はSLOとエラーバジェットという言葉を聞いたことはありますか? サービスの信頼性を保証することを目標するSRE(Site Reliability Engineer/Site Reliability Engineering)の領域に携わってる方なら聞いたことがあると思います。 今回は、SLOとエラーバジェットに関して、Mackerelを用いてサービス/サーバー監視をしている際に便利なツールとして shimesaba というものを作った話をします。 github.com はじめに 題に入る前に、SLIやSLO, エラーバジェットという言葉について触れておきます。 これらの言葉は、ざっくりと説明すると以下のようになります。 SLI(Service Le

    MackerelでSLOとエラーバジェットを運用するためのツール shimesaba - KAYAC engineers' blog
  • 2021年サーバーサイドのエンジニアが使ってよかったもの10選 - KAYAC engineers' blog

    こんにちは! Tech KAYAC Advent Calendar 2021 7日目を担当する荒賀(@ken39arg) です。 カヤックのエンジニアブログには2008年にPHPを使ったガラケー関連の記事を書いたのが最初になります。 それから10年以上たち、ガラケーも弊社でのPHPプロジェクトもほぼなくなり、メンバーもかなり入れ替わり、私自身も20代だったのがついに40歳になりました。そんな私にとってこのアドベントカレンダーは私は今でもここにいるよというPingのような役割になっているため、年に一度若者に混じってアドベントカレンダーに参加しております。 例年ですと、趣味のマラソンなどに関する実績も書いているのですが、昨年同様、今年も続くコロナ禍により多くの大会が中止となったためこちらに関しては特に特記すべき実績はありません。ただ2020年に走るはずだった東京マラソンは権利は移行を続けてお

    2021年サーバーサイドのエンジニアが使ってよかったもの10選 - KAYAC engineers' blog
    bongkura
    bongkura 2021/12/07
  • 【お詫びと訂正】iOS11でついにSafariからカメラにアクセスできるようになりました。(コピペで動くサンプルコード付き) - KAYAC engineers' blog

    お詫びと訂正:(2017/06/08 23:32) 記事内に掲載しているスクリーンショットが、 Apple.Incの開発者利用規約(APPLE BETA SOFTWARE PROGRAM AGREEMENT APPLE INC.)に抵触しているというご指摘をいただきました。 Apple.Incの開発者利用規約から、掲載内容を不適切と判断し、該当箇所を削除させていただきました。 Apple.Inc及び読者の皆様に深くお詫び申し上げます。 追記:(2019/02/17) Navigator.getUserMediaが非推奨となったため、MediaDevices.getUserMediaを使うように修正しました。 Navigator.getUserMedia - Web API | MDN MediaDevices.getUserMedia() - Web API | MDN ざっくり1行でま

    【お詫びと訂正】iOS11でついにSafariからカメラにアクセスできるようになりました。(コピペで動くサンプルコード付き) - KAYAC engineers' blog
    bongkura
    bongkura 2017/06/07
  • 機械学習をつかって「今日なに着てく?」を教えてもらうためのモック - KAYAC engineers' blog

    tech.kayac.com Advent Calendar 2015 14日目担当の @_somtd です。 最近暑かったり、寒かったりどうもおかしな気候がつづきますね。 若いエンジニアがどんどん増えて立場が危うい昨今。気候の変化に柔軟に対応し、身体だけは健康でいたいと願っています。 そんな中、今回のアドベントカレンダーでは機械学習をつかって「今日なに着てく?」を教えてもらうためのモックを試します。 問題を簡単にするために(時間がなくてリアルなデータを用意できなかったので)以下のデータセットを用意します。 データ 100日分の「なにを着たか?」というデータ sample_wear.txt temperature:気温 rainfall:降水確率 outer:アウター(コート等) (0:着ない/1:ジャケット/2:ナイロンパーカー/3:ダウンジャケット) tops:トップ(上着) (0:T

    機械学習をつかって「今日なに着てく?」を教えてもらうためのモック - KAYAC engineers' blog
    bongkura
    bongkura 2017/03/29
  • DynamoDB + Lambda + SSM でテストサーバーをポコポコつくる仕組み - KAYAC engineers' blog

    はじめまして。カヤック技術部の杉山です。 主にクライアントワークでサービスを開発しています。 今回は、クライアントワークで運用している、テストサイトの仕組みに関して書きます。 「テストサイト」の概要 クライアントワークでは、日々たくさんの案件を開発しています。 それぞれの案件では、多くの場合、Webサイトもしくは、WebAPIを公開するためのサーバーが必要になります。 実際の公開時には、案件ごとに専用のクラウドコンピューティングサービスを契約し、セットアップすることになりますが、 利用して良いサービスの確認が必要であったり、サービスの契約まで時間がかかったりするため、すぐには決まらない場合があります。そのため、開発時や検証時には、カヤック側でテストサイトを用意し、確認やプレビューを行っています。 さらに以下のような要望にも対応する必要があります。 出来るだけ時間をかけず開発環境を用意したい

    DynamoDB + Lambda + SSM でテストサーバーをポコポコつくる仕組み - KAYAC engineers' blog
    bongkura
    bongkura 2017/03/23
  • サーバーで動画生成するサービスのつくり方 - KAYAC engineers' blog

    はじめまして。カヤック技術部の杉山です。 主にクライアントワークでサービスを開発しています。 今回は、とある動画生成サイトに関して書きます。 動画生成サイトのサービス内容 ユーザーの撮影した写真と、サイト内でいくつかの選択肢を選ぶと、オリジナルの動画が生成できるサービスです。 画像にはロゴなどの合成が出来、映像作家によるアニメーションと、ミュージシャンによるBGMがつきます。 今回は、サーバーアプリケーションの実装に関して解説してみます。 利用技術 Ruby on Rails AWS FFmpeg ImageMagick 主な処理 クライアント側から画像を複数枚アップロードし、サーバーへ保存 動画、画像、BGMを合成 動画生成のチューニング それぞれの内容 クライアント側から画像を複数枚、サーバーへ保存 画像をサーバーへアップロードする前に、ロゴやテキストの合成をフロント側で行っています。

    サーバーで動画生成するサービスのつくり方 - KAYAC engineers' blog
    bongkura
    bongkura 2017/03/23
  • Lobiで画像のWebp変換による通信量削減と調査のためにAWS Athenaを利用した話 - KAYAC engineers' blog

    Lobiチームの吉村(moulin)です。 今回は、Lobiのチャットの投稿画像やユーザアイコンなどの画像ファイルをwebp形式で配信して通信量を削減した話について紹介します。 TL;DR 画像配信について 画像変換サーバのwebp変換対応 AWS Athenaを使ったCloudFrontのログの集計 画像配信について Lobiの画像配信ではAWS CloudFrontを利用しています。ユーザーから画像のリクエストがあった場合、CloudFrontにキャッシュが存在すればキャッシュを返します。無い場合は画像変換サーバにリクエストを渡して、画像を生成してもらいます。画像変換サーバが生成した画像をCloudFrontが受け取り、画像をユーザに配信します。一度ユーザに配信がされるとCloudFrontはその画像をキャシュするため、次からは同じ画像のリクエストが来た場合は画像変換サーバーにリクエス

    Lobiで画像のWebp変換による通信量削減と調査のためにAWS Athenaを利用した話 - KAYAC engineers' blog
    bongkura
    bongkura 2017/02/28
  • 分散環境でユニークな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
    bongkura
    bongkura 2016/10/29
    uuid v1を使わなかった理由知りたい
  • チャットメッセージの即時反映を支える技術 - 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
  • AWS Lambdaを使ってベンチサーバー無しで社内ISUCONを運営したはなし - KAYAC engineers' blog

    新人研修担当の長田です。 今年も新人研修の締めとして社内ISUCONを行いました。 昨年はプログラミング基礎の講師をやったのですが、 今年はその実績を買われて(?)社内ISUCONの出題を担当することになりました。 過去のISUCON準備の様子を傍から見ていた身としては、 準備を始める前から「とにかく大変そうだ・・・」というイメージを持っていました。 問題を作りこむ以上、どうしてもISUCON当日ぎりぎりまでかかってしまうのでしょう。 ぎりぎりになるのはまあ準備する人が頑張ればいいとして、 ぎりぎりになった結果競技自体の進行が危ぶまれるのは避けたい! ということで、いくつか効率化という名の妥協策をとることにしました。 効率化できるところは? 毎回新規に出題するのはしんどい! 社内ISUCONは過去2回実施していますが、 どちらも新規に高速化対象のWebアプリケーションを作成していました。

    AWS Lambdaを使ってベンチサーバー無しで社内ISUCONを運営したはなし - 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
    bongkura
    bongkura 2014/12/21