An organization uses various cloud-based SaaS systems and multiple on-premises systems. The on-premises systems are an important part of the organization's application network and can only be accessed from within the organization's intranet. What is the best way to configure and use Anypoint Platform to support integrations with both the cloud-based SaaS systems and on-premises systems?  
-
A
-
B
-
C
-
D
Reveal answer details
Close answer details
Correct answerB
ExplanationKey details to be taken from the given scenario: >> Organization uses BOTH cloud-based and on-premises systems >> On-premises systems can only be accessed from within the organization's intranet Let us evaluate the given choices based on above key details: >> CloudHub-deployed Mule runtimes can ONLY be controlled using MuleSoft-hosted control plane. We CANNOT use Private Cloud Edition's control plane to control CloudHub Mule Runtimes. So, option suggesting this is INVALID >> Using CloudHub-deployed Mule runtimes in the shared worker cloud managed by the MuleSoft-hosted Anypoint Platform is completely IRRELEVANT to given scenario and silly choice. So, option suggesting this is INVALID >> Using an on-premises installation of Mule runtimes that are completely isolated with NO external network access, managed by the Anypoint Platform Private Cloud Edition control plane would work for On-premises integrations. However, with NO external access, integrations cannot be done to SaaS-based apps. Moreover CloudHub-hosted apps are best-fit for integrating with SaaS-based applications. So, option suggesting this is BEST WAY. The best way to configure and use Anypoint Platform to support these mixed/hybrid integrations is to use a combination of CloudHub-deployed and manually provisioned on-premises Mule runtimes managed by the MuleSoft-hosted Platform control plane.
The implementation of a Process API must change. What is a valid approach that minimizes the impact of this change on API clients?
-
A
Update the RAML definition of the current Process API and notify API client developers by sending them links to the updated RAML definition
-
B
Postpone changes until API consumers acknowledge they are ready to migrate to a new Process API or API version
-
C
Implement required changes to the Process API implementation so that whenever possible, the Process API's RAML definition remains unchanged
-
D
Implement the Process API changes in a new API implementation, and have the old API implementation return an HTTP status code 301 - Moved Permanently to inform API clients they should be calling the new API implementation
Reveal answer details
Close answer details
Correct answerC
ExplanationKey requirement in the question is: >> Approach that minimizes the impact of this change on API clients Based on above: >> Updating the RAML definition would possibly impact the API clients if the changes require any thing mandatory from client side. So, one should try to avoid doing that until really necessary. >> Implementing the changes as a completely different API and then redirectly the clients with 3xx status code is really upsetting design and heavily impacts the API clients. >> Organisations and IT cannot simply postpone the changes required until all API consumers acknowledge they are ready to migrate to a new Process API or API version. This is unrealistic and not possible. The best way to handle the changes always is to implement required changes to the API implementations so that, whenever possible, the API's RAML definition remains unchanged.
A Rate Limiting policy is applied to an API implementation to protect the back-end system. Recently, there have been surges in demand that cause some API client POST requests to the API implementation to be rejected with policy-related errors, causing delays and complications to the API clients. How should the API policies that are applied to the API implementation be changed to reduce the frequency of errors returned to API clients, while still protecting the back-end system?
-
A
Keep the Rate Limiting policy and add 9 Client ID Enforcement policy
-
B
Remove the Rate Limiting policy and add an HTTP Caching policy
-
C
Remove the Rate Limiting policy and add a Spike Control policy
-
D
Keep the Rate Limiting policy and add an SLA-based Spike Control policy
Reveal answer details
Close answer details
Traffic is routed through an API proxy to an API implementation. The API proxy is managed by API Manager and the API implementation is deployed to a CloudHub VPC using Runtime Manager. API policies have been applied to this API. In this deployment scenario, at what point are the API policies enforced on incoming API client requests?
-
A
-
B
At the API implementation
-
C
At both the API proxy and the API implementation
-
D
At a MuleSoft-hosted load balancer
Reveal answer details
Close answer details
Correct answerA
Explanation>> API Policies can be enforced at two places in Mule platform. >> One - As an Embedded Policy enforcement in the same Mule Runtime where API implementation is running. >> Two - On an API Proxy sitting in front of the Mule Runtime where API implementation is running. >> As the deployment scenario in the question has API Proxy involved, the policies will be enforced at the API Proxy.
A Mule application exposes an HTTPS endpoint and is deployed to three CloudHub workers that do not use static IP addresses. The Mule application expects a high volume of client requests in short time periods. What is the most cost-effective infrastructure component that should be used to serve the high volume of client requests?
-
A
A customer-hosted load balancer
-
B
The CloudHub shared load balancer
-
C
-
D
Runtime Manager autoscaling
Reveal answer details
Close answer details
Correct answerB
ExplanationThe scenario in this question can be split as below: >> There are 3 CloudHub workers (So, there are already good number of workers to handle high volume of requests) >> The workers are not using static IP addresses (So, one CANNOT use customer load-balancing solutions without static IPs) >> Looking for most cost-effective component to load balance the client requests among the workers. Based on the above details given in the scenario: >> Runtime autoscaling is NOT at all cost-effective as it incurs extra cost. Most over, there are already 3 workers running which is a good number. >> We cannot go for a customer-hosted load balancer as it is also NOT most cost-effective (needs custom load balancer to maintain and licensing) and same time the Mule App is not having Static IP Addresses which limits from going with custom load balancing. >> An API Proxy is irrelevant there as it has no role to play w.r.t handling high volumes or load balancing. So, the only right option to go with and fits the purpose of scenario being most cost-effective is - using a CloudHub Shared Load Balancer.
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
ExplanationThere 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.
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?
-
A
When there is an existing Enterprise Data Model widely used across the organization
-
B
When the System API can be assigned to a bounded context with a corresponding data model
-
C
When a pragmatic approach with only limited isolation from the backend system is deemed appropriate
-
D
When the corresponding backend system is expected to be replaced in the near future
Reveal answer details
Close answer details
Correct answerC
ExplanationGeneral 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 system and 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
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
Explanation>> 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 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
Explanation>> Reference: https://docs.mulesoft.com/api-manager/2.x/rate-limiting-and-throttling-sla-based-policies#response-headers
Question 10
Single choice
The Line of Business (LoB) of an eCommerce company is requesting a process that sends automated notifications via email every time a new order is processed through the customer's mobile application or through the internal company's web application. In the future, multiple notification channels may be added: for example, text messages and push notifications. What is the most effective API-led connectivity approach for the scenario described above? 
-
A
Create one Experience API for the web application and one for the mobile application. Create a Process API to orchestrate and retrieve the email template from = database. Create a System API that sends the email using the Anypoint Connector for Email.
-
B
Create one Experience API for the web application and one for the mobile application. Create a Process API to orchestrate, retrieve the email template from a database, and send the email using the Anypoint Connector for Email.
-
C
Create Experience APIs for both the web application and mobile application. Create a Process API ta orchestrate, retrieve the email template from e database, and send the email using the Anypoint Connector for Email.
-
D
Create Experience APIs for both the web application and mobile application. (Create 3 Process API to orchestrate and retrieve the email template from 2 databese. Create a System API that sends the email using the Anypoint Connector for Email.
Reveal answer details
Close answer details
Question 11
Single choice
An API implementation is deployed on a single worker on CloudHub and invoked by external API clients (outside of CloudHub). How can an alert be set up that is guaranteed to trigger AS SOON AS that API implementation stops responding to API invocations?
-
A
Implement a heartbeat/health check within the API and invoke it from outside the Anypoint Platform and alert when the heartbeat does not respond
-
B
Configure a "worker not responding" alert in Anypoint Runtime Manager
-
C
Handle API invocation exceptions within the calling API client and raise an alert from that API client when the API Is unavailable
-
D
Create an alert for when the API receives no requests within a specified time period
Reveal answer details
Close answer details
Correct answerB
Explanation>> All the options eventually helps to generate the alert required when the application stops responding. >> However, handling exceptions within calling API and then raising alert from API client is inappropriate and silly. There could be many API clients invoking the API implementation and it is not ideal to have this setup consistently in all of them. Not a realistic way to do. >> Implementing a health check/ heartbeat with in the API and calling from outside to detmine the health sounds OK but needs extra setup for it and same time there are very good chances of generating false alarms when there are any intermittent network issues between external tool calling the health check API on API implementation. The API implementation itself may not have any issues but due to some other factors some false alarms may go out. >> Creating an alert in API Manager when the API receives no requests within a specified time period would actually generate realistic alerts but even here some false alarms may go out when there are genuinely no requests from API clients. The best and right way to achieve this requirement is to setup an alert on Runtime Manager with a condition "Worker not responding". This would generate an alert AS SOON AS the workers become unresponsive.
Question 12
Single choice
What is a best practice when building System APIs?
-
A
Document the API using an easily consumable asset like a RAML definition
-
B
Model all API resources and methods to closely mimic the operations of the backend system
-
C
Build an Enterprise Data Model (Canonical Data Model) for each backend system and apply it to System APIs
-
D
Expose to API clients all technical details of the API implementation's interaction wifch the backend system
Reveal answer details
Close answer details
Question 13
Single choice
What Anypoint Platform Capabilities listed below fall under APIs and API Invocations/Consumers category? Select TWO.
-
A
API Operations and Management
-
B
API Runtime Execution and Hosting
-
C
-
D
API Design and Development
Reveal answer details
Close answer details
Correct answerD
Explanation>> API Design and Development - Anypoint Studio, Anypoint Design Center, Anypoint Connectors >> API Runtime Execution and Hosting - Mule Runtimes, CloudHub, Runtime Services >> API Operations and Management - Anypoint API Manager, Anypoint Exchange >> API Consumer Management - API Contracts, Public Portals, Anypoint Exchange, API Notebooks Correct Answers: API Operations and Management and API Consumer Engagement ***************************************** >> API Design and Development - Anypoint Studio, Anypoint Design Center, Anypoint Connectors >> API Runtime Execution and Hosting - Mule Runtimes, CloudHub, Runtime Services >> API Operations and Management - Anypoint API Manager, Anypoint Exchange >> API Consumer Management - API Contracts, Public Portals, Anypoint Exchange, API Notebooks
Question 14
Single choice
How can the application of a rate limiting API policy be accurately reflected in the RAML definition of an API?
-
A
By refining the resource definitions by adding a description of the rate limiting policy behavior
-
B
By refining the request definitions by adding a remaining Requests query parameter with description, type, and example
-
C
By refining the response definitions by adding the out-of-the-box Anypoint Platform rate-limit-enforcement securityScheme with description, type, and example
-
D
By refining the response definitions by adding the x-ratelimit-* response headers with description, type, and example
Reveal answer details
Close answer details
Correct answerD
ExplanationReferences: https://docs.mulesoft.com/api-manager/2.x/rate-limiting-and-throttling#response-headers https://docs.mulesoft.com/api-manager/2.x/rate-limiting-and-throttling-sla-based-policies#response-headers
Question 15
Single choice
The asset version 2.0.0 of the Order API is successfully published in Exchange and configured in API Manager with the Autodiscovery API ID correctly linked to the API implementation, A new GET method is added to the existing API specification, and after updates, the asset version of the Order API is 2.0.1, What happens to the Autodiscovery API ID when the new asset version is updated in API Manager?
-
A
The API ID changes, but no changes are needed to the API implementation for the new asset version in the API Autediscovery global element because the API ID is automatically updated
-
B
The APL ID changes, so the API implementation must be updated with the latest API ID for the new asset version in the API Autodiscovery global element
-
C
The APLID does not change, so no changes to the APT implementation are needed for the new asset version in the API Autodiscovery global element
-
D
The APL ID does not change, but the API implementation must be updated in the AP] Autodiscovery global element to indicate the new asset version 2.0.4
Reveal answer details
Close answer details
Question 16
Single choice
A Mule application exposes an HTTPS endpoint and is deployed to the CloudHub Shared Worker Cloud. All traffic to that Mule application must stay inside the AWS VPC. To what TCP port do API invocations to that Mule application need to be sent?
-
A
-
B
-
C
-
D
Reveal answer details
Close answer details
Correct answerD
Explanation>> 8091 and 8092 ports are to be used when keeping your HTTP and HTTPS app private to the LOCAL VPC respectively. >> Above TWO ports are not for Shared AWS VPC/ Shared Worker Cloud. >> 8081 is to be used when exposing your HTTP endpoint app to the internet through Shared LB >> 8082 is to be used when exposing your HTTPS endpoint app to the internet through Shared LB So, API invocations should be sent to port 8082 when calling this HTTPS based app. References: https://docs.mulesoft.com/runtime-manager/cloudhub-networking-guide https://help.mulesoft.com/s/article/Configure-Cloudhub-Application-to-Send-a-HTTPS-Request-Directly-to-Another-Cloudhub-Application https://help.mulesoft.com/s/question/0D52T00004mXXULSA4/multiple-http-listerners-on-cloudhub-one-with-port-9090
Question 17
Single choice
What is the most performant out-of-the-box solution in Anypoint Platform to track transaction state in an asynchronously executing long-running process implemented as a Mule application deployed to multiple CloudHub workers?
-
A
-
B
java.util.WeakHashMap
-
C
-
D
Reveal answer details
Close answer details
Correct answerC
Explanation>> Redis distributed cache is performant but NOT out-of-the-box solution in Anypoint Platform >> File-storage is neither performant nor out-of-the-box solution in Anypoint Platform >> java.util.WeakHashMap needs a completely custom implementation of cache from scratch using Java code and is limited to the JVM where it is running. Which means the state in the cache is not worker aware when running on multiple workers. This type of cache is local to the worker. So, this is neither out-of-the-box nor worker-aware among multiple workers on cloudhub. https://www.baeldung.com/java-weakhashmap >> Persistent Object Store is an out-of-the-box solution provided by Anypoint Platform which is performant as well as worker aware among multiple workers running on CloudHub. https://docs.mulesoft.com/object-store/ So, Persistent Object Store is the right answer.
Question 18
Single choice
Refer to the exhibit. An organization needs to enable access to their customer data from both a mobile app and a web application, which each need access to common fields as well as certain unique fields. The data is available partially in a database and partially in a 3rd-party CRM system. What APIs should be created to best fit these design requirements?   
-
A
-
B
-
C
-
D
Reveal answer details
Close answer details
Correct answerC
ExplanationAs per MuleSoft's API-led connectivity: >> Experience APIs should be built as per each consumer needs and their experience. >> Process APIs should contain all the orchestration logic to achieve the business functionality. >> System APIs should be built for each backend system to unlock their data.
Question 19
Single choice
What CANNOT be effectively enforced using an API policy in Anypoint Platform?
-
A
Guarding against Denial of Service attacks
-
B
Maintaining tamper-proof credentials between APIs
-
C
Logging HTTP requests and responses
-
D
Backend system overloading
Reveal answer details
Close answer details
Correct answerA
Explanation>> Backend system overloading can be handled by enforcing "Spike Control Policy" >> Logging HTTP requests and responses can be done by enforcing "Message Logging Policy" >> Credentials can be tamper-proofed using "Security" and "Compliance" Policies However, unfortunately, there is no proper way currently on Anypoint Platform to guard against DOS attacks.
Question 20
Single choice
A company deploys Mule applications with default configurations through Runtime Manager to customer- hosted Mule runtimes. Each Mule application is an API implementation that exposes RESTful interfaces to API clients. The Mule runtimes are managed by the MuleSoft-hosted control plane. The payload is never used by any Logger components. When an API client sends an HTTP request to a customer-hosted Mule application, which metadata or data (payload) is pushed to the MuleSoft-hosted control plane?
-
A
-
B
-
C
-
D
Reveal answer details
Close answer details
Question 21
Single choice
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
Explanation>> 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.
Question 22
Single choice
A large organization with an experienced central IT department is getting started using MuleSoft. There is a project to connect a siloed back-end system to a new Customer Relationship Management (CRM) system. The Center for Enablement is coaching them to use API-led connectivity. What action would support the creation of an application network using API-led connectivity?
-
A
Invite the business analyst to create a business process model to specify the canonical data model between the two systems
-
B
Determine if the new CRM system supports the creation of custom: REST APIs, establishes 4 private network with CloudHub, and supports GAuth 2.0 authentication
-
C
To expedite this project, central IT should extend the CRM system and back-end systems to connect to one another using built in integration interfaces
-
D
Create a System API to unlock the data on the back-end system using a REST API
Reveal answer details
Close answer details
Question 23
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
ExplanationAs 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 24
Single choice
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
Explanation>> 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.
|