目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

吉祥寺.pm29で久しぶりにLTしてきました #kichijojipm

kichijojipm.connpass.com

久しぶりにLTしてきました。

こんなこと考えてたら良いタイミングできちぴーが開催されるので、LT申し込んでみました。

どうやら7年ぶりだったみたいです。

タイミング的に最終出社日の翌日だったので、キャリアの話をしました。

diary.masasuzu.net

正直、LTにおさまる量じゃなかったのは反省点です。資料ももうちょっとなんとかできたかなあという気持ちがあります。少しずつ登壇回数増やして、勘を取り戻していきたいところ。

JAWS-UG SRE支部 #2 突撃!となりのSRE

jawsug-sre.connpass.com

聞いてきましたのでメモと感想を残しておきます。

LT

マネーフォーワードのマイクロサービス基盤のこれまでとこれから by マネーフォワード @grezarjp

マネーフォワードのマイクロサービス基盤の移り変わりの紹介。中央集権構造 => 権限移譲フェーズ => これから

  • 中央集権構造
    • サービスごとに開発チームが存在、サービスにまたがってインフラチームが存在
    • 開発チームはインフラを気にしなくてもすんだ。メンバーが少ないうちはなんとかなった
    • 組織の規模に対してインフラチームがスケールしなくなった
    • 責務の分解点を再定義 DevOpsへ
  • 権限移譲フェーズ
    • 開発チームに権限を渡していく
    • AWSとKubernatesを使用
    • ランタイム、ミドルウェアも開発チームが管理
    • サービスごとにNamespaceを切る、Namespace内で開発チームは権限を持つ
    • マイクロサービスごとにAWSアカウント管理して、リソースを管理する
  • これから
    • 権限は渡したが、運用まではむつかしい
    • 開発の運用を負荷を下げるために
      • Terraformのモジュール化、設定のバリデーションの整備
      • AWSアカウントの統制、コスト可視化を進めたい
      • アプリケーションランタイムのSnadbox化
        • 特殊要件なアプリケーションで使えるように

開発チームにここまでインフラの権限を渡せて、運用できるのはすごいなと思った。

  • QA
    • Q: 開発チームの権限移譲の苦労、運用面、技術面
    • A: マルチアカウントをつかって 技術上の考慮点があった
    • 人と人とのかかわりに関しては銀の弾丸はないので、地道な作業が必要
    • ドキュメントとかで監視項目を揃えてあげるのに力を入れた
    • Q: 開発とインフラでスキルセットの違いはあった?
    • A:インフラはアプリをあんまり見てこなかったのでそのへんのギャップはあった
    • Q: EKSのテナント分割の単位
    • A: 権限分類と障害の影響範囲の最小化はシングルテナントが有利とは言われるが
    • 運用負荷を下げるためにマルチテナントを選んだ

SREグループのマネージャーという立場になって真っ先にやったこと by ミクシィ@isaoshimizu

内容に関しては、スライドに詳しく書いてあるので参照。

SREのミッション・バリューいいなあと思った。うちのチームでもちゃんと考えたい。

SRE Lounge #13 LTでも今回と近いことを書いてるので参照してほしいとのこと↓

組織にSREの文化を作り上げていくEnabling SRE | Money Forward Engineers' Blog

  • QA
    • Q: SRE主導でやるべきではなかったこと
    • A: SREは万能な人がおおくでできてしまう
      • 開発側のリソースが足りなくて急がないといけないことをSREがやってしまう
      • 本来はそうじゃないよねって話

自分としては、SREでも開発分野でも巻き取れることはやってしまってもいいと思うんですよね。線を引きすぎるとセクショナリズムになってあまり良くない気がしてる。組織のあり方はそれぞれで、コンテキスト分かってないので、言い切ることはできないですが。

Containerサービス と Toil と by スリーシェイク  @tt0603

ECSとEKSについてToilと紐付けての話題。

  • Toilの削減ステップ
    • 特定
    • 計測
    • 削減

ただこのプロセスはつらい。

SREとしては長期的なエンジニアリング に時間を使いたい。本質的なことをすることが目的。Toilを削減することが目的ではない。

技術選定として、まずマネージドで考える。チームとして何を大事にしているかを考える。自分たちの”サイズ”で技術選定をして価値あるエンジニアリングをする。

個人的にはEKSとECSのまとめがわかりやすくてよかった。

  • QA
    • Q: セルフホステッドを選択する場合は?
    • A: 監視するとき Prometheus使うときとかつらいので
    • Fargateは起動が遅い スケールが遅い

パネルディスカッション

  • MFのSREの組織のやり方で工夫してるところ

  • 技術支援からSREの組織

    • 変数がいくつか システムの規模 性質 組織規模、レベル感など
    • pure sreではじめて権限移譲していく
    • 自分たちのサイズに合わせて組織を作っていく
  • 開発とSREのベストの距離感

    • タイミングによって違う固定されたものじゃない
    • 構成をいかにシンプルにできるかが大事
    • SREが開発に使いやすいサービスを提供する
    • SREのAPIを提供するので好きに使って的な
    • 横断組織SREと開発チーム内SREというパターンもある
    • お互いのコミュニケーションは大事
  • 採用する際に求めるスキルセットやレベル感

    • なんでもかんでも能力を持ってる人はいない。特定の領域に得意を持ってるといい、最低限のレベル感はほしい
    • コミュニケーション 大事 ソフトスキルの担保が大事
    • 会社のバリューにあってるか
    • SREワークブックの最後の方求められるスキル書いてある
    • すべてのインフラコードはIaCに寄せたい、チームにはソフトウェアスキル、インフラスキルそれぞれ持つメンバーがほしい
    • 変更時のトラブルシューティングはできるべき
    • コードレビューできるスキルを持っていてほしい
    • コーディングあるていどできる人
    • 組織による
  • 開発をSREに興味をもってもらうはどうしたらいいのだろうか

    • SLOを決めて共通言語で話す
    • 留学すると面白いかも
      • お互いがどういう観点で仕事してるかがわかってよい
    • どこまで開発に移譲するか
      • エラーバジェット、SLO、SLIは必要
      • SREが設定するSLOより開発者が設定するSLOの方がいい
      • 開発者にとってうまいところを教えるアプローチ
      • 開発者にとってもバグが出ないことによって、気持ちよく開発できるよ!

開発者の観点じゃなくてビジネス観点でSLO設定するんじゃないのかなって思う。。。?

あと、留学いいなあと思った。開発チームに留学したい。

  • SREチームが存在しない。どんなフェーズになったらSREチームを作ったほうがいいというしきい値あります?

    • 開発者が開発以外に手を取られて開発スピードが落ちてるのが目に見えたら
    • 兼務の限界値がある。得意なことにバリューを出せるようにしたい
    • 開発しながらAWSの新機能をキャッチアップするのはたいへん
    • devとopsのバランスが崩れているとき SREのプラクティスをいれるといいのかも
    • エラーバジェットが判断軸になるかも
    • どれくらいのチームが困ってるかが判断軸になる
  • Toil撲滅の意味で費用対効果高かったLambdaランキング

    • 今Lambdaを殆ど使ってない
      • chatbotが出たのでLambdaの役割を終えた
      • EKS上にアプリケーションを作ってしまうことが多い
    • 必要悪としてのLambda コードを書くのは最終手段。書いた瞬間に負債になる
    • 時刻でEC2終了するLambda
      • オートスケーリングでいいのでは?
    • terrafromでLambda扱いにくい問題
  • SREとしてセキュリティに対しての役割サービス

    • Inspector
      • ECRのイメージスキャン
        • CI/CD成立してからじゃないとイメージスキャンできない
    • GuardDuty
    • SSO
      • IAM Userを撲滅できた
      • ただ個別要件に対応しにくい
    • SREが見てるケースが多い
    • コーポレートセキュリティは範疇じゃないが、アプリケーションセキュリティは範疇
    • 5,6人目にセキュリティが強い人がほしい
    • 着想の段階からセキュリティの観点をいれておきたい
  • モニタリングロギングの観点で使用してるAWSのサービス

    • AMP
      • EKS使ってるので
      • コスパが良かった
    • CloudWatch log
      • 通知考えるとLambda使わないと
    • Athena
      • わずらわしい
      • 検索しにくい
      • Lokiとかに寄せたい
    • ログをどこにおく
      • S3

Lokiってこれかな?

雑感

他の会社のSREの話を今まであまり聞くことがなかったので、気づきを得る部分が多かった。SREのミッション・ビジョン・バリューはちょっと考えてみたいなと思った。

オンライン開催の形式はYouTube Liveがいいなあって思った。聞き逃しても巻き戻して聞き返せるのがすごい体験として良い。

Future Tech Night #20 Terraform State縛りの勉強会 #future_tech_night

future.connpass.com

久しぶりにちゃんと勉強会の感想ブログ書きます。

① State の分割戦略 〜ModulesとWorkspacesを利用して〜

StateはTerraform上での管理を分ける意味では非常に重要な要素であり、適切に分けることで不慮の事故や予期せぬ変更からクラウドリソースを守ることができます。このセッションでは演者が実際にTerraformを利用して感じたことを交えながら、適切なStateの分割戦略とは?について話します。

Stateの分割についてModuleによるアプローチとWorkspacesによるアプローチ、そしてそのあわせ技についての説明がありました。 Workspacesは使ったことないのであまり知見がなかったので、いろいろ参考になる部分がありました。

今のterraform運用だと環境ごとにディレクトリを切ってstateを分割してます。で、環境ごとの差異としてパラメータだけでなく、作るリソース作らないリソースが若干まちまちなので、そのままだとWorkspacesは向かないなと感じました。

絶対に作るリソース、RDSやVPCなどは分割した上でWorkspacesで管理するのはありなのかなとは思いました。ただ、同じシステムで、環境毎のディレクトリとリソース毎のディレクトリが混在するのはわかりにくくならないかなという懸念はあります。悩ましいですね

あと、ブランチ戦略も難しいですね。現状はmasterでprdをapplyするように、stagingでそれ以外の環境をapplyするようになってますが、全部masterでやるようにしても良いのではと思ったりもしてる今日このごろです。

クラウドリソース自体をdestroy/createdせずに、Terraformリソース定義の記述場所を変更する方法

クラウドサービス上で稼働するリソースには一切手を付けずに、Terraformの定義記載場所だけを変更する方法を話します。

Terraformを利用していると「このディレクトリ配置じゃダメだ。配置変えしたいのだけれど、リソースの再作成はできない。次にインフラ設計するときは、〇〇に注意しよう」という運用ナレッジが貯まると思います。スタート時点で完璧なTerraformディレクトリ設計ができれば御の字ですが、それが不可能なことは、この分野でベストプラクティスが確立されていないことにより証明されています。

本パートでは「Terraformのディレクトリ配置には定石がないのだから、運用状況に合わせて柔軟に配置換えすべき」という観点から、「動作中リソースに影響なく、Terraform定義箇所を移植する方法」について話します。

こんなふうに別のtfstateファイルにリソースをmvすることによって、Stateにリソースを移動できる手法を説明してました。

  1. terraform state mv -state-out=${moved_resource.tfstate} ${moved_resource}
  2. terraform state pull > ${to.tfstate}
  3. terraofm state mv -state=${moved_resource.tfstate} -state-out=${to.tfstate}
  4. terraform state push ${to.tfstate}

State間でのリソース移動に関しては、terraform state rmterraform importのあわせ技しか知らなかったので、新しい知見を得ました。まだ試せてないないんですが、State内での移動であれば、moved block使うのもありなのかなと思いました。ちなみリソースが消えた場合にもmove blockって使えるんですかね?


なかなか他の会社のterraform運用の話を聞く機会があまりなかったので、楽しかったですね。

最近勉強会出てもメモすら残さないことが多くて、せっかく参加したのにあまり有意義に時間を使えていなかったので、薄くてもいいので今後ちゃんと感想、意見を書き残していきたいと思いました。

3月末日で退職してました

f:id:masasuz:20200305115816j:plain

株式会社モバイルファクトリーを3/31で退職してました。2010年6月入社なので9年10ヶ月になりますね。今は新しい会社のSREチームで働いています。

前半数年間はケータイ向けのサイト(いわゆる着メロサイト)やソーシャルアプリの開発運用をしていました。後半数年間は社内全体の開発基盤・運用基盤の整備をしていました。いわゆるインフラよりのお仕事ですね。

入社当時Webアプリケーション開発をまったく分かってなかったところからなんとか人並みに運用開発できる力をこの会社で身につけることが出来たと思います。今なんとかwebエンジニアをやれてるのはこの会社のおかげと言っても過言では無いと思っています。 入社当時SQLをまともに書けなかったくらいのレベルだったのでよく採用されたなと。。。

お仕事的には回りのレベルも高いし、自身の仕事のやり方も裁量を与えられていたし、社内環境も、待遇も悪くなかった。むしろ良かったくらいでした。ただ、長年勤めていく内に悪い意味での慣れが出てきて、自分自身停滞感を感じることが出てきました。ここ数年が特に感じることが多く、停滞感から来る焦りを日々感じていました。どうにか停滞感を解消するために副業として他社のお仕事を請け負ったりしていましたが、どうにも解消ができずにいました。

そんな折に現職のSREチームの話をいただきました。実際に面談、面接を受けて、課題や環境の話を聞くにつれて、ここでなら一歩進めるのではないかという感触を得ました。もちろん焦燥感、停滞感はあれど、居心地が良いと感じてた今までの環境を変えることにはかなりの葛藤がありました。いろんな決め手はあったのですが、新しい場所の方が一番の下手*1でいれそう、なにより事業的にも業務的にも仲間的にもワクワクできそうというあたりが決定打になりました。

入社して2週間しかも、初日以外ずっと在宅勤務なのでまだ様子が摑めてないですが、早くキャッチアップしてバリバリ成果を出していきたい所存です。

これからもよろしくお願いします。

例のもの置いておきます。気が向いたらでよいです。 https://www.amazon.jp/hz/wishlist/ls/3S4C1LCDWKCTM?ref_=wl_share

*1:情熱プログラマ参照