# Architecture

## Hardware

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2Fa28yVAm5grvnlfrfCyo0%2Fa.png?alt=media&#x26;token=0e00354c-19c8-400b-98ed-f356fee4e7a3" alt=""><figcaption><p>Multiprocessor and multicore</p></figcaption></figure>

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FSCQc67m0hRvnvAl35GPs%2Fa.png?alt=media&#x26;token=0818360c-5802-4793-bac4-a39b23b33917" alt=""><figcaption><p>Multicomputer</p></figcaption></figure>

## Cluster Computing

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FZfOuGLowjZrG8MvEgF82%2Fa.png?alt=media&#x26;token=e9a961d2-ecd4-4219-8334-2ca2be90b14f" alt=""><figcaption></figcaption></figure>

## Grid Computing

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FUxrRRe9wqHmzle2tuRNq%2Fa.png?alt=media&#x26;token=de4a4c4b-87ef-4505-81b0-ee1ee233f657" alt=""><figcaption></figcaption></figure>

## Cloud Computing

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2F1yhUuSDTmffW6CTYl608%2Fa.png?alt=media&#x26;token=f6d45d81-c39d-4ee9-abdd-de3e70ebe86a" alt=""><figcaption></figcaption></figure>

## Layered Architecture

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FX4DDFfHN7I9UYVWvW8xL%2Fa.png?alt=media&#x26;token=ded75f83-ee21-4ebf-9fd1-eeda946cf4ac" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FgqMeghw9iTiu00ckGJeu%2Fa.png?alt=media&#x26;token=19055942-381d-4869-93a0-e8d47d219f08" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2Fa9kY1nsS4GKBSyItjPq9%2Fa.png?alt=media&#x26;token=543b9464-0e5b-421b-b342-1c1bf14033bd" alt=""><figcaption></figcaption></figure>

### Protocol, service, and interface

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2F95Vd4tO5KMc7NTJ1lnOy%2Fa.png?alt=media&#x26;token=6a713417-03d5-4dcb-b91a-cf1671242ed8" alt=""><figcaption></figcaption></figure>

### Application layers

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FLg6mK8jnP4cnLX7HiGWT%2Fa.png?alt=media&#x26;token=41488c4e-d331-4063-be26-02555f365f07" alt=""><figcaption></figcaption></figure>

Traditional three layers vision.

* Data.
* Interface
* Processing

{% hint style="info" %}
**MVC - Model, View, Controller**
{% endhint %}

#### Example: Search Engine

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FFZIUKxrt0UbdLdL0ScPo%2Fa.png?alt=media&#x26;token=ae0be761-d6c8-448d-be68-1a36ba1b910c" alt=""><figcaption></figcaption></figure>

## Object-Based and Service Oriented Architectures

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FflH1ky5zMrhWlhPRUHO7%2Fa.png?alt=media&#x26;token=efeda707-0069-4196-bdcd-04b5680f5c05" alt=""><figcaption></figcaption></figure>

* Data **encapsulation**.
* Object implementation details are hidden by the **interface**.
* When a client *binds* itself to a distributed object, an object's interface implementation is loaded - **proxy**.
* A complementary entity called a ***skeleton*** appears on the server side.

## Resources Oriented Architectures

| Operation | Description                                 |
| --------- | ------------------------------------------- |
| PUT       | Creates a resource                          |
| GET       | Access a resource's state                   |
| DELETE    | Destroys a resource                         |
| POST      | Modifies a resource, it's state is replaced |

Resources are identified by a unique schema of identifiers.

All the services offer the same interface.

All the messages are self-contained.

After an operation execution, the component forgets everything about the called resource.

## *Publish-Subscribe* Architecture

<figure><img src="https://2387753953-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9sVneYw7epWOEEPKsfCf%2Fuploads%2FFaJJfKdDl0Fa9uxC3q0W%2Fa.png?alt=media&#x26;token=f830b42f-b445-4948-9b54-7bec21ddf02f" alt=""><figcaption></figcaption></figure>
