Sionの技術ブログ

SREとして日々の学習を書いて行きます。twitterは@sion_cojp

DXERのCTOとして1年やったこと(実務編)

DXER, Inc の @sion_cojp です。 CTOになって1年くらい経ったので実際に実務何をやっているのかというあたりを話そうと思ってます。 会社の戦略、経営に関するものは https://note.com/sion_cojp/ にどこかで書きます。 TL;DR なんの会社やってるの? コード…

SREとバックエンドを統合してバックエンドに転向しました

はじめに タイトルの通り、SRE歴だと6年 + 5社目ですが、株式会社チカクのSREからバックエンドに転向して2ヶ月経ちました。 この2ヶ月、フェーズが変わったプロダクトに追従出来ていなかったチームの開発プロセスを刷新することにメンバーと注力していました…

Djangoでコンテナ用にjsonログ出力を実装する

TL;DR Why? Why formatter? Why filter 実装したものを適用した後のログ出力 How 設定方法 required config/base.py config/logging_formatter.py config/logging_filter.py config/environemnt名.py TL;DR djangoの標準ログは質素すぎて足りない部分が多か…

Fargateで異常終了したコンテナをLambda(Go)でslackに通知する仕組みをTerraformで管理する

TL;DR どんな感じに通知されるの? Architecture Code 実装時のポイント 事前にSlackのappを作る シークレット情報はLambdaのEnvironmentに設定できない terraformからGoで書かれたlambdaをdeployするのが難しい Goがインストールされてなくてもbuild, go ge…

aws rootアカウントに二要素認証の必要性と有効化する手順

二要素認証の必要性 nullcon HackIM 2020 Writeup - Lateral Movement - こんとろーるしーこんとろーるぶい こちらのCTF writeupを拝見したところ、下記のような内容でした。 1. script.jsを見て変なHTTPヘッダーを見つける 2. HTTPヘッダーに値をセットして…

AWS S3の特定パスにある大量のオブジェクトをGoで並列に別バケットに移動する

はじめに TL;DR バケット構成 Why 移動? How 進め方 コストの洗い出しとGlacier or DeepArchive コード どれくらいかかった? 障害が起こってないかの確認 終わったときのslack通知 移動時と移動後の値段 起こった問題について 1. インスタンス耐えれなかっ…

golang.org/x/sync/ を使ったGoの並列処理

Go

はじめに syncパッケージのコード golang.org/x/sync/ のコード はじめに 昔はsyncパッケージを使う必要があり、若干分かりづらいコードになってましたが、 golang.org/x/sync/ で実装すると分かりやすく改善されてたのでサンプルコードをおいてみます。 並…

RDS MySQLをAuroraに移行したお話

はじめに TL;DR Why Aurora? その他の改善項目 過去に1回チャレンジして失敗している How 進め方 移行中のデータ欠損対策 peeringの確認 RDS接続用のprivateドメインを作ってインフラ側で制御する dumpの手順 DB名を変更する手順 ユーザ通知や社外調整 手順…

株式会社チカクに入社しました

2021/3月に株式会社チカクに転職しました。 あまり入社エントリーは書かないのですが、1ヶ月経った節目として書いてみます。 自己紹介 元プロゲーマーでアジアチャンピオンです。 会社歴としては、下記の通りです。 会社名 職務 ビットアイル ハードウェア周…

AWS S3 Glacierの取り出しをRubyで検証してみる

What S3のGlacier, Glacier Deep Archiveがあるが、実際に取り出したことがあまりない 取り出すにはリクエストが必要 今働いてる chikaku がrailsをメインにしてるので、rubyで検証しました Glacier周りの料金や仕様 S3にあるオブジェクトは保存するのにお金…

terraform 0.13でローカルproviderを利用する方法

はじめに terraform 0.13からproviderが https://registry.terraform.io/ から配布され、下記のように記述すると自動取得するようになりました。 # ref: https://www.terraform.io/upgrade-guides/0-13.html#explicit-provider-source-locations terraform {…

タイミーのEMとしてどのようにマネジメントしているか

はじめに 16歳からゲーマーとしてずっとチームマネジメントをやっており、 自身の強みなので本腰入れてやりたいという思いで1月にタイミーに入社しました。 結果、今はSREマネージャー(2人) + BI基盤チームマネージャー(3人) + コーポレートエンジニア(3人)…

Fargateでfirelensを利用し、datadog logsとs3にログを保存する

firelens is 何? fluentd/fluent-bitに連携することが可能なログドライバーです。 なぜfirelensか firelensが出るまでFargateはawslogsドライバくらいしか選択肢がありませんでした。 s3に生ログの保存、解析+アラート用にdatadog logsに送るためには farga…

Fargate + cloudwatch eventでcronシステム モニタリング編

前回のお話 Fargate + cloudwatch eventでcronシステム構築 - Sionの技術ブログ non exit0かどうか こちらはlambdaで監視してます。 Fargate + cloudwatch eventでcronシステム構築 - Sionの技術ブログ ロジックとしては、タスク終了時のイベントをトリガー…

Fargate + cloudwatch eventでcronシステム ロギング設計編

前回のお話 Fargate + cloudwatch eventでcronシステム構築 - Sionの技術ブログ 技術 aws-cloudwatch-logging module: terraform module。kinesis firehose + lambda。(cloudwatch logsに書き込まれたらs3とdatadog logsに吐き出す) s3: 長期間保存するロ…

Fargate + cloudwatch eventでcronシステム構築

FOLIOでFargate + cloudwatch eventを使ったcron(マイクロバッチ)システムを設計し、実際に本番で動いてるので紹介します。 (ロギング、モニタリングは別記事で紹介したいと思います) 構成図 技術 fargate: アプリケーション cloudwatch event schedule:…

GoでSlackに定常アラートが出たら、スレッドで自動コメントする

Go

github.com Slackに定常アラートが出たら、スレッドで自動コメントするGoのプログラムです。 今はアラート撲滅に着手出来ないけど、それまで周りに分かりやすいようにコメントを自動でしたい!という時に便利に使えるなぁと思って作りました。 動作 例えばこ…

FOLIOに入社して1年でやったこと

やったことをまとめてみます。 terraformのコマンドラッパー(Makefile)作成 terraform周りの自動セットアップ terraformのバージョンが固定 terraform providerが自動更新 実行ログをs3に保管するようにしたりなどなど。 コンテナ本番導入 AWS ECS EC2, Fa…

CodeBuild + PackerでAMIを焼く

CodeBuild + Packerを使って、AmazonLinuxベースのimageを焼きます。 完成品こちらです github.com 構成図 CodeBuildの準備 Terraformでセットアップします。 https://github.com/sioncojp/codebuild-packer/tree/master/terraform/codebuild/packer を参考…

FargateでSSMのデータをコンテナ起動時に環境変数にセットする

はじめに dev.classmethod.jp こんな機能が提供されましたが、 (重要)Fargateは対応していない 本当かどうか実際に試したところ、やはり対応してませんでした。 なのでFargateの場合、SSMのデータを読み込む場合は下記2択が想定されます。 SSMのデータをd…

ECSのタスク切り替りを通知させる

本記事は、FOLIOアドベントカレンダーの13日目の記事になります。 ことの始め なるほど。 つまりALBにぶら下がってるコンテナが、現在のコンテナがなくなって、新しいコンテナだけになったときに通知があれば嬉しいってことですね。 棄却した案: cloudwatch…

プロゲーマーのマネージメントとチームワーク

本記事は、FOLIOアドベントカレンダーの11日目の記事になります。 はじめに 自己紹介 CS 1.6とは? 本題 メンバーを適したポジションに配置する 報告はできる限りシンプルかつ明確に 報告に感情は不要 怒らない あえて失敗させる 讃え合う ルールはシンプル…

FOLIOモバイルアプリのインフラ構成のお話

明日、弊社で SRE Lounge #6 - connpass というイベントがあるのですが、 残念ながら登壇する枠がないのでスライドだけ公開しました。 世間体ではGKEのお話が多い中、Fargateのお話です。 Fargateはクラスタの管理が不要な分、とても楽に運用出来て結構幸せ…

clairでローカルのDockerイメージの脆弱性スキャン

clairとは? github.com CoreOSが作ってる、コンテナの脆弱性スキャンツールです。 CVEデータをpostgresに入れて(定期更新される)、それを元にスキャンします。 ローカルイメージをスキャン github.com CoreOSが提供してた、analyze-local-imagesはdepreca…

ディレクトリ配下にある.tfファイル全てにterraform planをGoで並列実行する

FOLIO特有のロジックが入ってますが、参考になればと思います。 terraformのディレクトリ構成 FOLIOのterraformはこんなディレクトリ構成になってます。(一部抜粋) ── envs ├── mobile-prod ├── provider.tf ├── ecs ├── iam ├── route53 └── vpc ├── back…

terraform-provider-awsの開発からPRを出すまでの手順

github.com 些細ではありますが、出したPRがmergeされました。 開発方法よくわからないなぁ。と思う人が多いと思うので、私が実際に行ったことを書いて見ます。 開発方法 # go get。今回は本家で修正して試して、その差分をあとでfork先に適用する感じ。 # …

FOLIOに入社して3ヶ月経ちました

SREとして担当してたモバイルアプリもリリース出来て落ち着いたので書いてみようと思います FOLIO is 何? Fintech [https://folio-sec.com/:title] 入社してやったこと terraform操作周りのリファクタ バージョンの統一 terraformを打つまでの認証周りや、p…

tomlファイルをParameterStoreからdecodeするtomlssmを作った

Go

github.com GitHub - suzuken/yamlssm と同様にtomlでも出来るようにしました。 やってることは AWS System Managerで、Parameter Storeでを設定する(例えばxxxという名前でsecure stringで設定します) "ssm://xxxx" と書いてると、toml読み込み時にxxxの…

GKEでGoのhttpサーバを動かしてみた

Overview GKEを触ってみたかったので実際に触ってみた。 ref: クイックスタート | Kubernetes Engine のドキュメント | Google Cloud ソースはこちら github.com ただの"Hello World"を返すGoのコード。 kubernetes特有で、 /healthz がヘルスチェック用のpa…

Go - AWS SSM Parameter Storeのデータを復号化とmockテストの書き方

SSMとは? SSM ParameterStoreとは? 実際にやってみよう 1. ParameterStoreの登録 2. aws-cliで試してみる 3. Goで動かす 4. テストを書く SSMとは? インフラ運用を便利にするサービス SSM ParameterStoreとは? パスワードなど値を管理 SecureStringsは裏…