SlideShare a Scribd company logo
Mule Meetup Tokyo #3
2019/6/21
株式会社オージス総研 齋藤伸也( OGIS-RI Co.,Ltd. Shinya Saito)
MuleアプリケーションのCI/CD
Copyright (C) 2019 OGIS-RI All rights reserved.
自己紹介
• 齋藤伸也 (Saito_Shinya@ogis-ri.co.jp)
• 株式会社オージス総研
– アライアンスソリューション部所属
• インテグレーションアーキテクト / APIテクニカルコンサルタント
– Muleを利用したシステム連携やAPI構築プロジェクトに参画
2
Copyright (C) 2019 OGIS-RI All rights reserved.
本日の話
• Muleアプリケーション(API)の開発プロセス
• Muleアプリケーション CI/CDを構築した時のポイント
• Muleアプリケーションの開発プロセスで悩んでいること
3
Muleアプリケーション(API)の開発プロセス
Copyright (C) 2019 OGIS-RI All rights reserved.
API設計:デザインファースト
• 「よい」APIを構築するために、API仕様を最初に設計し、関係者からフィードバックを得る
RAML/OAS
パブリッシュ
フィードバック
API開発者
API利用者(アプ
リ開発者など)
API Designer Exchange
APIの
設計
API仕様
の確認
5
Copyright (C) 2019 OGIS-RI All rights reserved.
API実装:Muleアプリケーションの実装
6
• API仕様を元にAPIの実装を行う
– Anypoint Studio を使って Design Center のRAML/OAS をインポートする
– APIKit がインタフェースを自動生成する
– APIの内部処理をAnypoint Studioで実装する
フィードバック
API開発者
API Designer
APIの
設計
RAML/OAS
パブリッシュ
API仕様
の確認
Exchange
RAML/OAS
インポート
Anypoint Studio
APIの
実装
Copyright (C) 2019 OGIS-RI All rights reserved.
Muleアプリケーションのビルドツール:Maven
7
• Mule アプリケーションは Java アプリケーションでよく使われる Maven というビルドツールを利
用している。Mavenの設定ファイルは pom.xml と呼ばれるXMLファイルに記述される。
• MuleアプリケーションのMavenの各フェーズで行われること
– compile:依存関係を解決し、コンパイルを行う
– test:単体テスト(MUnit)を実行する
– package: デプロイ可能な jar フォーマットにパッケージングする
Copyright (C) 2019 OGIS-RI All rights reserved.
Muleアプリケーションにおけるテストの種類と役割
8
単体テスト
– APIのフロー単位のメソッドを検
査するテストである。
– 単体テストは、コーディングが適
切かに対してすぐに修正し、プロ
グラムの品質を高めることを目的
とする
APIテスト(結合テスト)
– APIテストは単独のAPIに対し、仕
様通りのREST APIとなっているか
を検査するテストである。
– 外部システムを一部モックなどに置き換
えて実施することもある
エンドツーエンドテスト(ユーザテスト)
– エンドツーエンドテストは、APIの
クライアント(ブラウザやモバイル)
を含めたシステム全体に対して
実行するテストである。
– システムのユースケースやユーザ
の利用シナリオに沿った内容で
進める
顧客サービス
API
顧客サービスのフローに対
してテストを実施する
APIテスト
クライアント
顧客サービス
API
単独のAPIに対して
テストを実施する
flow
flow
DB
API
顧客サービス
DB
API
モバイル
サービス
API
商品サービス
モバイルアプリ
クライアントアプ
リに対してテスト
を実施する
Copyright (C) 2019 OGIS-RI All rights reserved.
MUnit
9
• Muleアプリケーションのテストフレームワーク
– xUnit ライクな概念で、Muleアプリの processer をテストすることができる
– モックを簡単に設定することができ、外部システムを用意せずにテスト可能
MUnitの例
テスト対象のフロー
Execution の実行前
に、テストの前提条
件を設定する
テスト対象の
processerを設定する
テスト実行後の値が期
待通りか確認する設定
をおこなう
Copyright (C) 2019 OGIS-RI All rights reserved.
Muleアプリケーションのデプロイ
10
• Muleアプリケーションのデプロイ方法
– Runtime Manager(ブラウザ)
– Anypoint Studio
– Mule Maven Plugin
CloudHub Worker
Hosted Server
Muleアプリケーション
のjar
Muleアプリケーション CI/CDを
構築した際のポイント
Copyright (C) 2019 OGIS-RI All rights reserved.
CI/CDとは
• Continuous Integration/Continuous Delivery、継続的インテグレーション/継続
的デリバリー
• ソースコードの変更に際し、常に自動でビルド、テストを実行し、本番環境にリリース可能な
状態にしておくソフトウェア開発のプロセスである。
• 主に、ビルドツール、ソースコードリポジトリ、CICDツールから構成される。
ソースコード
リポジトリ
開発者
CIサーバ
ソースコードの更新
ソースコードの変更を
検知して、取得する
取得したソースコードからビルド
ツールを利用し、コンパイル、単
体テスト、パッケージを実施する
12
Copyright (C) 2019 OGIS-RI All rights reserved.
今回作成したCI/CDパイプラインの全体像
• ユーザの参照、登録を行うシンプルなAPI。データはAWS上のRDS(MySQL)に格納する。
• ソースコードリポジトリはGithub、CIサーバはTravis CIを利用する。
フィードバック
API開発者
API Designer
APIの
設計
RAML/OAS
パブリッシュ
API仕様
の確認
Exchange
RAML/OAS
インポート
Anypoint Studio
APIの
実装
Github
1. プッシュ
TravisCI
CloudHub
2. コード取得
Maven
Repository
3. ビルド・
単体テスト
4. デプロイ
サンプル
アプリ
MySQL
5. 結合テスト
の前処理
結合テスト
コード
6. 結合テスト
実施
CI/CDの
パイプライン
13
Copyright (C) 2019 OGIS-RI All rights reserved.
Travis上でのMaven ビルド&単体テスト
• Travis CI上でMaven のビルドを実行する
• Mule EEのアーティファクトは一般公開されていないため、MuleSoft社のMule EEリポジトリから取得する
必要がある
– Mule EEリポジトリはBasic認証が設定されている
– Mavenのsettings.xmlに認証情報を指定することでMule EEのアーティファクトを取得できる
– settings.xmlの記載方法は下記を参照
• https://docs.mulesoft.com/mule-runtime/3.5/configuring-maven-pom-files-and-settings#referencing-mulesoft-s-enterprise-repositories
Travis CI
アーティファクトの取得
Mavenコマンドでsettings.xmlを指定する
mvn --settings settings.xml package
Maven
Repository
14
Copyright (C) 2019 OGIS-RI All rights reserved.
Mule Maven Pluginを利用したCloudHubへのデプロイ
• Maven deploy コマンドを使用することでデプロイ可能
– Mule Maven PluginがMuleプロジェクトを自動生成すると組み込まれている
• https://docs.mulesoft.com/mule-runtime/4.1/mmp-concept
• デプロイの設定はpom.xmlに追加する
– 設定はURLを参照
• https://docs.mulesoft.com/mule-runtime/4.1/mmp-concept#deploying-to-cloudhub
– 既存のCloudHub上のアプリを置き換える場合は、アプリケーション名とデプロイ環境を同じにすれば置換できる
– 主な設定値(CloudHubがターゲット)
• URL
• MuleVersion
• デプロイを行うユーザー名
• デプロイを行うユーザーのパスワード
• アプリケーション名
• デプロイ環境(SandboxとかProductionとか)
• ランタイム設定のプロパティ(複数可) pom.xml
15
Copyright (C) 2019 OGIS-RI All rights reserved.
結合テスト時の前処理
• TravisからSQLを流してデータの初期化を実施
– RDSのセキュリティ
• IP制限をかけている(通常はVPCとCloudHubのRuntimeのみ許可)
– Travisからの初期化時には、RDSのセキュリティグループにTravisのIPを一時的に許可した
• セキュリティグループの追加はAWSコマンドで実施
• TravisのIPアドレス(https://docs.travis-ci.com/user/ip-addresses/)
16
Copyright (C) 2019 OGIS-RI All rights reserved.
結合テスト実行の方法
• 結合テストは「karate」を利用した
– 作成者の好みによってこのテストフレームワークが選択
– karateについてはURLを参照
• https://github.com/intuit/karate
• karateを実装したディレクトに移動してMavenコマンド(mvn test)を実行することでテ
ストを実施
– 実行時のターゲットURLやAPI認証の情報は環境変数から取得している(後述)
17
Copyright (C) 2019 OGIS-RI All rights reserved.
環境依存情報の管理
18
• 環境依存情報とは
– 環境(開発、テスト、本番など)によって異なる情報
– 例えば、DBサーバの接続情報やSaaSの接続URIなど
• 静的な設定ファイルを環境ごとに用意する
– dev-config.yaml、test-config.yamlなど
– ${env}-config.yaml と環境変数によって設定ファイルが切り替わるようにする
Copyright (C) 2019 OGIS-RI All rights reserved.
環境情報の管理方法
• Muleアプリに必要な環境情報の設定方法
– ローカル
• Anypoint Studioで、実行時の引数に -Dオプション経由で設定する
– https://dzone.com/articles/muleload-properties-as-per-environmentwith-default
– CloudHub Runtime
• RuntimeのProperties経由で設定する
• デプロイ時にRuntimeのPropertiesを設定するには、pom.xmlのcloudHubDeploymentのpropertiesに設
定する
– https://docs.mulesoft.com/mule-runtime/4.1/mmp-concept#deploying-to-cloudhub
• 環境情報をpom.xmlに設定する場合は環境変数に環境情報を定義して、pom.xmlが環境変数から読み出す
ようにした
• 結合テストに必要な環境情報の設定方法
– ローカル / Travis CI
• 環境変数に結合テストのURLとBasic認証のクレデンシャル情報を設定した
• 結合テストは実行ファイルに環境変数からURLとBasic認証情報を取得する作りとした(Javascriptの環境変数を
読み込むコードを記載 [java.lang.System.getenv('MULE_BASIC_AUTH')] )
19
Copyright (C) 2019 OGIS-RI All rights reserved.
結合テスト
Travis環境
Muleアプリ(プロパティプレースホルダーで定義)
環境情報の管理方法(環境変数版)
• Muleアプリに必要な環境情報の設定方法
<db:config name="Database_Config">
<db:my-sql-connection host="${db.host}" port="${db.port}"
user="${db.user}" password="${db.password}" database="${db.database}">
</db:my-sql-connection>
</db:config>
ローカル環境(VMの引数で定義)
CloudHub環境
VMの設定値が
アプリに反映される
RuntimeManagerのプロパティ pom.xml
<cloudHubDeployment>
<properties>
<db.host>${env.DB_HOST}</db.host>
<db.port>${env.DB_PORT}</db.port>
<db.user>${env.DB_USER}</db.user>
<db.password>${env.DB_PASSWORD}</db.password>
<db.database>${env.DB_DATABASE}</db.database>
</properties>
</cloudHubDeployment>
「${env.XXX}」と記
載すると環境変数を値
に設定できる
デプロイ時に
RuntimeManagerのプロ
パティを設定できる
RuntimeManagerのプロパティがアプリに反映される
20
Copyright (C) 2019 OGIS-RI All rights reserved.
クレデンシャル情報の管理方法
21
• クレデンシャル情報とは
– ID、パスワードやアクセストークンなど、サービスやコンポーネントにアクセスするための重要情報
– 平文で管理したくない
• どのような方法があるのか
– Secure Configuration Properties
• https://docs.mulesoft.com/mule-runtime/4.2/secure-configuration-properties
– Travis CI encryption key
• https://docs.travis-ci.com/user/encryption-keys/
Copyright (C) 2019 OGIS-RI All rights reserved.
Travis CI encryption keys
• Travis CIの暗号化、復号化の仕組みを利用して管理を行った
– 解説はURLを参照
• https://docs.travis-ci.com/user/encryption-keys/
– Travis CIの暗号化により、暗号化された文字列をGitHubにコミットしてTravis上で復号化を行える
– 復号化された値はTravisの環境変数に設定される
– 復号化した値を設定する必要があったファイル
• Mavenのsettings.xml(MuleEEの認証情報)
• pom.xml(ランタイム設定のプロパティ値[RDSの情報など])
– 各ファイルともに環境変数から値を取得可能
22
Muleアプリケーション開発プロセス
で悩んでいること
Copyright (C) 2019 OGIS-RI All rights reserved.
様々な成果物のバージョン管理
• API Designer のブランチ
• Anypoint ExchangeのAPIバージョンとアセットバージョン
• ソースコードリポジトリ(Github)のブランチ
• Muleアプリケーションのバージョン(pom.xml)
24
API Designerのブランチ
Gitのブランチ
pom.xmlのアーティファクトバージョン
Exchange のAPIバージョンとアセットバージョン
• 無秩序に行えば混乱のもと、概念の整理とルール作りが必要……(これから!)
Copyright (C) 2019 OGIS-RI All rights reserved.
どこまで自動化するべきか
25
• Design Center、Anypoint Exchange成果物の更新も自動化するべきか
• Anypoint Platform CLI で自動化はできそうだが……
– https://docs.mulesoft.com/runtime-manager/anypoint-platform-cli
フィードバック
API開発者
API Designer
APIの
設計
RAML/OAS
パブリッシュ
API仕様
の確認
Exchange
RAML/OAS
インポート
Anypoint Studio
APIの
実装
Github
1. プッシュ
TravisCI
CloudHub
2. コード取得
Maven
Repository
3. ビルド・
単体テスト
4. デプロイ
サンプル
アプリ
MySQL
CI/CDの
パイプライン
5. APIのパブリッシュ
Copyright (C) 2019 OGIS-RI All rights reserved.
まとめ
26
• Muleアプリケーション(API)の開発は「デザインファースト」である
• MuleRuntimeには、CI/CDを実践するために必要な様々なツールや機能が用意
されている
– MUnit
– Mule Maven plugin
• 開発プロセス、CI/CDのパイプラインはまだまだ検討すべき余地がある
– 意訳) 私の力不足で、ベストプラクティスっぽい知見が共有できず申し訳ない m(_ _)m

More Related Content

What's hot

kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
 
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
Amazon Web Services
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
Amazon Web Services Japan
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
 
MQ入門
MQ入門MQ入門
MQ入門
HIRA
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
AdvancedTechNight
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
AWS WAF を活用しよう
AWS WAF を活用しようAWS WAF を活用しよう
AWS WAF を活用しよう
Yuto Ichikawa
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
Junji Nishihara
 
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
NTT DATA Technology & Innovation
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
 
インフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptxインフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptx
ssuser5c7ee4
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX, Inc.
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
Kumazaki Hiroki
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
 

What's hot (20)

kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
 
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介  #streamctjpSpring Cloud Data Flow の紹介  #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
 
MQ入門
MQ入門MQ入門
MQ入門
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
AWS WAF を活用しよう
AWS WAF を活用しようAWS WAF を活用しよう
AWS WAF を活用しよう
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
 
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
KubernetesのRBACを掘り下げてみる(Kubernetes Novice Tokyo #17 発表資料)
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
インフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptxインフラチームとCCoEの関係.pptx
インフラチームとCCoEの関係.pptx
 
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)NGINX Back to Basics: Ingress Controller (Japanese Webinar)
NGINX Back to Basics: Ingress Controller (Japanese Webinar)
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 

Similar to MuleアプリケーションのCI/CD

AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介
ssuser39314d
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
裕貴 荒井
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
 
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
Takahiro Imanaka
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
Yuki Ando
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Issei Hiraoka
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
Shinichiro Arai
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
Shotaro Suzuki
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
惠 紀野
 
#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?
#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?
#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?
Hisazumi Arimoto
 
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境
Tatsuya Sakai
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
DeNA
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
 
概説 Data API v3
概説 Data API v3概説 Data API v3
概説 Data API v3
Yuji Takayama
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
満徳 関
 
Azure &lt;3 Openness
Azure &lt;3 OpennessAzure &lt;3 Openness
Azure &lt;3 Openness
Keiji Kamebuchi
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
CData Software Japan
 
Azure Fundamental
Azure FundamentalAzure Fundamental
Azure Fundamental
Yui Ashikaga
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
Amazon Web Services Japan
 
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
Amazon Web Services Japan
 

Similar to MuleアプリケーションのCI/CD (20)

AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介AI-first Code Editor 「Cursor」の機能紹介
AI-first Code Editor 「Cursor」の機能紹介
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
 
Drupal deployment trial on Engine Yard
Drupal deployment trial on Engine YardDrupal deployment trial on Engine Yard
Drupal deployment trial on Engine Yard
 
#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?
#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?
#CNDT2020 Cloud Foundry on K8sでクラ ウドネイティブ始めませんか?
 
AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境AzureDevOpsで作るHoloLensアプリCI環境
AzureDevOpsで作るHoloLensアプリCI環境
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
 
概説 Data API v3
概説 Data API v3概説 Data API v3
概説 Data API v3
 
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
Visual Studio 2019 / Visual Studio Code + Live Shareではじめるモブ・プログラミング #vs2019
 
Azure &lt;3 Openness
Azure &lt;3 OpennessAzure &lt;3 Openness
Azure &lt;3 Openness
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
Azure Fundamental
Azure FundamentalAzure Fundamental
Azure Fundamental
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
 
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
 

Recently uploaded

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 

MuleアプリケーションのCI/CD

  • 1. Mule Meetup Tokyo #3 2019/6/21 株式会社オージス総研 齋藤伸也( OGIS-RI Co.,Ltd. Shinya Saito) MuleアプリケーションのCI/CD
  • 2. Copyright (C) 2019 OGIS-RI All rights reserved. 自己紹介 • 齋藤伸也 (Saito_Shinya@ogis-ri.co.jp) • 株式会社オージス総研 – アライアンスソリューション部所属 • インテグレーションアーキテクト / APIテクニカルコンサルタント – Muleを利用したシステム連携やAPI構築プロジェクトに参画 2
  • 3. Copyright (C) 2019 OGIS-RI All rights reserved. 本日の話 • Muleアプリケーション(API)の開発プロセス • Muleアプリケーション CI/CDを構築した時のポイント • Muleアプリケーションの開発プロセスで悩んでいること 3
  • 5. Copyright (C) 2019 OGIS-RI All rights reserved. API設計:デザインファースト • 「よい」APIを構築するために、API仕様を最初に設計し、関係者からフィードバックを得る RAML/OAS パブリッシュ フィードバック API開発者 API利用者(アプ リ開発者など) API Designer Exchange APIの 設計 API仕様 の確認 5
  • 6. Copyright (C) 2019 OGIS-RI All rights reserved. API実装:Muleアプリケーションの実装 6 • API仕様を元にAPIの実装を行う – Anypoint Studio を使って Design Center のRAML/OAS をインポートする – APIKit がインタフェースを自動生成する – APIの内部処理をAnypoint Studioで実装する フィードバック API開発者 API Designer APIの 設計 RAML/OAS パブリッシュ API仕様 の確認 Exchange RAML/OAS インポート Anypoint Studio APIの 実装
  • 7. Copyright (C) 2019 OGIS-RI All rights reserved. Muleアプリケーションのビルドツール:Maven 7 • Mule アプリケーションは Java アプリケーションでよく使われる Maven というビルドツールを利 用している。Mavenの設定ファイルは pom.xml と呼ばれるXMLファイルに記述される。 • MuleアプリケーションのMavenの各フェーズで行われること – compile:依存関係を解決し、コンパイルを行う – test:単体テスト(MUnit)を実行する – package: デプロイ可能な jar フォーマットにパッケージングする
  • 8. Copyright (C) 2019 OGIS-RI All rights reserved. Muleアプリケーションにおけるテストの種類と役割 8 単体テスト – APIのフロー単位のメソッドを検 査するテストである。 – 単体テストは、コーディングが適 切かに対してすぐに修正し、プロ グラムの品質を高めることを目的 とする APIテスト(結合テスト) – APIテストは単独のAPIに対し、仕 様通りのREST APIとなっているか を検査するテストである。 – 外部システムを一部モックなどに置き換 えて実施することもある エンドツーエンドテスト(ユーザテスト) – エンドツーエンドテストは、APIの クライアント(ブラウザやモバイル) を含めたシステム全体に対して 実行するテストである。 – システムのユースケースやユーザ の利用シナリオに沿った内容で 進める 顧客サービス API 顧客サービスのフローに対 してテストを実施する APIテスト クライアント 顧客サービス API 単独のAPIに対して テストを実施する flow flow DB API 顧客サービス DB API モバイル サービス API 商品サービス モバイルアプリ クライアントアプ リに対してテスト を実施する
  • 9. Copyright (C) 2019 OGIS-RI All rights reserved. MUnit 9 • Muleアプリケーションのテストフレームワーク – xUnit ライクな概念で、Muleアプリの processer をテストすることができる – モックを簡単に設定することができ、外部システムを用意せずにテスト可能 MUnitの例 テスト対象のフロー Execution の実行前 に、テストの前提条 件を設定する テスト対象の processerを設定する テスト実行後の値が期 待通りか確認する設定 をおこなう
  • 10. Copyright (C) 2019 OGIS-RI All rights reserved. Muleアプリケーションのデプロイ 10 • Muleアプリケーションのデプロイ方法 – Runtime Manager(ブラウザ) – Anypoint Studio – Mule Maven Plugin CloudHub Worker Hosted Server Muleアプリケーション のjar
  • 12. Copyright (C) 2019 OGIS-RI All rights reserved. CI/CDとは • Continuous Integration/Continuous Delivery、継続的インテグレーション/継続 的デリバリー • ソースコードの変更に際し、常に自動でビルド、テストを実行し、本番環境にリリース可能な 状態にしておくソフトウェア開発のプロセスである。 • 主に、ビルドツール、ソースコードリポジトリ、CICDツールから構成される。 ソースコード リポジトリ 開発者 CIサーバ ソースコードの更新 ソースコードの変更を 検知して、取得する 取得したソースコードからビルド ツールを利用し、コンパイル、単 体テスト、パッケージを実施する 12
  • 13. Copyright (C) 2019 OGIS-RI All rights reserved. 今回作成したCI/CDパイプラインの全体像 • ユーザの参照、登録を行うシンプルなAPI。データはAWS上のRDS(MySQL)に格納する。 • ソースコードリポジトリはGithub、CIサーバはTravis CIを利用する。 フィードバック API開発者 API Designer APIの 設計 RAML/OAS パブリッシュ API仕様 の確認 Exchange RAML/OAS インポート Anypoint Studio APIの 実装 Github 1. プッシュ TravisCI CloudHub 2. コード取得 Maven Repository 3. ビルド・ 単体テスト 4. デプロイ サンプル アプリ MySQL 5. 結合テスト の前処理 結合テスト コード 6. 結合テスト 実施 CI/CDの パイプライン 13
  • 14. Copyright (C) 2019 OGIS-RI All rights reserved. Travis上でのMaven ビルド&単体テスト • Travis CI上でMaven のビルドを実行する • Mule EEのアーティファクトは一般公開されていないため、MuleSoft社のMule EEリポジトリから取得する 必要がある – Mule EEリポジトリはBasic認証が設定されている – Mavenのsettings.xmlに認証情報を指定することでMule EEのアーティファクトを取得できる – settings.xmlの記載方法は下記を参照 • https://docs.mulesoft.com/mule-runtime/3.5/configuring-maven-pom-files-and-settings#referencing-mulesoft-s-enterprise-repositories Travis CI アーティファクトの取得 Mavenコマンドでsettings.xmlを指定する mvn --settings settings.xml package Maven Repository 14
  • 15. Copyright (C) 2019 OGIS-RI All rights reserved. Mule Maven Pluginを利用したCloudHubへのデプロイ • Maven deploy コマンドを使用することでデプロイ可能 – Mule Maven PluginがMuleプロジェクトを自動生成すると組み込まれている • https://docs.mulesoft.com/mule-runtime/4.1/mmp-concept • デプロイの設定はpom.xmlに追加する – 設定はURLを参照 • https://docs.mulesoft.com/mule-runtime/4.1/mmp-concept#deploying-to-cloudhub – 既存のCloudHub上のアプリを置き換える場合は、アプリケーション名とデプロイ環境を同じにすれば置換できる – 主な設定値(CloudHubがターゲット) • URL • MuleVersion • デプロイを行うユーザー名 • デプロイを行うユーザーのパスワード • アプリケーション名 • デプロイ環境(SandboxとかProductionとか) • ランタイム設定のプロパティ(複数可) pom.xml 15
  • 16. Copyright (C) 2019 OGIS-RI All rights reserved. 結合テスト時の前処理 • TravisからSQLを流してデータの初期化を実施 – RDSのセキュリティ • IP制限をかけている(通常はVPCとCloudHubのRuntimeのみ許可) – Travisからの初期化時には、RDSのセキュリティグループにTravisのIPを一時的に許可した • セキュリティグループの追加はAWSコマンドで実施 • TravisのIPアドレス(https://docs.travis-ci.com/user/ip-addresses/) 16
  • 17. Copyright (C) 2019 OGIS-RI All rights reserved. 結合テスト実行の方法 • 結合テストは「karate」を利用した – 作成者の好みによってこのテストフレームワークが選択 – karateについてはURLを参照 • https://github.com/intuit/karate • karateを実装したディレクトに移動してMavenコマンド(mvn test)を実行することでテ ストを実施 – 実行時のターゲットURLやAPI認証の情報は環境変数から取得している(後述) 17
  • 18. Copyright (C) 2019 OGIS-RI All rights reserved. 環境依存情報の管理 18 • 環境依存情報とは – 環境(開発、テスト、本番など)によって異なる情報 – 例えば、DBサーバの接続情報やSaaSの接続URIなど • 静的な設定ファイルを環境ごとに用意する – dev-config.yaml、test-config.yamlなど – ${env}-config.yaml と環境変数によって設定ファイルが切り替わるようにする
  • 19. Copyright (C) 2019 OGIS-RI All rights reserved. 環境情報の管理方法 • Muleアプリに必要な環境情報の設定方法 – ローカル • Anypoint Studioで、実行時の引数に -Dオプション経由で設定する – https://dzone.com/articles/muleload-properties-as-per-environmentwith-default – CloudHub Runtime • RuntimeのProperties経由で設定する • デプロイ時にRuntimeのPropertiesを設定するには、pom.xmlのcloudHubDeploymentのpropertiesに設 定する – https://docs.mulesoft.com/mule-runtime/4.1/mmp-concept#deploying-to-cloudhub • 環境情報をpom.xmlに設定する場合は環境変数に環境情報を定義して、pom.xmlが環境変数から読み出す ようにした • 結合テストに必要な環境情報の設定方法 – ローカル / Travis CI • 環境変数に結合テストのURLとBasic認証のクレデンシャル情報を設定した • 結合テストは実行ファイルに環境変数からURLとBasic認証情報を取得する作りとした(Javascriptの環境変数を 読み込むコードを記載 [java.lang.System.getenv('MULE_BASIC_AUTH')] ) 19
  • 20. Copyright (C) 2019 OGIS-RI All rights reserved. 結合テスト Travis環境 Muleアプリ(プロパティプレースホルダーで定義) 環境情報の管理方法(環境変数版) • Muleアプリに必要な環境情報の設定方法 <db:config name="Database_Config"> <db:my-sql-connection host="${db.host}" port="${db.port}" user="${db.user}" password="${db.password}" database="${db.database}"> </db:my-sql-connection> </db:config> ローカル環境(VMの引数で定義) CloudHub環境 VMの設定値が アプリに反映される RuntimeManagerのプロパティ pom.xml <cloudHubDeployment> <properties> <db.host>${env.DB_HOST}</db.host> <db.port>${env.DB_PORT}</db.port> <db.user>${env.DB_USER}</db.user> <db.password>${env.DB_PASSWORD}</db.password> <db.database>${env.DB_DATABASE}</db.database> </properties> </cloudHubDeployment> 「${env.XXX}」と記 載すると環境変数を値 に設定できる デプロイ時に RuntimeManagerのプロ パティを設定できる RuntimeManagerのプロパティがアプリに反映される 20
  • 21. Copyright (C) 2019 OGIS-RI All rights reserved. クレデンシャル情報の管理方法 21 • クレデンシャル情報とは – ID、パスワードやアクセストークンなど、サービスやコンポーネントにアクセスするための重要情報 – 平文で管理したくない • どのような方法があるのか – Secure Configuration Properties • https://docs.mulesoft.com/mule-runtime/4.2/secure-configuration-properties – Travis CI encryption key • https://docs.travis-ci.com/user/encryption-keys/
  • 22. Copyright (C) 2019 OGIS-RI All rights reserved. Travis CI encryption keys • Travis CIの暗号化、復号化の仕組みを利用して管理を行った – 解説はURLを参照 • https://docs.travis-ci.com/user/encryption-keys/ – Travis CIの暗号化により、暗号化された文字列をGitHubにコミットしてTravis上で復号化を行える – 復号化された値はTravisの環境変数に設定される – 復号化した値を設定する必要があったファイル • Mavenのsettings.xml(MuleEEの認証情報) • pom.xml(ランタイム設定のプロパティ値[RDSの情報など]) – 各ファイルともに環境変数から値を取得可能 22
  • 24. Copyright (C) 2019 OGIS-RI All rights reserved. 様々な成果物のバージョン管理 • API Designer のブランチ • Anypoint ExchangeのAPIバージョンとアセットバージョン • ソースコードリポジトリ(Github)のブランチ • Muleアプリケーションのバージョン(pom.xml) 24 API Designerのブランチ Gitのブランチ pom.xmlのアーティファクトバージョン Exchange のAPIバージョンとアセットバージョン • 無秩序に行えば混乱のもと、概念の整理とルール作りが必要……(これから!)
  • 25. Copyright (C) 2019 OGIS-RI All rights reserved. どこまで自動化するべきか 25 • Design Center、Anypoint Exchange成果物の更新も自動化するべきか • Anypoint Platform CLI で自動化はできそうだが…… – https://docs.mulesoft.com/runtime-manager/anypoint-platform-cli フィードバック API開発者 API Designer APIの 設計 RAML/OAS パブリッシュ API仕様 の確認 Exchange RAML/OAS インポート Anypoint Studio APIの 実装 Github 1. プッシュ TravisCI CloudHub 2. コード取得 Maven Repository 3. ビルド・ 単体テスト 4. デプロイ サンプル アプリ MySQL CI/CDの パイプライン 5. APIのパブリッシュ
  • 26. Copyright (C) 2019 OGIS-RI All rights reserved. まとめ 26 • Muleアプリケーション(API)の開発は「デザインファースト」である • MuleRuntimeには、CI/CDを実践するために必要な様々なツールや機能が用意 されている – MUnit – Mule Maven plugin • 開発プロセス、CI/CDのパイプラインはまだまだ検討すべき余地がある – 意訳) 私の力不足で、ベストプラクティスっぽい知見が共有できず申し訳ない m(_ _)m