Conheça o padrão arquitetural Porto para aplicações back-end \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 09 Horas 

 40 Min 

 57 Seg 

   Tempo restante da oferta: 09 40 57 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Conheça o padrão arquitetural Porto para aplicações back-end  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

# Conheça o padrão arquitetural Porto para aplicações back-end

 Conheça o padrão arquitetural Porto! Voltado para aplicações back-end, ele permite escrever monolitos que podem ser facilmente migrados para micro serviços.

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/conheca-o-padrao-arquitetural-porto-para-aplicacoes-back-end.png)  

Nesse post vamos conhecer o padrão arquitetural Porto. Voltado principalmente para aplicações back-end, ele usa conceitos de diversos outros padrões para definir um padrão modular, com baixo acoplamento e altamente testável.

[  ![Python - Orientação a objetos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/python.svg)   Curso Python - Orientação a objetos Conhecer o curso ](https://www.treinaweb.com.br/curso/python-orientacao-a-objetos)

## O Que é Porto?

O Porto é um padrão arquitetural criado por [Mahmoud Zalt](https://github.com/Mahmoudz "Mahmoud Zalt"). Seu principal objetivo é ajudar os desenvolvedores a criarem aplicações de médio e grande porte de forma manutenível e reutilizável.

Ele utiliza conceito de outros padrões já largamente usados e conhecidos, como DDD (Domain Driven Design), Modular, Micro Kernel, [MVC (Model View Controller)](https://www.treinaweb.com.br/blog/o-que-e-mvc/ "MVC (Model View Controller)"), Layered e ADR (Action Domain Responder). O Porto também se utiliza de uma série de princípios, como [SOLID](https://www.treinaweb.com.br/blog/introducao-aos-principios-solid/ "SOLID"),[ programação orientada a objetos](https://www.treinaweb.com.br/blog/os-pilares-da-orientacao-a-objetos/ " programação orientada a objetos"), LIFT, DRY (Don’t repeat yourself), CoC (Convention over configuration), GRASP (General Responsibility Assignment Software Patterns), generalização, alta coesão e baixo acoplamento.

Ele foi criado pensando nos principais problemas do desenvolvimento web back-end, porém pode ser utilizado também em outros tipos de aplicação. Uma das suas principais vantagens é que ele permite a criação de aplicações monolíticas de forma organizada e caso necessário ainda facilita a divisão em [micro serviços](https://www.treinaweb.com.br/blog/o-que-sao-microsservicos/ "micro serviços"), graças ao modo como é estruturado.

## Como funciona o padrão arquitetural Porto?

O padrão arquitetural Porto pode ser usado independente de tecnologia e está baseado em duas camadas principais, Ship (navio) e Containers. Ele ainda considera uma terceira camada que chama Sea (oceano) que basicamente consiste no código de baixo nível, como, frameworks e bibliotecas que nossa aplicação interage.

Abaixo podemos ver uma imagem ilustrando as camadas:

![imagem que mostra as camadas do padrão arquitetural Porto (ship, containers e sea)](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/padrao-arquitetural-porto.png)

A camada Ship (navio) é a camada intermediária da nossa aplicação. Ela faz a ligação entre o código de baixo nível da camada Sea (oceano) e a camada de alto nível Containers. Sua responsabilidade principal é interagir com recursos do framework e bibliotecas, além de possuir elementos base para a camada de containers.

A camada de containers possui o código de alto nível da aplicação. Ela interage com a camada de nível intermediário (Ship). Sua responsabilidade é cuidar das regras de negócio do projeto.

## O problema das múltiplas interfaces

O desenvolvimento de aplicações que possuem múltiplas UI User Interface (interface de usuário) é uma realidade no mercado. Na maioria dos casos, as aplicações são desenvolvidas para no mínimo duas UI. A interface web e a interface para dispositivos móveis, através de aplicativos específicos para Android e IOS.

Baseado nesse cenário as aplicações back-end precisam servir a diferentes aplicações. Isso pode ser um grande problema, uma vez que por mais que as interfaces de usuário tenham na maioria dos casos os mesmos requisitos, existem situações onde os requisitos são diferentes. Essa situação pode causar um gargalo no projeto, já que temos várias equipes de aplicações front-end solicitando desenvolvimento de novos recursos.

O problema descrito acima, pode ser tratado de diversos modos, como utilizando o padrão [back-ends for front-ends](https://docs.microsoft.com/pt-br/azure/architecture/patterns/backends-for-frontends "back-ends for front-ends"), onde temos um back-end para cada interface de usuário ou até mesmo usando diferentes API gateway quando estamos usando micro-serviços.

### O padrão arquitetural Porto como uma alternativa

As abordagens levantadas acima são interessantes, porém elas trazem um custo a mais para o projeto, manter diferentes back-ends para diferentes front-ends pode ser muito custoso. E a abordagem de micro-serviços não se aplica a qualquer tipo de projeto, uma vez que existe um ganho significante de complexidade de controle dos serviços em relação a uma aplicação monolítica.

O padrão arquitetural Porto trás características que nos ajuda no cenário descrito acima. Ele é estruturado de forma a permitir que a aplicação back-end possa responder a diferentes interfaces de usuário usando as mesmas regras de negócio. Ele também permite que a aplicação seja estruturada inicialmente como monolito que pode ser migrado, caso necessário, com o crescimento da aplicação para o modelo de micro-serviços.

## Por que conhecer o padrão estrutural Porto?

O padrão arquitetural Porto é importante como uma nova proposta para o mercado, uma vez que ele tenta atacar gaps que outros padrões conhecidos possuem.

O modo como ele foi estruturado, garante uma série de atributos de qualidade ao projeto. Elementos como modularidade dão ao padrão uma característica bem interessante, a possibilidade de transformar uma aplicação monolítica em micro serviços, algo extremamente difícil nos padrões amplamente utilizados no mercado

Devido a sua filosofia de responsabilidade única, classes pequenas e padrões bem definidos de entradas e saída. O padrão Porto permite a criação de aplicações altamente testáveis e manuteníveis.

Outro aspecto muito interessante, é o fato da regra de negócio da aplicação estar desacoplado da UI (User Interface). Desse modo é possível que uma aplicação utilize a mesma lógica para responder diferentes tipos de aplicações. Por exemplo, uma API, uma aplicação web e uma aplicação console.

## Padrão arquitetural Porto na comunidade

A tendência é de acordo com que mais pessoas conheçam o padrão, ele ganhe espaço no mercado, uma vez que é possível implementá-lo na maioria das tecnologias usadas para desenvolvimento de aplicações back-end.

A comunidade de desenvolvimento de software está sempre aberta a novos padrões como é o caso do Porto, porém como é algo normal em tecnologia, é necessário um tempo de maturação até que as empresas comecem adotar em produtos reais.

## Considerações finais

Atualmente o Porto ainda é uma padrão arquitetural que está mais presente na comunidade [PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "PHP"), mais especificamente na comunidade Laravel, uma vez que seu criador faz parte dessa comunidade e também mantém uma implementação do padrão sobre o [Laravel](https://www.treinaweb.com.br/blog/o-que-e-laravel/ "Laravel") chamado [Apiato](https://github.com/apiato/apiato "Apiato").

Apesar de estruturado sobre diversos outros padrões e componentes conhecidos do mercado, o Porto ainda não foi implementado largamente. Isso faz com que não seja possível comprovar de maneira prática seus atributos de qualidade.

- [ #Arquitetura de Software ](https://www.treinaweb.com.br/blog/tag/arquitetura-de-software)
- [ #Laravel ](https://www.treinaweb.com.br/blog/tag/laravel)
- [ #arquitetura ](https://www.treinaweb.com.br/blog/tag/arquitetura)

Autor

 ![Elton Fonseca](//secure.gravatar.com/avatar/2cee05645357ced0841ce76ba5569c72?d=mm)

## Elton Fonseca

 Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduado em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. [@eltonfonsecadev](https://twitter.com/eltonfonsecadev) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/elton-fonseca)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/camadas-e-componentes-do-padrao-arquitetural-porto-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ Camadas e componentes do padrão arquitetural Porto ](https://www.treinaweb.com.br/blog/camadas-e-componentes-do-padrao-arquitetural-porto) 

     Conheça as camadas e componentes do padrão arquitetural Porto. Nesse artigo vamos aprender como cada camada se comunica e a responsabilidade dos componentes.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/04/16095041/OCELOT-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     8 anos atrás

    ##  [ Criando um API Gateway com ASP.NET Core e Ocelot ](https://www.treinaweb.com.br/blog/criando-um-api-gateway-com-asp-net-core-e-ocelot) 

     Conheça o conceito de API Gateway e veja como criá-lo em uma aplicação ASP.NET utilizando a biblioteca Ocelot.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/11140050/sockets-redes-tcp-udp-400x280.png)  [ Rede de computadores ](https://www.treinaweb.com.br/blog/categoria/rede-de-computadores) 

     8 anos atrás

    ##  [ Uma introdução a TCP, UDP e Sockets ](https://www.treinaweb.com.br/blog/uma-introducao-a-tcp-udp-e-sockets) 

     Uma introdução (base teórica) para TCP, UDP e Sockets, principalmente para desenvolvedores que desejam programar com Sockets.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/03181535/WINDOWS-PHP-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Criando um ambiente de desenvolvimento PHP com WSL ](https://www.treinaweb.com.br/blog/criando-um-ambiente-de-desenvolvimento-php-com-wsl) 

     Nesse artigo vamos criar um ambiente de desenvolvimento PHP completo, com MySQL e Nginx dentro do WSL.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/arquitetura-software-400x280.jpg)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     10 anos atrás

    ##  [ Por que a arquitetura do meu software deu errado? ](https://www.treinaweb.com.br/blog/por-que-a-arquitetura-do-meu-software-deu-errado) 

     Alguns desenvolvedores dão somente muita atenção à codificação. Vejamos outros importantes aspectos que precisam ser levados em consideração.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/conhecendo-o-mean-stack-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     6 anos atrás

    ##  [ Conhecendo o MEAN Stack ](https://www.treinaweb.com.br/blog/conhecendo-o-mean-stack) 

     Conheça neste artigo o que é o MEAN Stack.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/11/25224114/REDHAT-OPENSHIFT-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     8 anos atrás

    ##  [ O que é o OpenShift? ](https://www.treinaweb.com.br/blog/o-que-e-o-openshift) 

     Conheça mais sobre o OpenShift e como ele funciona.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Conhecendo variáveis e constantes na Golang ](https://www.treinaweb.com.br/blog/conhecendo-variaveis-e-constantes-na-golang) 

     Conheça neste artigo os tipos de dados presentes e a sintaxe para que possamos declarar variáveis e constantes na Golang.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/07/sql-vs-nosql-qual-usar-400x280.jpg)  [ NoSQL ](https://www.treinaweb.com.br/blog/categoria/nosql) 

     10 anos atrás

    ##  [ SQL vs NoSQL, qual usar? ](https://www.treinaweb.com.br/blog/sql-vs-nosql-qual-usar) 

     Conheça mais sobre os tipos de banco SQL e NoSQL e quando utilizá-los.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/18200426/XAMARIN-MARYLENE-400x280.png)  [ Desenvolvimento Mobile ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-mobile) 

     7 anos atrás

    ##  [ O que é Xamarin? ](https://www.treinaweb.com.br/blog/o-que-e-xamarin) 

     Aplicações mobile sempre estão em alta. Conheça mais sobre o Xamarin, a plataforma open source para criação de aplicações mobile da Microsoft.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/06/seguranca-em-soa-como-proteger-os-web-services-400x280.png)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     10 anos atrás

    ##  [ Segurança em SOA: Como proteger os web services? ](https://www.treinaweb.com.br/blog/seguranca-em-soa-como-proteger-os-web-services) 

     Você sabe realmente como deve funcionar e como proteger um serviço SOA? Veremos nesse artigo como proteger web services que utilizem a arquitetura SOA.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/27230008/HONEYPOT-400x280.png)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     7 anos atrás

    ##  [ Termos comuns de segurança: Honeypot ](https://www.treinaweb.com.br/blog/termos-comuns-de-seguranca-honeypot) 

     Nesta série de artigos sobre termos comuns de segurança, conheça o honeypot, uma armadilha destinada a atrair invasores.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **09h 40min 57s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
