A system API is deployed to a primary environment as well as to a disaster recovery (DR) environment, with different DNS names in each environment. A process API is a client to the system API and is being rate limited by the system API, with different limits in each of the environments. The system API's DR environment provides only 20% of the rate limiting offered by the primary environment. What is the best API fault-tolerant invocation strategy to reduce overall errors in the process API, given these conditions and constraints?
-
A
Invoke the system API deployed to the primary environment; add timeout and retry logic to the process API to avoid intermittent failures; if it still fails, invoke the system API deployed to the DR environment
-
B
Invoke the system API deployed to the primary environment; add retry logic to the process API to handle intermittent failures by invoking the system API deployed to the DR environment
-
C
In parallel, invoke the system API deployed to the primary environment and the system API deployed to the DR environment; add timeout and retry logic to the process API to avoid intermittent failures; add logic to the process API to combine the results
-
D
Invoke the system API deployed to the primary environment; add timeout and retry logic to the process API to avoid intermittent failures; if it still fails, invoke a copy of the process API deployed to the DR environment
Reveal answer details
Close answer details
Correct answerA
ExplanationInvoke the system API deployed to the primary environment; add timeout and retry logic to the process API to avoid intermittent failures; if it still fails, invoke the system API deployed to the DR environment ***************************************** There is one important consideration to be noted in the question which is - System API in DR environment provides only 20% of the rate limiting offered by the primary environment. So, comparitively, very less calls will be allowed into the DR environment API opposed to its primary environment. With this in mind, lets analyse what is the right and best fault-tolerant invocation strategy. 1. Invoking both the system APIs in parallel is definitely NOT a feasible approach because of the 20% limitation we have on DR environment. Calling in parallel every time would easily and quickly exhaust the rate limits on DR environment and may not give chance to genuine intermittent error scenarios to let in during the time of need. 2. Another option given is suggesting to add timeout and retry logic to process API while invoking primary environment's system API. This is good so far. However, when all retries failed, the option is suggesting to invoke the copy of process API on DR environment which is not right or recommended. Only system API is the one to be considered for fallback and not the whole process API. Process APIs usually have lot of heavy orchestration calling many other APIs which we do not want to repeat again by calling DR's process API. So this option is NOT right. 3. One more option given is suggesting to add the retry (no timeout) logic to process API to directly retry on DR environment's system API instead of retrying the primary environment system API first. This is not at all a proper fallback. A proper fallback should occur only after all retries are performed and exhausted on Primary environment first. But here, the option is suggesting to directly retry fallback API on first failure itself without trying main API. So, this option is NOT right too. This leaves us one option which is right and best fit. - Invoke the system API deployed to the primary environment - Add Timeout and Retry logic on it in process API - If it fails even after all retries, then invoke the system API deployed to the DR environment.
An API implementation returns three X-RateLimit-* HTTP response headers to a requesting API client. What type of information do these response headers indicate to the API client?
-
A
The error codes that result from throttling
-
B
A correlation ID that should be sent in the next request
-
C
-
D
The remaining capacity allowed by the API implementation
Reveal answer details
Close answer details
Correct answerD
ExplanationThe remaining capacity allowed by the API implementation. ***************************************** >> Reference: https://docs.mulesoft.com/api-manager/2.x/rate-limiting-and-throttling-sla-based-policies#response-headers
An Order API must be designed that contains significant amounts of integration logic and involves the invocation of the Product API. The power relationship between Order API and Product API is one of "Customer/Supplier", because the Product API is used heavily throughout the organization and is developed by a dedicated development team located in the office of the CTO. What strategy should be used to deal with the API data model of the Product API within the Order API?
-
A
Convince the development team of the Product API to adopt the API data model of the Order API such that the integration logic of the Order API can work with one consistent internal data model
-
B
Work with the API data types of the Product API directly when implementing the integration logic of the Order API such that the Order API uses the same (unchanged) data types as the Product API
-
C
Implement an anti-corruption layer in the Order API that transforms the Product API data model into internal data types of the Order API
-
D
Start an organization-wide data modeling initiative that will result in an Enterprise Data Model that will then be used in both the Product API and the Order API
Reveal answer details
Close answer details
Correct answerC
ExplanationConvince the development team of the product API to adopt the API data model of the Order API such that integration logic of the Order API can work with one consistent internal data model ***************************************** Key details to note from the given scenario: >> Power relationship between Order API and Product API is customer/supplier So, as per below rules of "Power Relationships", the caller (in this case Order API) would request for features to the called (Product API team) and the Product API team would need to accomodate those requests.
Refer to the exhibit.  What is true when using customer-hosted Mule runtimes with the MuleSoft-hosted Anypoint Platform control plane (hybrid deployment)?
-
A
Anypoint Runtime Manager initiates a network connection to a Mule runtime in order to deploy Mule applications
-
B
The MuleSoft-hosted Shared Load Balancer can be used to load balance API invocations to the Mule runtimes
-
C
API implementations can run successfully in customer-hosted Mule runtimes, even when they are unable to communicate with the control plane
-
D
Anypoint Runtime Manager automatically ensures HA in the control plane by creating a new Mule runtime instance in case of a node failure
Reveal answer details
Close answer details
Correct answerC
ExplanationAPI implementations can run successfully in customer-hosted Mule runtimes, even when they are unable to communicate with the control plane. ***************************************** >> We CANNOT use Shared Load balancer to load balance APIs on customer hosted runtimes  >> For Hybrid deployment models, the on-premises are first connected to Runtime Manager using Runtime Manager agent. So, the connection is initiated first from On-premises to Runtime Manager. Then all control can be done from Runtime Manager. >> Anypoint Runtime Manager CANNOT ensure automatic HA. Clusters/Server Groups etc should be configured before hand. Only TRUE statement in the given choices is, API implementations can run successfully in customer-hosted Mule runtimes, even when they are unable to communicate with the control plane. There are several references below to justify this statement. References: https://docs.mulesoft.com/runtime-manager/deployment-strategies#hybrid-deployments https://help.mulesoft.com/s/article/On-Premise-Runtimes-Disconnected-From-US-Control- Plane-June-18th-2018 (https://help.mulesoft.com/s/article/Runtime-Manager-cannot-manage-On-Prem-Applications-and-Servers-) from-US-Control-Plane-June-25th-2019 (https://help.mulesoft.com/s/article/On-premise-Runtimes-Appear-Disconnected-in-Runtime-Manager-May-29th-2018)  ============================  ============================ 
A code-centric API documentation environment should allow API consumers to investigate and execute API client source code that demonstrates invoking one or more APIs as part of representative scenarios. What is the most effective way to provide this type of code-centric API documentation environment using Anypoint Platform?
-
A
Enable mocking services for each of the relevant APIs and expose them via their Anypoint Exchange entry
-
B
Ensure the APIs are well documented through their Anypoint Exchange entries and API Consoles and share these pages with all API consumers
-
C
Create API Notebooks and include them in the relevant Anypoint Exchange entries
-
D
Make relevant APIs discoverable via an Anypoint Exchange entry
Reveal answer details
Close answer details
Correct answerC
ExplanationCreate API Notebooks and Include them in the relevant Anypoint exchange entries ***************************************** >> API Notebooks are the one on Anypoint Platform that enable us to provide code-centric API documentation: https://docs.mulesoft.com/exchange/to-use-api-notebook
A company has started to create an application network and is now planning to implement a Center for Enablement (C4E) organizational model. What key factor would lead the company to decide upon a federated rather than a centralized C4E?
-
A
When there are a large number of existing common assets shared by development teams
-
B
When various teams responsible for creating APIs are new to integration and hence need extensive training
-
C
When development is already organized into several independent initiatives or groups
-
D
When the majority of the applications in the application network are cloud based
Reveal answer details
Close answer details
Correct answerC
ExplanationWhen development is already organized into several independent initiatives or groups ***************************************** >> It would require lot of process effort in an organization to have a single C4E team coordinating with multiple already organized development teams which are into several independent initiatives. A single C4E works well with different teams having at least a common initiative. So, in this scenario, federated C4E works well instead of centralized C4E.
An organization has created an API-led architecture that uses various API layers to integrate mobile clients with a backend system. The backend system consists of a number of specialized components and can be accessed via a REST API. The process and experience APIs share the same bounded-context model that is different from the backend data model. What additional canonical models, bounded-context models, or anti-corruption layers are best added to this architecture to help process data consumed from the backend system?
-
A
Create a bounded-context model for every layer and overlap them when the boundary contexts overlap, letting API developers know about the differences between upstream and downstream data models
-
B
Create a canonical model that combines the backend and API-led models to simplify and unify data models, and minimize data transformations.
-
C
Create a bounded-context model for the system layer to closely match the backend data model, and add an anti-corruption layer to let the different bounded contexts cooperate across the system and process layers
-
D
Create an anti-corruption layer for every API to perform transformation for every data model to match each other, and let data simply travel between APIs to avoid the complexity and overhead of building canonical models
Reveal answer details
Close answer details
Correct answerC
ExplanationCreate a bounded-context model for the system layer to closely match the backend data model, and add an anti-corruption layer to let the different bounded contexts cooperate across the system and process layers ***************************************** >> Canonical models are not an option here as the organization has already put in efforts and created bounded-context models for Experience and Process APIs. >> Anti-corruption layers for ALL APIs is unnecessary and invalid because it is mentioned that experience and process APIs share same bounded- context model. It is just the System layer APIs that need to choose their approach now. >> So, having an anti-corruption layer just between the process and system layers will work well. Also to speed up the approach, system APIs can mimic the backend system data model.
An API implementation is being designed that must invoke an Order API, which is known to repeatedly experience downtime. For this reason, a fallback API is to be called when the Order API is unavailable. What approach to designing the invocation of the fallback API provides the best resilience?
-
A
Search Anypoint Exchange for a suitable existing fallback API, and then implement invocations to this fallback API in addition to the Order API
-
B
Create a separate entry for the Order API in API Manager, and then invoke this API as a fallback API if the primary Order API is unavailable
-
C
Redirect client requests through an HTTP 307 Temporary Redirect status code to the fallback API whenever the Order API is unavailable
-
D
Set an option in the HTTP Requester component that invokes the Order API to instead invoke a fallback API whenever an HTTP 4xx or 5xx response status code is returned from the Order API
Reveal answer details
Close answer details
Correct answerA
ExplanationSearch Anypoint exchange for a suitable existing fallback API, and then implement invocations to this fallback API in addition to the order API ***************************************** >> It is not ideal and good approach, until unless there is a pre-approved agreement with the API clients that they will receive a HTTP 3xx temporary redirect status code and they have to implement fallback logic their side to call another API. >> Creating separate entry of same Order API in API manager would just create an another instance of it on top of same API implementation. So, it does NO GOOD by using clone od same API as a fallback API. Fallback API should be ideally a different API implementation that is not same as primary one. >> There is NO option currently provided by Anypoint HTTP Connector that allows us to invoke a fallback API when we receive certain HTTP status codes in response. The only statement TRUE in the given options is to Search Anypoint exchange for a suitable existing fallback API, and then implement invocations to this fallback API in addition to the order API.
An API implementation is deployed to CloudHub. What conditions can be alerted on using the default Anypoint Platform functionality, where the alert conditions depend on the end-to-end request processing of the API implementation?
-
A
When the API is invoked by an unrecognized API client
-
B
When a particular API client invokes the API too often within a given time period
-
C
When the response time of API invocations exceeds a threshold
-
D
When the API receives a very high number of API invocations
Reveal answer details
Close answer details
Correct answerC
ExplanationWhen the response time of API invocations exceeds a threshold ***************************************** >> Alerts can be setup for all the given options using the default Anypoint Platform functionality >> However, the question insists on an alert whose conditions depend on the end-to-end request processing of the API implementation. >> Alert w.r.t "Response Times" is the only one which requires end- to-end request processing of API implementation in order to determine if the threshold is exceeded or not. References: https://docs.mulesoft.com/api-manager/2.x/using-api-alerts
Question 10
Single choice
An organization is deploying their new implementation of the OrderStatus System API to multiple workers in CloudHub. This API fronts the organization's on-premises Order Management System, which is accessed by the API implementation over an IPsec tunnel. What type of error typically does NOT result in a service outage of the OrderStatus System API?
-
A
A CloudHub worker fails with an out-of-memory exception
-
B
API Manager has an extended outage during the initial deployment of the API implementation
-
C
The AWS region goes offline with a major network failure to the relevant AWS data centers
-
D
The Order Management System is Inaccessible due to a network outage in the organization's on-premises data center
Reveal answer details
Close answer details
Correct answerA
ExplanationA CloudHub worker fails with an out-of-memory exception. ***************************************** >> An AWS Region itself going down will definitely result in an outage as it does not matter how many workers are assigned to the Mule App as all of those in that region will go down. This is a complete downtime and outage. >> Extended outage of API manager during initial deployment of API implementation will of course cause issues in proper application startup itself as the API Autodiscovery might fail or API policy templates and polices may not be downloaded to embed at the time of applicaiton startup etc... there are many reasons that could cause issues. >> A network outage onpremises would of course cause the Order Management System not accessible and it does not matter how many workers are assigned to the app they all will fail and cause outage for sure. The only option that does NOT result in a service outage is if a cloudhub worker fails with an out-of-memory exception. Even if a worker fails and goes down, there are still other workers to handle the requests and keep the API UP and Running. So, this is the right answer.
Question 11
Single choice
Version 3.0.1 of a REST API implementation represents time values in PST time using ISO 8601 hh:mm:ss format. The API implementation needs to be changed to instead represent time values in CEST time using ISO 8601 hh:mm:ss format. When following the semver.org semantic versioning specification, what version should be assigned to the updated API implementation?
-
A
-
B
-
C
-
D
Reveal answer details
Close answer details
Correct answerB
Explanation4.0.0 ***************************************** As per semver.org semantic versioning specification: Given a version number MAJOR.MINOR.PATCH, increment the: - MAJOR version when you make incompatible API changes. - MINOR version when you add functionality in a backwards compatible manner. - PATCH version when you make backwards compatible bug fixes. As per the scenario given in the question, the API implementation is completely changing its behavior. Although the format of the time is still being maintained as hh:mm:ss and there is no change in schema w.r.t format, the API will start functioning different after this change as the times are going to come completely different. Example: Before the change, say, time is going as 09:00:00 representing the PST. Now on, after the change, the same time will go as 18:00:00 as Central European Summer Time is 9 hours ahead of Pacific Time. >> This may lead to some uncertain behavior on API clients depending on how they are handling the times in the API response. All the API clients need to be informed that the API functionality is going to change and will return in CEST format. So, this considered as a MAJOR change and the version of API for this new change would be 4.0.0
Question 12
Single choice
Mule applications that implement a number of REST APIs are deployed to their own subnet that is inaccessible from outside the organization. External business-partners need to access these APIs, which are only allowed to be invoked from a separate subnet dedicated to partners - called Partner-subnet. This subnet is accessible from the public internet, which allows these external partners to reach it. Anypoint Platform and Mule runtimes are already deployed in Partner-subnet. These Mule runtimes can already access the APIs. What is the most resource-efficient solution to comply with these requirements, while having the least impact on other applications that are currently using the APIs?
-
A
Implement (or generate) an API proxy Mule application for each of the APIs, then deploy the API proxies to the Mule runtimes
-
B
Redeploy the API implementations to the same servers running the Mule runtimes
-
C
Add an additional endpoint to each API for partner-enablement consumption
-
D
Duplicate the APIs as Mule applications, then deploy them to the Mule runtimes
Reveal answer details
Close answer details
Question 13
Single choice
A system API has a guaranteed SLA of 100 ms per request. The system API is deployed to a primary environment as well as to a disaster recovery (DR) environment, with different DNS names in each environment. An upstream process API invokes the system API and the main goal of this process API is to respond to client requests in the least possible time. In what order should the system APIs be invoked, and what changes should be made in order to speed up the response time for requests from the process API?
-
A
In parallel, invoke the system API deployed to the primary environment and the system API deployed to the DR environment, and ONLY use the first response
-
B
In parallel, invoke the system API deployed to the primary environment and the system API deployed to the DR environment using a scatter-gather configured with a timeout, and then merge the responses
-
C
Invoke the system API deployed to the primary environment, and if it fails, invoke the system API deployed to the DR environment
-
D
Invoke ONLY the system API deployed to the primary environment, and add timeout and retry logic to avoid intermittent failures
Reveal answer details
Close answer details
Correct answerA
ExplanationIn parallel, invoke the system API deployed to the primary environment and the system API deployed to the DR environment, and ONLY use the first response. ***************************************** >> The API requirement in the given scenario is to respond in least possible time. >> The option that is suggesting to first try the API in primary environment and then fallback to API in DR environment would result in successful response but NOT in least possible time. So, this is NOT a right choice of implementation for given requirement. >> Another option that is suggesting to ONLY invoke API in primary environment and to add timeout and retries may also result in successful response upon retries but NOT in least possible time. So, this is also NOT a right choice of implementation for given requirement. >> One more option that is suggesting to invoke API in primary environment and API in DR environment in parallel using Scatter-Gather would result in wrong API response as it would return merged results and moreover, Scatter-Gather does things in parallel which is true but still completes its scope only on finishing all routes inside it. So again, NOT a right choice of implementation for given requirement. The Correct choice is to invoke the API in primary environment and the API in DR environment parallelly, and using ONLY the first response received from one of them.
Question 14
Single choice
An organization has several APIs that accept JSON data over HTTP POST. The APIs are all publicly available and are associated with several mobile applications and web applications. The organization does NOT want to use any authentication or compliance policies for these APIs, but at the same time, is worried that some bad actor could send payloads that could somehow compromise the applications or servers running the API implementations. What out-of-the-box Anypoint Platform policy can address exposure to this threat?
-
A
Shut out bad actors by using HTTPS mutual authentication for all API invocations
-
B
Apply an IP blacklist policy to all APIs; the blacklist will Include all bad actors
-
C
Apply a Header injection and removal policy that detects the malicious data before it is used
-
D
Apply a JSON threat protection policy to all APIs to detect potential threat vectors
Reveal answer details
Close answer details
Correct answerD
ExplanationApply a JSON threat protection policy to all APIs to detect potential threat vectors ***************************************** >> Usually, if the APIs are designed and developed for specific consumers (known consumers/customers) then we would IP Whitelist the same to ensure that traffic only comes from them. >> However, as this scenario states that the APIs are publicly available and being used by so many mobile and web applications, it is NOT possible to identify and blacklist all possible bad actors. >> So, JSON threat protection policy is the best chance to prevent any bad JSON payloads from such bad actors.
Question 15
Single choice
What is a key performance indicator (KPI) that measures the success of a typical C4E that is immediately apparent in responses from the Anypoint Platform APIs?
-
A
The number of production outage incidents reported in the last 24 hours
-
B
The number of API implementations that have a publicly accessible HTTP endpoint and are being managed by Anypoint Platform
-
C
The fraction of API implementations deployed manually relative to those deployed using a CI/CD tool
-
D
The number of API specifications in RAML or OAS format published to Anypoint Exchange
Reveal answer details
Close answer details
Correct answerD
ExplanationThe number of API specifications in RAML or OAS format published to Anypoint Exchange ***************************************** >> The success of C4E always depends on their contribution to the number of reusable assets that they have helped to build and publish to Anypoint Exchange. >> It is NOT due to any factors w.r.t # of outages, Manual vs CI/CD deployments or Publicly accessible HTTP endpoints >> Anypoint Platform APIs helps us to quickly run and get the number of published RAML/OAS assets to Anypoint Exchange. This clearly depicts how successful a C4E team is based on number of returned assets in the response. References: https://help.mulesoft.com/s/question/0D52T00004mXSTUSA4/how-should-a- company-measure-c4e-success
|