selmertsxの素振り日記

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

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みたいなものを…

【適宜更新】IDaaS諸々

来年の技術書典でIDaaS周りの話を書きたいなと思ったので、適宜考えたことをメモってく。とりあえずガガっと書きなぐって、あとで修正してく。 背景 企業がセキュリティを強化するにあたって、エンジニアができることは何か。 日本セキュリティ協会による201…

「Amazon Web Services サーバレスレシピ」という本をリリースしました

FiNCのエンジニアの方々と一緒に書いた本が、この度 インプレス R&D様から出版していただくことになりました。 僕は最初の章を書かせて貰っています。宜しければ見てやってください〜。

CloudFunctionsをServerless Framework & TypeScriptの環境で試してみる

やったこと Serverless Frameworkを使って CloudFunctionを動かしてみました。 試した内容は下記の通りです。 TypeScriptで書けるようにしてみる serverless.ymlの設定で環境変数を利用する 日本のリージョンにDeployする 実際に利用したコード https://gith…

Azure ADのGraphAPIを利用する

この資料を読んでできるようになること Azure ADのディレクトリをAPIを利用して操作できるようになる 手順 Appを登録する AccessTokenを取得する GraphAPIを叩く Appを登録する Azure Active Directoryを選択 App Registrationsを選択 nameとsign-on URLを設…

OpenID Foundationのガイドラインに沿ったRailsでのOIDC Implicit Flow実装

IDaaSを社内サービスに適用したかったので、その準備としてOpenID Foundation Japanのガイドラインが伝える OpenID Connect Implicit Flowの実装方法を試してみました。 前提 本ドキュメントではOpenID Connectの仕様については説明しない OpenID Foundation…