### 期間
2024年4月〜現在継続中
### チーム情報
- 基本メンバー: 先方4名+自社3名(計7名)
- 担当期間前半: 別ベンダー3名も在籍(引き継ぎ完了後に撤退)
- 使用技術: AWS(Glue, Lambda, S3, DMS、Neptune、CloudWatch、SecretManager、EventBridge)、Azure(Synapse、AppService、ストレージアカウント、仮想マシン)、Snowflake、Python、TypeScript、Angular、AzureDevOps、C#(ASP.NET)、Python
- 並行稼働: 2026年1月〜3月末は購買関連システム開発とも並行して稼働
---
### 開発・実装内容A|既存データパイプライン・検索システムの運用保守
【概要】
別ベンダー構築のデータパイプライン・検索システムの運用保守
【どのような機能の開発・実装か】
別ベンダー構築のCDM変換パイプライン、CDM検索システム、グラフDB取り込みバッチの運用保守。
CDMのグラフDB取り込みから検索システムまで、データ取り込み層〜検索UI層を
一貫して保守(フルスタックで対応)
【課題】
既存ソースコードがブラックボックス化しており、保守性に課題があった
【工夫したこと】
既存ソースを丁寧に読み解きながら保守対応を実施
【成果】
安定した運用保守を継続
【使用技術】
AWS、Azure、Snowflake、グラフDB
---
### 開発・実装内容B|日次データ連携の高速化(DMS廃止・差分連携への置き換え)
【概要】
AWS DMSを用いた全件取り込み処理を廃止し、差分連携方式に刷新
【どのような機能の開発・実装か】
従来AWS DMSを用いて全件データをS3に出力しGlueで取り込んでいた処理を、
差分連携方式に置き換え。新規GlueジョブをPythonで構築し、
共有フォルダ→S3→Snowflakeの連携を実現
【課題】
データ量の増加に伴い全件取り込み処理が5〜10時間に達しており、
日次バッチとして運用上の負荷が大きくなっていた
【工夫したこと】
- データ提供元担当者と連携し、全件出力から差分データのみを
共有フォルダへ出力する形に変更を依頼
- 差分データを共有フォルダからS3へ転送し、Snowflakeへ取り込む
新規のGlueジョブ(Python)をゼロから構築
- 当時Pythonの実務経験がなかったため、前任者からの引き継ぎ期間中に
基礎構文のキャッチアップと既存Glueジョブのソースコード読解を並行して行い、
実装に必要な知識を習得
- ジョブの実行はGlueのトリガー機能を用いて日次スケジュールで自動化
【成果】
- DMSを完全に廃止し、処理時間を5〜10時間から20分弱まで短縮
- 未経験だったPythonでの開発スキルを実務の中で習得
【使用技術】
AWS Glue(Pythonジョブ、トリガー機能)、AWS S3、Snowflake、Python
---
### 開発・実装内容C|AWS Glueジョブの新規構築(Snowflakeへのデータ格納・Parquet出力)
【概要】
CDM変換前データのSnowflakeへの格納とParquet出力処理の新規構築
【どのような機能の開発・実装か】
- CDM変換前データをSnowflakeへ格納する処理
- SnowflakeデータをParquet形式で出力し共有フォルダへ配置する処理
【課題】
引き継ぎ時点で要件チケットが作成されており、対応が必要だった
(詳細な背景は前任者からの引き継ぎのため不明)
【工夫したこと】
PySparkベースのGlueジョブを新規構築。
データ処理ロジックをPythonジョブ側に持たせるのではなく、
大容量データ処理に適したSnowflakeのストアドプロシージャ側に実装し、
Glue側からはSnowflakeドライバー経由でストアドプロシージャを呼び出す構成とした
【成果】
CDM変換前データのSnowflakeへの格納、およびParquet出力・共有フォルダ配置の
一連の処理を実現し、後続のデータ活用の基盤を整えた
【使用技術】
AWS Glue(PySpark)、Snowflake(ストアドプロシージャ、Snowflakeドライバー)、Parquet
---
### 開発・実装内容D|Azure Synapseパイプラインのメモリエラー対応
【概要】
並列実行によるSparkPoolのリソース競合が原因のメモリエラーを調査・解消
【どのような機能の開発・実装か】
並列実行時に発生していたメモリエラーの原因調査と、
スケジュール調整による直列実行化で暫定対応
【課題】
4つのパイプラインが1つのSparkPoolを共有しており、
並列実行時にメモリ不足が発生して処理が失敗するケースが続いていた
【工夫したこと】
- 朝のインシデント確認(エラー検知の自動通知メール)でメモリエラーを検知
- Synapse Studioのモニタリングログを確認し、同時間帯に4つのパイプラインが
稼働していることを特定
- AIアシスタント(Copilot)も活用しながらSparkPool共有による
リソース競合という仮説を立てた
- 各パイプラインの処理時間をテスト環境で実測し、
本番環境での完了時間を推測した上でスケジュール起動時刻をずらして直列実行化
- 運用開始後も実際の処理時間の実績を見ながらスケジュールを再調整し、
待機時間を最小化する形で最適化
【成果】
- メモリエラーの発生を解消
- 実行時間を約60%削減
- エラー発生率も低減し、安定運用につながった
【使用技術】
Azure Synapse Analytics(Synapse Studio、SparkPool、パイプライントリガー設定)
---
### 開発・実装内容E|Glue・Lambdaのエラー検知・通知の自動化
【概要】
Glue・Lambdaのエラーをメトリクスで自動検知し、関係者へメール通知する仕組みを構築
【どのような機能の開発・実装か】
CloudWatch AlarmとSNSを組み合わせて、エラー発生時に
関係者へ自動でメール通知が届く仕組みを構築
【課題】
従来、各サービスのエラー発生は人力で監視しており、
ログを都度確認する必要があるなど運用負荷が高かった。
業務改善の一環として自動化が依頼された
【工夫したこと】
CloudWatch Alarmを用いて各サービスの失敗回数をメトリクスとして監視する仕組みを構築。
アラームが発生した際にSNS(Simple Notification Service)経由で
関係者へメール通知が届くよう設定した
【成果】
- エラー発生の検知を自動化し、人力での監視作業を削減
- エラーへの気づきが早まり、対応の初動を早めることができた
【使用技術】
AWS CloudWatch(Alarm、メトリクス監視)、AWS SNS
---
### 開発・実装内容F|パブリックネットワーク非接続環境での外部ライブラリインストール対応
【概要】
ネットワーク制約のある環境でのGlueへの外部ライブラリ(pysmb)インストールを実現
【どのような機能の開発・実装か】
共有フォルダへのSMBプロトコルアクセスに必要なライブラリを、
ネットワーク制約のある環境のGlueランタイムにインストール
【課題】
- 共有フォルダへのアクセスにSMBプロトコルを使用する必要があったが、
AWS Glueの標準ライブラリにはSMBプロトコルを扱えるライブラリが含まれていなかった
- 実行環境がパブリックネットワークに接続できない制約があったため、
通常のpipコマンドによるインストールができなかった
【工夫したこと】
- 使用するライブラリ(pysmb)の依存関係を調査し、必要なwhlファイルを個別に取得
- 取得したwhlファイルをS3に配置し、Glueジョブのパラメータ設定
(追加ライブラリのS3パス指定)を通じてランタイムへのインストールを実現
【成果】
ネットワーク制約のある環境でも外部ライブラリのインストールを実現し、
SMBプロトコル経由での共有フォルダアクセスが可能になった
【使用技術】
AWS Glue(パラメータ設定)、pysmb、AWS S3
---
### 開発・実装内容G|Snowflakeをデータソースとする新規検索システムの構築(技術検証)
【概要】
ユーザー要望を起点に、Snowflakeをデータソースとする新規検索システムを技術検証として構築
【どのような機能の開発・実装か】
既存CDMベース検索システムとは別に、
Snowflake上のデータを検索できる新規システムをテスト環境に構築
【課題】
既存検索システムはCDMをベースにしており、
ユーザーが検索したいSnowflake上のデータには対応していなかった
【工夫したこと】
既存のCDMベース検索システムの3層構成
(フロントエンド・バックエンド・データソース)を参考に、
Snowflakeをデータソースとする検索システムを新規構築。
Azure App Serviceへのデプロイまで対応した
【成果】
テスト環境へのリリースまで完遂し、Snowflakeをデータソースとした
検索機能の動作を確認した
(その後、本番対応は行わない方針となりテスト環境での検証にとどまった)
【使用技術】
Snowflake、Azure App Service
---
### 開発・実装内容H|既存ソースコードの設計書化(属人化解消・保守性向上)
【概要】
ブラックボックス化していた既存ソースコードを解析し、Markdown形式の設計書として文書化
【どのような機能の開発・実装か】
- Synapseノートブックの処理フロー20件以上を文書化
- グラフDB取り込みバッチの処理フローを文書化
- 成果物の構成: 使用技術・改訂履歴・概要・詳細フロー
【課題】
- 設計書が存在せず、対応できるメンバーが属人化していた
- ソースコードにコメントがなく可読性が低かった
- 処理の挙動を制御する設定ファイルの仕様がドキュメント化されていなかった
【工夫したこと】
- 作業に余裕が生じたタイミングで上記を課題と捉え、
別ベンダーの上司に相談の上、自発的に先方へ設計書作成を提案
- 設定ファイルの値によって処理が動的に変わる構造のため
処理フローの追跡が困難だったが、CopilotにソースコードをインプットしてAIに
たたき台を生成させ、実際のソースと比較・差分を修正する形で
効率的に文書化を進めた
【成果】
- Synapseノートブックの処理フロー20件以上、
グラフDB取り込みバッチの処理フローを文書化し、設計書のない状態を解消
- 属人化の解消と、新規メンバーや他ベンダーが参照できる保守ドキュメントの整備につながった
【使用技術】
Azure Synapse Analytics、Markdown、GitHub Copilot