Um ano de Monorepo:o que aprendemos e porque vocêdeveria usálo
Quando o Angular 6 saiu,trouxe consigo o concito de Workspace.O Tradicial ng new nãO geraria mais apenas uma aplicaçO,e sim um monorepo para que pudéssemos gerar aplicaçes e bibliotecas no mesmo local.
O conceito era estranho demais pra quem trabalhou a vida inteira com multirepo.상상해 봐, 우리 팀은 한 팀이고, 우리 팀은 한 팀이야.Ou atualizar a versão de umaúnica dependencia e quebrar cinco projetos differentes.Meio zoneado,né?
Eu játinha sido apresentado aoLernatrabalhando no Ionic CLI,mas nunca tinha parado pra pensar o porque de usar aquele treco.Eis que eu liesse artigodo Alex Eagle que me convenceu a testar essa cultura,que jáutilizada na Google hámuito tempo e deu bastante certo por lá.Agora,vamos aos resultados dessa viagem usando monorepo aqui na TOTVS.
회사 명
20개의 응용 프로그램 중 응용 프로그램 A가 없고 응용 프로그램 A와 응용 프로그램 B만 있다고 상상해 보세요.padrão 프로그램?Clona,faz um npm link e começa trabalhar na aplicaço e na biblioteca ao mesmo tempo.Quando precisar alterar outra biblioteca,faz o processo de novo.Se a biblioteca for usada em mais de um app,npm link neles.Vários devs... quantas 괴롭힘 seu time terá feito isso no fim do dia?Entrou dev novo?Jámonta um shell script que clone tudo pra ele nãter que fazer tudo na mãe se perder.
Quando se temum monorepo,vocès ó precisa abrir a 파스타.Tudo o que é neces á rio pro time trabalhar foi baixado quando voc êclonouo 작업 구역.desde aplicaões a bibliotecas compatilhadas,estátudo ali.
비교도서관
Com pequenas configuraões no tsconfig,vocêconsegue fazer Com que as bibliotecas sejam enxergadas por todas as aplicaões do seu workspace.Se vocêdesenvolve bibliotecas que sóserão consumidas dentro do monorepo,nem precisa publicálas.Basta는 경로를 aplica öes로 정의합니다.
//tsconfig.json
{
...
"compilerOptions": {
...
"paths": {
"@mycompany/ui": ["libs/ui/src/index.ts"],
"@mycompany/common": ["libs/common/src/index.ts"],
"@mycompany/auth": ["libs/auth/src/index.ts"]
}
}
}
que foi exportado noindex.ts
de@mycompany/ui
ou@mycompany/common
nas minhas aplicaçes.예:
@mycompany/auth
.Integração contínua
Quando trabalhamos com bibliotecas comparitilhadas, precisamos executar os pipeline de build(lint,test,build 등) de todas as aplica ões que a consem para que tenham a vers ão mais atual, ou deixar cada aplica ço com sua vers o biblioteca, o que resulta em aplica ões com dependence èncias obsoletas.
Usando um monorepo,vocêpode executar o build de todas as aplicaões caso uma biblioteca seja alterada sem precisar criar links entre elas durante os pipeline.Com isso,todas as aplicaões sempre terão asúltimas versões das bibliotecas,e vocêconsegue identificar caso uma alteraço em uma biblioteca quebre uma aplicaço.
Existe ainda ferramentas que te dizem exatamente quais aplicaçes ou bibliotecas foram afetadas pela sua alteraço,e executam o processo de build somete para o que foi afetado.A que eu uso e recomendoéoNx.
청구를 취하하다
Num monorepo,os desenvolvedores de back e front end podem trabalhar na mesma branch e abrir os PRs quando a feature estiver totalmente concluda.Um Sdet(Engenheiro Specializado emQA) também pode baixara branch inteira pra Um 스모그 테스트.
Vocêtem um controle maior de tudo que entrou pra branch de desenvolvimento(ou master)sem ter que lidar com vários PRs em repositórios differentes.E se alguma feature entrou de forma prematura,vocèsóprecisa reverter umúnico PR.
문제
Como nem tudo são flores,vou mostrar os problemas que encontramos no caminho e Como os resolvemos.
문화
O time estranha,issoéfato.Éconcomplado chegar pra uma galera que trabalhou a vida inteira usando multirepos e expor uma ideia dessas.Me olharam meio torto,mas jána primeira conversa a galera topou fazer um teste,que acabou se tornando nosso padrão.
제어
Vocêprecisa fazer um trabalho mental e aceitar que todo mundo do seu time tem acesso a tudo,e que todo mundo pode alterar tudo desde que seja aprovado no processo de PR.Não chegou a serum problema exatamente,mas foi uma questão levantada quando levei o tema para discustomãento preferi apont-la.
Mais Complexidade para o DevOps 회사
Como vocèsótem um repositório,os pipelines de CI e CD se tornam um pouco mais complexos porque eles precisam buildar não sóuma aplicaão,mas todas as aplicaões que determinada alteraão afeta.Nós usamos o impacted do Nx e apanhamos bastante atécriarmos um modelo efficient de build incremental.Hoje nossos는 são muito mais r á pidos do que eram antes de usarmos monorepos, e no caso do Front End,temos um único build que consegue gerenciar o Workspace inteiro를 건설했습니다.
결론
Se voc êtrabalha com microservi ços e/ou microsfrontends, ou possui várias aplica çes e 가장criar bibliotecas compatilhadas entre elas,vai encontrar no monore pouma alternativa paragerenciar as suas aplica çes.Se não, mesmo assim, pois n ão custa nada e um dia o seu monolito pode precisar ser dividdo를 사용합니다.
Nós apostamos e gostamos bastante.O que era pra ser complexo acabou se tornando simples graças aoNx,entãO a gente sóteve a ganhar.전단이 없습니다.por Examplo,temos apenasum pipeline de build pra todas as nossas bibliotecas e aplica öes,o que centralsou o gerenciamento e melhorou e muito desempenho dos builds.
E porúltimo,liberdade criar um novo projeto sem precisar criar repositórios E pedir pro time inteiro clonálo também foi bem interestsante.Principalmente pra nós que trabalhamos com microserviços e microfrontends.
Resumindo:Vale muito a pena:)
언제나 너는 너의 남자를 질투할 것이다.피드백 세인트 샘프 슈퍼bem vindos.
Reference
이 문제에 관하여(Um ano de Monorepo:o que aprendemos e porque vocêdeveria usálo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ricmello/um-ano-de-monorepo-o-que-aprendemos-e-porque-voce-deveria-usa-lo-30me텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)