• 4 hours
  • Hard

Free online content available in this course.



Got it!

Last updated on 6/29/20

Review What You've Learned

Log in or subscribe for free to enjoy all this course has to offer!

Congratulations on reaching the end of this course! You've seen six major architecture designs, which are all summarized in this table:

Architecture Model




When to use it


A distributed application structure that partitions tasks between the providers of a service, called servers, and service requesters, called clients. Often clients and servers communicate over a computer network using different hardware

Encapsulation of hardware, software, and functionality. 

Seamless combination of clients and servers on different platforms.

If all the clients simultaneously request data from the server, it may get overloaded. 

If the server fails for any reason, then none of the requests of the clients can be fulfilled.

When there are different user devices.

When you need to encapsulate system functionalities.

Event- driven

Events are produced, transported, and interpreted over an event bus.

Clients subscribe to a group of events (channel) and act on the messages received.

The ability to handle millions of events at once.

The ability to communicate different technologies and platforms to the same event bus.

If the event bus breaks, the system does not work.

The event bus may get overloaded and suffer performance problems.

When you have many events at once.

When you have to act upon an event in real-time    (synchronic execution).

When you have different platforms.

Service- oriented

A service-based architecture model that allows an external system to use a library of functionalities without having to access the internal systems.

Simple communication: works 100% over the internet.

Strong security standards: no client gets into the internal systems.

Clients need the internet to use the library.

Web service controller may get overloaded and suffer performance problems. Think about this: “How many requests does the FedEx tracking web service gets per second?”

When you have multiple clients for a web service.

When you need to remotely communicate with those clients.


Additional pieces of software that are developed to add a special functionality not originally planned in the system.

No rewriting the system.

Limitless augmentation of functionality.

Plug-ins frequently crash with each other and produce malfunctions in the main system.

When you have a special functionality to address and you don't  want to rewrite the original system.


The software operates in layers that allow each component to be independent of the rest.

Encapsulation of hardware, software, and functionality. 

If a layer is changed, the rest of the layers stay the same.

For small applications, many layers create a performance problem and are very difficult to maintain.

Only for big applications.


An application structure that uses data instead of code  to make behavior decisions.

No need to analyze all cases in the code.

Categories can grow indefinitely.

Changes can be made without changing the code.

May get complicated to understand and maintain when there are many categories.

When you have many different categories and need to act differently for each of them.

You now have all the knowledge you need to:

All that’s left is to put your newfound skills to use; first by challenging yourself with the end-of-part quiz, and then by designing architectures for your next projects!

Example of certificate of achievement
Example of certificate of achievement