Take a “new step” Achieved by Value Engineering tech.sprasia.co.jp

スプラシア開発環境 レガシーからDevOps、そして…

初めまして。

株式会社スプラシアのSREチームに所属している大西と申します。

弊社の開発環境は目まぐるしい変化が訪れています。そんな中、開発の環境移行を振り返りながら紹介していきたいと思います。

目次

DevOpsについて

DevOpsとは、開発者(Development)と運用者(Operations)がそれぞれ協力し合いながらシステムの開発・運用を行い、ビジネス価値を高めていくという1つの概念です。

現在、海外を中心にITを絡めたサービスが急速に展開されています。こうした激しい波に適応するには、我々も迅速な対応とサービス展開が必要となります。

従来型の開発手法では、開発者と運用者は各々の担当領域が分かれており、それぞれの役割を担っていました。しかし、この手法では、既存システムの改善や新サービスへの展開が遅くなってしまうため、時代の波に乗ることが難しくなってきています。

今後は開発者と運用者との関係をより密に、かつ手作業をできるだけ自動化させることで、よりスピードを出していくことが求められており、それが「DevOps」という考え方です。

2023年現在ではその中でも「GitOps」へ移行しております。このへんの詳細については別の記事に掲載します。

DevOpsの3つのメリットについて

DevOpsのメリットは大きく次の3つがあります。

 

①信頼性の向上

DevOps導入前

テストやリリースは手動で行うため、(特にSIerの場合)以下の手順で実施する必要がありました。

1.テスト仕様書や移行手順書を作成
2.1.を有識者/お客様に承認していただく
3.リリースを含むテスト実施
4.結果報告書を作成し、お客様に品質担保の承認とリリースの許可をいただく
5.実施者と確認者が2人1組体制で本番リリースを実施(1人2役で実施する場合もあります)

自社サービスの場合は必ずしも上記の通りではないと思いますが、これに近しいものは実施する必要があると考えられます。

なぜ、このような手順で実施するのか。

その理由はお客様から「信頼」を得るためです。その「信頼」を得るためには多くの工数が必要でありながらも、例えばリリースを完全に手動で行う場合には「ヒューマンエラーのリスク」は拭いきれません。

DevOps導入後

DevOpsで使用するツールを用いることで、テストは「ある程度」自動化することが可能です。

ある程度とは、例えば、プログラムソースのコードレビューや品質管理は自動化することが可能となり、人の手で行うテストは仕様の挙動確認のみでOKとなります。

リリースも実行コマンドを1度実行することで、本番リリースに必要な作業を全自動で行うことが可能となります。

DevOps導入時は自動化の設定作業により多少のコストがかかりますが、2回目以降は自動化されるため、ヒューマンエラーのリスクも減少し、信頼性の向上を総合的に低コストで実現することが可能となります。

 

②生産性の向上

DevOps導入前

ローカルの環境構築手順書やソースの管理はExcel等を用いて管理している人が多かったと思います。

そのため、ローカル環境が人によっては(ツールのバージョン違い等で)異なったり、開発したプログラムのソース管理が煩雑になったりと手動管理のデメリットが生じていました。

つまり、より密なコミュニケーションがないと開発を進めることが厳しい状況でした。

DevOps導入後

環境構築もコマンド1つで自動的に作成し、ソースもツールで簡単に管理を行うことができるようになります。

そのため、社内だけでなく、社外の方とコミュニケーションをとりながらの開発が容易になります。

 

③開発スピードの向上

DevOps導入前

「スピード<品質」を重視する傾向があったため、綿密に管理しながら開発するウォーターフォール開発が主流でした。

しかし、品質担保を重視するための開発であるため、例えば、1,000万円規模のプロジェクトでは、最低3か月以上は必要とされています。

DevOps導入後

品質はツールで一定以上を担保できるようになったため、「スピード≧品質」にシフトすることができます。

これにより、例えば、1,000万円規模のプロジェクトでは、200万円/2週間サイクルでのアジャイル開発が可能となります。

ウォーターフォール開発との違いは、サービスのローンチ時期を早めることや方向転換が柔軟に行えることが大きなメリットとなります。

ただし、方向転換を自由にできる分、エンジニアに対する負担も大きくなるため、どちらの開発手法が適しているのかはPMやお客様とよく相談して決定されることをお勧めします。

 

CI/CD

DevOps導入に必須となるツールが「CI/CD」です。

CIとは、「Continuous Integration(継続的インテグレーション)」の略で、修正されたソースの反映やテストを自動化することを指します。

CDとは、「Continuous Delivery(継続的デリバリー)」の略で、検証環境や本番環境へのリリースを自動化することを指します。

横文字が多く分かりづらいため、最初は、「CI/CD」とは「ある程度の作業に対し、品質を担保しながら自動化されること」と考えていただくと良いかと思います。

 

スプラシアのDevOps環境(〜2021年)

読者にイメージしていただくために弊社のDevOps導入前後を紹介します。

DevOps導入前

DevOps導入前は使われているツールはプロジェクトの管理のためのExcelのみです。

ソース自体もサーバに直接アップロードします。使われているツールは少ないですが、その分人間が介在する部分が多くなっているため、ヒューマンエラーが起こしやすく、何より開発スピードがとても遅いのが難点です。

そのため、人件費を中心にコストが多くなってしまいます。

DevOps導入後

弊社のDevOpsは「Git」と「Phabricator」を中心に採用しました。

「Gitlab」が「Phabricator」に置き換わったと思っていただけるとイメージしやすいかなと思います。クラウドはAWS、CIはJenkinsを用いてDevOps環境を構築しています。

実際にこれらにかかる費用はAWSのクラウド代のみです。それ以外のツールはOSSのため無料で利用することが出来ます。

導入時の人件コストは多くかかりますが、その分開発運用時のコストは多く抑えることができるため、導入する価値は大いにあると思います。

※2021年6月Pharicatorは開発終了をしているため導入できません。

 

最後に

少し前、ふくおかフィナンシャルグループが次世代バンキングシステムをパブリッククラウドで構築する計画を発表し、その中核を担う勘定系システムの構築基盤として「Google Cloud Platform」(GCP)を採用するというニュース を拝見しました。

銀行の勘定系システムをクラウドで行うのは日本初の試みだそうです。

マイナンバーのシステムとしてもAWSが採用されたりと、今後日本ではDevOpsやCloudNativeの構築はますます重要となってくると思います。

弊社も時代の波に負けないよう、日々技術力向上を目指してまいります。

 

追記:

さて、本記事は弊社が以前ブログで掲載した内容を少々リメイクした記事になります。
現在はDevOpsからGitOpsに切り替えており、その旨は別の機会に紹介できればと思います。