### 【概要】
会社として, 株価や為替, 金利, 経済統計, ニュースなどの各種金融データを金融機関向けに配信するビジネスを行っている。その中で以下のような課題があった。
- 配信するデータの多くが手動での入力となっている(例えば, 証券取引所のホームページに掲載されているファイルをダウンロードした後, Excelマクロに値を入力し, サービスに配信する, など)
- 手動での作業故, 時間や人手を要する, 打ち間違いなどによる誤データの配信
- 手動での入力業務にリソースを割かれ, 他の付加価値の高いサービスにリソースを割くことができない
これらの手動業務(1000業務以上)のオートメーション化を実現するためのシステムを新規にAWS上に構築。システムの構築に当たっては以下のような点を考慮した。
### サーバレスアーキテクチャの採用
対象の業務を自動化した場合, 1業務あたり, 1日1回かつ2〜3分以内に完了するものが大部分を占める。そのため, 仮想サーバなどを用意し, 常時リソースを消費するようなシステムではなく, 処理実行時のみ必要なリソースを確保し, 処理を行うようなシステムの方がコスト面のほか, 冗長性の観点などでも優れている。
### 業務の抽象化とワークフローの構築
オートメーション化の対象になる業務は1000以上に上るため, これらについて, それぞれ独自のアプリケーションを新規に開発するのは現実的ではない。そこで業務の内容を精査し, 各業務で共通している処理を切り出し, 汎用的なアプリケーションとして, AWS Lambdaなどで実装。それと合わせてAWS StepFunctionsを用いて, 業務毎にワークフローを作成。それらのワークフローの中で汎用的なアプリケーションを必要に応じて呼び出し, 業務を実行していくような構成にした。
Ex:例えば様々な業務で四則演算を行っている処理があった場合, その部分について切り出し, 式と値を入力すれば, 計算結果を返すような汎用的なアプリケーションを開発。それを各業務毎のワークフローの中で必要に応じて, 呼び出す
### 【担当業務】
- AWS LambdaやAmazon ECS, EKSを用いたアプリケーション開発(言語はPythonを使用)
- AWS StepFunctionsなどを活用し, 手動業務のオートメーション化を実現するためのワークフローを構築
- 業務のオートメーション化に伴い, ビジネスサイドとの各種調整を担当
### 【発揮したValue】
- 開発当初はチーム内にPythonを使った開発経験のある人が自身を除き, いなかったため, 率先して知識やノウハウを共有。また, AWSやサーバレスアーキテクチャを採用したシステム構築自体は自身を含め, 初めての経験であった。それらを採用することが決定した段階で率先して独学で学習。学んだことをチーム内のメンバーと共有するなどの貢献もした
- 当時, 社内で内製化を目指す動きもあり, 積極的に「手を動かすエンジニア」としてチームに貢献した。一方, コールセンターでの業務を通じて, 培った経済・金融に関する知識, 業務知識などを活用し, ビジネスサイドとの連携も担当。開発サイドとビジネスサイドの橋渡し的な役割として, 以下のようなことも行った
- ビジネスサイドのメンバーとレビューなどを通じ, 業務内容を理解。それをシステムに落とし込む上で必要な知識などを他の開発チームのメンバーと共有
- 「業務内容をシンプルにできる余地はあるか」, 「そもそも業務自体を継続する必要があるか」といった観点でビジネスサイドのメンバーに働きかけを実施。オートメーション化に伴い, 業務自体を見直しを促した
- オートメーション化を通じて, チームとして最終的に以下のような成果を挙げることができた
- オートメーション化に伴う, コストの削減
⇒ オートメーション化の前後で年間140人月, 約2割減
- 手動入力故の入力漏れ, 誤入力を防止
- サービスの質を向上
⇒ 配信するデータについて, 手動入力ではリソースの都合上, 半年に1回の頻度での更新が限度であったが, オートメーション化に伴い, 月1回へと更新頻度を向上することを実現
- 社内の技術力強化に貢献
⇒ オートメーション化に伴い, 新規に構築したシステムは内製で開発を行った。チーム全体の技術力を向上を実現できたとともに, それらを社内外のAWSの利用事例として, 共有。社内の技術力強化にも貢献した
### 【使用した技術, サービスなど】
### 言語
Python
### クラウド
主にAWSを利用し, 以下のサービスを業務にて, 使用
- **Compute:**
EC2, ELB, Lambda
- **Containers:**
ECR, ECS(Fargate), EKS(Kubernetes)(Fargate)
- **Storage:**
S3, EFS
- **Database:**
RDS(Aurora MySQL), DynamoDB
- **Migration & Transfer:**
Transfer Family
- **Networking & Content Delivery:**
VPC, Cloud Front, Route53, API Gateway
- **Management & Governance:**
Auto Scaling, Cloud Watch, CloudTrail
- **Analytics:**
Athena, Glue
- **Security, Identity, & Compliance:**
IAM, Cognito, SecretManager
- **Application Integration:**
StepFunctions, SNS, SQS
- **Customer Engagement:**
SES