ハウテレビジョン技術ブログ

『外資就活ドットコム』『外資就活ネクスト』『mond』を開発している株式会社ハウテレビジョンの技術ブログです。

開発Daysでの取り組み: EOL 対応

外資就活ドットコム・外資就活ネクストの、インフラや開発環境の改善などプラットフォームエンジニアリング的なこともしている Product Engineering チームです。

本チームでは「技術的なボトルネックを解消し、開発効率や品質の向上を実現する」ための対応に普段から取り組んでいますが、その中でもプロダクトに直結しない開発環境用のツールなどは前任者が構築したあとに、十分なナレッジトランスファーやドキュメント整備が行われなかったことから、対応が後手になりがちになっています。

しかしながら言語やクラウドサービスの EOL (メンテナンス終了) は待ってくれません。

通常は優先度が下がりやすい領域ですが、突発的な対応が発生しやすいリスクもあるため、この機会にそうしたリスクを未然に防ぐ取り組みを行いました。

対象のツール

開発環境で以下のようなツールを作成し、活用しています。今回はこれらを対応しました。

データベースのユーザー管理

すべての開発者は AWS Identity Center で一元的にユーザー管理をしており、調査のためのデータベースへのアクセスもユーザーごとの IAM 認証を必須としています。データベースは環境ごとに存在し、それぞれに手動でユーザー管理をすると手間や漏れが発生するため、各データベースへのユーザー登録・削除を一箇所からおこなえる仕組みです。

IP 制限管理

テスト用のステージング環境へのアクセスは IP アドレスによる制限を設けています。オフィスの IP アドレスに加えて、リモートワーク時も開発者は AWS VPN に接続することでアクセスすることができますが、開発者以外のメンバーも簡単に確認できるよう、Slack から IP アドレスを登録することで一定時間アクセスが許可される仕組みです。

対応したこと

Lambda runtime の更新

開発用のツールはアクセス数は多くないため、多くは AWS Lambda を活用しています。AWS Lambda では様々な言語用にランタイムが用意され自分でセットアップする必要がないのが利点のサービスですが、言語のバージョンアップに伴い古いものはサポートされなくなるため、新しいバージョンのランタイムに更新する必要があります。

Lambda ランタイムのサポート期間は以下で公開されています。

Lambda ランタイム - AWS Lambda

対象のツールでは go1.x、Node.js v14/v18 が使われていました。これらはすでにサポート終了のステータスですが、まだ使い続けることはできます。しかし種類も増えてきたせいか、いよいよ 2026 年には多くのランタイムが更新できなくなる予定です。

2026/03/09 以降、更新ができなくなるランタイムの例)

  • Go 1.x
  • Node.js v14 ~ v18
  • Python 3.7 ~ 3.9

など

Node.js はランタイムのバージョン更新により修正が必要になるところはありませんでしたが、Go は専用のランタイムがなくなり OS ランタイムへの移行となるため、ビルドまわりでの変更が必要になりました。Serverless Framework での変更対応は、以下の記事でも触れていますのでご参考まで。

Serverless Framework で Go (provided.al2)

Serverless Framework も AWS CDK も実際には CloudFormation でデプロイをおこないますが、CDK では論理名に自動でサフィックスが付与されるなどがありリソースをそのまま引き継ぐことができません。同じスタックを更新してもリソースは全取っ替えとなるため、スタックごと作り直しました。データベースなど引き継ぐ必要があるものはなかったため、大きな問題はありませんでした。

フレームワークのリプレイス

ツールのクラウドへのデプロイを容易にするため、サーバーレースアプリケーションフレームワークとし Serverless Framework v2/v3 が使われていました。Serverless Framework はサーバーレス開発ツールとしては先駆的な立ち位置でしたが、Serverless Framework v4 からは有償化した一方、現在は AWS SAM、AWS CDK など公式から無償で公開されている同様のツールも充実しています。v3 をそのまま使い続けることもできますが、今後の保守性や開発体制の拡張性を考慮し、フレームワーク自体の変更を検討することにしました。

サーバーレースアプリケーションフレームワークの選択肢としては主に以下のとおり。

  • Serverless Framework : マルチプラットフォーム対応。
  • AWS SAM : AWS 専用、公式の類似ツール。
  • AWS CDK : プログラミング言語で定義するため、直感的に理解しやすく自由度が高い。
  • Terraform : マルチプラットフォーム対応の IaC ツール。アプリケーションコードとの統合管理は苦手。

学習の容易さや開発効率、将来性を考慮し、AWS CDK 移行することにしました。最近はプロダクトでも使い始めています。

SDK のバージョンアップ

AWS SDK for Go v1 が使われていましたが、これもつい先日 2025/7/31 に既にサポートが終了していました。

Announcing end-of-support for AWS SDK for Go (v1) effective July 31, 2025 | Amazon Web Services

こちらはサービス終了とは違い使えなくなるというわけでもなく、社内サービスであればセキュリティも過度に神経質になる必要はないので現状のまま運用を継続する選択も考えましたが、今後いざ修正が必要になったときに新しい情報に惑わされることも多いので、この機会に合わせて v2 に更新することにしました。基本的には初期化部分など軽微な修正だけで済みました。

まとめ

アップデート作業は 2 日間で 7 割程度、その後追加の 1 日ですべて完了しました。隙間を縫って対応するには少なくないコストであり、プロダクトから少し離れて集中できる時間が持てることはとても良い体験でした。今回は大きな問題はありませんでしたが、場合によっては大きな改修が必要になることもありますし、締切り間際だったら最善の選択ができなくなる可能性もあります。

ソフトウェアは「何もしないと壊れる」もの。余裕をもって改善を進めることで、より良いサービスづくりにつなげましょう!(自戒)

弊社では、一緒に技術的な課題に取り組んでくれるエンジニアを募集中です!

現在募集中の採用情報の詳細は下記をご覧ください。

https://herp.careers/v1/howtv/requisition-groups/dfc2cc4a-edcc-49c0-9d83-b5870b734c04