FJCT Tech blog

富士通クラウドテクノロジーズ公式エンジニアブログです

富士通クラウドテクノロジーズ

FJCT/Tech blog

【連載はじめます】プライベートブリッジを支えるバックエンドサービスの開発技術

はじめまして、クラウドインフラ本部ネットワークサービス部の田上(id:rtagami)です。 最近はDSP内蔵オーディオインタフェースを買うか液晶タブレットを買うか両方買うかで悩んでいます。

普段は id:a8544 と上野(id:uweno)と3人の開発者チームで、 プライベートブリッジ を支えるバックエンドサービスの開発をしています。

プライベートブリッジは、ニフクラのプライベートLAN同士をL2接続する弊社のネットワークサービスです。 複数のゾーン・リージョンを利用した可用性の高いシステムの構築や、複数のユーザーでネットワークを共有したシステムの構築にご利用いただけます。 プライベートブリッジの機能はすべてニフクラのコントロールパネル上から設定でき、接続が必要となった際にオンデマンドで追加・変更が可能です。 プライベートブリッジのオンデマンド性を実現する要素の1つが、わたしたちが開発しているバックエンドサービスです。

今回は予告編として、この連載を始めるモチベーションのご説明と今後の連載の予告をさせていただきます。

連載を始めるモチベーション

先日このバックエンドサービスは開発開始から4年目を迎えました。 この3年間わたしたちは、品質を維持しつつ生産性を最大化させるさまざまな取り組みを行ってきました。 本連載では以下のようなモチベーションのもとわたしたちの取り組みをご紹介させていただきます。

  • (お客様に対して)品質維持の取り組みをご紹介する事で、安心感を持ってサービスをご利用いただきたい。
  • (開発者コミュニティの皆様に対して)プロダクト開発で得た知見を記事化する事で、開発者コミュニティに価値を提供したい。
  • (学生の皆様に対して)弊社の開発の現場を知っていただく事で、就職活動の検討材料にしていただきたい。

連載予告

本連載は大きく分けて以下の3つのカテゴリーで構成する予定です。

  • CI戦術編(全13回予定)
  • CI・CD戦略編(全6回予定)
  • システム開発戦略編(全4回予定)

なお、このバックエンドサービスは主にPythonで開発していますので、 特に戦術面についてはPythonに関連した話題が主となる予定です。

CI戦術編

CI(継続的インテグレーション)戦術編では、わたしたちがCIに入れておいて良かったなと考えている具体的な仕掛けをご紹介する予定です。 コミットをpushする際にうっかりやってしまった(あるいはコードレビューでうっかり見逃してしまった)、 という経験はほとんどの方がお持ちでしょう。 しかし人間の注意力に頼らずともコードの品質を維持するための仕掛けを積み重ねる事で、 そのようなミスをある程度システム的に防げるようになります。 このような取り組みは直接的にバグがない事を保証するために行うものではありませんが、 パーキンソンの凡俗法則の誘惑に負けず コードの本質的な価値に注目して開発・コードレビューをするには重要だと考えています。

CI・CD戦略編

CI・CD(継続的デリバリー)戦略編ではわたしたちのCI・CDの実装戦略をご紹介します。 わたしたちはアジャイルマニフェストの指針に従って開発していますので、 ソースコードに対する変更が高い頻度で行われ、かつ、 ひとつひとつの変更を小さく保っているのが望ましい状態です。 この状態を実現しつつ開発者が高い生産性を維持するためには、 充実したCI・CDによるテストとデプロイの自動化の仕組みを作り、 開発者(つまりわたしたち)がテストやデプロイにかける時間をできるだけゼロに近づける工夫が必要不可欠です。 本カテゴリーではこれら目的を達成するためにわたしたちが実践している、アジャイル開発のためのCI・CDの実装例をご紹介する予定です。

システム開発戦略編

システム開発戦略編では、わたしたちがシステム開発全体を通して取っている戦略をご紹介します。 現代(と言ってもすでに数十年前からですが)のシステム開発は高度に複雑化しており、 何かしらのフレームワークに準拠する形で開発を進めなければ、 高い生産性を維持することは極めて困難です。 わたしたちが取っているシステム開発の戦略と、 その具体的な取り組みをご紹介します。

さいごに

今回は連載初回ということで、次回以降の連載内容の予告が大半を占める形となりました。 次回以降は具体的な内容に踏み込んだ記事を連載していく予定ですので、 お読みいただければ幸いです。