Sionの技術ブログ

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

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

SREとして担当してたモバイルアプリもリリース出来て落ち着いたので書いてみようと思います

FOLIO is 何?

f:id:sion_cojp:20180803152158p:plain

Fintech

[https://folio-sec.com/:title]

入社してやったこと

  • terraform操作周りのリファクタ

    • バージョンの統一
    • terraformを打つまでの認証周りや、providerの設定、ソフトウェアのアップデートなど自動化
    • makeで terraform xxxx を打てるようにした
    • applyログをs3に保存するようにした
  • terraform module作った

    • ECS ec2 type
    • fargate
    • ECS task scheduler
    • waf + cloudfront + s3のsorryサーバ
  • モバイルのインフラ構築、運用

    • サーバレス
    • infra: fargate, ALB, waf, cloudfront, ECR
    • logging: cloudwatch, lambda, kinesis stream/firehose, s3, elastic search(ロギングは同じチームの人が作ってくれました。最高)
    • monitoring: datadog(terraformで管理)
    • slack chatopsをGoで書いた(ossにしたい)
    • リリース前にSREと必要な関係者を読んで、SRE本のLaunchチェックリストをベースに構成やモニタリングなどの最終チェックを行なった
  • セキュリティ周り

    • SSMでの暗号化、復号化を積極的に使った
    • GoでtomlからSSMの復号化出来るようにした GitHub - sioncojp/tomlssm
  • fargateで色々サービス立てた

terraform周り

入社したとき、terraformを打つまでにいろんな障壁があることを経験したので、即座に自動化タスクに取り組みました。

前職の影響からか、makeで色々と出来るようにし、今ではその障壁がなくなりました。

make helpはこんな感じです。

f:id:sion_cojp:20180803142154p:plain

弊社で動かしてるansibleやpacker周りも自動化したいです。 が、ansibleに関してはそもそも無くす(減らす)動きをしていく気持ちです。

モバイルのインフラ構築にあたって

「まだsshしてるの?」「開発者が開発に集中」という気持ちで進めてました。

結果sshはしなくなったので、セキュアにもなりましたし、インフラ運用コストも下がって楽になりました。

chatopsや、エラーログやアラートなどもslackで対応出来るようになったのもgood。

今回初めてやったのですが、SRE本にも書かれてる Launchチェックリストを元に、構成や仕組みを一から全てチェックしました。

これで安全にリリース出来るよねという合意と、サービスにあまり携わらなかった人もシステム構成を把握出来た(非属人化への一歩)のは良かったです。

fargate

モバイルアプリ用APIは、EC2で行こうという話だったのですが、

それだと技術的進歩が望めないので、ECSを導入しました。

最初はEC2 typeで導入したのですが、途中でfargateが登場したので載せ換えました。

挙動、特にEC2 typeにはないオプション周りで悩まされた記憶があります。

運用と拡張しやすいようなterraform module構成を意識したので、すぐにfargate構成が出来るようになりました(今は4, 5サービスくらい動いてます)

ECS task scheduler

fargate対応してないので、やむなくEC2 typeでmodule化。

chatops

slack interactive componentsを使っており、Goで書かれてます。

auth周りも実装してるので、config.tomlのプロジェクト設定にある指定された人しかdeploy出来なくなってます。

モバイルアプリのメンテナンス画面切り替えもこちらでやってます。

f:id:sion_cojp:20180803140150p:plain

  • プロジェクトを選択
  • prod, stg...を選択
  • ブランチを選択
  • 最後にコミット番号などが出るので、OK or cancelを選択
  • deploy finish

最後に

Fintechなのに、スピード感もって新しいことが出来るいい会社だなぁと思いました。

個人としては運用しやすい、拡張しやすいコードを意識して出来たのとも良かったです。

(そのため、コメントを中心にドキュメント(README.md)や構成図(draw.io)を充実させた。)

インフラ周りが落ち着いたら、microserviceアーキテクチャの実装や、認証認可のサービス実装など色々やりたいですね。