O blog da AWS
Aumente a visibilidade e a governança das aplicações usando o AWS Service Catalog AppRegistry
Por Remek Hetman, Principal Cloud Architect
Muitos clientes implantam aplicações com uma grande quantidade de recursos utilizando os templates do AWS CloudFormation. À medida que os clientes começam a escalar, esses templates são frequentemente reutilizados em várias aplicações. Nesse ponto, tarefas importantes, como identificar aplicações implantadas e entender quais stacks do CloudFormation estão associadas a uma aplicação tornam-se mais difíceis. Visibilidade é um componente importante de uma prática madura de DevOps/SecOps. Até hoje, os clientes vinham utilizando ferramentas complexas personalizadas ou soluções de terceiros para resolver esse problema.
No último re:Invent, o AWS Service Catalog lançou um novo recurso chamado AppRegistry para ajudar os clientes a criarem nativamente um inventário de recursos da AWS que contém insights sobre os usos dos recursos entre aplicações.
O AWS Service Catalog AppRegistry permite que você crie um repositório com as suas aplicações e os recursos associados a elas. Em seguida, você pode definir e gerenciar os metadados da aplicação. Isso permite que você entenda o contexto das suas aplicações e os recursos em seus ambientes. Essas capacidades permitem que as partes interessadas na empresa obtenham as informações necessárias para tomar decisões estratégicas e táticas mais bem informadas sobre os recursos da nuvem.
O AppRegistry fornece uma maneira de agrupar as suas aplicações e os seus respectivos recursos. Você define as aplicações dentro do AppRegistry fornecendo um nome, descrição, associações a stacks do CloudFormation e associações aos metadados da aplicação. As equipes de finanças, segurança e TI criam e gerenciam atributos que capturam os metadados importantes da aplicação. Esses atributos da aplicação oferecem suporte a um padrão aberto JSON, oferecendo flexibilidade para capturar a complexidade da taxonomia de metadados corporativos. Exemplos de atributos de aplicação incluem: classificação de segurança da aplicação, propriedade organizacional, tipo de aplicação, centro de custo e informações de suporte. Os desenvolvedores podem associar os atributos necessários às suas aplicações.
O uso do AppRegistry é destinado a uma ampla gama de interessados da empresa:
Cloud Centers of Excellence (CCOE): AppRegistry permite que essa equipe entenda o conjunto completo de aplicações e recursos provisionados por equipes de desenvolvimento e linhas de negócios. Isso pode ajudar a responder a perguntas de governança como por exemplo: “A aplicação foi implantada a partir de um template aprovado?”
Desenvolvedores: AppRegistry permite que os desenvolvedores encontrem todos os recursos associados a uma aplicação. Eles podem pesquisar por critérios diferentes que eles fornecem, como por exemplo, instância da aplicação, região, conta ou outras dimensões habilitadas por tags e metadados. Isso ajuda a responder a perguntas como: “Quantas versões da aplicação estão sendo executadas no ambiente de desenvolvimento?”
DevOps: AppRegistry permite que eles pesquisem e consultem em todos os domínios as operações aprovadas em recursos. Isso ajuda a responder a perguntas como: “Quais aplicações exigem atualização?”
Executivos C-level (CIO, CTO, CISO): AppRegistry permite que eles tenham uma visão completa das implantações na nuvem, incluindo todas as instâncias das aplicações e recursos nos ambientes de TI.
Segurança: AppRegistry permite que as equipes de segurança identifiquem recursos envolvidos em um incidente de segurança. Isso ajuda a responder à pergunta: “Quantas aplicações com essa classificação de dados estão usando uma versão não suportada de um componente ou de um recurso específico?”
Conformidade: AppRegistry permite que os membros da equipe de risco e conformidade obtenham uma visão de todos os recursos dentro de uma aplicação que atualmente atendem a certificações de conformidade específicas. Isso ajuda a responder à pergunta: “Quais aplicações estão marcadas como compatíveis com o HIPAA, FISMA ou FedRAMP, mas têm recursos que não atendem à essa classificação?”
Registrando uma aplicação no AppRegistry
Primeiro, iremos guiá-los através das etapas necessárias para criar grupos de atributos e aplicações. Em seguida, associaremos uma aplicação aos grupos de atributos e stacks do AWS CloudFormation.
Primeiro passo
O administrador do CCOE define grupos de atributos que são compartilhados por toda a empresa.
A criação desses grupos estabelece padrões para que a aplicação possa ser consistentemente encontrada usando os mesmos critérios. Como tal, esses grupos devem ter ampla aplicabilidade, por exemplo, definindo o posicionamento organizacional da aplicação, a classificação da aplicação e assim por diante.
Exemplos de comandos do AWS CLI de como criar um grupo de atributos:
aws servicecatalog-appregistry create-attribute-group --name "Corp_DataScience_SalesAnalytics" --description "Sales analytics applications managed by the data science teams." --attributes '{"Department":"datascience","CostCenter":"cc1","Team":"salesanalytics"}'
aws servicecatalog-appregistry create-attribute-group --name "Corp_Application_Classification_High" --description "Applications classified as high." --attributes '{"ApplicationResilience":"high","DataSecurity":"high","DataSensitivity":"high"}'
Exemplo de saída:
{ "attributeGroup": { "id": "0bf2qf4xa67ghtip6xzfnwonpr", "arn": "arn:aws:servicecatalog:us-east-1:XXXXXXXXXX:/attribute-groups/0bf2qf4xa67ghtip6xzfnwonpr", "name": "Corp_Application_Classification_High", "description": "Applications classified as high.", "creationTime": "2020-11-13T15:12:29.958404+00:00", "lastUpdateTime": "2020-11-13T15:12:29.958404+00:00", "tags": {} } }
Segundo passo
A equipe de desenvolvimento configura grupos de atributos.
Isso é realizado para rastrear informações específicas da equipe e da aplicação necessárias para relatórios e gerenciamento. A aplicabilidade destes grupos deve limitar-se a aplicação em questão.
Exemplos de comandos do AWS CLI de como criar um grupo de atributos:
aws servicecatalog-appregistry create-attribute-group --name "Commerce_AnalyticsEngine" --description "Real-time sales analytics applications managed by the data science teams." --attributes '{"Team":"developers","app-type":"processing","SLA":"1h","Runtime":"Python-3.6","Support":{"Phone":"XXX-XXX-XXXX","Email":"support@app.com"},"Compliance":["SOC-1","ISO-27018"]}}'
aws servicecatalog-appregistry create-attribute-group --name "Commerce_Payments" --description "24X7 real-time payments processing." --attributes '{"Team":"payments","app-type":"processing","SLA":"0.1h","Runtime":"Java-12","Support":{"Phone":"XXX-XXX-XXXX","Email":"support@app.com"},"Compliance":["SOC-1","PCI"]}}'
Observe que os atributos podem ter uma estrutura aninhada ou incluir listas.
Exemplo de saída:
{ "attributeGroup": { "id": "0bwdgnibevsc5clgtm7hehuljh", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/attribute-groups/0bwdgnibevsc5clgtm7hehuljh", "name": "Commerce_Payments", "description": "24X7 real-time payments processing.", "creationTime": "2020-11-13T15:20:19.248896+00:00", "lastUpdateTime": "2020-11-13T15:20:19.248896+00:00", "tags": {} } }
Terceiro passo
A equipe de desenvolvimento cria aplicações no AppRegistry.
Exemplos de comandos do AWS CLI de como criar uma aplicação:
aws servicecatalog-appregistry create-application --name "CC_Recommendation_App" --description "Real-Time Recommendation Engine Application." --tags Name=RecommendationEngine,ApplicationId=AppXYZ,ProductLine=PR10,BusinessUnit=BU1
aws servicecatalog-appregistry create-application --name "CC_Payments_App" --description "Real-time payments service for processing customer orders." --tags Name=ProcessingEngine,ApplicationId=AppXYZ,ProductLine=PR11,BusinessUnit=BU1
Exemplo de saída:
{ "application": { "id": "021n7zom01q573k7pfv404oj19", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "name": "CC_Payments_App", "description": "Real-time payments service for processing customer orders.", "creationTime": "2020-11-13T15:31:05.117977+00:00", "lastUpdateTime": "2020-11-13T15:31:05.117977+00:00", "tags": { "ApplicationId": "AppXYZ", "BusinessUnit": "BU1", "Name": "ProcessingEngine", "ProductLine": "PR11" } } }
Quarto passo
A equipe de desenvolvimento associa grupos de atributos às suas aplicações.
Exemplos de comandos do AWS CLI de como associar aplicações a grupos de atributos:
aws servicecatalog-appregistry associate-attribute-group --application "CC_Recommendation_App" --attribute-group "Commerce_AnalyticsEngine"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Payments_App" --attribute-group "Commerce_Payments"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Recommendation_App" --attribute-group "Corp_DataScience_SalesAnalytics"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Recommendation_App" --attribute-group "Corp_DataScience_SalesAnalytics"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Payments_App" --attribute-group "Corp_Application_Classification_High"
Exemplo de saída:
{ "applicationArn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "attributeGroupArn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/attribute-groups/0bf2qf4xa67ghtip6xzfnwonpr" }
Quinto passo
A equipe de desenvolvimento associa as stacks existentes do AWS CloudFormation à suas aplicações.
Exemplos de comandos do AWS CLI de como associar uma stack existente do AWS CloudFormation a uma aplicação:
aws servicecatalog-appregistry associate-resource --application CC_Recommendation_App --resource-type CFN_STACK --resource cc_recomendation_app-CloudFormation-stack-name
aws servicecatalog-appregistry associate-resource --application CC_Payments_App --resource-type CFN_STACK --resource cc_payment_app_cfn_stack
Exemplo de saída:
{ "applicationArn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "resourceArn": "arn:aws:cloudformation:us-east-1: XXXXXXXXXX:stack/cc_payment_app_cfn_stack/9b137f20-e081-11e9-b842-12069a319f62" }
Query AppRegistry
Nesta seção, mostrarei como consultar o AppRegistry para listar as aplicações que atendam a critérios específicos.
Primeiro, “Liste minhas aplicações para que eu saiba o que tenho no registro.”
aws servicecatalog-appregistry list-applications
Exemplo de saída:
{ "applications": [ { "id": "021n7zom01q573k7pfv404oj19", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "name": "CC_Payments_App", "description": "Real-time payments service for processing customer orders.", "creationTime": "2020-11-13T15:31:05.117000+00:00", "lastUpdateTime": "2020-11-13T15:31:05.117000+00:00" }, { "id": "02rsoggaiagoa64bo4pd41yvkc", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/02rsoggaiagoa64bo4pd41yvkc", "name": "CC_Recommendation_App", "description": "Real-Time Recommendation Engine Application.", "creationTime": "2020-11-13T15:25:39.683000+00:00", "lastUpdateTime": "2020-11-13T15:25:39.683000+00:00" } ] }
Em segundo lugar, você pode “Descrever minhas aplicações e seus atributos para que eu possa visualizá-los”.
#!/bin/bash
listApps=$(aws servicecatalog-appregistry list-applications --query 'applications[*].[name]' --output text)
for app in ${listApps[*]}
do
attrGroup=$(aws servicecatalog-appregistry list-associated-attribute-groups --application $app --max-results 1 --query 'attributeGroups[0]' --output text)
printf "Attributes for $app\n"
aws servicecatalog-appregistry get-attribute-group --attribute-group $attrGroup --query 'attributes'
done
Exemplo de saída:
Attributes for CC_Payments_App
"{\"ApplicationResilience\":\"high\",\"DataSecurity\":\"high\",\"DataSensitivity\":\"high\"}"
Attributes for CC_Recommendation_App
"{\"Department\":\"datascience\",\"CostCenter\":\"cc1\",\"Team\":\"salesanalytics\"}"
“Liste as stacks e recursos da minha aplicação.”
aws servicecatalog-appregistry list-associated-resources --application CC_Recommendation_App --query 'resources[*].[name]' --output text
Exemplo de saída:
cc_recomendation_app-CloudFormation-stack-name
Por fim, você pode procurar por aplicações associadas ao grupo.
#!/bin/bash
searchGroupName=Corp_Application_Classification_High
listApps=$(aws servicecatalog-appregistry list-applications --query 'applications[*].[name]' --output text)
for app in ${listApps[*]}
do
attrGroup=$(aws servicecatalog-appregistry list-associated-attribute-groups --application $app --max-results 1 --query 'attributeGroups[0]' --output text)
groupName=$(aws servicecatalog-appregistry get-attribute-group --attribute-group $attrGroup --query 'name' --output text)
if [ $groupName = $searchGroupName ]; then printf "$app\n"; fi
done
Exemplo de saída:
CC_Payments_App
Conclusão
Neste blog post, foi apresentado um novo recurso do AWS Service Catalog chamado AppRegistry. Esse recurso permite que as organizações criem um inventário de aplicações e recursos provisionados com a AWS. Mostramos alguns exemplos em que as aplicações podem ser agrupadas com vários atributos. Isso permite que diferentes equipes interessadas identifiquem aplicações com base em critérios específicos para sua necessidade. Permite também a identificação das stacks do AWS CloudFormation utilizadas para criar os recursos.
Este artigo foi traduzido do blog em Inglês.
Sobre o autor
Remek Hetman é Principal Cloud Architect
Revisores
Juliana Mayumi Takeuchi é Arquiteta de Soluções da AWS e atua auxiliando e apoiando clientes em sua jornada na nuvem.
Clerinsom Sant’Ana é Arquiteto de Soluções da AWS com foco em clientes corporativos na área de Mineração, Logística & Transporte, Manufatura e Aeroespacial.
Bruno Tonetto é Arquiteto de Soluções da AWS. Ele trabalha com clientes de petróleo e gás da AWS no Brasil, proporcionando orientação técnica para infraestrutura, workloads analíticos e serverless para ajudá-los a fazer o melhor uso dos serviços da AWS. Fora do trabalho, ele gosta de andar de bicicleta com sua esposa e filha na orla do Rio de Janeiro.