Skip to main content
Category

Ansible

Ansible事例DockerIaC

再保険パッケージのコンテナ化とIaC

Infrastructure-as-code カバレッジ: 81%コンテナ化: ゼロからビルド環境までプロジェクト期間: 2ヶ月 再保険パッケージソフトの開発会社様 今回の事例は、再保険のパッケージソフトを開発しているインドの会社のものです。このパッケージは、オブジェクト指向の言語で書かれたWEBアプリケーションで、複数の国で提供されています。JTNDc2NyaXB0JTIwYXN5bmMlMjBkYXRhLXVpZCUzRCUyMmU1ZGRhMjc4Y2ElMjIlMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRmRvZ2dlZC1hcmNoaXRlY3QtNzk5My5jay5wYWdlJTJGZTVkZGEyNzhjYSUyRmluZGV4LmpzJTIyJTNFJTNDJTJGc2NyaXB0JTNF 課題 お客様は、オンプレミスの開発用サーバーのサポート終了に伴い、クラウドへの移行を計画されていました。ヒアリングを通じて、この移行と伴に並行して解決しなければならない3つの大きな課題が見えてきました。 1. 複雑な既存IaC 既存のChefコードは、共通化されておらず、非常に冗長で複雑になってしまっていました。そのため、クラウド移行の前に、既存コードの分析と部分的な再構築が必要でした。 2. 環境差異 IaCは導入済みでしたが、ローカル環境と結合テスト環境に違いがあり、テスト結果に差異が見られていました。 3. 適切なクラウド戦略 上記2つの課題の解決に加えて、将来の保守・管理を考慮した戦略的なクラウドプラットフォームの選択が必要でした。 解決策 分析フェーズで得た情報をもとに、お客様に合わせて以下の3つのアクションを計画し、実行しました。 1. ChefからAnsibleへの移行 IaCをよりシンプルに実現するために、ChefからAnsibleへの移行を決めました。同社のインフラチーム(運用チーム)がコードを確実に保守するためにIaCのシンプル化が必要でした。弊社は、インタビューの結果と既存のコードの分析結果から、AWS用にAnsibleのYAMLファイルを作成しました。その過程で、パラメータを適切に外部化し、メンテナンスを容易にするための共通部分を作成しました。 2. Dockerによるコンテナ化 2つ目のアクションは、結合テスト環境をコンテナ化し、テストごとにデプロイが行われるようにしたことです。コンテナは毎回削除され、新しいものと入れ替わるため、テスト環境は常にクリーンな状態に保たれます。このことで、環境差異をが生まれていくことを防いでいます。 3. AWSへの移行 AWSへの移行が3つ目のアクションでした。AWSエキスパートによって、AWS ECRとECSを使ってDockerコンテナ環境を作ることが容易だと判断され、AWSを選択しました。加えて、お客様のインフラチームのメンバーの中に、AWS経験者が複数いることも、大きな決定要因でした。…
mds-admin
May 30, 2021
CI/CDAnsible事例IaC

損保システムへのCI/CDの導入

デプロイ頻度: 隔週から毎日2回へ仕様変更取込リードタイム: 3ヶ月から2週間へ短縮プロジェクト期間: 3ヶ月 損保システム開発会社様 お客様はシンガポールのグローバル企業のグループ会社でした。損害保険用の保険ソフトウェア・プラットフォームを開発しています。このソフトは、オブジェクト指向言語で構築されたWEBシステムです。これは、特にアジアを中心にグローバルに提供しています。JTNDc2NyaXB0JTIwYXN5bmMlMjBkYXRhLXVpZCUzRCUyMmU1ZGRhMjc4Y2ElMjIlMjBzcmMlM0QlMjJodHRwcyUzQSUyRiUyRmRvZ2dlZC1hcmNoaXRlY3QtNzk5My5jay5wYWdlJTJGZTVkZGEyNzhjYSUyRmluZGV4LmpzJTIyJTNFJTNDJTJGc2NyaXB0JTNF 課題 お客様は、開発のアジリティの向上と手戻りの防止を期待されていました。10年以上継続して開発してきたシステムとそれに伴い規模が拡大した開発チームには3つの課題感がありました。 1. 手作業によるデプロイ 各環境へのデプロイは手作業で行われており、頻繁にデプロイすることは不可能でした。また、ヒューマン・エラーによる手戻りも発生していました。 2. 非効率な開発ワークフロー ソースコード管理システムと課題管理システムなどが連動していませんでした。そのため、タイムリーに情報が共有されなく、リードタイムが長くなり、一部のレビュープロセスが省略されるといった問題が起きていました。 3. 長い開発リードタイム 一つのバグ対応や仕様変更が完了するまでに平均3ヶ月かかっていました。期間が長いため、その間に同じソースに複数の修正や追加開発が施され、開発の複雑さが増していました。 解決策 CI/CD*の導入で、お客様の課題が解決できることは明白でした。そのため、今回の状況に応じた適切な設計を行うことが主眼となりました。分析フェーズで得た情報をもとに、以下の3つのポイントを具体的に設計し、導入しました。 *厳密には今回はContinuous Deliveryでした。 1. 各オペレーションの自動化 プロジェクト後のIaCの保守は運用チームが行うことを考慮し、Ansibleを選択しました。これは、YAMLでのコーディングが比較的容易で、エージェントレスなためです。既存ドキュメントやヒアリング結果をもとにAnsibleのYAMLファイルを作成しました。 2. Jenkinsによるタスク・オーケストレーション 開発者マニュアルやヒアリング結果、弊社のJenkinsのベストプラクティスをもとに、開発ワークフローを洗練させ、パイプラインで繋ぎました。 3. Jiraによる開発ワークフローとタスクの連携 お客様は内製の課題管理システムをお使いでした。このため、アプリ開発と運用をシームレスに連携させるために、既存の課題管理システムをカスタマイズするのか、別のツールを導入するのかを比較検討しました。その結果、Jiraを使って開発ワークフローとチケットを連携させることにしました。今回の場合、Jiraに既存の既存データの移行が容易にできたことと、ソースコード管理システムなどの他のシステムとの連携も可能だったことが決めてでした。…
mds-admin
January 19, 2021