# 24mar2022CloudHub ###### tags: `MuleSoftTraining` [TOC] # Day1 ## Module0 準備 ### 資料のダウンロード [学習ポータル Training Dashboard](https://training.mulesoft.com/dashboard) Enrollments > Instructor-led > コース名 > Resources タブ - :star: **APOpsCloud4.4_studentFiles_07dec2022.zip** - 2日間を通して使用するファイル集 - APOpsCloud4.4_studentManual_JA_07dec2022.pdf - 復習に使用  - APOpsCloud4.4_studentSlides_JA_07dec2022.zip - 復習に使用  ### セットアップ [CloudHub 運用コース セットアップマニュアル](https://salesforce.quip.com/mfmHABywK5rn)をご参照ください。  1. [Advanced REST Client](http://install.advancedrestclient.com/install)  - [Postman](https://www.postman.com/downloads/)など、その他のREST APIクライアントアプリケーションも使用可能です。 :star:[TODO 確認] 2. [Anypoint Platform CLI](https://docs.mulesoft.com/jp/runtime-manager/anypoint-platform-cli#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) - 確認コマンド: `anypoint-cli` 3. [Open JDK8+](Apache JMeter の実行に使用します) - [Java インストールと環境変数設定](https://salesforce.quip.com/5B2PAV46QbB5#DCSABAatba1) - 確認コマンド: `java -version` 4. [Apache JMeter](https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip) - zip ファイル - Mac: bin/jmeter - Windows: bin/jmeter.bat 5. [OpenSSL](https://github.com/openssl/openssl) ![画面共有](https://i.imgur.com/mb9FMxs.png) ## Module1 Anypoint Platform の概要 - Anypoint Platform コントロールプレーン - Anypoint Platform でアプリケーションを設計・開発・デプロイ・管理・監視etcするためのツール/コンポーネント群 - URL: https://anypoint.mulesoft.com/home (US) - ステータスの確認: https://status.mulesoft.com/ - Anypoint Platform ランタイムプレーン - MuleランタイムとMuleアプリケーションをデプロイする環境・インフラ - **CloudHub!** - スタンドアローンMuleランタイム - Runtime Fabric ### 2日間使用する Anypoint Platform 認証情報 - ユーザー名: Cloud02Student*XX*(作業用)/ Cloud02Viewer*XX*(閲覧用) - 01: Sakaguchi - 02: Izuno san - 03: Anzai san - 04: Mizunoe san - 05: Takahashi san - パスワード: @Mulesoft2020 ### Anypoint Access Management Anypoint Platform のユーザー、リソース(CloudHub アプリケーションをデプロイするための vCore など)、ビジネスグループ、環境、チームの管理を行うツール ### Anypoint Platform 組織 - Organization (Cloud02Class) `//会社のようなもの` - Business GroupA (Cloud02Group01) `//部署のようなもの。sakaguchi がリーダー/オーナー` - 子Business GroupA (Cloud01SubGroup01) `//プロジェクトのような単位。sakaguchi がリーダー/オーナー` - Production 0.4 vCore - Prod 環境 - Sandbox 0.8 vCore - Dev 環境 - DLB(専用ロードバランサー) - VPC(Virtual Private Cloud) - Business GroupB (Cloud02Group05)  - 子Business GroupA (Cloud02SubGroup05) - Production 0.4 vCore - Prod 環境 - Sandbox 0.8 vCore - Dev 環境 - DLB(専用ロードバランサー) - VPC(Virtual Private Cloud) *※vCore: CloudHub にアプリケーションをデプロイする際に消費する契約リソースの単位 (1ワーカーあたり: 0.1 vCore ~ 16 vCore)* ### Muleアプリケーション - Anypoint Studio(IDE)で開発 - ローコードで開発可能な Java アプリケーション - XMLで定義    - jarファイルにパッケージング - Mule ランタイム(エンジン/アプリケーションサーバー)にデプロイされ実行される ### CloudHub ワーカー - OS, Java, Runtime などMuleSoftが管理するAWS EC2 = 仮想マシン - 管理するインフラの数を抑制=お客様はMuleアプリケーションの開発側により集中することができる - [CloudHubワーカーについて](https://docs.mulesoft.com/jp/runtime-manager/cloudhub-architecture#cloudhub-%E3%83%AF%E3%83%BC%E3%82%AB%E3%83%BC) ![CloudHub](https://i.imgur.com/orPXb8R.png) ### スケーリング - スケールイン/スケールアウト: CloudHubワーカーの数を増やす/数を減らす - スケールアップ/スケールダウン: CloudHubワーカーのサイズを大きくする/小さくする ## Module2 ユーザーとリソースの管理 ### Organization(組織) - トップレベルのグループ ### Business Group(ビジネスグループ) - CloudHub vCore リソース - Environments を複数持つことができる ### Environments(環境) - Sandbox Type: **Dev**, Stag, QA... - Production Type: **Prod**... - Sandbox よりも良いMuleSoft SLA 保証 - (Design Type: Flow Designer で作成したアプリケーションを動かすためのvCore) ### User(ユーザー) - anypoint.mulesoft.com ログインするユーザー - SSO も使用可能 ### Teams(チームズ) - ビジネスグループを横断したユーザーのグループ。複数のPersmission(権限)を、複数のビジネスグループで柔軟に管理できる。 - 各チームのメンバーの種類 - Maintainer(管理者) - Member(メンバー) - 親チームの権限は、子チームに継承される - 親チームとなるチームの権限は、最小限で構成していく - すべてのチームは **Everyone** を親に持つ - Everyone (X) `//デフォルト` - TeamA (XY) `//CloudHub Network Viewer` - TeamA1 (XYa) `//Runtime Deployer` - TeamA2 (XYb) - Runtime Managaer Viewers (XZ) - App Deployers (XZc) ![](https://i.imgur.com/fPD7wRl.png) ### Roles(役割) - *非推奨* 新機能である Teams を推奨 ### Permissions(権限) - Userに直接付与も可能だが、Teams単位で権限をグルーピングすることを推奨している ### サブグループの作成 - Cloud02 - Cloud02Group*XX* - Cloud02SubGroup*XX* `//ココ!` ### Cloud02ViewerXXでログイン - ユーザー名: Cloud02ViewerXX - パスワード: @Mulesoft2020 ## Module3 Muleアプリケーションの管理 ### Muleアプリケーションのデプロイ - デプロイ可能なアーカイブ (JAR) を Runtime Managerにアップロードする – このクラスで中心トピック - Runtime Manager で Exchange Asset を選択 - Anypoint Studio からデプロイ - Anypoint Platform REST API でデプロイ - 本コース後半で学びます - Anypoint-CLI コマンドラインツールでデプロイ - 本コース後半で学びます - Maven プラグインでデプロイ ### Runtime Manager - Muleランタイムのホスティングと、Muleアプリケーションのデプロイを管理する - 実行中のMuleランタイムとアプリケーションの監視も可能 - [アラート](https://docs.mulesoft.com/jp/runtime-manager/alerts-on-runtime-manager)の設定も可能 ### 最初のMuleアプリケーションをCloudHubデプロイ! - 環境 - Prod - アプリケーション名 - **server-info-02XX** - CloudHubアプリケーションの名前は、グローバルで一意である必要がある - jarファイル (Choose File > Upload File) - APOpsCloud4.4_studentFiles_07dec2021 - mod03-mule - **server-info-5.5.0-mule-application.jar** #### ideas portal https://help.mulesoft.com/s/ideas ### ワーカーのIPアドレス vs CloudHub Shared Load Balancer (SLB, 共有ロードバランサー) - CH Worker (仮想マシン) IP - 54.199.194.201 - Domain(Shared Load Balancer) - server-info-ch0201.jp-e1.cloudhub.io ![SLB](https://i.imgur.com/DuSWoYm.png) - API Client (ブラウザ含む) ↓HTTP(80)/HTTPS(443) - SLB(共有ロードバランサー) `server-info-ch0201.jp-e1.cloudhub.io` ↓80->**8081** ↓ 443->**8082** - old CH Worker `54.199.194.201:8081` - new CH Worker `18.183.181.198:8081` ### Runtime Manager CloudHub Log - 制限: 容量100MB もしくは TTL 30日間 ### アプリケーションの再デプロイ ゼロダウンタイム ![](https://i.imgur.com/wJthehy.png) ### 0.1 vCore / 0.2 vCore バースタブルインスタンス - https://blogs.mulesoft.com/dev-guides/how-to-tutorials/cloudhub-vs-runtime-fabric-for-high-performing-mules/ - https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html - 0.X シミュレーション (メモリ) https://www.youtube.com/watch?v=FVFTk2ubk_0 - Slack Connector (https://www.youtube.com/watch?v=FNDDfsT152M) - 1 Mule アプリケーション - 1 API (XX SAPI, GET:/customers, POST:/customers) - N個 CloudHubワーカー(高可用性,HA) ## Module4 Muleアプリケーションの監視と分析 - Log Analyzer - https://help.mulesoft.com/s/article/Support-Log-file-analyzer-tool ### CloudHub Runtime Manager Log - デフォルトのCloudHub log4j2 アペンダーが使用される - https://docs.mulesoft.com/jp/runtime-manager/custom-log-appender#log4j-%E8%A8%AD%E5%AE%9A%E3%81%AE%E4%BD%9C%E6%88%90 ### Tracing https://docs.mulesoft.com/tracing-module/1.0/tracing-module-logging ### 監視対象アプリケーション: price-lookup-0201 jar: studentFiles/mod4-monitoring/**price-lookup-service-5.5.0-mule-application.jar** ### snippet(コードスニペット) ``` # Service Endpoint [http://price-lookup-service-0201.jp-e1.cloudhub.io/flights/prices](http://price-lookup-service-0201.jp-e1.cloudhub.io/flights/prices) ## Allowed methods ```GET``` ## Allowed methods |Parameter name|Type|Required?| |---|---|---| |destination | query | yes| ### Sample HTTP request ``http://price-lookup-service-0201.jp-e1.cloudhub.io/flights/prices?destination=SFO`` ``` ### Anypoint Monitoring Agent - https://docs.mulesoft.com/jp/monitoring/configure-monitoring-cloudhub ### SLB(共有ロードバランサー) - レート制限 (429) https://docs.mulesoft.com/jp/runtime-manager/dedicated-load-balancer-tutorial#%E5%85%B1%E6%9C%89%E3%83%AD%E3%83%BC%E3%83%89%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B5 ### Mule 4 - Back Pressure https://blogs.mulesoft.com/dev-guides/how-to-tutorials/mule-4-reactive-programming/ https://docs.mulesoft.com/jp/mule-runtime/4.4/tuning-backpressure-maxconcurrency ## Module 5: Mule アプリケーションの設定 ``` 10:02:06.881 03/01/2022 Deployment system SYSTEM Worker(52.199.69.225): Your application has failed with exception java.lang.IllegalStateException: com.mulesoft.ch.services.agent.muleAgent.MuleAgentException: {"type":"class java.lang.IllegalArgumentException","message":"There was an error on the Mule Runtime while deploying the application server-info-env-0101-dev. Error: Failed to deploy artifact [server-info-env-0101-dev]. PropertyNotFoundException: Couldn't find configuration property value for key ${env} from properties provider environment properties provider - within resolver Deployment properties trying to process key env - within resolver global-properties configuration attributes trying to process key env - within resolver environment properties provider trying to process key env"} ``` `Couldn't find configuration property value for key ${env} ` ### Runtime Manager > Properties タブ `env=dev` ![env-var](https://i.imgur.com/ZHFhjaf.png) Q.プロパティにDBパスワードなどを設定した場合は、ブラウザからは平文で見えてしますのでしょうか? - A. [Safely Hidden Application Properties](https://docs.mulesoft.com/jp/runtime-manager/secure-application-properties) を設定する(mule-artifact.json) ``` { "minMuleVersion": "4.3.0", "secureProperties": ["db1.password"] } ``` ### Runtime Manager > Scheduler スケジュール実行の頻度を変更(開発者が変更する必要はありません) ### パスワードの管理 1. Runtiem Manager プロパティタブでデプロイ時に設定する - [safely hidden properties](https://docs.mulesoft.com/jp/runtime-manager/secure-application-properties#create-safely-hidden-application-properties)を使用する 2. yamlで構成する (=jarファイルの一部に組み込む) - [セキュア設定プロパティ](https://docs.mulesoft.com/jp/mule-runtime/4.4/secure-configuration-properties) ``` encrypted: value1: "![nHWo5JhNAYM+TzxqeHdRDXx15Q5R56YVGiQgXCoBCew=]" value2: "![nHWo6XyCADP+TzxqeHdRDXx15Q5R56YVGiQgXCoDFaj=]" testPropertyA: "testValueA" testPropertyB: "testValueB" ``` ``` <flow name="main"> <set-payload value="${secure::encrypted.value1}"/> </flow> ``` 3. 外部のプロパティストレージを使用して自動化する (CI/CDパイプライン) ## Module 6: パフォーマンスと信頼性の目標を達成する ### Object Store & VM on CloudHub Object Store: key-value ペアのストレージ ![Object Store & VM on CloudHub](https://i.imgur.com/RiNQQs3.png) ### Object Store v2 - only on CloudHub - 特別な設定なしで使用可能 - Object Store v2 REST API を使用可能 - 多くの場合は、MuleアプリケーションからObject Storeコネクタを使用して、値を作成・更新・保存する - Cloudベースのkey-value store `{hoge:fuga}` - 複数のワーカーで共有が可能 - ワーカーが停止して再起動した後もデータは保持される - 通信時と保管時のセキュリティ◎ - 制限 - 10 TPS - アドオン: 100 TPS - TTL: 30日間 - 更新されればリセット - 各値 \<10MB - エントリ数に制限はなし #### 信頼性 - 高可用性 (High Availability, HA) - 災害復旧 (Disaster Recovery, DR) #### Object Store v2 テスト - OSv2 に値を保存(/store) http://object-store-0101.jp-e1.cloudhub.io/store?key=Alice&value=first `{"Alice":"first"}` Worker1:`18.176.58.185:8081` Worker2: `3.112.2.89:8081` - Worker1の/storeを直接呼び出す(ポート**8081**) `http://<worker-1>:8081/store?key=Bob&value=second` - Worker2からBobの値を直接参照する(ポート**8081**) `http://<worker-2>:8081/retrieve?key=Bob&value=second` //2つのワーカーでOSv2は共有されている??? Q.ObjectStoreV2の値は、外の(他の)Projectからは覗けないのでしょうか? OSv2はAPに紐付いて管理するため、外部のAPで利用する場合はAnypointMQなどを利用する形となるで正しかったでしょうか。 - A. https://docs.mulesoft.com/jp/object-store/osv2-apis OSv2 REST API の呼び出しにはアプリケーションの認証情報が必要 Q. APを削除すると Object Store に保存していた情報も全て消えてしまうで正しいでしょうか? - A.YESです。 ### OSv2 はアプリケーションの再起動に耐えるか? アプリケーションの再起動 `runtime-mgr cloudhub-application restart object-store-0101` http://object-store-0101.jp-e1.cloudhub.io/retrieve?key=Alice http://object-store-0101.jp-e1.cloudhub.io/retrieve?key=Bob ### 複数ワーカーでアプリケーションが実行されている場合の、mule-worker-xxx DNS について `dig mule-worker-object-store-0101.jp-e1.cloudhub.io +short` ![dig](https://i.imgur.com/Vrylg49.png) ### スケーリング - 垂直方向へのスケーリング (vertical scaling) / スケールアップ・スケールダウン - マシン処理の能力自体が上がる → パフォーマンス :up: - 水平方向へのスケーリング (horizontal scaling) /スケールイン・スケールアウト - 信頼性 :up: - 処理するノード/ワーカーの数が増える → パフォーマンス :up: ### Region & AZ Region: Tokyo(ap-northeast-1), Ohio(US-e2), Singapore AZ: tokyo-az1, tokyo-az2 - 各AZはデータセンターであり、それぞれで100km以内程度の物理的な距離をとっている ![Region&AZ](https://i.imgur.com/5YjJP6F.png) ### VM persistent Queue(永続化キュー) ![VM-persistent-Q](https://i.imgur.com/4Nx9K9R.png) ![checkbox](https://i.imgur.com/UcU93Az.png) #### Anypoint MQ https://docs.mulesoft.com/jp/mq/mq-queues #### Batch Jobと永続化キューについて - 多くのレコードを分割して非同期&マルチスレッドで処理 - https://docs.mulesoft.com/jp/mule-runtime/4.4/batch-processing-concept - 10000件のレコードを分割して、**Batch Queue**で管理する - 100 - 100 - 100 - 100 - 100 - .. - Batch Job は、VMキューを使用する (Batch Queue) - **VM persistent Queue(永続化キュー)は、Batch Queue にも適用されてしまう**= Cloud上のキューへの読み書きが頻繁に発生=パフォーマンスに悪影響 > MuleSoft recommends that applications containing Batch Component do not use CloudHub Persistent Queue - **Batch Job をもつMuleアプリケーションでは、VM persistent Queue(永続化キュー)を使用しない** - https://help.mulesoft.com/s/article/Mule-Batch-Process-and-CloudHub-Persistent-Queues - もしくは、プロパティを渡して回避   - `batch.persistent.queue.disable=true` - CloudHub Sizing Guide https://knowledgehub.mulesoft.com/s/article/Application-Sizing-Guide-for-CloudHub ## Module 7: CloudHub インフラストラクチャの管理 ![mod7](https://i.imgur.com/j8ULXHe.png) ### VPC(Virtual Private Cloud, VPC) - Firewallを構成できるプライベートなクラウド空間 - プライベートIPアドレス - VPC <-> オンプレとの接続オプションも多数あります ### CloudHub DNS 1. SLB (共有ロバランサー) - \<\<appname\>\>.jp-e1.cloudhub.io 2. ワーカー(パブリックIPアドレス) - **mule-worker-**\<\<appname\>\>.jp-e1.cloudhub.io 3. ワーカー(プライベートIPアドレス) - **mule-worker-internal**-\<\<appname\>\>.jp-e1.cloudhub.io ### CIDR A.B.C.D/**E** `10.0.1.0/32` 32 - 32 = 0 0^2 = 1 `10.0.1.0/24` 32 - 24 = 8 2^8 = **256** `10.0.1.0/16` 32 - 16 = 16 2^16 = 65536 - 基本は大きめに作る - 例えば: VPC にデプロイする CloudHub ワーカーの予定数の最大値の 10 倍 - リサイズにはダウンタイムが発生する - プライベート IP アドレスの数 ≒ 管理できるワーカーの数(厳密には違う: ゼロダウンタイムを実現するブルーグリーンデプロイメントのために、IPアドレスはワーカーの数以上に必要) ![](https://i.imgur.com/3MuCnGa.png) ### VPCへのデプロイ #### backend api - name: api-backend-01XX - jar: api-backend-5.5.0-mule-application.jar - `backend.http.port=18080` - URL: api-backend-01XX.jp-e1.cloudhub.io #### proxy api - name: api-proxy-01XX - jar: api-proxy-5.5.0-mule-application.jar - `backend.http.port=18080` - `backend.http.host=mule-worker-internal-api-backend-01XX.jp-e1.cloudhub.io` - URL: api-proxy-01XX.jp-e1.cloudhub.io ![apps](https://i.imgur.com/d82lZ24.png) ![vpc](https://i.imgur.com/0NmWsEh.png) 18080 を解放 ![port18080-anywhere](https://i.imgur.com/40Wcu9i.png) ![proxy-backend](https://i.imgur.com/mzsnMlD.png) ### DLB ![DLB](https://i.imgur.com/oajlvdl.png) - VPC の中にセットアップ - Firewallの設定が可能 - IPアドレスの許可リストの設定が可能 - 相互のTLS - マッピングルール - {dlnDns}/{app}/ - <lb-name(ロードバランサー名)>.lb.anypointdns.net - CNAME - ヴァニティドメインが使用可能 ### OpenSSL Windows: `bin/openssl.exe req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt` Mac: `oppenssl` `req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt` - Country: US - State or Province: CA - Locality Name: San Francisco - Organization Name: MuleSoft - Organization Unit Name: <空のまま> - Common name: tokyo-dlb-02XX.lb.anypointdns.net テスト: https://tokyo-dlb-0101.lb.anypointdns.net/dlb-backend-0101/ https://{dlbDns}/<appName>/ [CloudHub Infrastructure Use Cases] (https://knowledgehub.mulesoft.com/s/article/CloudHub-Infrastructure-Use-Cases) ## Module 8: 管理タスクの自動化 ### Anypoint CLI https://docs.mulesoft.com/jp/runtime-manager/anypoint-platform-cli - インタラクティブモード ユーザーがコマンドを打っていくモード Anypoint Platform と接続 ```anypoint-cli --username=Cloud02Student01 --password=@Mulesoft2020 --organization=Cloud02SubGroup01 --environment=Prod``` //認証情報を渡す `runtime-mgr cloudhub-alert list` // CH アラートの一覧 `runtime-mgr cloudhub-application list` // CHアプリケーションの一覧 `runtime-mgr cloudhub-application delete hidden-properties-0101` // CHアプリケーションの削除 `use environment Dev` //開発環境に切り替わる - スクリプティングモード スクリプトを読み込んでいくモード ![スクリプティングモード](https://i.imgur.com/DsArwCq.png) ### Anypoint Platform REST API https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/ #### レート制限 https://help.mulesoft.com/s/article/Anypoint-Platform-REST-API-Rate-Limit#:~:text=Anypoint%20platform%20detects%20usage%20based,from%20an%20individual%20client%20IP. > As a guidance, it is recommended that applications do not exceed 15 requests per second from an individual client IP. > > Should an API Rate Limit be exceeded, the Anypoint Platform will reject requests with a 503 Service Unavailable or 503 Service Temporarily Unavailable HTTP Response Code. #### API 呼び出しの手順 1. https://anypoint.mulesoft.com/accounts/login に POST リクエストを送信します。 Header `Content-Type: application/json` Body ``` { "username": "REPLACE_HERE!", "password": "REPLACE_HERE!" } ``` 2. 403 Forbidden 「invalid csrf token」エラーが表示された場合は、Advanced REST Client の _csrf クッキーを削除します。 - Request > Web session > Cookie manager ![_csrf](https://i.imgur.com/y1t3M49.png) 3. 再度リクエストを送信すると 200 :ok: と access_token が返されます。 ``` { "access_token": "ffacd52c-2c2d-49a6-9c56-845d924db0fb", "token_type": "bearer", "redirectUrl": "/home/" } ``` 4. このアクセストークンを Authorization ヘッダーに使用して、 Anypoint Platform API を呼び出すことが可能になります。 例: GET: `https://anypoint.mulesoft.com/accounts/api/users/me` Header:`Authorization: Bearer 80566d46-3827-463c-b624-c36bae02d0df` Access Managemnt API https://anypoint.mulesoft.com/accounts/api/users/me ![arc](https://i.imgur.com/HUkMe5J.png) Q.Audit log は BGにひもづくということは、Business Group を消してしまうと一緒に消えてしまうと考えていいですか? - まず、Access Management の GUI からは消えます - 組織のオーナーアカウントからも見えなくなります - Business Group を削除した直後は、[API Platform API](https://docs.mulesoft.com/jp/access-management/audit-logging#%E7%9B%A3%E6%9F%BB%E3%83%AD%E3%82%B0-rest-api-%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 ) で確認できましたが、Business Group の削除後、対象の Audit Log がどの程度の期間使用可能かはドキュメント化されていないので、必要があればBusiness Group を削除する前に、ダウンロードしておくことをおすすめします。 https://help.mulesoft.com/s/article/How-to-get-Anypoint-Platform-Audit-Logs-using-API Q. 私の管理外の0201 - Runtime Manager Viewersや 0203などにPermission追加ができそうです。他のチームを触らせないようにすることはできるのでしょうか? https://docs.mulesoft.com/access-management/configure-teams > If you have the Organization Administrator permission in a specific business group but not your entire organization, you can assign permissions to any existing teams or users within your organization. Q.もともと、BGのデフォルトAdmin権限には何があって何が無いかは確認出来ますか? https://docs.mulesoft.com/access-management/roles#default-roles-and-permission-scopes > Organization Administrators: Enables a user to edit all versions of all APIs, all registered applications, and all API Portals in Anypoint Platform. Access to the Organization Administration page, where the user can add and manage users and roles, view and edit organization details, access API Manager > Client Applications, access the client ID and client secret for the organization, and customize the theme of the Developer Portal. Members of the Organization Administrators role also inherit the role of API Creator by default. This role has the following permission scopes: - Edit developer portal theme settings - Request API access terms and conditions (TODO???) - Edit portal terms and conditions (TODO???) - Set custom policies - Manage access of third-party applications to an API (specific to the organization administrator of the root business group) - Edit users' email addresses - Grant VPC and CloudHub dedicated load balancer permissions ![](https://i.imgur.com/nCM9pxK.png) ![reference link](https://i.imgur.com/FtnVtTx.png) Q.開発のことをがよく分かっていないので申し訳ないのですが、基本的には開発環境と本番環境は同じ状態にすると思うのですが、今回のようにDevとProdで環境設定やプロパティを変えなければいけない状況や例について他にもあれば教えていただけますでしょうか。 A.「基本的には開発環境と本番環境は同じ状態にする」 = コードやjarの中身など、同一のアプリケーションファイルを使用する。 × hogehoge-app-dev.jar × hogehoge-app-prod.jar ○ hogehoge-app.jar(env=dev: yamlなどに開発用の設定を集めておく) ○ hogehoge-app.jar(env=prod: yamlなどに本番用の設定を集めておく) Q. Anypoint Platform上(anypoint.mulesoft.com)で変更を加えたものをAnypoint Studioのプロジェクトに反映させるケースはありますか。もしある場合、どのように行うのでしょうか。 A. APIは1度設計して終了ではなく、マイナーバージョンアップ、メジャーアップを繰り返し改善していきます。(semantic versioning のルールに従い、) V1.0: **API設計(仕様)**: API Designer / Anypoint Studio -> 実装・開発: Anypoint Studio -> CloudHub などの環境へのデプロイ : Runtime Manager -> デプロイしたアプリケーションの保護・管理・監視: API Manager, Monitoring.. -> V2.0 API設計(仕様): API Designer -> 実装・開発: Anypoint Studio -> ...