rights reserved. In Partnership with ソフトウェアを扱う企業が評価されている 2020/10/07 2010/03/31 1st Apple Inc. PetroChina 2nd Microsoft Exxon Mobil 3rd Amazon.com Microsoft 4th Alibaba Group ICBC 5th Facebook Apple Inc. https://stocks.finance.yahoo.co.jp/us/ranking/ http://media.ft.com/cms/15951a1e-4899-11df-9a5d-00144feab49a.pdf 世界の時価総額順位
rights reserved. In Partnership with “ソフトウェアファースト”の モノづくりに転換することも必要だ 2020年3月24日 トヨタ自動車株式会社 豊田章男氏 https://monoist.atmarkit.co.jp/mn/articles/2003/25/news070.html
rights reserved. In Partnership with パターン1: EC2インスタンスを使いがち AWS Cloud Region Availability Zone Availability Zone Public subnet VPC Private subnet Private subnet Public subnet
rights reserved. In Partnership with 他にもこのような困難がありました • データベース(EC2)をどのリージョンのどのアベイラビリティゾーンに立 てるかを検討。 • 結果他の様々なアプリケーションもアベイラビリティゾーンが同じ方が通信コストから考えて、 パフォーマンスが高いのでは、ということで耐障害性が低下など・・・。
rights reserved. In Partnership with クラウドネイティブなアーキテクチャへの変更 • Auto Scalingの活用やサーバレス(Lambda, SQS, etc.)の導入により、アプリ ケーションのスケーラビリティを確保 • データベースサービスにRDSを選定するなど、マルチAZ構成に変更し耐 障害性を確保 クラウドベンダー(巨人)の肩に乗る
rights reserved. In Partnership with CI/CD環境の整備 • Git/GitHubを利用。GitHub Flowをもとにしてブランチ等の利用方法を明 確化。チーム標準の開発フローを定義。 • デプロイ作業をCircleCIを活用して自動化。GitHubのリリースタグを切っ たらデプロイがなされるように変更。 安心安全でかつ高速にソフトウェアをデリバリーする
rights reserved. In Partnership with CREATE OR REPLACE FUNCTION calculation_summary() RETURNS TRIGGER AS $summary $ DECLARE tmp_summary_data integer; BEGIN -- データの抽出/summaryデータの算出/算出したデータの格納 END; $ calculation_summary $ LANGUAGE plpgsql; データベーストリガー実装例: ロジックの実装
rights reserved. In Partnership with -- factテーブルにinsertかupdateが走ったら関数を実行するように設定 CREATE TRIGGER calculation_summary_trigger AFTER INSERT OR UPDATE ON fact FOR EACH ROW EXECUTE FUNCTION calculation_summary(); データベーストリガー実装例: トリガーの設定
rights reserved. In Partnership with このような困難がありました • 検証環境での動作を確認後、リリース。 • 検証環境と本番環境では格納しているデータ量が異なり、リリース直後 からデータベースのCPU使用率が想定以上に増大。 それによりデータベース全体のパフォーマンスが低下。 • 協議の結果、当該機能の提供を中止。再度実装方法を検討することに。 検証に適う環境を準備しておかなければならない
rights reserved. In Partnership with パターン5: 顧客目線ではないサービス選定 • システムの開発リーダーとして新規プロジェクトを担当。 • 新規プロジェクトにおいては、クラウドベンターのキャンペーンを活用 することが決定事項。営業/マーケティング的な支援を得られるとのこ とで指定の新規サービスを活用する方向で調整。 • 指定の新規サービスに合わせたリアーキテクティングを実行。
rights reserved. In Partnership with このような困難がありました • 障害が頻発。SLAを割るほどのパフォーマンスの低下。 • リアーキテクティングの際にモニタリング環境は構築していたものの、 障害発生ポイントがマネージドサービスの領域だったため、問題解決へ は技術サポートへの問い合わせが限界。 • 重大な機会損失及び既存顧客への説明等システム以外のコストが発生。
rights reserved. In Partnership with 得た教訓 • 価格やマーケティングなど、システム以外の事案を中心にアーキテク チャを設計するべきではない。 • そもそもSLOを満たせない技術の選定はするべきではない。また、PoCは 入念に行うべき。 それが顧客のためになるかを問うことが大事
rights reserved. In Partnership with ソフトウェア開発全体のアジリティを高める ソフトウェアの柔軟性を活かし、 顧客に価値を提供し続けるための開発Tips • バージョン管理 • 継続的インテグレーション • 継続的デリバリー • テスト駆動開発 • Infrastructure as Code • マイクロサービス etc… Dev Ops