Modernização de Aplicação no Microsoft Azure: Explorando o potencial da nuvem
()
Sobre este e-book
Neste livro, por meio de práticas DevOps e arquitetura de microsserviços, o time de engenheiros da Microsoft fará a migração de uma aplicação para a nuvem em um processo de modernização. Você acompanhará todas as etapas, conhecerá os conceitos e verá na prática a eficiência e as vantagens da adoção da computação em nuvem.
Relacionado a Modernização de Aplicação no Microsoft Azure
Ebooks relacionados
Azure: Coloque suas plataformas e serviços no cloud Nota: 0 de 5 estrelas0 notasAgile: Desenvolvimento de software com entregas frequentes e foco no valor de negócio Nota: 5 de 5 estrelas5/5Desenvolvimento web com ASP.NET MVC Nota: 0 de 5 estrelas0 notasEngenharia de Requisitos: software orientado ao negócio Nota: 5 de 5 estrelas5/5Desenvolvimento efetivo na plataforma Microsoft: Como desenvolver e suportar software que funciona Nota: 0 de 5 estrelas0 notasArquitetura de software distribuído: Boas práticas para um mundo de microsserviços Nota: 0 de 5 estrelas0 notasProgramação Funcional: Uma introdução em Clojure Nota: 4 de 5 estrelas4/5Primeiros passos com Node.js Nota: 0 de 5 estrelas0 notasDevOps na prática: Entrega de software confiável e automatizada Nota: 0 de 5 estrelas0 notasKotlin com Android: Crie aplicativos de maneira fácil e divertida Nota: 4 de 5 estrelas4/5JavaScript Assertivo: Testes e qualidade de código em todas as camadas da aplicação Nota: 0 de 5 estrelas0 notasSegurança em aplicações Web Nota: 0 de 5 estrelas0 notasDesbravando SOLID: Práticas avançadas para códigos de qualidade em Java moderno Nota: 5 de 5 estrelas5/5MySQL: Comece com o principal banco de dados open source do mercado Nota: 4 de 5 estrelas4/5Orientação a Objetos e SOLID para Ninjas: Projetando classes flexíveis Nota: 5 de 5 estrelas5/5Zend Expressive e PHP 7: Uma união poderosa para a criação de APIs Nota: 0 de 5 estrelas0 notasMétricas Ágeis: Obtenha melhores resultados em sua equipe Nota: 0 de 5 estrelas0 notasProtractor: Lições sobre testes end-to-end automatizados Nota: 0 de 5 estrelas0 notasKubernetes: Tudo sobre orquestração de contêineres Nota: 5 de 5 estrelas5/5Inteligência Artificial como serviço: Uma introdução aos Serviços Cognitivos da Microsoft Azure Nota: 3 de 5 estrelas3/5Deixe seu código limpo e brilhante: Desmistificando Clean Code com Java e Python Nota: 0 de 5 estrelas0 notasComputação em Nuvem Nota: 5 de 5 estrelas5/5Aplicações web real-time com Node.js Nota: 5 de 5 estrelas5/5Gerenciando Projetos de Desenvolvimento de Software com PMI, RUP e UML (5a. edição) Nota: 0 de 5 estrelas0 notasSOA aplicado: Integrando com web services e além Nota: 0 de 5 estrelas0 notasDesign Patterns com PHP 7: Desenvolva com as melhores soluções Nota: 5 de 5 estrelas5/5GraphQL: A revolucionária linguagem de consulta e manipulação de dados para APIs Nota: 0 de 5 estrelas0 notasRobot framework: Automação versátil e consistente para testes Nota: 0 de 5 estrelas0 notasMezzio e PHP 7: Uma união poderosa para criação de APIs Nota: 2 de 5 estrelas2/5ECMAScript 6: Entre de cabeça no futuro do JavaScript Nota: 5 de 5 estrelas5/5
Programação para você
Lógica de programação com Portugol: Mais de 80 exemplos, 55 exercícios com gabarito e vídeos complementares Nota: 0 de 5 estrelas0 notasLógica de Programação: Crie seus primeiros programas usando Javascript e HTML Nota: 4 de 5 estrelas4/5O universo da programação: Um guia de carreira em desenvolvimento de software Nota: 5 de 5 estrelas5/5Introdução a Data Science: Algoritmos de Machine Learning e métodos de análise Nota: 0 de 5 estrelas0 notasPython: Escreva seus primeiros programas Nota: 4 de 5 estrelas4/5Scrum 360: Um guia completo e prático de agilidade Nota: 5 de 5 estrelas5/5MySQL: Comece com o principal banco de dados open source do mercado Nota: 4 de 5 estrelas4/5PostgreSQL: Banco de dados para aplicações web modernas Nota: 5 de 5 estrelas5/5HTML5 e CSS3: Domine a web do futuro Nota: 4 de 5 estrelas4/5Introdução à programação em C: Os primeiros passos de um desenvolvedor Nota: 4 de 5 estrelas4/5React Native: Desenvolvimento de aplicativos mobile com React Nota: 5 de 5 estrelas5/5Orientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva Nota: 5 de 5 estrelas5/5PHP e Laravel: Crie aplicações web como um verdadeiro artesão Nota: 0 de 5 estrelas0 notasMachine Learning: Introdução à classificação Nota: 0 de 5 estrelas0 notasTrilhas Python: Programação multiparadigma e desenvolvimento Web com Flask Nota: 5 de 5 estrelas5/5Business Intelligence: Implementar do jeito certo e a custo zero Nota: 4 de 5 estrelas4/5Consultoria Especializada e Estratégias De Trade De Forex Nota: 5 de 5 estrelas5/5NodeMCU: 15 passos para se tornar um mestre em IoT Nota: 0 de 5 estrelas0 notasAprenda a programar com Python: Descomplicando o desenvolvimento de software Nota: 5 de 5 estrelas5/5ECMAScript 6: Entre de cabeça no futuro do JavaScript Nota: 5 de 5 estrelas5/5Python e mercado financeiro: Programação para estudantes, investidores e analistas Nota: 5 de 5 estrelas5/5Estruturas de Dados: Domine as práticas essenciais em C, Java, C#, Python e JavaScript Nota: 0 de 5 estrelas0 notasO Programador Apaixonado: Construindo uma carreira notável em desenvolvimento de software Nota: 5 de 5 estrelas5/5O Guia Definitivo para Geração de Renda com o ChatGPT para Empreendedores Nota: 0 de 5 estrelas0 notasDeixe seu código limpo e brilhante: Desmistificando Clean Code com Java e Python Nota: 0 de 5 estrelas0 notasGuia do mestre programador: Pensando como pirata, evoluindo como jedi Nota: 3 de 5 estrelas3/5Produtividade em C#: Obtenha mais resultado com menos esforço Nota: 0 de 5 estrelas0 notasChatbots para Telegram: Programe seus primeiros bots usando Python Nota: 0 de 5 estrelas0 notasSEO Prático: Seu site na primeira página das buscas Nota: 0 de 5 estrelas0 notas
Avaliações de Modernização de Aplicação no Microsoft Azure
0 avaliação0 avaliação
Pré-visualização do livro
Modernização de Aplicação no Microsoft Azure - Time de Customer Engineers da Microsoft
Sumário
ISBN
Prefácio
Quem somos nós?
Introdução
1. Conceitos iniciais
2. Lift & Shift
3. Provisionamento da infraestrutura
4. Publicação da aplicação
5. Automação da publicação
6. Gerenciamento de código-fonte
7. Monitoramento da solução
8. Testes & QA
9. Automação em ambientes de testes
10. Desacoplamento
11. Microsserviços
12. Introdução ao contêiner
13. Orquestração de contêineres
14. Identidade e segurança
15. Resumo
16. Referências
ISBN
Impresso: 978-65-86110-72-2
Digital: 978-65-86110-74-6
Caso você deseje submeter alguma errata ou sugestão, acesse http://erratas.casadocodigo.com.br.
Prefácio
Rubiana Rosa
Em 2016, o nosso time de engenheiros de suporte da Microsoft teve a fantástica e gratificante experiência em poder compartilhar seu conhecimento, as melhores práticas de desenvolvimento, através da publicação do nosso primeiro livro chamado Desenvolvimento efetivo na plataforma Microsoft: Como desenvolver e suportar software que funciona.
Naquela ocasião, recebemos inúmeros feedbacks sobre como era importante ter um livro feito por desenvolvedores para desenvolvedores, e como o livro havia contribuído positivamente com a enorme comunidade técnica no Brasil. Isso nos incentivou a seguir adiante e a pensar na publicação de um segundo livro.
Durante esse período, muitas coisas mudaram, evoluíram. É sempre impressionante pensar que nos últimos cinco anos direcionamos nossos esforços e trabalhos para suportar nossos clientes no desenvolvimento e migração de suas aplicações para a nuvem. Nós nos preparamos para dar suporte aos nossos clientes para que eles consigam tirar o maior e melhor proveito do investimento feito em nossa plataforma.
Trabalhamos no advento de migrações e no desenvolvimento das aplicações, atendemos a milhares de clientes mundiais e pudemos observar que a transformação digital, a modernização e a migração para a nuvem são um caminho que para muitos ainda pode parecer distante, mas que, por outro lado, pode ser planejado e percorrido de modo rápido e seguro.
Decidimos então escrever nosso segundo livro com o objetivo de compartilhar a experiência do time de engenheiros de suporte da Microsoft, para guiar pessoas pelo caminho para a nuvem com sucesso! Certamente os nossos clientes poderão ter o retorno dos seus investimentos fazendo uso de técnicas e por meio da experiência de se ter um planejamento de modernização e migração e um desenvolvimento efetivo, que os permitam ter suas aplicações rodando na nuvem de maneira segura, escalável e ágil.
É um orgulho enorme poder fazer parte de um time que está sempre se atualizando, buscando o que há de mais moderno para os clientes e para a nossa comunidade técnica. Em um mundo onde a tecnologia muda tão rápido, ter esse compromisso com a atualização tecnológica é um desafio que o time de engenheiros de suporte da Microsoft gosta de enfrentar e compartilhar.
Espero que vocês aproveitem este novo livro, feito com dedicação, e que embarquem conosco nesta jornada para desenvolver suas aplicações seguindo as melhores práticas para que funcionem com sucesso na nuvem!
Rubiana Dalla Rosa, cloud solution architect manager, Apps & Infra, Microsoft
Scott Guthrie
The developer community has the unique opportunity to define the future. This book, written for developers by developers, explores concepts and tools that businesses and organizations of all sizes can adopt to modernize their applications on Microsoft Azure and build their own digital capability.
Scott Guthrie, executive vice president, Cloud + AI, Microsoft
Scott Hanselman
The cloud is confusing. It's happening and it's scary, but it brings with it opportunity and power. One engineer can do the work of many with a clear understanding of the cloud. I run three large websites in Azure and 15 small ones...alone. I have a CI/CD pipeline, reliable builds, automated tests in the cloud, automatic deployments, robust backups, and the result is scalable websites!
This book is rooted in the real world of the cloud and builds on top of real code in the form of the eShopOnTheWeb sample. This sample is then modernized step by step and is moved into the cloud.
There are enough tech books written in English. But this is a cloud book, an Azure book, a Brazilian book, written by Brazilians, for Brazilians. These engineers are your friends, your community leaders, and your software architects.
As a member of the .NET and Azure team at Microsoft, I want to thank the authors for taking this journey, and thank YOU the reader for coming along! Let's build something great!
Scott Hanselman, partner program manager, Developer Division, Microsoft
Quem somos nós?
Alexandre Teoi é engenheiro de computação e atua com desenvolvimento de software há 30 anos. Nesse período, teve a oportunidade de trabalhar com várias linguagens (C, C++, C#), criando e depurando softwares nos mais diversos sistemas operacionais (MS-DOS, Windows, Unix e Linux). Nas horas livres, gosta de passar o tempo com a família.
https://www.linkedin.com/in/ateoi/
Augusto Araujo atua como DevOps customer engineer no time de Apps & Infra Microsoft Brasil. Possui graduação em Tecnologia em Processamento de Dados e trabalha com desenvolvimento e suporte ao DevOps há 16 anos. Em seu tempo livre, gosta de praticar artes marciais (Jiu-Jitsu), assistir a séries e viajar para Minas Gerais para ver e passar um tempo com o Joaquim, seu filho.
https://www.linkedin.com/in/augustodearaujo/
Beatriz Matsui é bacharel em Ciência da Computação e em Ciência e Tecnologia pela Universidade Federal do ABC (UFABC). Tem experiência nas áreas de Inteligência Artificial e aprendizado de máquina e atua com desenvolvimento de software, DevOps e codificação de testes. Atualmente, é consultora de Azure Cloud & AI na Microsoft e cursa o mestrado em Ciência da Computação na UFABC. Em seu tempo livre, gosta de ler, assistir a filmes e séries e aprender novos idiomas.
https://www.linkedin.com/in/beatrizmatsui/
Christiano Donke trabalha com desenvolvimento desde os 12 anos de idade, e há 10 profissionalmente. É especialista em desenvolvimento mobile, serviços cognitivos e chatbots. Trabalha na Microsoft há sete anos, atuando com suporte e ministrando treinamentos. Também atua como professor no curso de Inteligência Artificial do SENAC-SP. No tempo livre, gosta de ficar em família, ver filmes e jogar um pouco.
https://www.linkedin.com/in/cdonke/
Cleber Dantas é especialista em desenvolvimento de software com foco em computação em nuvem, arquitetura de soluções e troubleshooting. Tem 15 anos de experiência no mercado de TI, possui passagens por startups e empresas de grande porte.
https://www.linkedin.com/in/cleberdantas/
Demetrio Costa atua como customer engineer na Microsoft. É formado em Processamento de Dados pela FATEC-SP e possui especialização em Engenharia de Software pela PUC-SP. Com quase 15 anos de experiência e 5 de Microsoft, atua com desenvolvimento e suporte de soluções diversas. Demetrio gosta de passar seu tempo livre com sua esposa Aline e seu filho Pedro, conhecendo lugares novos ou assistindo a filmes e séries.
https://www.linkedin.com/in/demetrio-costa/
Eric Shimokawa sempre foi apaixonado por tecnologia e informática. Aos 11 anos já brincava de desenvolvimento em seu MSX e desde lá nunca mais abandonou o computador. Com mais de 25 anos de experiência em TI, já atuou com infraestrutura, desenvolvimento, testes e gerenciamento de equipes. Apaixonado por agilidade e boas práticas, trabalhou por 8 anos como PFE/CE de Desenvolvimento e DevOps. Atualmente é Head de TI na Nova Futura Investimentos.
https://www.linkedin.com/in/eric-shimokawa-23bbb86/
Fernando Henrique Inocêncio Borba Ferreira atua como software engineer em produtos dentro do Microsoft Azure. No passado, atuou como software engineer no Microsoft Windows e como premier field engineer em Modern Apps. Fernando possui bacharelado e mestrado em sistemas de informação. Atuando com desenvolvimento de software há mais de dez anos, ele também foi Microsoft MVP em Data Platform Development e Visual C#. Fernando usa seu tempo livre com sua família, livros, passeando ao ar livre e auxiliando pesquisas acadêmicas.
https://www.linkedin.com/in/ferhenrique/
Iury Oliveira atua como customer engineer na Microsoft. Bacharel em Administração de Empresas e Ciência da Computação, trabalha com desenvolvimento e suporte ao desenvolvimento de software há quase 20 anos. Foi Microsoft Certified Trainer e ministra palestras em diversos eventos. Em seu tempo livre, gosta de ler, assistir a filmes, ir ao Parque do Ibirapuera com o pequeno João, seu primeiro filho.
https://www.linkedin.com/in/iuryoliv/
James Jodai atua como customer engineer em CSU Apps & Infra. Possui bacharelado em Ciência da Computação e MBA em gestão estratégica e econômica de projetos e atua com suporte e desenvolvimento de software há mais de 20 anos. Em seu tempo livre, gosta de assistir a filmes com sua família e pescar.
https://www.linkedin.com/in/jamesjodai/
José Otávio Quaglio atua como software engineer no time do M365. Anteriormente atuava como customer engineer no time de Apps & Infra. Possui bacharelado em Ciência da Computação e MBA em Gestão de Projetos. Trabalha com desenvolvimento de software e suporte há mais de 15 anos, em sua maior parte com tecnologias Microsoft. Em seu tempo livre costuma assistir a séries, jogar videogame, viajar e sair com os amigos e família.
https://www.linkedin.com/in/joseotavioquaglio/
Leandro Prado (Piá) atua como customer engineer em Apps & Infra focado em DevOps. Bacharel em Sistemas de Informação pela PUC-PR, ao longo da carreira trabalhou como desenvolvedor em diversas linguagens (Delphi, PHP, Java, .NET) e atualmente ajuda clientes Microsoft Premier a adotar as melhores práticas em DevOps. Em seu tempo livre, costuma sujar a mão de graxa debaixo do seu carro de arrancada.
https://www.linkedin.com/in/leandroprado/
Luís Henrique Demetrio possui bacharelado em Análise de Sistemas e pós-graduação em Engenharia de Software no ITA. Possui 20 anos de experiência na profissão. Trabalha como customer engineer no time global da Microsoft em conjunto com os Program Managers do Windows.
https://www.linkedin.com/in/luishenriquedemetrio/
Marcelo Tokunaga Nakamura é engenheiro do time Azure App Consult baseado em São Paulo e tem mais de 20 anos de experiência trabalhando com a Microsoft e parceiros desenvolvendo e arquitetando soluções. Desde 2010 trabalha com Azure focando em contêineres, dispositivos e microsserviços. Marcelo também é pai de três filhos e avô de um neto, músico e proprietário de um pequeno pet shop.
https://www.linkedin.com/in/marcelotokunaga/
Rafael Guglielmello de Andrade atua como customer engineer em Apps & Infra. Formado em Análise de Sistema e MBA em Engenharia de Software. Atua com aplicações corporativas há dez anos com foco em tecnologias Microsoft e projetos de integração. Em seu tempo livre, gosta de tocar clássicos do rock na guitarra/violão e estuda técnicas de fotografia.
https://www.linkedin.com/in/rafael-guglielmello/
Rafael Teixeira é formado em Engenharia da Computação, pós-graduado em Segurança da Informação pelo ITA e possui MBA em Gestão de Tecnologia pela FGV. É apaixonado por computadores e tecnologia desde a infância. Curioso em todas as áreas da computação, acabou focando sua carreira em desenvolvimento de software, análise avançada de performance e problemas produtivos de aplicações. Com mais de 12 anos de experiência e há 8 atuando como engenheiro (Customer Engineer) na Microsoft, ajuda clientes em suas jornadas de sucesso através da tecnologia. Além disso, participou do desenvolvimento de ferramentas e produtos da Microsoft, como o DebugDiag e .NET Performance Tuning e Optimization. Fora da computação, adora conhecer e aprender coisas novas, desde a prática de diferentes esportes, mecânica, eletrônica, liderança, pessoas até gastronomia.
https://www.linkedin.com/in/rafaelboschiniteixeira
Rubiana Dalla Rosa possui mais de 25 anos de experiência em TI. Trabalhou nos últimos 14 anos na Microsoft, empresa pela qual tem profunda admiração e respeito. Com foco em atendimento aos clientes e gerenciamento de pessoas, Rubiana acredita que um time forte, com pessoas altamente capacitadas e preparadas, é a chave para revolucionar os negócios.
Victor Zamora (Vitão) atua como customer engineer em Apps & Infra. Bacharel em Administração de Empresas, trabalha com desenvolvimento de software há mais de 30 anos tendo desempenhado diversos papéis ao longo desse tempo. Microsoft Certified Trainer, ministrou treinamentos nos principais parceiros MS em São Paulo. Nas horas vagas, gosta de ler, ouvir música ou assistir a algo interessante na televisão.
https://www.linkedin.com/in/vafzamora/
Introdução
Sejam bem-vindos ao mundo da computação, onde aplicações podem ser desenvolvidas em um curto espaço de tempo e hospedadas em ambientes prontos e capazes de atender qualquer volume de usuários simultâneos ou de demanda de negócio, seja ele sazonal ou diário. E sim, estamos falando da computação em nuvem, no mundo Microsoft, o Microsoft Azure.
Logicamente, essa é uma afirmação que conta com inúmeras variáveis para ser verdadeira. Mas felizmente a maioria delas está cada vez mais sob responsabilidade de quem constrói as aplicações, sejam eles arquitetos de desenvolvimento, arquitetos de infraestrutura ou desenvolvedores. No atual momento em que vivemos, a maioria dos serviços utilizados pelas aplicações, como banco de dados, caches, notificações, mensagerias, monitorações e outros, já foi pensada, desenhada e desenvolvida na nuvem para ter alta disponibilidade, escalabilidade e, dessa forma, atender altíssimos volumes de transações simultâneas, e tudo dependendo apenas das escolhas corretas dos serviços de nuvem, seu tamanho, região e suas configurações.
Não estamos afirmando que toda a responsabilidade de fazer uma aplicação cumprir o seu papel com excelência seja unicamente do time que a produziu, mas com certeza conseguimos afirmar que cada vez mais o poder para isso acontecer está nas mãos dos arquitetos e desenvolvedores, pois toda infraestrutura necessária (e serviços dependentes) para rodar nossas aplicações está pronta, disponível e cada dia mais robusta e madura. Sabemos também que o sucesso de uma aplicação não está apoiado unicamente no seu processo de desenvolvimento inicial, mas sim em um ciclo de desenvolvimento e entrega contínua, e aqui entra a importância da cultura e prática DevOps.
Porém, para que possamos extrair todo esse potencial mencionado da computação em nuvem para nossas aplicações, precisamos conhecer os serviços disponíveis na nuvem, suas características de uso e corretas aplicabilidades. Somente assim tomaremos as decisões corretas para obter os principais benefícios da computação em nuvem, que estão atreladas a produtividade e agilidade no desenvolvimento (time to market), disponibilidade, performance e eficiência operacional (redução de custos).
Além de conhecer os serviços disponíveis e suas características a fim de fazer as escolhas corretas dadas as necessidades de sua aplicação, também precisamos entender os novos padrões de arquitetura, desenvolvimento e metodologias para obter os benefícios da computação em nuvem. Por exemplo, para termos uma aplicação com alta disponibilidade, não podemos contar somente com as escolhas corretas dos serviços de nuvem, precisamos também definir uma arquitetura e produzir código capaz de se recuperar de erros em tempo de execução (resiliente) e escalar com base na demanda, sem perder performance.
Agora imagine a situação de aplicações que recebem grandes variações no volume de acessos e processamento, com picos baseados em sazonalidades e datas especiais. Se elas não forem arquitetadas e construídas pensando nos pontos mencionados, provavelmente não conseguirão tirar proveito da computação em nuvem e sua performance não será satisfatória.
O objetivo aqui não é trazer uma visão de dificuldade ou complexidade para o desenvolvimento de aplicações para nuvem, muito pelo contrário, pois ela realmente traz muita facilidade, agilidade e um potencial quase sem limites para nossas necessidades atuais. O objetivo principal até aqui é entendermos que, quanto mais essas aplicações estiverem adequadas para nuvem, melhor poderão explorar os benefícios deste novo mundo, citados anteriormente. Dessa forma, uma aplicação que foi desenhada para nuvem desde o início de seu desenvolvimento com certeza terá vantagem em obter esses benefícios.
Sabemos que esse não é um cenário único, principalmente falando do mundo corporativo, que possuía aplicações projetadas e desenvolvidas em uma época em que nem se imaginava a computação em nuvem. Agora, essas aplicações podem ser migradas para nuvem e obter os mesmos benefícios através de um processo de modernização. É exatamente este cenário que exploraremos em detalhes neste livro. Passaremos por todas as etapas, processos, conceitos e práticas para levar uma aplicação não projetada para nuvem, obtendo o máximo da computação em nuvem.
Antes de iniciarmos nossa jornada na modernização de aplicação, falaremos um pouco sobre alguns conceitos essenciais do Microsoft Azure e também do Microsoft Azure Well-Architected Framework, framework de arquitetura de soluções para nuvem. Esses conceitos serão a base para nossa jornada e todas as ações tomadas durante a modernização.
Como este livro está organizado?
O livro está organizado para você ter uma sequência cronológica para migrar sua aplicação para a nuvem. Começamos no Capítulo 1 - Conceitos iniciais falando dos conceitos básicos, modelos de implantação e sobre o framework Azure Well-Architected.
No Capítulo 2 - Lift & Shift, apresentamos a arquitetura da aplicação que vamos utilizar no livro e abordamos a estratégia Lift & Shift de migração para o Microsoft Azure com o mínimo de alterações.
No Capítulo 3 - Provisionamento da infraestrutura, criaremos todo o ambiente necessário para a aplicação onde ela possa ser facilmente escalada e, no Capítulo 4 - Publicação da aplicação, vamos adaptá-la para que ela seja executada em um ambiente escalável e fazer a primeira publicação da aplicação.
No Capítulo 5 - Automação da publicação, criaremos um script para ajudar em todos os processos de publicação.
No Capítulo 6 - Gerenciamento de código-fonte, começamos a adicionar algumas práticas básicas para o time de desenvolvimento, como gerenciamento de código, estratégias de branch e merge usando o GitHub e a adotar algumas práticas de DevOps, como Integração Contínua (CI) e Entrega Contínua (Continuous Delivery). Vamos usar GitHub Actions para automatizar todo o processo de Build e Release visto no capítulo anterior. Com a aplicação rodando no Microsoft Azure, adicionaremos algumas melhorias na aplicação.
Dentro do Capítulo 7 - Monitoramento da solução, vamos configurar o Application Insights para monitorar a aplicação, acompanhar algumas métricas e começar a conhecer os usuários da aplicação, criando um processo de feedback contínuo.
No Capítulo 8 - Testes & QA, vamos melhorar o processo de desenvolvimento com a adoção de testes unitários, testes integrados, testes de interface etc., aumentando a qualidade da nossa aplicação.
Para realizar a execução dos testes de maneira automatizada, no Capítulo 09 - Automação em ambientes de testes, descrevemos como criar um ambiente isolado para rodar os testes e também integrar a execução do testes unitários como parte do processo de CI.
A partir do Capítulo 10 - Desacoplamento iniciamos uma jornada de melhorias na aplicação. Para que a aplicação possa evoluir, é necessário que ela possua características de flexibilidade e manutenibilidade que podemos obter através de baixo acoplamento entre as suas partes utilizando interfaces e injeção de dependências.
No Capítulo 11 - Microsserviços, vamos abordar como podemos evoluir nossa aplicação monolítica para que ela possa atender uma maior demanda de usuários adotando uma arquitetura de microsserviços.
No Capítulo 12 - Introdução ao contêiner, iniciamos a criação de imagens Docker. Vamos enviá-las para um Container Registry e reconfigurar nosso processo de CI para automatizar tudo isso. Depois, no Capítulo 13 - Orquestração de contêineres, veremos como podemos migrar a aplicação para rodar em um ambiente Docker e sendo orquestrado pelo Kubernetes.
No Capítulo 14 - Identidade, vamos falar sobre os protocolos OAuth 2.0 e OpenID Connect e algumas formas de manter a aplicação mais segura utilizando serviços de gestão de identidade e proteção como o Azure B2C.
Por fim, no Capítulo 15 - Resumo falamos sobre os benefícios que toda essa jornada de adoção à nuvem trouxe para a aplicação e outros serviços do Azure que podemos utilizar.
Capítulo 1
Conceitos iniciais
Escrito por Rafael Teixeira e Leandro Prado.
1.1 O que é o Microsoft Azure?
O Azure é uma plataforma de nuvem da Microsoft, na qual podemos hospedar aplicações e utilizar diversos serviços de tecnologia de forma prática e eficiente. O Azure disponibiliza inúmeros serviços, como AI + Machine Learning, Container, base de dados, redes, discos, aplicações Web etc. Você pode ver todos os serviços disponibilizados pelo Azure através deste link: https://azure.microsoft.com/en-in/services/.
Atualmente o Azure possui data centers distribuídos pelo mundo todo, divididos em 64 regiões conforme a figura a seguir. Cada região possui mais de um data center para garantir a alta disponibilidade caso ocorra algum desastre. No momento em que este livro está sendo escrito, o Azure possui data centers em duas regiões no Brasil (Brazil South e Brazil Southeast) para serviços que necessitam de alta disponibilidade.
Regiões do Azure.Figura 1.1: Regiões do Azure.
Para mais detalhes das regiões do Azure https://azure.microsoft.com/en-us/global-infrastructure/geographies/.
Vantagens de computação em nuvem
Pay-as-you-go: os clientes não precisam comprar hardware e software para recursos de nuvem. Não há despesas de capital para usar um recurso na nuvem, os clientes simplesmente pagam pelo tempo que usaram aquele recurso.
Acesso global: os recursos da nuvem estão disponíveis globalmente através da internet. Os clientes podem acessar seus recursos sob demanda de qualquer lugar.
Recursos ilimitados: a escala da nuvem é ilimitada; os clientes podem provisionar quantos recursos eles quiserem, sem quaisquer restrições. Isso é também conhecido como escalabilidade ilimitada. (Para evitar um desperdício de consumo de recursos excessivos, cada subscrição do Azure possui limites, que podem ser alterados através de chamados criados para o suporte do Azure).
Serviços gerenciados: o provedor de nuvem fornece vários serviços que são geridos por eles para os clientes. Isso permite uma diminuição no gerenciamento técnico desses serviços, aumentando a facilidade de administração por parte dos clientes.
1.2 Modelos de implantação
A adoção da nuvem pode ser realizada através de três tipos diferentes para a implantação de sua solução.
Infraestrutura como serviço (Infrastructure as a service – IaaS, em inglês)
IaaS é o tipo de implantação que permite que os clientes provisionem sua infraestrutura no Azure, ou seja, nesse modelo é possível criar máquinas virtuais, redes, discos etc. sem precisar de um data center. Uma das vantagens do IaaS é aumentar seu poder de processamento de maneira fácil. Outra vantagem em utilizar IaaS é não