bitbank techblog

インフラチームのこれまでとこれから

自己紹介

インフラチームの koarakko とデータチームの kaori です。
今回は当社のインフラチームの活動とこれまでの取り組み、これからやっていきたいことをテーマに記事にしたいと思います。

この記事では、

  • 今までどんな取り組みをしてきたのか
  • チームのミッションやカルチャー
  • これからやっていきたいこと

等々をお伝えでき、少しでもビットバンクに興味を持ってもらうきっかけになればと思っています。

これまで

インフラチームは AWS のクラウドサービス上に暗号資産取引所サービスのインフラとデータ基盤の設計・構築・運用を業務範囲とするチームでした。
日々の課題に対してデータは Modern Data Stack の概念をベースにデータ基盤や Redash の運用などを行い、インフラでは IaC によるインフラ構築や GitLab による CI/CD を管理しています。これらの実現にあたって常に妥協しないアーキテクチャを追求しています。

2018 ~ 2020年まで

インフラチームは 2018 年に 1 人目のインフラエンジニアの入社をきっかけに誕生しました。当初は 2 人で、個人が力を発揮していく進め方でしたが 2018 年末に 5 人体制となりました。当時は統制やプロダクトだけでなく組織も急成長中のフェーズでした。 AWS アカウントの集中管理のために AWS SSO の導入をはじめ、統制強化のための踏み台や CI/CD の整備、 Amazon Workspaces の導入、そして様々なログを扱うログ基盤やセキュアな VPN 基盤への置き換えなどを行いました。また CloudFormation による IaC 化を徐々に浸透させていきました。さらに当社サービスが可用性の求められる性質であるため AWS エンタープライズサポートの加入も行いました。

2020 年のコロナウィルスの流行によりリモートワークが開始されました。それをきっかけにインフラチームでは継続的にコミュニケーションが取れる雑談チャンネルを Google Meet 上に開設しました。メンバーと気軽に技術的な議論や悩みなどを相談したりなど、出社していた際に何気なく行っていたことをリモート環境でも実現させたかった、というのが背景です。また他チームがインフラ領域で抱えている運用課題を相談するための MTG を定期的に実施することで、リモートワークでもコラボレーションを意識しながら出社時と同等のシステム運用維持ができるような基盤作りを行いました。これによってスムーズにプロジェクト進行ができ、リモートワークに伴った VPN 基盤のマネージド化や、開発環境の作成や運用効率化のために AWS 権限の自動割り当てシステムやログ基盤の自動作成システムの実装などを行いました。

2021年以降

2021 年に新しいメンバーを迎え、メンター体制の構築を行いました。メンターを中心にチームメンバーでサポートしながらチームや会社に慣れていってもらうようにしました。プロジェクトはもともと1人で進めることが多かったが、2人でチームを組んで進めることで互いに助け合えるよう相互レビュー体制やスケジュールや業務負荷が分散されるようになり、より働きやすく安定した品質でアウトプットできるようになりました。同時にビットバンクの組織のスケールに伴い複数のプロジェクトが並行で走るようになりはじめました。
社内外のサービス可用性維持のために AWS Shield Advanced の導入や Redash の EOL に伴った BI ツール移行などを行いました。

現在

2023 年 4 月より、インフラチームからスピンアウトする形でデータチームが発足し両チームが持つ専門性に特化した体制となりました。

ミッション

それぞれのチームのミッションとしては以下を掲げています。

インフラチーム

  • 可用性・利便性・セキュリティを兼ね備えたサービスインフラの構築を行う
  • Developer/Operator Experience を向上させるプラットフォームの構築を行う

データチーム

  • 社員みんなのデータに関わる業務の仕事効率を最大化する
  • データにまつわる価値提供を社内外に行っていく

また、チーム共通で大切にしているものは3点です。

  1. さまざまな課題に向き合い、エンジニアリングを通じて解決する
  2. チームイベント・チームビルディングに参加し、積極的に発言・チームの活動を改善する
  3. プロダクト・組織に良い影響を与える

カルチャー

インフラチームのカルチャーではいくつか特色があります。

気軽なコミュニケーション

2020 年のコロナの流行によって全社員がフルリモートにシフトしました。以前は毎日出社してチームのメンバーが近い席に集まっており気軽に相談しやすい環境でした。オンライン上でもこの環境を再現したく誕生したのが【雑談チャンネル】です。Google Meet上にあるチャットルームで、チームメンバーが自由に出入りできるため技術などの相談や雑談が気軽にできます。活発に疑問や意見を出しながらプロダクト作りを行うこともでき、新しいメンバーが入社した時のフォローもここでしやすいのが特徴です。

  • 雑談チャンネルの様子

----------2023-07-06-16.06.16-7

輪読会

弊社ではチーム懇親会という福利厚生があり月一で会社から補助が出ます。その会を利用してインフラチームでは輪読会を月一で開催しています。
現在はみんなで「SRE の探求」を輪読しています。毎月章ごとに本を読みながら気づきを Miro にアウトプットし、ディスカッションして進めています。チームで実施することによって他の人の考えを聞いたり、プロジェクトやチーム運営に活かされているのが新鮮で面白いです。

  • 輪読会の様子

----------2023-07-06-16.06.07-2

開発体制

ビットバンクのプロジェクトの進め方としては基本的には要件定義、設計を経て実装に着手します。
実装中に予期せぬ仕様や考慮不足などによって進行を妨げることはありますが、初めて書くプログラミング言語の場合だと特性を理解しながら実装する必要があったり、レビュー時の大きな手戻りなどによる心理的負担がプロジェクトの課題としてありました。
そこで実装中の手戻りや課題を共有する場を設け、実装メンター(ペアプロで言うナビゲーターに近い)をアサインすることにしました。これをチームでは【実装朝会】と呼んでいます。実装の精度を高く保ちつつ後戻りの手間を省くことができ、メンターの人はプロジェクト進行の責務は持たないことでメンター側の負担が高くならないようにしました。
この取り組みによって心理的な負担が高まっていた状況が改善され、実装がスムーズに進むようになりました。
チームメンバー同士でレビューも行っており、テストコードを書いてカバレッジを取ることでレビューの前段から品質が高まるような工夫も行っています。さらに AWS の SA によるアーキテクチャのレビューを受けることができるため、AWS の中の人の意見を取り入れながら設計できることも一つの特長です。こうした取り組みにより暗号資産取引所に求められる高い可用性や品質を維持できていると思っています。

オンボーディング

新しく入社した人が早く馴染めて業務にコミットメントできるようにチーム独自でオンボーディングを実施しています。
インフラチームでは次を目的に取り組んでいます。

  • まずは会社とインフラチームに馴染んでもらう
  • 開発に必要な情報をキャッチアップしてもらい早期に活躍してもらう

1 ヶ月を目安にメンターによるサポートや週次での 2on1 を行っています。初日はチームのオンボーディング資料をもとに業務関連(事業計画や進行中のプロジェクトなど)やチーム内のルールの説明を行います。Slack をコミュニケーションの中心として仕事を行うこともあり、関わることの多いチームや重要な Slack チャンネルなどの説明も行います。ビットバンクではチャンネルの数が 600 チャンネルもあります。入社された方が最初はどこで質問して良いか迷ってしまうので専用のチャンネルを用意しておくことで、分からないことがあれば専用の Slack チャンネル上で質問してもらい、メンターを中心にチームメンバーが回答できるような体制にしています。

----------2023-07-06-16.05.59-5

こんなカジュアルな質問にも!

これからについて

両チームで今後取り組んでいきたいことをいくつかの例を挙げて紹介させていただきます。

インフラチーム

インフラチームとしては大きく 3 つ記載しています。

  1. CI/CD の改善(開発者のデプロイ体験を高めていく)
    現在全てのリポジトリで CI/CD によるデプロイを前提に作られています。歴史的な理由から CI/CD の構成が統一されてなく、GitLab Runner と AWS CodePipeline の両方を使っているため可視性が悪く、アーキテクチャの複雑さが増してしまっています。これを解決させるために CI からアプリケーションへの CD までを一貫した手段でデプロイする方法が欲しいと思っています。
  2. 開発環境の SaaS 化
    ビットバンクでは開発プロジェクトが複数平行して進んでいます。開発環境の数を超えてプロジェクトが並行稼働することもあり、プロジェクト間でリソースが衝突しないように人が調整しているのが現状です。
    何らかの方法論でワンポチで開発環境を構築することができ、不要になったら簡単に閉じられる、SaaS のような開発環境を目指しています。これにより開発プロジェクトの状況に合わせて最適で柔軟な開発環境を提供できるようになります。
  3. チームの運用業務の効率化
    他チームから依頼される、例えばアカウントの権限付与や GitLab のリポジトリの設定依頼があります。頼りにされるのは良いことですが、人手による単発作業を繰り返しはチームにとって決して望ましいことではありません。
    運用作業は対策しないと負担が増す上に本来やるべきことに集中できないのでチームのモチベーション低下の要素になり得ます。このような状態に陥らないように、自動化や仕組みを変えることで運用を効率化する必要があると思っています。

データチーム

「データの民主化」をチームの目標として掲げ、データを用いた業務の効率化・高度化・自動化の観点をエンジニア以外にも広げていこうと考えています。ミッションにも掲げているように従業員一人当たりの仕事効率を最大化するお手伝いができたら良いなと思っています。

  1. BI ツールの高度化
    全社的に BI ツールとして Redash を使っています。複数データソースにまたがった分析になると効率の悪いクエリになる、普段 SQL を利用しない部門の利用の敷居が高い、今より統制の効いた構成にしたいといった課題があります。
    そのためさらに利便性や統制を効かせた BI ツールへの移行を考えています。
  2. 個人情報をマスキングしたデータの連携
    現在データ基盤へは個人情報に該当する部分は一切連携していません。しかし個人情報をマスキングした上で分析に活用したいニーズも一定数あります。そのため個人情報の取り扱いを法令要件を鑑み明確に定めた上で、データの取り扱いや利用方法などの課題と向き合う必要があります。
  3. 会計業務の高度化
    会計業務はデータ基盤や Redash, Google AppScript, スプレッドシートを軸に行なっております。今後より多くの通貨の上場が見込まれるため、会計業務への負荷が高くなってしまいます。暗号資産の性質を踏まえ会計業務のシステム化やツール導入などの高度化を検討しています。

この他にもやっていきたいことがたくさんあり、インフラ/データチームでは上記の課題を一緒に解決していきたい人を募集しています。カジュアル面談も大歓迎です。

ここまでお読み頂きありがとうございました!

Author image
About Kaori
Author image
About koarakko
expand_less