見出し画像

これからシステムを立ち上げる、となったときに気を付けたいこと


ごあいさつ

こんにちは!
メディアリンク株式会社でWebアプリケーションエンジニアを勤めておりますMasashiと申します。

私はMediaTalkという「カスタマーサポート特化型チャットボット」の開発・システム運用をワンストップで対応しております。

MediaTalkサービスサイト

プロダクトの担当として配属されて長く、そこで培った失敗経験をお伝えすることで、この記事を読んでくださったエンジニアの方々に少しでも良い情報をご提供できれば・・・と思っております。

様々な視点から、包み隠さずにざっくばらんに記載させて頂きます!

免責事項

本記事は「エンジニアの一個人の意見」として読んで頂けますと幸いです。

当社の中でも意見が割れる部分もあるかと思いますので、私の記事の内容が当社のエンジニア全員が同じことを考え・思っている訳ではないことは
予めご了承ください。

1.システムアーキテクチャは「日本で流行ってる」よりも「世界的に利用が多い」で選ぶ

システムを構成する上で「何を使ってシステムを開発するか?」は重要な要素の1つとなると思っております。

MediaTalkという製品は、立ち上げ当初に担当したフルスタックエンジニアが得意としていた or 利用してみたい言語・フレームワーク・インフラを利用して開発が始まりました。
現在もその基本軸からは外れることもなく、継続的に開発が行われています。

それらの選定が誤っているという訳では決してなく、セキュリティアップデートを含めて継続的に対応できているため問題はありません。
しかしながら「世界的に利用が多い」という視点では以下の点が有利だと痛感しました。

  • 「世界的に利用が多い」が、数年後日本にも浸透して国内シェアも変わる

  • 「世界的に利用が多い」ことが、国外発の最先端ツールでカバーされる可能性が高い

    • 最近だとコード生成AIがシステムで利用していないフレームワークの対応しかなかったためにガッカリしたことがあります

  • 「日本で流行っている」は「そのうち廃れる」可能性が高い

    • 既存システムでの利用率も、リプレイス開発などでどんどん下がる傾向がある

と言いつつも、国外では利用が多いが国内で利用が少ないものは国内リソースの確保に苦しむ部分がありますので、立ち上げ当初のデメリットになり得る部分もあるため難しいところではあります。

システムアーキテクトの選定は機能要件・性能要件・システム規模・開発リソース/スキルセット・メンテナンスの継続性など多角的な判断が求められる部分だと思いますが、その中の要素として「グローバルでの利用率」を選定材料の1つとして見ることはメリットになると思います。

特に、生成AIを利用しないでシステムを開発するのはあまりに非効率な時代になりましたので、そういった意味でも「利用するフレームワークなどは国内外の様々なコード生成AIでどの程度カバーされているか?」を見ても良いかなと思います。

2.技術的負債は細かく・継続的に対応を

MediaTalkというサービスは開発開始から9年という歳月が経過しようとしています。
その長い年月の中で一番工数規模の大きかった対応が「フレームワークのバージョンアップ対応」でした。

機能開発は基本的に2週間〜1ヶ月程度のスプリントの中で継続的に実施されますが、この対応だけは8ヶ月という工期を要しました。

原因は、メジャーバージョンの乖離にありました。

メジャーバージョンが変わったことは知りつつも「開発も進んでるし、不具合のリスクも高くなるし、まだEOL(End Of Life)は先だから後回しにしよう・・・」
という考えで開発が進んでいった結果、いざ対応しようと思ったときにはバージョンアップのために広範囲の対応をする必要があり余計に工数がかかったと言うことがありました。

こまめにメンテナンスをしておけば、長期的な視点で見た場合にトータルのメンテナンスコストが下がりますし、改修インパクトも少なく済みますので障害発生率もまとめて対応するよりも少なく済みます。

githubでソースコード管理を運用されている場合は、早々にDependabotやパッケージ管理ツールを導入する等でパッケージのバージョンアップを自動化する等して、手間がかからない形で対応をしていくのが良いかと思います。

ただし、バージョンが勝手に上がったことでの品質保証をするためにテストコード実装などによるCI/CD構築は必須と思います。
(勝手にバージョンが上がるので、継続的なチェックが必要)

「継続的に」「スピードのある」「品質の良い」サービス提供のためにも、CI/CDの導入は必須と思います。ある/なしでエンジニアにかかる負担もだいぶ違いますし、何よりコードを修正することに対する心理的安全性が段違いです。

MediaTalkのCD処理の一部(github actions)

なお、MediaTalkは(お恥ずかしながら)CI/CDの構成については
サービスが立ち上がり、機能がほぼほぼ出そろったあたりの後追いで対応しました。(とても大変でした・・・)

さいごに

メディアリンクで自社開発している製品はどれも「ヒトとヒトを繋ぐコミュニケーションシステム」であり、ビジネスシーンにおいてはライフラインに近い部分でご活用頂くことが多いです。

その中で、お客様に最大価値を提供するために継続的な開発を進めていきつつ、システムを稼働していく上で見つかった問題や課題に誠実に向き合い・対応しております。

出来ていない事を反省し、改善を日々繰り返していくことで「システムを継続的に成長させる」努力を惜しみません。

長くなりましたが、ここまでお読みくださり誠にありがとうございます!



いいなと思ったら応援しよう!