发布于 2026-01-06 3 阅读
0

O que é arquitetura

O que é arquitetura

问题

想象一下,2020 年的 escrita desse artigo(2020 年)中的任何时刻都将成为一个企业的系统(a)。该系统将当今的新技术用作新的技术,并决定如何组织和实施该地区的工作。

可以使用 PHP,学习框架“na boca do povo”:Laravel。快速开发和快速完成项目的初始版本。装备技术可以快速地利用时尚框架。

Os anos se passam。未来,我们将在未来的系统中对框架进行精确的预制,以将其作为决定框架的一部分,并通过银行进行操作,并最终将其应用于 Eloquent 的“模型”中。

真实世界

看起来不真实,不是吗!?

“啊,Laravel não vai deixar de usar o Eloquent。Não faz sentido esse exemplo”

Bom,hoje eu trabalho em uma empresa que tem um software funcionando desde o PHP 3.

这个软件的生命时刻,是一个与 Pear DB 相关的项目的注册。 Esse projeto hoje não recebe atualizações (apenas correções de segurança), além de nos deixar "amarrados" a sua filosofia de código, que difere do que temos nos mundos atuais de PSRs, Composer, 等等。

结果:O sistema evolui。 Novas funcionalidades são adicionadas todo dia。根据需求,设备会持续不断地接收,并且会以一种不进化的方式与现有的连接和性能一起发展,并且不会发生任何问题。

但是,新的设备集成是为了解决病毒问题。曹斯!

Como poderia ter sido?

Se os arquitetos desse sistema pudessem voltar no tempo, o que fariam, você pode se perguntar. Minha ideia aqui é levantar algumas opções。

在这些条件下,我们的基础设施和持久性基础设施之间存在着密切的联系。可以使用 Pear DB、PDO、Doctrine、Eloquent、uma API、um arquivo com os bados、tanto faz。完整的经济逻辑。

E para salvar 没有银行吗?专门的课程,包括存储库、使用库等。 Essas 将 saberiam 激光雷达 com 作为实体和持久化系统必要的翻译(例如使用 SQL)。

E se a ferramenta usada fosse descontinuada? Bom,简单:Poderíamos criar uma interfaceque Define o que um repositório deve saber fazer。 Pear DB 提供了支持、类库PearDbQuestionRepository(存储库)的功能,可帮助您替换类库,PdoQuestionRepository或获取更多信息DoctrineQuestionRepository。这是不同的,因为需要注意的是接口的实现QuestionRepository

O que isso tem a ver com arquitetura?

— Essa solução proposta é perfeita?
— Longe disso! Tem suas vantagens e desvantagens

Decisões de como organizar nosso código de forma que ele continue "utilizável" após determinado período é o propósito mais simples de uma arquitetura.

Arquitetura, segundo nosso querido Google, é: "arte e técnica de organizar espaços e criar ambientes para abrigar os diversos tipos de atividades humanas, visando tb. a determinada intenção plástica."

Se trazemos isso para o mundo do desenvolvimento temos uma definição semelhante à seguinte: "A arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas, e seus relacionamentos com outros softwares."

Você pode encontrar inúmeras definições para esse termo, mas em sua essência, arquitetura de software nos ajuda a definir como organizar nosso código, torná-lo mais compreensível, manutenível a longo prazo, e separar a responsabilidades de domínio (regras de negócio) da infraestrutura (banco de dados, log, envio de e-mails, etc).

Padrões arquiteturais

O exemplo que eu dei é bem raso e cita apenas um pequeno problema que uma arquitetura bem feita visa resolver. Para resolver diversos outros problemas, padrões arquiteturais surgiram ao longo do tempo.

Você muito provavelmente conhece pelo menos um (nem que seja de nome), e aqui cito nomes de padrões arquiteturais bem famosos:

  • MVC (o famoso Model-View-Controller)
  • ADR (Action-Domain-Response, uma espécie de evolução do MVC para web)
  • SOA (Arquitetura orientada a serviços)
  • Clean Architecture (em português, Arquitetura Limpa)
  • Hexagonal Architecture (em português, Arquitetura Hexagonal)
  • Onion Architecture (em português, Arquitetura em Camadas (cebola))

Citar especificidades de cada padrão e suas semelhanças / diferenças fogem do escopo desse post, mas é interessante conhecer e se adaptar com alguns nomes.

Conclusão

Não existe sistema sem arquitetura, só sistema com arquitetura ruim.

Mesmo que no desenvolvimento de um sistema você não siga nenhum padrão arquitetural, há decisões de arquitetura no código, e se mal feitas, essas decisões podem te assombrar por muito (MUITO) tempo.

文章来源:https://dev.to/phprio/o-que-e-arquitetura-17ob