When could the API data model of a System API reasonably mimic the data model exposed by the corresponding backend system, with minimal improvements over the backend system's data model?
Correct Answer: C
When a pragmatic approach with only limited isolation from the backend system is deemed appropriate. ***************************************** General guidance w.r.t choosing Data Models: >> If an Enterprise Data Model is in use then the API data model of System APIs should make use of data types from that Enterprise Data Model and the corresponding API implementation should translate between these data types from the Enterprise Data Model and the native data model of the backend system. >> If no Enterprise Data Model is in use then each System API should be assigned to a Bounded Context, the API data model of System APIs should make use of data types from the corresponding Bounded Context Data Model and the corresponding API implementation should translate between these data types from the Bounded Context Data Model and the native data model of the backend system. In this scenario, the data types in the Bounded Context Data Model are defined purely in terms of their business characteristics and are typically not related to the native data model of the backend system. In other words, the translation effort may be significant. >> If no Enterprise Data Model is in use, and the definition of a clean Bounded Context Data Model is considered too much effort, then the API data model of System APIs should make use of data types that approximately mirror those from the backend system, same semantics and naming as backend system, lightly sanitized, expose all fields needed for the given System API's functionality, but not significantly more and making good use of REST conventions. The latter approach, i.e., exposing in System APIs an API data model that basically mirrors that of the backend system, does not provide satisfactory isolation from backend systems through the System API tier on its own. In particular, it will typically not be possible to "swap out" a backend system without significantly changing all System APIs in front of that backend systemand therefore the API implementations of all Process APIs that depend on those System APIs! This is so because it is not desirable to prolong the life of a previous backend system's data model in the form of the API data model of System APIs that now front a new backend system. The API data models of System APIs following this approach must therefore change when the backend system is replaced. On the other hand: >> It is a very pragmatic approach that adds comparatively little overhead over accessing the backend system directly >> Isolates API clients from intricacies of the backend system outside the data model (protocol, authentication, connection pooling, network address, ...) >> Allows the usual API policies to be applied to System APIs >> Makes the API data model for interacting with the backend system explicit and visible, by exposing it in the RAML definitions of the System APIs >> Further isolation from the backend system data model does occur in the API implementations of the Process API tier
Question 67
A company is using an on-prem cluster in the data center as a runtime plane and MuleSoft-hosted control plane. How can the company monitor the detailed performance metrics on the Mule applications deployed to the cluster from the control plane?
Correct Answer: B
* Monitoring On-Premise Mule Applications: * For Mule applications deployed on an on-premises cluster, monitoring detailed performance metrics requires communication with the MuleSoft-hosted control plane. The control plane, when used with on-premises runtimes, relies on Anypoint Monitoring and requires a Monitoring Agent to gather and send detailed performance metrics. * Setting Up Monitoring: * To enable detailed metrics, the Monitoring Agent must be installed on each node in the cluster where Mule applications are deployed. This agent collects data on memory usage, CPU load, response times, and other metrics, and sends it to the control plane for aggregation and visualization. * Evaluating the Options: * Option A: Updating settings in the control plane alone does not enable detailed monitoring; the agent must be installed on each node to capture detailed metrics. * Option B (Correct Answer): Installing the Monitoring Agent on each node ensures that each runtime node in the cluster can send its metrics to the control plane, enabling detailed monitoring. * Option C: Installing the agent on a separate server would not be effective, as each node in the cluster needs to independently report its metrics to ensure full visibility. * Option D: The on-prem runtime does not automatically send detailed metrics to the control plane without the Monitoring Agent installed. * Conclusion: * Option B is the correct answer, as installing the Monitoring Agent on each node is essential for detailed performance monitoring of on-prem applications in a cluster. Refer to MuleSoft's documentation on configuring Anypoint Monitoring for on-premises deployments and using the Monitoring Agent.
Question 68
An API implementation is updated. When must the RAML definition of the API also be updated?
Correct Answer: D
Question 69
The responses to some HTTP requests can be cached depending on the HTTP verb used in the request. According to the HTTP specification, for what HTTP verbs is this safe to do?
Correct Answer: B
Question 70
What is most likely NOT a characteristic of an integration test for a REST API implementation?
Correct Answer: B
The test runs immediately after the Mule application has been compiled and packaged ***************************************** >> Integration tests are the last layer of tests we need to add to be fully covered. >> These tests actually run against Mule running with your full configuration in place and are tested from external source as they work in PROD. >> These tests exercise the application as a whole with actual transports enabled. So, external systems are affected when these tests run. So, these tests do NOT run immediately after the Mule application has been compiled and packaged. FYI... Unit Tests are the one that run immediately after the Mule application has been compiled and packaged.