ESLintのパフォーマンスを調査する

環境 ESLint v8.13.0 調査方法 ルールごとにかかっている時間の割合を計測する TIMINGオプションを付けると、実行時間が長い順のトップ10と、ilnt対象全体に対してのトップ10の割合が表示される $ TIMING=1 eslint lib Rule | Time (ms) | Relative :-------…

GitHub Actionsでdocker build時にエラーが出た

概要 GitHub Actionsでdocker build時にエラーが出たのでメモ エラー docker build時に下記エラー error: failed to do request: Post "https://***.dkr.ecr.ap-northeast-1.amazonaws.com/v2/<REPOSITORY>/blobs/uploads/": EOF 原因 ログインするECRのアカウントIDを間</repository>…

転職にともないLTした話

概要 苦労したところとそれに対する取り組み 開発生産性改善 辛かったこと 対策 まとめ 負荷試験改善 辛かったこと 対策 自動化 モブプロ・モブ作業 段階的な負荷検証 まとめ 職能横断組織と機能別組織 辛かったこと まとめ まとめ ブログのまとめ 概要 年明…

いい手順書とは

概要 私が思ういいWebシステム開発における手順書についてまとめる 前提 Webシステム開発 複数人のチーム開発 結論 いい手順書とは下記のような特徴がある 手順に番号が振ってある 番号が振ってあることで下記のメリットがある 全体を見渡したときに手順がい…

GitHub ActionsからAWS CodeBuildをキックする

概要 GitHub ActionsからAWS CodeBuildをキックする方法を示す。 背景 すでにCodeBuildプロジェクトの資産がある GitHubと連携しており、CodeBuildの結果をAWSコンソールを開いて確認するのが手間 結論 下記のようにして実装した。 RoleとCodeBuildプロジェ…

workflow dispatchでnpm versionを更新する

概要 ある変更の塊に対してタグを付けたい ローカルでやると間違えるのでCIで統一したい tagとreleaseを分けたい コード .github/workflows/tagging.yml name: tagging on: workflow_dispatch: inputs: version: type: choice description: "patch | minor |…

Terraformでmodule利用時にデフォルト値と動的な値を設定する

概要 Terraformでmodule利用時にデフォルト値と動的な値を設定する。 例としてECSのタスク定義の環境変数を用いる。 バージョン terraform -version Terraform v0.14.3 コード モジュール側 modules/hoge/variable.tf variable "environments" { type = list…

GitHub Actionsでmilestoneが適用されていないPRを検知する

概要 PRオープン時にマイルストーンがついているか検知する ついていなかったらCIを落とす を実現したかったが方法に難があるのでメモを残す。 マイルストーンとは https://docs.github.com/ja/issues/using-labels-and-milestones-to-track-work/about-mile…

GitHub Actionsからリリースノートの自動生成機能を使う

概要 GitHubにはリリースノートの自動作成機能がある。 .github/release.ymlをおいておけばそのフォーマットどおりにラベルをグルーピングしてサマリを作ってくれる。 Automatically generated release notes - GitHub Docs yamlのサンプルは下記。 https://…

退職エントリ

概要 10月31日で現職を退職します。 2017/4~2019/7 合同会社DMM 2019/8~2021/10 合同会社EXNOA(DMM GAMES) プラットフォームチームでDevOpsやSRE領域の活動をしてきました。 (開発から運用までのワークフロー整備・改善など。) チームメンバーや会社に助け…

GitHub Actionsのservice containersでCI実行時にMySQLコンテナを動かす

概要 GitHub Actionsのservice containersという機能を使うと、CI上でコンテナを動かすことができる。 ユースケースとしては統合テストや、マイグレーションテストが想定される。 About service containers - GitHub Docs 例 .github/workflows/test.yaml na…

Dockerfileのヒアドキュメントを試す

概要 前提知識 環境 動作検証 syntaxについて syntaxとは docker/dockerfileとは xxx-labsとは 参考 まとめ 概要 docker/dockerfile:1.3.0-labsからDockerfileでヒアドキュメントがサポートされた。 https://github.com/moby/buildkit/blob/master/frontend/…

Locustで時間に応じて一定のRPSをかける

概要 Locustで時間に応じて一定のrpsを流す 結論 constant_pacingとLoadTestShapeを利用する。 バージョン Locust v1.6.0 例 120秒かけて0->100rpsまで上げる 120秒間100rpsをかける 120秒かけて100->1rpsまで下げる 1秒に1回タスクを実行するようにして、ユ…

Locustで複数パス・複数ホストへリクエストし、それぞれ個別にGrafanaでグラフ化する

概要 負荷試験ツールのLocustを使ってWebシステムに負荷をかける。 その時、リクエストのホスト、パス毎に負荷試験結果をグラフ化したい。 Locustで上記を実現するにはどうすればよいか記録する。 バージョン Locust v1.6.0 Grafana v8.0.x Prometheus v2.28…

負荷試験ツールの選定時に考慮することまとめ

概要 負荷試験ツールの選定を行うときに考慮することをまとめる 機能 ログインが必要なページへの対応 Cookie変更など 負荷分散機能 負荷試験クライアントマシンのリソース上限に達する場合は負荷分散を考慮する必要あり 複数ユーザ対応 ファイル読み込み等…

複業の契約が半年間継続したのでやっていることをまとめる

概要 案件獲得 勤務形態 勤務時間、勤務ペース 担当範囲 Tips タスクの認識合わせ 期待値の共有 稼働時間のズレ 業務の改善提案 ドキュメント整備 未経験の技術について 健康 その他感想 副業の目的を明確にする 開発規模の違い 依存先が分散する サイクルを…

AWS ECS構築時のメモ

AWS

概要 AWS ECSのデプロイフローを構築したときのメモを書き起こす。 terraform version0.13.2 CI/CD GitHub Actions aws-actions/amazon-ecs-render-task-definition@v1 及び aws-actions/amazon-ecs-deploy-task-definition@v1 を利用する。 dev環境 ビルド…

DevOpsチェックリスト技術編

概要 以前書いたメモを公開する。 DevOpsは技術面と文化面があるので、技術編としている。 バージョン管理・ブランチ戦略 Gitでバージョン管理している ブランチ戦略を決定している 基本はGitHub flowもしくはgit flowに合わせる。 CI 自動的にビルドできる …

Amazon CloudWatch SyntheticsとAWS Chatbotで外形監視をSlackに通知する

AWS

概要 Amazon CloudWatch Synthetics + AWS Chatbotで外形監視の通知システムを作ったのでログに残す。 構成図 作業内容 今回の通知は本番環境のみ利用するのでコード化せず、GUIで作成した。 作業詳細は公式ドキュメント参照。 https://docs.aws.amazon.com/…

JavaScriptで数値の有効範囲でバリデーションする

概要 JavaScriptの有効値による丸め方法 Math.max(x,<有効数字の下限>) Math.min(x,<有効数字の上限>) 例:10進数のRGB値を16進数に変換するとき0~255を有効値とする。 有効範囲を超える値は最も近い値に丸める場合、下記のようになる。 Math.min(Math.max(1…

K8s負荷試験作業記録

概要 環境 事前準備 負荷試験実施 確認事項 メトリクス 考慮点 スケールアップかスケールアウトか PodとNodeのスケールアウト速度の差 スケール特定 アプリケーション特性 改善点 作業人員不足 参考 概要 負荷試験を実施したので記録する 環境 AWS(EKS)、Dat…

CloudWatch Syntheticsでロールが作れないとき

AWS

概要 AWS CloudWatch SyntheticsのcanaryをGUIで作成するとき、 「Create a new role」がグレーアウトして押下できない。 原因 S3のパスを変更していたから。 IAM Roleを自動作成するとき、ポリシーの設定がデフォルトのS3パスになっている。 そのため、S3の…

package.jsonのバージョンを固定する

環境 $node -v v14.15.0 $npm -v 6.14.10 結論 $npm config set save-exact true https://docs.npmjs.com/cli/v7/using-npm/config#save-exact。 設定は.npmrcに書き込まれる。 renovateを利用するときにバージョンを固定する必要があるので、この設定が有用…

GitHub Actionsで特定のディレクトリ配下が変更されたときだけワークフローを発火する

概要 GitHub Actionsで特定のディレクトリ配下のファイルが変更されたときにワークフローを発火する方法。 結論 トリガーにpathsを使用する。 下記のように書くとhogeディレクトリ配下のファイルが変更されたときのみワークフローが発火する。 on: push: pat…

direnvを使ってTerraformにAWSクレデンシャルを設定する

バージョン $direnv --version 2.21.2 $tf --version Terraform v0.13.2 方法 Terraformのホームディレクトリに下記の.envrcを追加する。 AWS_PROFILE="<PROFILE_NAME>" AWS_DEFAULT_REGION="ap-northeast-1" .gitignoreに.envrcを追加する。 .envrc これで対象のディレク</profile_name>…

未知のライブラリ、フレームワーク、サービスを使うときのキャッチアップ方法

概要 キャッチアップ方法 1. コンセプト、モチベーションを知る 検索方法 2.用語をざっくり知る 検索方法 3.動かす 検索方法 4.ベストプラクティスを調べる 検索方法 わからない事があったとき 前提 検索順番 例 1. コンセプト、モチベーションを知る 2.用語…

2021年1月時点Next.jsのGraceful Shutdown実装状況調査

概要 Next.jsをコンテナで動かすときにGraceful Shutdownが実装されているか気になった。 12月の調査時点ではcanaryだったが、すでにリリースされていた。 本当は「2020年12月時点Next.jsのGraceful Shutdown実装状況調査」だったが、 今の状況だと「Next.js…

変更に強いE2Eテストにするためにカスタムデータ属性を使う

E2E

概要 壊れやすいE2Eテストとは E2Eテストのテストシナリオを書くときに、下記のようなセレクタの使い方をすると壊れやすくなる。 CSSの変更やJSのイベントに紐づくセレクタ(id,classなど) 例:同じclass属性を持つ要素が増えたときにテストが通らなくなる。 …

Gitで削除された文字列のコミットとプルリクエストを調べる

Git

概要 Gitで削除された箇所のコミットとGitHub上のPRを調べる。 環境 $git version git version 2.26.0 結論 文字列からコミットを検索するには $git log -p -S '<検索したい文字列>' <対象のコード> #例 git log -p -S 'hoge' fuga.js GitHub上でコミットハ…

sedでcommand i expects \ followed by textが出た

環境 $sw_vers ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G95 概要 sedを実行したら下記エラーが出た $cat test.txt 1 2 3 #2行目にhogeを挿入 $cat test.txt | sed -e 2ihoge command i expects \ followed by text 原因 Mac(BSD)とL…