My responsibility is 1. マネーフォワードケッサイ株式会社 2. 株式会社メンバーズキャリア 3. 株式会社Reboost 自分の技術的なスキルを一度洗い出してみます。 2021年1月で34歳か、そして3月で[マネーフォワードケッサイ(旧MF KESSAI)](https://corp.mfkessai.co.jp/press/2020/11/02/)CTOの4年目が終わる。次は5年目。 CTOとして4年、エンジニアとしては2009年から12年。今の自分に何が出来るようになっていて、今思い描く理想はどこを見てるのか、年末でもあるので整理でもしながら、結果としてresumeみたいにしてみようと思う。 resumeというと○○年に■■社で△△の開発を〜という職務経歴書になる事が多いかもしれないですが、ここではフリーフォーマットだったら自分はどういうことを書くか見たいかみたいな観点で書いてみようと思います。 # My responsibility is 今私はどこで何に対して責任をもっている(任されている)のだろうか まず最初に役割から整理してみます。 1. マネーフォワードケッサイ株式会社 1. CTO 2. SRE 3. コーポレートエンジニア 2. 株式会社メンバーズキャリア 1. [技術顧問(Go言語)](https://www.memberscareer.co.jp/skillup/specialadvisers/detail/?p=561) 3. 株式会社ReBoost 1. [技術顧問(アドバイザ)](https://prtimes.jp/main/html/rd/p/000000004.000047494.html) 役割だけだと、結局何に責任を持っているのか存在価値は何なのかがわからないので、掘り下げていきます。 ## 1. マネーフォワードケッサイ株式会社 マネーフォワードケッサイでは創業初期からCTO兼SRE兼コーポレートエンジニアをさせていただいております。[2019年に書いた記事](https://shinofara.dev/2019-resume#cto)でも同じような事を書いていますので、最近はそれぞれの役割で何を考えてるんだろう?だけにフォーカスしてみます。 - CTO - 組織としてアウトカムを最大化し続けるために、生産性が向上し続ける文化と仕組み - 開発組織のレベルアップ(わかりやすい指標としてはグレードかもしれません) - 開発組織の強化観点での採用 - 経営課題に対して技術的な可能性観点で判断、そして中長期価値に向けて投資 - 会社として正しいと認識してる事を正しいと保障できる監査体制と仕組みづくり - 毎年度毎のシステム・会計監査を毎年毎年前年より短時間で完了する仕組みの構築 一つの例として、 [こちら](https://tech.mfkessai.co.jp/2021/03/what_mfk_stopped_in_2021/) - SRE - クラウドネイティブを前提としたDevOpsな組織・仕組み作り - Opslessを目指したDevOpsの仕組みへの投資 - コーポレートエンジニア - [ゼロトラスト](https://tech.mfkessai.co.jp/2020/04/mfk_zerotrust_1st/)を前提とした全従業員が安心して安全に快適に業務を行えるインフラ構築と運用 ざっとキーワードベースで箇条書きにするとこのような感じになります。細かくは力尽きるまで後半で書きたいと思います。 ## 2. 株式会社メンバーズキャリア メンバーズキャリア社に所属するGoに興味を持つメンバー(未経験を含む)が、日常では常駐先次第で利用する言語等が決まるため、なかなか実務で利用する事ができずにいるGoに対してのスキルアップと、最終的にいざ実務で利用となった際に、スムーズにチーム開発に加わって行ける状態になってもらうことを目的として研修や講義、そして相談と言ったことを実施させていただいております。 そのため顧問でイメージする内容よりは、Goメンターという定義が正しいかもしれません。 ## 3. 株式会社Reboost Reboost社が支援または出資を行っている企業様のエンジニア組織や技術的な課題に対して、具体例などを用いて一緒に解決を目指すことを行っております。 # 自分の技術的なスキルを一度洗い出してみます。 スキル書き始めて思ったけど、結局それらをどんな風に使ってる?とかが大事だとおもうので、後半にいくつか書いてみます。いくつかは使ってるレベルなので、使えるとは別物です。 - 言語 - Go / Python / Typescript / PHP / Shell - BackendでPHPが仕事で初期の頃使っていた言語で、ここ数年はGoが多い。会社とかではNode.jsが増えてきているが、まだまだ不勉強 - DevOpsという文脈ではShellやYAML多め、マイクロサービスやツール開発ではGo - SaaS - GCP / AWS - SaaSとしてはAWSが入り口だけど、ここ数年はGCPがメイン - GCP - GKE(Kubernetes) / Run / Functions / DeploymentManager / PubSub / Tasks / GAE / SendGrid / Firebase - GCPはGKEを中心として、徐々にServerlessや、AI周りが増えてきてる。ただしAI周りは自分が触ってるわけではないので、不勉強 - Zero Trust関連 - Google Workspace / Azure AD / Intune / JAMF - Zero Trsutにまとめたが、アカウント、端末などの意味合いで書いてます。端末の中央管理と配布楽しいですね。あと導入したい設定などを導入完了するまで自動なので楽で早い - JAMF/Intuneを利用してエンドポイントのゼロタッチキッティング - Googleが提唱するBeyondCorp取り入れたGoogle Workspace + GCPでのZerotrust概念導入 - IAPを利用してVPNが存在しない場合は、社内プロダクトを限りなくセキュアに社員限定に公開など - Network - Envoy / Cloudflare - k8s内部のネットワーク関連で発生する課題に関してはEnvoyで吸収。PublicとGCP間でのネットワーク課題(例えば、CDNやWAFなど)は最近はCloudflareに任せることで、オリジンまで到達させない分離を検討しながら一部導入 - Secret Management - Hashicorp Vault / GCP Secret Manager - k8sだけではなくRunやFunctionsの導入も増え始めたあたりで、秘密情報の管理と配布方法を統一したく[Vaultを導入した](https://tech.mfkessai.co.jp/2019/08/next_secret_management/)が、Secret Managerが登場したタイミングで自前運用で発生するリスクやコストを軽減させるために、Secret Managerに統一するなど - CI/CD - CircleCI / GIthub Actions / Cloud Builder - 最初は選択肢がCircleCIかTravisCIだったのでその時はCircleCIを選択。現在はCIはActionsで、CDはCloud Builderを選択。CI/CDを同じ物にすることで不要な権限がCI側にも渡る為権限をシンプルにする目的と、生産性向上の観点で分離。CIはActionsに統一することでGithubの中で完結することでネットワークコストを支払わなくて良くなる。CDはBuilderを利用することで権限がGCP内部に閉じる為IAMの管理も容易になり外部に権限流出するRisk低下とネットワークコスト低下につながる - Test - Autify / [serverless-artillery](https://github.com/Nordstrom/serverless-artillery) / Mabl ケッサイ創業以前からDockerとGoは利用しており、ケッサイ創業時にはケッサイドメインの重要性などを考慮してGoを選択、Dockerに関しては最初はGAEという選択肢もあったがRuntimeをContianer化しておくことで、将来の選択肢の幅を効かせることと、他のメンバー間やローカル本番といった環境に左右されず再現性が高いことを理由に選択。それからはもうビルド辞めたいと思えるくらい使ってますかね。