オープンロジを支える技術 2024
OPENLOGI Advent Calendar 2024 最後の投稿です。
株式会社オープンロジは2013年12月25日が創業日なので本日で創業11年目となります。
私は2014年10月にサービスリリースと共にジョインしたので、システム面ではちょうど10年の節目となることもあり、この10年の軌跡も振り返ってみたいと思います。
昨年のエントリー
10年間の振り返り
最初のお仕事
2014年10月、オープンロジ正式リリース直前にご縁あって入社することになったのですが、「AWS で環境構築しているから大丈夫」と聞いていたのに蓋を開けてみると、下図左側にあるとおり AWS というか単なるVPS的な構成で冗長化もされておらず、大規模なメディア露出を控えている中で、かなり危機的な状況でした。これはマズいと突貫で最低限の冗長構成を構築したのが最初のお仕事となりました。
リリース当時のインフラ構成
時系列での技術的アップデート振り返り
その後、優秀なメンバーの数々に支えられ、ビジネスとシステムの両面で日々課題に直面しながら、まだまだ道半ばながらも着実に成長を重ねることができました。
技術的なアップデートについては2017年より毎年 Qiita でまとめていますが、ここでは創業期まで遡って思い出しながら主要なトピックをピックアップしてみます。
2014年
- CakePHP による初期サービスリリース
- 他社システムと連携した倉庫側オペレーション
- Git やデプロイツール(capistorano)など基本的な開発環境の構築
2015年
- Laravel / React の導入
- 開発環境の Docker コンテナ化と Wercker による CI/CD 環境構築
- iPad / iOS アプリによる倉庫作業端末の提供
2016年
- フロントエンドの React 移行完了
- Visual Studio C# による Windows アプリのリリース
- Redash の導入
2017年
- 他社システムに依存していた倉庫管理システムを自社製に完全移行完了
- ジョブキュー管理を RDS for MySQL から ElastiCache for Redis に移行
- Vue.js / Nuxt.js の試験導入
2018年
- Cordova による iPhone/Android ハイブリッドアプリのリリース
- Transifex を利用した海外実証実験向け多言語対応
- Athena によるログ検索基盤の構築
2019年
- BigQuery を中心としたデータ分析基盤の構築
- ECS / Fargate によるオンデマンドQA環境の構築
- 各種バックオフィス系 SaaS の導入
2020年
- NewRelic から Datadog への移行
- 公開鍵認証から Session Manager 認証に移行
- Amazon Connect / Kintone の導入
2021年
- コンテナ型の新アークテクチャインフラ基盤構築
- AWSセキュリティ周り強化
- CircleCI から GitHub Actions への移行
2022年
- コンテナ型新アーキテクチャでのサービス提供開始
- GCPと機械学習を活用したサービス開発の実現
- SREチームの組成と横断的な技術課題解決への取り組み強化
2023年
- フロントエンドビルド環境の分割とライブラリのアップデート
- CI環境周りを中心とした開発基盤の大幅な改善
- Datastream for BigQuery の導入
2024年
- コアモジュールのリファクタリングと新アーキテクチャ上での新機能リリース
- RDS から Aurora への移行
- Terraform による IaC カバレッジ向上
コードの地層
この10年間の実際のコードの蓄積を git-of-theseus でを用いて可視化してみました。まさに10層の年輪のように、その歴史を確認することができます。コード量はほぼ線形に増加を続けているのが確認できます。
これは、システムの規模拡大に伴う複雑性の増加と、エンジニア数の増加が相互に作用した結果、線型を保っているのではないかと個人的かつ直感的に感じています。
さらに、2022年からは新アーキテクチャ上での開発が本格化し、新たなコードベースが積み上がっています。
単純にコード量が増えれば良いというわけではありませんが、コードを生産するという観点だけでみればプラスに働いていて、実際開発しやすくなるメリットの方が上回っているように感じています。
今年の主なアップデート
これまでの歴史を踏まえて実施された技術的な取り組みの中から、主要なものを3つご紹介します。
- コアモジュールのリファクタリングと新アーキテクチャ上での新機能リリース
- RDS から Aurora への移行
- Terraform による IaC カバレッジ向上
1. コアモジュールのリファクタリングと新アーキテクチャ上での新機能リリース
従来のモノリシック構成のアプリケーションは、コアモジュールとしてさらに洗練させるため、リファクタリング、未使用コードの削除、テストコードの拡充などを積極的に進めてきました。
地層グラフから全体のコード量を見ると、例年同様、今年もほぼ線形に増えているのですが、下図からここ一年ではテストコードが特に顕著な増加を見せています。
また、実装コードも増加している中で全体のコード量が線形を維持しているということは、それだけコードの整理・削除も効果的に進められたともいえそうです。
また、2022年からコンテナ型新アーキテクチャ上では一部既存機能を置き換えたものは稼働してたのですが、今年になって新しい機能の提供を実現できました。比較的モダンなバージョンに追従できていることもあってより開発しやすい環境になっています。
2. RDS から Aurora への移行
これこそ昔からの念願でもあり、Qiita 最初の投稿である2017年当時からも言及していた Aurora 化ですが、プロジェクト化してから1年以上の入念な調査・検証期間を経てようやく無事に完了することができました
基本的な性能向上に加え、スケーラビリティと耐障害性も大幅に向上し、今後の事業成長を支える重要な取り組みだったと感じています。
3. Terraform による IaC カバレッジ向上
(コアモジュール運用環境の Terraform コード行数)
Terraform 自体は以前から導入していましたが、今年は特に本番運用環境の IaC 化を大きく前進させることができました。
主な技術スタック
その他のアップデートあった部分について言及します。
アプリケーション関連
今年は Laravel のメジャーバージョンアップも行いました。まだ最新にはなっていないので引き続き対応進めていく必要があります。
インフラ環境
Amazon Web Services (AWS)
レガシーな仮想サーバー環境と新アーキテクチャーによるコンテナ環境の並行運用しています。
前述の通り、Terraform IaC 化と Aurora 化を実現しましたが、今後は Aurora 3 へのアップデート対応も行う予定です。
Google Cloud
BigQuery を中心としたデータ基盤を運用。
Datastream for BigQuery を利用して Aurora MySQL のデータを連携しています。
今年は Dataform を導入し、BQ上のクエリなども効率よく開発・運用できるようになりました。
運用監視
さらに Datadog の活用が進んでいますが、Datadog の管理も Terraform で行なっています。
開発環境
個人的にAIアシスタントなしではコード書けない体になってしまいました。
(最近は Cursor 利用中)
情報ツール系
まとめ
頼もしい仲間も増えて、これまで着手できなかった大きな課題に取り組み、解決することができるようになってきたと感じる一年でした。
まだまだ解決すべき技術的課題も多くありますが、より本質的なプロダクト課題・ビジネス課題に向き合えるように、着実に進化を続けていきます。
オープンロジでは、これからの10年も一緒にチャレンジを楽しむ仲間を募集しています。興味ある方はぜひお気軽にご連絡ください!