タグ

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

  • デプロイ対象環境ごとに別々のSlackチャンネルに通知するGitHub Actionsの実装例 - KAYAC engineers' blog

    SREチームの長田です。 SRE関連の記事としては今年最初の記事になります。 今年も定期的にSREチームメンバーによる記事を投稿していく予定です。 よろしくお願いします。 さて、今回はGitHub Actionsのはなしです。 TL;DR デプロイを実行するGitHub Actionsの実行状況を デプロイ対象環境ごとに別々のSlackチャンネルに通知する場合の実装例として、 「slackapi/slack-github-actionで通知をつくりこむ」 「Actions Workflowを分ける」 「Actions Workflow実行の入り口を分ける」 の3つを紹介します。 背景 カヤックでは「まちのコイン」という地域通貨サービスを開発・運用しています。 coin.machino.co まちのコインの開発・運用チームの、特にサーバーサイドに関しては、 アプリケーションやインフラ構成の変

    デプロイ対象環境ごとに別々のSlackチャンネルに通知するGitHub Actionsの実装例 - KAYAC engineers' blog
    handlename
    handlename 2024/02/01
    書きました
  • Google Cloud Operations Suite で実現する "頑張らないオブザーバビリティ" - KAYAC engineers' blog

    SRE チームの市川恭佑です。 先日、CloudNative Days Tokyo 2023 のプロポーザルを提出したのですが、残念ながら採択に至らなかったので、今回は宇宙最速の(?)供養エントリになります。 シェア・投票など、ご応援をくださった皆様にはこの場でお礼を申し上げます。ありがとうございました。 event.cloudnativedays.jp 背景とか、経緯とか 筆者は、カヤックの SRE チームにちょうど2年ほど在籍しています。とは言っても半年ぐらいは学生アルバイトだったので、正社員としては1年半ほどです。カヤックに入る前も、いくつかの会社で IT エンジニアとしてインターンやアルバイトをしていました。 という訳で、何だかんだ仕事で使うプログラムを書き始めてトータル4年半ほどになりますが、そのうち3年半ほどは全て Amazon Web Services(AWS)でホストされる

    Google Cloud Operations Suite で実現する "頑張らないオブザーバビリティ" - KAYAC engineers' blog
  • タスクランナーとしてのmakeを使う際の工夫と注意点 - KAYAC engineers' blog

    SREチームの長田です。 みなさま開発・運用上の定形オペレーションに伴うタスク実行をどのように管理していますか? 今回は make をタスクランナーとして使う例を紹介します。 タスクランナーがほしい タスクランナーを使う主なモチベーションは以下の2つです。 タスクをリスト化したい タスクの実行インターフェイスを統一したい タスクがリスト化されていれば、それ自体が生きたドキュメントとして機能します。 また、タスクの実行インターフェイスが統一されていれば、 例えばタスクに前処理や後処理を追加したとしても、 開発・運用メンバーが実行するべき操作が変わることはありません。 操作変更の周知コストも下がりますし、変更に伴う操作ミスも減らすことができます。 タスクランナーに求めるもの タスクランナーの機能としては必要最低限のものがよいと考えています。 高機能なタスクランナーも魅力的ではあるのですが、タス

    タスクランナーとしてのmakeを使う際の工夫と注意点 - KAYAC engineers' blog
    handlename
    handlename 2023/10/16
    書きました
  • 常時稼働が不要なRDSインスタンスを停止してAWS料金を節約する - KAYAC engineers' blog

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

    常時稼働が不要なRDSインスタンスを停止してAWS料金を節約する - KAYAC engineers' blog
    handlename
    handlename 2023/09/13
    書きました
  • MackerelとGrafana OnCallを連携しました - KAYAC engineers' blog

    SREチームの藤原です。今回は監視サービスのMackerelと、障害発生時に担当者へのオンコールを自動化するGrafana OnCallを連携してみた話です。SRE連載 6月号になります。 3行でまとめ MackerelとGrafana OnCallを連携しました MackerelのアラートWebhookをGrafana OnCallのWebhookに変換するproxyをAWS Lambdaで作りました。OSSで公開しています Grafana OnCallの管理はTerraformでやっています はじめに カヤックでは、運用しているサービスの監視のためにMackerelを利用しています。サービスで障害が発生した場合に担当者を呼び出す(オンコール)ためのツールとして、2023年3月までは ryotarai/waker を使用していました。 wakerはもともとクックパッド社で利用されるために

    MackerelとGrafana OnCallを連携しました - KAYAC engineers' blog
  • mirage-ecsで各メンバー専用開発サーバーを実現!まちのコインの運用事例を紹介します - KAYAC engineers' blog

    SREチームの長田です。 突然ですが、 mirage-ecs というツールをご存知でしょうか? 今回はこのツールをまちのコインの開発チームでの使用例をもとに紹介します。 coin.machino.co mirage-ecs を使うと動作確認用のサーバー環境を、サーバーサイドのエンジニアでなくとも自由にいくつでも立ち上げることができるようになります。 「環境」は AWS のECSクラスタ上で起動し、専用のURLが割り当てられ、 認証*1を通過すればどこからでもアクセスできます。 これにより 「クライアントアプリとつなぎ込んで動作確認したいけど、開発環境が空いてないから確認できない」 や、 「プロダクトオーナーに新機能を確認してもらいたいけど、開発環境が空いてないから(以下略)」 といった問題が解消し、 開発と動作確認のサイクルをスピーディーに回すことができるようになります。 mirage-e

    mirage-ecsで各メンバー専用開発サーバーを実現!まちのコインの運用事例を紹介します - KAYAC engineers' blog
    handlename
    handlename 2023/06/01
    書きました
  • エンジニアがユーザーインタビューを行うメリットと注意点 - KAYAC engineers' blog

    エンジニアはどれだけユーザーのことを理解する必要があるのでしょうか? 事業開発ではどんなエンジニアが活躍できるのでしょうか? はじめまして! KAYACのまちのコインチームでFlutterエンジニアをしている今城です。 せっせと機能開発や運用に励んでる毎日ですが、最近はユーザーインタビューもしています。 この記事ではエンジニアがユーザーインタビューするメリットについて触れていきます。 「まちのコイン」のユーザーインタビューは何をしているのか? ユーザーインタビューとは、ユーザーのニーズや課題を理解し、製品やサービスを改善するために行われる会話形式の調査手法です。 まちのコインチームでは以下のステップを行なっております。 インタビュー相手を探す。 アポを取る。メールで連絡しています。 当日、ヒアリングする。時間は30分程度です。 ヒアリング後、仲間と振り返りをする。これも30分程度です。 も

    エンジニアがユーザーインタビューを行うメリットと注意点 - KAYAC engineers' blog
    handlename
    handlename 2023/04/12
    ユーザーと話すとプロダクトへの理解が深まってモチベーションも上がるぞ!というはなし
  • Amazon ECSのタスクを常に新鮮に保つ仕組みをStep Functionsで - KAYAC engineers' blog

    SREチームの藤原です。今回はAmazon ECSのサービス内のタスクを定期的に再起動することで、日々のメンテナンスコストを削減する話です。SRE連載 3月号になります。 3行でまとめ ECS Fargateのタスクは時々再起動が必要 人間が対応するのは面倒 Step Functionsを定期実行して常に新鮮なタスクに入れ換えて予防しよう ECS Fargateのタスクは時々再起動する必要がある ECS Fargateでサービスを運用していると、数ヶ月に一度ほどの頻度でこのようなお知らせがやってきます。 [要対応] サービス更新のお知らせ - AWS Fargate で実行されている Amazon ECS サービスの更新が必要です [Action Required] Service Update Notification - Your Amazon ECS Service Running

    Amazon ECSのタスクを常に新鮮に保つ仕組みをStep Functionsで - KAYAC engineers' blog
  • Terraform管理されたステージング環境・本番環境の差異を検出したくて頑張っている話 - KAYAC engineers' blog

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

    Terraform管理されたステージング環境・本番環境の差異を検出したくて頑張っている話 - KAYAC engineers' blog
    handlename
    handlename 2022/10/28
    “(ステージング環境を後から立てたり!)” うっ
  • 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
    handlename
    handlename 2022/09/29
    書きました
  • 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
    handlename
    handlename 2022/03/22
    面倒だけどちゃんと振り返る機会になるのでだいじ
  • 既存リソースをTerraformでimportする作業を楽にする - KAYAC engineers' blog

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

    既存リソースをTerraformでimportする作業を楽にする - KAYAC engineers' blog
  • カヤックのSREチームについて - KAYAC engineers' blog

    SREチームの長田です。 今回は私が所属している「カヤックのSREチーム」について紹介します。 SREとは Site Reliability Engineering の略です。 「サイト信頼性エンジニアリング」と訳されることが多いようです。 同名の書籍(いわゆるSRE)が出版されたことから、SREという言葉が一般的に使われるようになったようです。 www.oreilly.co.jp この記事ではSREそのものについての説明は省きます。 ざっくり一言で説明すると、「サイト(サービス)の信頼性を技術の力で担保すること」のようになるでしょうか。 SREの何たるかのより詳しい説明については上記のSREや、提唱元であるGoogleのサイト(英語)を参照してください。 sre.google カヤックのSREチーム カヤックのSREチームは2018年に発足しました。 当初は3名体制でしたが、メンバー

    カヤックのSREチームについて - KAYAC engineers' blog
    handlename
    handlename 2022/01/31
    書きました
  • #16 Leap Motionでおっぱいを揉む - KAYAC engineers' blog

    どうも。退職者です。@damele0nです。 teck.kayac.com Advent Calender 2013 15日目のエントリです。 前日は、まったく恨んではいないのですが僕のプライベートな情報を社内でリークした @handlename 先輩の #15 SublimeTextでも使い捨てファイルを開きたい でした。まったく恨んではいないのですが。 さて、去年は「JavaScriptでおっぱいを動かす」というエントリでtech.kayac.com Advent Calendar 2012の2日目から世間様に苦言を呈されたという事態を踏まえつつ そもそも退職者という身分でありかつ、渋谷のディストピアこと闇リエで勤務しているということをわきまえながら Leap Motionでおっぱいを揉みたいと思います。 Leap Motionって? もはや説明不要でしょうか。 [公式サイト] 今年(

    #16 Leap Motionでおっぱいを揉む - KAYAC engineers' blog
    handlename
    handlename 2013/12/17
    はて、なんのことやら…
  • stone を使って tiarra を SSL 化する方法 - KAYAC engineers' blog

    マンガ名刺を心待ちにしている nagata (@handlename) です。 今回は IRC proxy の tiarra を SSL で使う方法を紹介したいと思います。 tiarra って? サーバーに常駐するIRCクライアント兼サーバー、とでも言えばいいのでしょうか。 IRC使う人にとっては割と常識っぽいアプリケーションみたいです(ぼくは最近知りました)。 通常IRCは接続している間の発言しか見ることができません。 が、サーバーにクライアントを常駐させ、 そのクライアントに対してローカルのクライアントを接続することによって、 ローカルなクライアントから接続していない状態の発言も拾うことができるようになります。 SSL 接続したい! 便利な tiarra なのですが、いまのところ SSL 接続をサポートしていません。 SSL で接続できないと・・・ IRC の発言は平文でやりとりされる

    stone を使って tiarra を SSL 化する方法 - KAYAC engineers' blog
    handlename
    handlename 2010/11/16
    書いた。
  • 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
    handlename
    handlename 2010/11/01
    一つ前の記事にかぶせて書いてみた
  • symfonyとHyperEstraierを使って全文検索してみよう - KAYAC engineers' blog

    はじめまして。インターンのsato(@hilotter)です。 突然ですが、みなさんは「全文検索エンジン」って使ったことがありますか? 「全文検索エンジン」と聞くと「何だか難しそうだな」と思われる方もいらっしゃると思います。 僕はまさにそうでした。 そんな全文検索エンジン初心者の僕のもとに、今回、HyperEstraierという全文検索エンジンを使ってキーワード検索機能を実装する機会がありました。 色々調べてみたのですがsymfonyとHyperEstraierを使って検索を行う記事がなかったのでご紹介させていただきます。 間違い等ありましたらご指摘いただければ幸いです。 今回はサンプルとして簡単なキーワード検索機能を作ってみたいと思います。 なお、使用したシステムのバージョンは symfony1.0(ORMはPropel) HyperEstraier1.4.13 となっています。 目次

    symfonyとHyperEstraierを使って全文検索してみよう - KAYAC engineers' blog