Exam topics covered:
1.1 Describe distributed applications related to the concepts of front-end, back-end, and load balancing
1.2 Evaluate an application design considering scalability and modularity
1.3 Evaluate an application design considering high-availability and resiliency (including on-premises, hybrid, and cloud)
1.4 Evaluate an application design considering latency and rate limiting
1.5 Evaluate an application design and implementation considering maintainability
1.6 Evaluate an application design and implementation considering observability
1.7 Diagnose problems with an application given logs related to an event
1.8 Evaluate choice of database types with respect to application requirements (such as relational, document, graph, columnar, and Time Series)
1.9 Explain architectural patterns (monolithic, services oriented, microservices, and event driven)
1.11 Explain the concepts of release packaging and dependency management
1.12 Construct a sequence diagram that includes API calls
Characteristics of a Maintainable Application:
Release packaging is how software is bundled up for delivery to end users. It is closely related with dependency management, which is the concept of bundling in any required packages that are needed for the software to operate. A good release packaging and dependency management strategy bundles in all required dependencies into a single package, or installer file. On Windows, this might be an .msi file, or a .rpm for Linux. The developer should identify all dependencies up front and bundle them into the installer package. Ideally the software testing process will include testing the installer on a clean system that has never had the application before. This will help to identify any dependencies that the developer may have had on their system that they failed to include in the installer package.
Python dependencies can be identified with pip using the pip freeze
command. The output of that command can be saved as a text file and fed into the installer on another system using the pip install --requirement [filename]
command. This will install all of the requirements as were captured by the pip freeze
command.
A Sequence Diagram is used to illustrate the process of how different application services communicate to perform an action. Consider an eCommerce site, when a user wants to purchase an item they put items in the cart and when ready they initiate the checkout process. The checkout process might involve several different services and/or systems such as credit card transaction processing, shipping, and others. A sequence diagram could be used to diagram the interactions between these various components. The sequence diagram will typically have the services listed across the top and/or bottom of the diagram, with arrows showing the communication between components. Below is an example sequence diagram.
The above example was taken from a site called Creately, which has a great tutorial and more examples here: https://creately.com/blog/diagrams/sequence-diagram-tutorial/