selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

チームみんなが参加しやすくなるIaC設計の工夫

モチベーション 私は「インフラ」という言葉は、人によって受け取り方が大き違う言葉だと思ってます。 「よく分からないけど責任が重いので出来れば触りたくない」という人や、「本質的に難しいものなので訓練された人にしか触らせたくない」という人、 「Ia…

新しい技術を検討する際、PdMとして事前に決めておくこと

この資料の目的 自分のキャリアを振り返ってみると、PdMとソフトウェアエンジニア業を兼務することが多くありました。PdMとして業務していくなかで、エンジニアへのお願いの仕方を間違えて、想定よりも多く時間が掛かってしまうこともありました。その問題は…

説明・説得コストについてアレコレ考えたこと

TL;DR 払うべき説明・説得コストと、払うべきでない説明・説得コストが存在する 払うべき説明・説得コストとは、その行為によって期待する成果 (積極的に) 払うべきでない、もしくは説明の方向性を逆転すべき説明・説得コストは、下記の通りだと考えている …

ドメイン乗っ取りを防ぐためにAWSで .com ドメインを使っている

TL;DR JPドメインの管理をしている株式会社日本レジストリサービスには、下記の規則がある ざっくり言うと、「誰かがあなたのドメインを欲しいと言って、あなたが10日以内に返事をしなければ、ほしいと言った人にあげちゃうよ」という規約である // https://…

AWSにおける踏み台(Bastion)サーバーの作り方

モチベーション Bastionサーバーは、会社のサーバーの入り口であり、アクセス管理は厳重に行う必要があります。Bastion(要塞)という名前の通り、各社強力なセキュリティの対策を行っていました。最も一般的なものだと、個人ごとにアカウントとSSHアクセス用…

TypeScriptのnode-fetchをテストの際にmockする

モチベーション TypeScript で node-fetch のライブラリを使ってテストするのに少し手間取った 他にもハマる人がいるかも知れないので、ここに記事として残しておく テストしたい内容 Soracom Arcを利用して unified endpointにテストデータを送信したい テ…

モブプログラミングの進め方

この文章の目的 システム開発における共通認識の作成、または共同学習を目的としてペア/モブプログラミングが有効とされています。 モブプロをより良いものにするためのプラクティスについて、モブプログラミング ベストプラクティスという書籍を元に説明し…

Terraform / aws-cdk を比較してみた(個人の所感です)

プライベートにて、経験の浅いチームから aws-cdk と terraformどちらが良いのですか?と聞かれたのでまとめてみました。間違いがあればご指摘いただければ幸いです。 前提 利用する人間はIaCの初心者である 当然 CloudFormation等に関する基本的な知識がな…

課題を整理・分類し、対処できるように解像度を高めていく

モチベーション 日々、未加工の生肉のような課題っぽいものが飛んでくる 課題っぽいものの中で、今の状態で実施すべき打ち手を把握したい 課題をうまく整理・仕分けし、上記を実施していきたい 課題の図 そもそも課題とは何でしょうか。本書は課題を理想と現…

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ( 施策立案編 )

突然ですが最近転職しました。転職先は三菱重工業です。 業務内容については、概ねこちらの記事に書いてある感じです。 多くの人が意外に思うかも知れませんが、AWSをゴリゴリ使って毎日楽しくシステムを作ってます。 findy-code.io 製造業の世界に飛び込ん…

Azitで学んだことの棚卸し(たぶんずっとWIP)

2019年7月から参加したAzitを、2020年6月30日をもって退職することになりました。 AzitにはSREとして参加しましたが、開発プロセスを設計したり、開発物を考えたり、データを分析してみたり、 振り返ればSRE的な仕事はほとんどしておらず、色んなことに手を…

react-railsを利用したRailsアプリケーションにてCSRFの対策を行う

はじめに 最近久しぶりに Rails で Web アプリケーションを開発しました。その中で React でフォームを作ることになったため、CSRF に関する対策について調べました。そのとき調べた内容を記載します。 なお、React の利用は SPA などではなく、react-rails …

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第3回 ライフサイクルとOMTM~

前回の記事では「事業計画とのすり合わせ」のステップについて記載しました。 selmertsx.hatenablog.com 今回の記事も、引き続き「事業計画とのすり合わせ」のステップについて説明しています。 TL;DR 顧客のライフサイクルを書き出し、課題の解像度を上げま…

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第2回 数値目標の認識合わせ~

先日書いたこちらの文章における、「事業計画とのすり合わせ」のプロセスについてのお話です。 selmertsx.hatenablog.com 一口にスクラムマスターと言っても、事業計画に関わる深さは人によって異なります。 会社の文化や、その他様々な要素によって変わるで…

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第1回 概要~

2019年8月にAzitに入社して4ヶ月。 私はSREとしての役割を期待されてAzitに入社したけれども、気がつけばバックエンドエンジニア兼スクラムマスターをやっていました。 バックエンドエンジニアとしては、AWSインフラ環境の完全な作り直しとTerraformによるコ…

エンジニア面接において構造化面接を取り入れる際に色々考えたときのメモ

前提 このドキュメントは、Work Rulesと失敗の科学 、そして Google re:Workに記載されている面接方法をベースに書いています。上記の資料について、既に古い認識になっている。またはより良い知識がある場合は、このドキュメントは既に古いものになっている…

Azitに入社しました

TL;DR 2019年7月にSpeeeを退職し、Azitに入社しました Azitではインフラエンジニア・スクラムマスターをやってます Speee、とても良い会社なので色んな人に勧めたい Azit、とても良い会社だけど、死ぬほど人足りない Azitに転職しました 2019年7月にSpeeeを…

AWS System Manager Sessions Manager のPort Forwardingを利用して踏み台を経由せずに手元からitamaeを実行する

AWS System Manager Session Managerとか、ちょっと冗談みたいな名前ですよね。 おいおいEKS化とかやってく!! このドキュメントに書いてあること。 このドキュメントには、AWS System Manager Sessions Manager のPort Forwardingを利用して踏み台を経由せ…

SREについてDevOpsの違いや各種用語についてのまとめ

自分用メモです。 DevOpsとSREの違い DevOpsとは開発(Development)と運用(Operations)を組み合わせた言葉であり、開発担当者と運用担当者が連携して協力し、さらには両担当者の境目も曖昧にする開発手法を指します。 厳密な定義は存在しておらず、抽象的な概…

functions-framework を利用したGoogle Cloud Functionsにおいてpubsubのテストをする方法

このドキュメントに書いてあること これまで Google Cloud Functionsをローカル環境でテストするときは、cloud-functions-emulator という公式で提供されているツールが一般的に利用されていました。しかしながらこのツールは現在archiveされており、作者が2…

SAM Localを利用してLocalで動かしているAWS Lambda からdynamodb-localにアクセスする方法

この記事に書かれていること SAM CLIの環境構築方法 SAM CLIを使ってLocalでLambdaを起動する方法 SAM CLIを使ってLocalで起動しているLambdaから、Localで用意したDynamoDB containerにアクセスする方法 これらの処理を僕が趣味で作っているAWS Lambdaを例…

TypeScriptで書かれているCloud FunctionsからCloud PubSubのREST APIを叩く

この記事に書いてあること この記事には、 TypeScriptで書かれているCloud FunctionsからCloud PubSubのAPIを叩く方法 が書かれています。それだけのことなのですが、現在GCPから公式で提供されているライブラリで実現するにはとても大変でした。 僕が把握し…

Stackdriver Logging を利用して特定の条件に一致したLogの情報をSlackに通知する

最近、Cloud Functionsを利用してサーバレスでシステムを構築しています。けれども、まだまだサーバレスでシステムを作り慣れていないので、Cloud Functionsが正しく実行されたのか、ちょっと不安なので確認したいと考えていました。そこで、Cloud Functions…

「Serverlessで構築する社内ID基盤」というテーマで発表してきました

speakerdeck.com

SlackのBlock Kitをjsxの記法で書ける jsx-slackを試してみた

TL;DR 僕は個人的に datadog_slack_reporterというものを作成して、datadogで監視しているサービスの台数をslackに通知しています Slackのメッセージ作成部分を、SlackのBlock Kitをjsxの方式で記述できる jsx-slack に置き換えてみました 面倒なjsonの作成…

Sidekiqのjobの信頼性向上方法と Sidekiq Proの検討について

自分のための覚書 TL;DR sidekiq proでは、server processが死んでも jobの復活がサポートされる sidekiq proにおいて、redis が死んでも、1000件程度のジョブならclientが保持し続けて、redisが復活したタイミングでenqueue してくれる ↑の状況において、cl…

Office365のユーザーimport/exportはそれぞれフォーマットが異なる

TL;DR AzureADのデータについて、ロールバックできる仕組みが欲しい できる限り自前で実装せずに、公式の提供してくれる仕組みに乗っかりたい Office365に存在する import/exportを試してみた そのままでは IDaaSのロールバック用途には使えなさそう グルー…

webpackをupdateしたらterserの問題でbuildができなくなる問題の対処法

TL;DR webpackのバージョンを v4.29.0 にupdateしたらbuildできなくなった どうやら最新の terser-js に問題があったらしい https://github.com/terser-js/terser/issues/253 terser-js を 3.14 にしたら問題が解決した 事象 npm update をして webpackのバ…

【GCP】Datastoreを作ってしまったGCPプロジェクトではFirestoreを使えない

表題の通り。それだけなんだけれども、同じ悲劇を経験する人がいないようにブログに書きました。 2019年1月、Firestoreが東京リージョンでも使えるようになった。 https://firebase.google.com/docs/firestore/locations?hl=en#location-r せっかくなので、…

「U30のための最速キャリア戦略」の所感

読んだもの speakerdeck.com 読んでみた経緯 ここで紹介されていたスライドの内容があまりにも納得がありすぎたので、全部読んでみたくなった。 今更だけど #devboost で一番好きなスライド。2人以上の人間が関わるあらゆる場面で言えることだと思う。"意に…