タグ

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

  • カヤックのSREチームは「SREに関することなら何に使ってもいい時間」がある - KAYAC Engineers' Blog

    SREチームの長田です。 SREsとしての業務がメインではあるのですが、実はSREチームの人事リソース管理を担当していたりします。 今回はそんな立場から「SRE活動用のリソース」について紹介してみようと思います。 SREなのに「SRE活動用」リソース? カヤックのSREは、担当プロダクトチームのメンバーとして動く、いわゆるEmbedded SREです。 社内の予算計画の話になってしまうのですが、プロダクトを持つ事業部がSREメンバーのリソース配分を期ごとに確保する形式となっています。 例えばあるメンバーのリソース(100%)のうち、50%分をTonamel(ゲームコミュニティ事業部)に、 30%分をまちのコイン(ちいき資主義事業部)に割り振った場合、 各割合分のリソースを各プロダクトが属する事業部が負担する形です *1。 Embedded SREの活動とは別に、プロダクトとは直接関係のな

    カヤックのSREチームは「SREに関することなら何に使ってもいい時間」がある - KAYAC Engineers' Blog
    fumikony
    fumikony 2024/08/26
  • カヤック発OSSカタログ - KAYAC Engineers' Blog

    SREチームの長田です。 今回は、カヤックのメンバーが業務で使うために開発・公開しているOSSなプロダクトをまとめて紹介しようという企画です。 KAYAC organization以下にあるものだけでなく、在籍中のメンバーが作ったものもひっくるめて、実際に業務で使用しているものを中心に 紹介しています。 以下の3つのカテゴリに分けて記載しています。 各カテゴリ内はアルファベット順です。 ツール編 人間が手動で実行するもの アプリケーション編 どこかに常駐して、イベントを受け取ると動作するもの ライブラリ編 ツールやアプリケーションから参照されるもの 集めてみたらそこそこの量になったので、記事では詳細な説明は省いています。 GitHubリポジトリのURLや関連記事のリンクを併記していますので、より詳しく知りたい場合はそちらを参照ください。 (...) 内はそのプロダクトで使用している主なプ

    カヤック発OSSカタログ - KAYAC Engineers' Blog
    fumikony
    fumikony 2024/08/09
  • CEL(Common Expression Language)を使ってIAMポリシーを検索する iam-policy-finder - KAYAC Engineers' Blog

    SREチームの藤原です。 今回は CEL(Common Expression Language) を使って、AWSのIAMポリシーを検索するツールを作ったので紹介します。 github.com 3行でまとめ CEL (Common Expression Language)の式を指定してAWS IAMポリシーを検索するツールをOSSとして作りました。GetAccountAuthorizationDetails APIで取得したIAMポリシーをCELで評価して、マッチするものを出力します 例えば「lambda:GetFunctionがあるがlambda:ListTagsがないポリシーを探す」などができます AWSからたびたびやってくる、IAMポリシーに関するお知らせに対応するのに便利です 突然の「Action Required」 ある日、AWSからこんなメールが届きました。 Lambda Ge

    CEL(Common Expression Language)を使ってIAMポリシーを検索する iam-policy-finder - KAYAC Engineers' Blog
  • ゲームプログラミング研修 - KAYAC Engineers' Blog

    こんにちは。技術部平山です。 たぶん15年ぶりくらいに研修の類の講師をやったので、そのことについて書きます。 概要 2D用(github)、 3D用(github) の2つのUnityプロジェクトをテンプレートとして用意して、 そこに「コードだけで」ゲームを作る研修をしました。 どちらも、Hierarchyに何かを足すことは禁止、 足して良いアセットはC#ファイルのみで、 そのC#ファイル内ではUnityEngineの機能を使用禁止、 というレギュレーションです。 いずれも、IMachineなるインターフェイスが存在し、 これを通してゲームを作ります。 例えば2D用のIMachineの主要部分はこんな感じです。 public interface IMachine { public int Width { get; } // スクリーン横解像度 public int Height { get

    ゲームプログラミング研修 - KAYAC Engineers' Blog
  • AWS Systems Manager Parameter Storeを便利に使うツール "ssmwrap" がv2になりました - KAYAC Engineers' Blog

    SREチームの長田です。 今回はssmwrapという拙作CLIツールのはなしです。 ssmwrapとは ssmwrapは、AWS Systems Manager Parameter Store(以下SSM Params)から値を取得し、 環境変数またはファイルに出力した上でコマンドを実行するツールです。 secret類をSSM Paramsに保存している場合、アプリケーション実行時にSSM Paramsから必要な値を取得することになります。 AWSのサービスにアクセスするという操作は、それなりに手間がかかるものですが、 ssmwrapを使えば環境変数とファイルというより簡便な入出力インターフェイスを通してSSM Paramsの値を参照できます。 実装が簡潔になるだけでなく、アプリケーションからのAWS APIへの依存を排除することにもなります。 # SSM Paramsにこんな値が保存され

    AWS Systems Manager Parameter Storeを便利に使うツール "ssmwrap" がv2になりました - KAYAC Engineers' Blog
  • AWSコスト異常検知を導入したら、『人にお願いする』トイルが発生したのでSlackBotを作って解消した - KAYAC Engineers' Blog

    SREチームの池田(@mashiike)です。SRE連載の5月号になります。 AWSのコストについては、多くの方がすごく気にしていると思います。 カヤックでもAWSのコストの変動に関しては敏感に気にしています。 そんな方々の心のお供になる機能が、 AWSコスト異常検知(AWS Cost Anomaly Detection) です。 今回は、このコスト異常検知にまつわるトイル削減の取り組みを紹介します。 背景 AWSコスト異常検知は、AWS マネジメントコンソールの中では『Billing and Cost Management』配下にある機能になります。 この機能を使うことでAWSで発生したコストに関して、通常とは異なるコストの発生を検知することができます。 コスト異常検知自体については、CureApp テックブログ様のZennの記事がわかりやすくまとまっているので、そちらを参照いただければ

    AWSコスト異常検知を導入したら、『人にお願いする』トイルが発生したのでSlackBotを作って解消した - KAYAC Engineers' Blog
    fumikony
    fumikony 2024/05/28
  • Fargate Spotを本番運用するための監視の実践 - KAYAC Engineers' Blog

    SREチームの橋です。SRE連載の3月号となります。 Amazon ECSのコスト最適化においてはFargate Spotが有効な手段となりますが、いつ中断されるか分からない性質上、その監視も併せて実施していく必要があります。今回はそのFargate Spotを番環境で運用しているプロジェクトにおける取り組みを紹介します。 背景 Fargate (Amazon ECS on AWS Fargate) を用いると負荷に合わせた容易なスケーリングが可能になる一方、このときCPU使用率の安全マージンや予測のブレなどにより、リソースがやや過剰になってしまうこともあります。 Fargate Spotの代表的なユースケースと言えばユーザーに露出しない開発環境ではないかと思いますが、このような場合にコストを考えると、タスクの中断をある程度許容しての番環境でのFargate Spot運用も可能な選択

    Fargate Spotを本番運用するための監視の実践 - KAYAC Engineers' Blog
  • CloudFront FunctionsをテストするOSS、cfftを公開しました - KAYAC Engineers' Blog

    SREチームの藤原です。 今回は Amazon CloudFront Functions をテストするためのOSSとして、cfft というものを書いたので紹介します。 github.com 3行でまとめ CloudFront Functionsのテストは手元ではできなくて面倒です CloudFront Functionsをテストする cfft というOSSを書きました KeyValueStoreの操作を含め、便利な使い方がいろいろありますのでどうぞご利用下さい CloudFront Functionsをテストするのが面倒という問題 CloudFront Functions (以下CFF) は、AWSが提供するCDNであるAmazon CloudFrontのエッジノード上でリクエストやレスポンスの操作が行える、JavaScriptの実行環境です。典型的なユースケースとしては、キャッシュキーの

    CloudFront FunctionsをテストするOSS、cfftを公開しました - KAYAC Engineers' Blog
  • デプロイ対象環境ごとに別々の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
  • ITS健保制覇攻略ーー補助がこんなにお得なのに意外と使われていない件 - KAYAC engineers' blog

    このエントリは【カヤック】面白法人グループ Advent Calendar 2023 の17日目の記事です。 はじめに こんにちは、今年のITS健保、ライブなどの抽選でどれも当選しなかった魏と申します。 ITS健保(関東ITソフトウェア健康保険組合)には様々なお得の施策がありますが、他の社員に聞いたら意外と知られていないのが多いようです。それを機に今回の記事でいくつかを軽く紹介します。 はじめに 保養施設 一番お得な「直営・通年・夏季・冬季保養施設」 抽選申込 空き照会申込 5000円/泊の補助がもらえる「契約保養施設」 ITS旅行センター契約保養施設 ラフォーレ倶楽部 10000円補助がもらえる「ITS旅行パック」 その他 健歩大会 利用料金が半分になる「スポーツクラブ」 さらにお得の小技 最後に 保養施設 保養施設 ITS健保で利用できる保養施設は6種類ありますが、メインの3つだけ紹介

    ITS健保制覇攻略ーー補助がこんなにお得なのに意外と使われていない件 - KAYAC engineers' blog
  • dbtでCIを実現するために、Github ActionsでAWSのVPC越えしたい。 - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2023の8日目の記事です。 こんにちわ。その他事業部SREチームの@mashiikeです。 最近、風変わりな記事を連投しているのですが、今回も風変わりです。 ひとことで要約すると、 私は!Github Actionsから!Redshiftにアクセスしたいんだ!!! です。 TL;DR dbtのCIを実現したい。ローカルのunit-testはできてるんだが、Github ActionsからRedshiftへのアクセスに難がある。 Github ActionsからRedshiftにアクセスするために頑張ってみた。 kayac/ecspressoで踏み台となるECS Taskを立ち上げる。 fujiwara/ecstaでportforwardingする。 mashiike/redshift-credentials で一時認証情報を

    dbtでCIを実現するために、Github ActionsでAWSのVPC越えしたい。 - KAYAC Engineers' Blog
  • インクジェットプリンターの目詰まりとの戦い - KAYAC Engineers' Blog

    この記事はTech KAYAC Advent Calendar 2023の7日目の記事です。 こんにちは、@commojunです。記事を書くのは2年ぶりです。昨年は娘が生まれ、最近1歳になりました。知らない間に紙をったりしていて、目が離せません!! はじめに 皆さんはご自宅にプリンターはお持ちでしょうか?我が家にはあります。ペーパーレス化が進んできた昨今、プリンターを持たないという人も増えてきていると聞きます。たまにしか印刷しないならコンビニで大丈夫だったりしますからね。 しかし、印刷物が必要になる出来事は突然やってきます。最近だと、保育園の入園申し込みをするために、市で公開されているPDFファイルを紙に印刷して、期日までに申し込み用紙を完成させる必要がありました。そんなときプリンターでさくっと申込用紙を出力できると頼もしいです。内容を書き損じたときも、気軽にもう一度プリントするだけです

    インクジェットプリンターの目詰まりとの戦い - KAYAC Engineers' Blog
  • GitHub ActionsでEnvironmentsを使わずにManual approvalを実装する - KAYAC Engineers' Blog

    SREの今です。 CircleCIGitHub Actions等のCI/CDツールでデプロイの自動化に取り組む際に、意図しない番反映の防止策として承認アクション(Manual approval)を挟んでおくことがあります。 GitHub Actionsでは、Environmentsを利用することでワークフローの実行前にレビューを必須化することが出来ます1。しかし、この機能をプライベートリポジトリで利用するにはリポジトリの所有者がGitHub Enterpriseを契約している必要があります2。 業務の都合上、Environmentsを利用できないリポジトリでManual approvalを利用したい機会があり、ワークフロー実行履歴を利用したManual approvalを実装したのでご紹介します。 記事はSRE連載の12月号 + 面白法人グループ Advent Calendar 20

    GitHub ActionsでEnvironmentsを使わずにManual approvalを実装する - KAYAC Engineers' Blog
  • Go サーバーで外部 API 操作の原子性を頑張る - KAYAC Engineers' Blog

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

    Go サーバーで外部 API 操作の原子性を頑張る - KAYAC Engineers' Blog
  • AWS Lambda のアクセス許可を紐解く - KAYAC Engineers' Blog

    SREチームの橋です。SRE連載の11月号になります。 AWSの多くのリソースはIAMでアクセスを一元管理されていますが、Lambdaではユーザーが実行したり他のAWSサービスから実行されたりする都合上、様々なポリシーが絡んでいます。 特に「Lambdaを呼び出す許可」についてはID(アイデンティティ)ベースのポリシーとリソースベースのポリシーで内容が被るため、どちらで設定するか混乱しているケースも見られます。 記事ではこうしたポリシー事情をterraformの例と共に整理し、権限設定のベストプラクティスも検討します。 そもそもIAMのポリシーについて ドキュメントによればAWSのポリシーは実に6種類ものタイプがありますが、「使用頻度の高いものから」とあるように最初のIDベースが非常に多くのサービスで共通して使われており、次いで2番目のリソースベースが一部サービスで必要になるでしょう。

    AWS Lambda のアクセス許可を紐解く - KAYAC Engineers' Blog
  • primeNumberさんと合同勉強会を開催しました! - KAYAC engineers' blog

    こんにちは。人事部の高田です。 2023年10月20日、primeNumberさんと合同で勉強会を開催しましたので、その様子をご報告します。 primeNumberさんとは2022年12月にも合同で勉強会を開催させていただきました。 イベントの内容 イベントタイトルは 「組織拡大と共に発生するソフトウェア品質の課題と裏話LT」 です。 簡単に言うと、長期的にサービスやシステムが運用される中で発生する課題や、いわゆる「技術的負債」に関する各社の知見を共有するための会でした。 発表内容 登壇者とトークテーマは下記の通りでした。 発表者 所属 タイトル 鈴木さん primeNumber インシデントの重大度レベル(SEVレベル)策定の話 元木 カヤック Railsでスピード重視で立ち上げたプロダクトの数年後あるある集 中根さん primeNumber 自動化テストをほぼ0 -> 1で社内に浸透さ

    primeNumberさんと合同勉強会を開催しました! - KAYAC engineers' blog
  • 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
  • 常時稼働が不要なRDSインスタンスを停止してAWS料金を節約する - KAYAC Engineers' Blog

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

    常時稼働が不要なRDSインスタンスを停止してAWS料金を節約する - KAYAC Engineers' Blog
  • CloudWatch Logs Insights クエリを定期的に実行して結果をS3に置く(EventBridge Scheduler, Step Functions, Lambda) - KAYAC Engineers' Blog

    カヤックSREの今です。 SRE連載8月のエントリーになります。 techblog.kayac.com Amazon CloudWatch Logs Insights(以下Insights)は、CloudWatch Logsのログを期間を指定して検索、集計、簡単な文字列処理を行うことが出来ます。 Webコンソールから手軽に利用することができ、エラーが起きた際のログ調査に日常的に利用しています。 クエリは非同期で実行されますが、Webコンソールからクエリを実行して結果の表示前にページを離れてしまうと、クエリ結果をWebコンソール上で確認することができません。 Webコンソール上の履歴からリクエストIDを取得し、AWS CLIからaws logs get-query-result --query-id=[リクエストID]を実行することで結果をjsonで得ることができます。 今回は自動で日時の集

    CloudWatch Logs Insights クエリを定期的に実行して結果をS3に置く(EventBridge Scheduler, Step Functions, Lambda) - KAYAC Engineers' Blog