Ambientes Sitecore para Dev, QA, UAT e Produção

Pano de Fundo

Há algum tempo atrás encontrei esta pergunta no Stack Overflow, questionando diversos aspectos sobre uma solução Sitecore durante diferentes fases do ciclo de vida do projeto. A pergunta era um pouco antiga mas a única resposta disponível não era tão boa quando eu sei que poderia ser. Devido à relevância da questão sem uma boa resposta, decidi escrever a minha versão.

Premissas

A pergunta feita por Azeem Siddiqui começa estabelecendo algumas premissas:

O website de nossa empresa está sendo refeito em Sitecore mas nós estamos lutando para configurar os ambientes para Desenvolvedores (4), Designers (4), QA/Qualidade (3), Autores (10-15) e Aprovadores (4-10) de modo que eles possam trabalhar de forma independente, eu sei que haverão dependências mas a idéia é minimizá-las.

Algumas regras:

1) Quem for responsável pelas mudanças deverá fazer tudo separadamente até que exista alguma dependência;

2) Se um time está trabalhando em uma funcionalidade, isto não deve afetar ou parar o trabalho dos outros times. Por exemplo, se o QA está testando uma funcionalidade, os Designers e Desenvolvedores devem continuar seu trabalho na mesma funcionalidade.

Perguntas normais para aqueles com alguma experiência em outras plataformas de CMS e que estão procurando conhecer como o Sitecore funciona na vida real.

Visão Geral

Minha resposta começa com um diagrama ilustrando uma maneira de configurar os ambientes num projeto Sitecore, de modo que cada membro do time possa trabalhar sem interferir no trabalho do outro.

bjc2P

Como os membros do time trabalham em conjunto?

1) Onde os Designers trabalham? Quer dizer, onde eles adicionam seus htmls, js e imagens? Em qual servidor? No Sitecore? No Source Control (TFS)?

2) Como os Designers e Desenvolvedores devem trabalhar juntos? Sei que os desenvolvedores trabalham em suas próprias instâncias de Sitecore, cada um em sua máquina local. Depois eles enviam suas alterações ao TFS, mas como eles pegam o trabalho dos Designers? Vamos supor que a funcionalidade foi implementada e apenas estão faltando mudanças de design – como estilos de fonte e algumas imagens – então onde os Designers devem fazer suas alterações? Em qual servidor? E depois disso, como esta instância é sincronizada com as outras instâncias?

Resposta: Tanto os Desenvolvedores quanto os Designers trabalham em suas máquinas locais, usando suas próprias instâncias de Sitecore. Eles usam o TFS como sistema de controle de versões, para integrar seus trabalhos mutuamente. Geralmente os Designers trabalham mais em arquivos CSS, Javascripts, Imagens, Sublayouts (markups), enquanto que os Desenvolvedores focam mais no código e na solução em si. Temos um Servidor de Integração Contínua (TeamCity) implantando as mudanças em 3 ambientes diferentes: 1) O Servidor de CI (Continuous Integration), o Servidor de QA (Qualidade/Testes) e o Servidor de Produção (para edição de conteúdo e acesso público).

Quando um Designer precisa, por exemplo, arrumar um problema de layout, ele fará isso em sua máquina local, depois enviará suas alterações para o TFS. Em seguida o TeamCity fará o deploy das mudanças para o Servidor de CI. Caso o build ocorra sem problemas, o Tester pode manualmente disparar um build para o Servidor de QA e testar as alterações. Se tudo estiver funcionando sem problemas, alguém pode disparar o build no Servidor de Produção, e a correção fica disponível ao público.

Neste segundo diagrama mostro detalhes sobre como configurar seu Servidor de Produção, separando Content Authoring (autoração de conteúdo) de Content Delivery (quando é publicado). Para mais detalhes sobre sobre como configurar servidores desta forma siga esta busca no Google (apenas inglês): sitecore content authoring delivery – Um bom artigo é este de John West.

MrmYI

Como lidar com mudanças no banco de dados do Sitecore?

3) Qual é a forma mais segura de sincronizar uma instância de Sitecore e seus databases? Tudo que for publicado nos servidores de produção precisa estar disponível nos ambientes de DEV, QA e UAT. Não queremos fazer nenhuma promoção manual de código, html, js e imagens. Existe alguma maneira de fazer estas coisas automaticamente, através de alguma ferramenta ou comando do Sitecore? Pessoalmente não gosto muito de usar pacotes do Sitecore para transportar mudanças.

Resposta: Você precisa do TDS (Team Development for Sitecore), como aparece no primeiro diagrama. Use esta ferramenta para serializar e deserializar items, depois transporte as mudanças de uma instância para outra utilizando TFS. O bom disso é que você pode usar o TeamCity para automaticamente empurrar os items que mudaram para os ambientes de CI/QA/Produção.

Onde encontrar boa documentação?

4) Você conhece algumas boas referências? Onde posso encontrar respostas a questões similares? Algum website, livro, blog?

Resposta: A principal fonte de documentação para Sitecore é sua própria SDN – Você pode registrar-se gratuitamente, ou ter uma conta estendida se tiver uma licensa Sitecore. Posso também sugerir alguns ótimos blogs, como os de John West e Alex Shyba, e também – porque não – este humilde blog que inauguro com este post.

Publicado em Continuous Integration, Environments, TDS, Team City Marcado com: , , , ,
3 comentários sobre “Ambientes Sitecore para Dev, QA, UAT e Produção
  1. Jack says:

    Wow, this is in every recspet what I needed to know.

  2. Pilar says:

    Hi Daniel,Your post is awesome with lot of inotomafirn.I am dealing with the same situation where we need to access sitecore content along with financial data from REST. REST is hosted on the main sitecore site. We have only one communication channel available between Mobile app/site to server via REST.svc. I already have setup the device with querystring(api=1). I was wondering what can be used as a layout? I have tried the .aspx with no success yet. Can you give me some more inotomafirn about accessing the sitecore for API from REST? Is there a way to avoid direct sitecore access from the mobile app and still get the response in xml/c#/json object? We are doing this to get the Sitecore context to gain the benefit of sitecore resources rather than just accessing the content by targeting the field values.Any help much appreciated,Regards, VP

  3. Hello Pilar,

    I think you are looking for Sitecore Item WebAPI (https://sdn.sitecore.net/upload/sdn5/modules/sitecore%20item%20web%20api/sitecore_item_web_api_developer_guide_sc65-66-usletter.pdf). This is a REST API you can use from any web technology.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

  Am Not Spammer

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>