selmertsxの素振り日記

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

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第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人以上の人間が関わるあらゆる場面で言えることだと思う。"意に…

GCPでCloud Functionsを作る際の個人的なTIPS

この記事は技術同人誌Advent Calendar 2018の19日目の記事です。 こんにちは。 @selmertsxです。主にRailsのサーバーサイドエンジニアをやってます。 技術同人誌 Advent Calendarということで、今年の11月にNextPublishing様から出版させて頂いたAmazon Web …

TypeScript開発における僕のVisual Studio Code設定

僕が Visual Studio Code を利用して開発しているときの設定。 こうすると ts-nodeとjestの双方でdebuggerを利用できる。 ※ 他に良い方法があれば :pray: 設定ファイル { "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "…

AWS re:Invent 2018のupdateまとめをLTで話してきました!

speakerdeck.com Microservicesをやりたい

「AWS re:Invent報告会 by Yappli 」でChaos EngineeringについてLTしてきました!

speakerdeck.com 発表資料はこちらになります。 AWS re:Inventの報告会なのに、完全に趣味によりすぎてしまいました...!!!

AWS re:invent 2018 サービスアップデート1行まとめ

aws

ML系 Amazon Personalize eコマースなどでレコメンドができるようになるサービス。今までのサービスと異なり、自分たちの持っているデータを学習データとしてINPUTさせることができる。データはS3 or Amplify から送信可能。 Amazon Forecast 時系列データの…

AWS Re:invent 2日目のKeynoteまとめ

aws

Lambda の公式 Runtimeに Ruby 2.5が追加されました Lambda Layersによって、Lambda間でロジックを簡単に共有できるようになりました Lambdaで Custom Runtimeを設定することができるようになり、好きな言語で書くことができるようになりました https://aws.…

(TypeScriptで書かれてWebpackでビルドされた) CloudFunctionsのエラー通知をわかりやすくしてみた

やりたいこと stack driver error reportのエラーの内容をもう少しわかりやすくしたい。 やること GitHub - prisma/serverless-plugin-typescript: Serverless plugin for zero-config Typescript support ここを参考に node-sourcemap-supportを導入した。 …

gcloudコマンドを実行するGCPのアカウントを切り替える

忘れないようにメモ。 例えば、before-selmertsx プロジェクトから、test-selmertsx プロジェクトへと切り替えるとする。 そのときの手順は下記の通り configurationsの作成 gcloud config configurations create test-selmertsx gcloud config configuratio…

Cloud FunctionsとCloud Schedulerを利用してDatadogで監視しているホスト数を通知させてみた

作ったもの 指定された期間のDatadogの監視台数について、最小,最大,合計(ホスト数×時間)を算出してSlackに通知してくれるCloudFunctionsを作成しました。そのCloudFunctionsはCloud Pub/Subで実行され、Cloud SchedulerはそのCloud Pub/SubのTopicを一日一…

Azure ADとG Suiteのグループを同期させる

モチベーション メーリスの設定を自動でして欲しい Google Drive内の資料の閲覧権限を自動かつ適切に付与したい 誰がどのようなグループに所属し、どのような権限を持つかはAzure ADで制御したい やり方の方針 Azure ADとG SuiteのGroupを同期させる Azure A…

G Suite Domain-Wide Delegationを使ってG SuiteのGroupを作成する

TL;DR googleapisを使って、G Suiteの Groupを作成できるようにした 公式のドキュメントにはnodejsでの実装方法が無かったので自分で実装した よってこれが最適な方法かは分からない G Suiteの特権管理者の権限が付与されている必要がある https://developer…

TypeScriptで書いたCloud FunctionsをCloudBuildを使ってDeployする

これを読んで出来るようになること TypeScriptで書いたCloud Functionを、Code Buildを使ってdeployできるようになる。 前提と事前準備 前提 CloudFunctionsのコードはwebpackを使ってまとめている Deployは serverless コマンドではなく、gcloudコマンドで…

GCPのCloud BuildでCloudFunctionsをデプロイする

モチベーション GitHub上で管理しているCloud Functionsのコードについて、masterにマージされたタイミングでdeployして欲しい。 Cloud Buildとは何か? Docker Image作ったり Cloud Functionsをdeployしたり、テストしたりできます。CircleCIみたいなものを…