Principais aspectos a serem lembradosKey Takeaways

A seguir, encontram-se as conclusões mais importantes deste guia, que servem como um resumo dos principais aspectos a serem lembrados.As a summary and key takeaways, the following are the most important conclusions from this guide.

Benefícios do uso de contêineres.Benefits of using containers. As soluções baseadas em contêiner oferecem uma importante economia de custo porque ajudam a reduzir os problemas de implantação causados por dependências com falha em ambientes de produção.Container-based solutions provide important cost savings because they help reduce deployment problems caused by failing dependencies in production environments. Portanto, os contêineres melhoram significativamente as operações de produção e DevOps.Containers significantly improve DevOps and production operations.

Contêineres serão onipresentes.Containers will be ubiquitous. Os contêineres baseados no Docker estão se tornando o verdadeiro padrão no setor, com suporte dos principais fornecedores nos ecossistemas do Windows e do Linux, como Microsoft, Amazon AWS, Google e IBM.Docker-based containers are becoming the de facto standard in the industry, supported by key vendors in the Windows and Linux ecosystems, such as Microsoft, Amazon AWS, Google, and IBM. Provavelmente, em breve o Docker será predominante nos data centers de nuvem e locais.Docker will probably soon be ubiquitous in both the cloud and on-premises datacenters.

Contêineres como uma unidade de implantação.Containers as a unit of deployment. Um contêiner do Docker está se tornando a unidade padrão de implantação para qualquer serviço ou aplicativo baseado em servidor.A Docker container is becoming the standard unit of deployment for any server-based application or service.

Microsserviços.Microservices. A arquitetura de microsserviços está se tornando a abordagem preferencial para aplicativos críticos grandes ou complexos e distribuídos baseados em diversos subsistemas independentes na forma de serviços autônomos.The microservices architecture is becoming the preferred approach for distributed and large or complex mission-critical applications based on many independent subsystems in the form of autonomous services. Em uma arquitetura baseada em microsserviço, o aplicativo é criado em uma coleção de serviços que podem ser desenvolvidos, testados, implantados e ter as versões controladas de forma independente.In a microservice-based architecture, the application is built as a collection of services that are developed, tested, versioned, deployed, and scaled independently. Cada serviço pode incluir qualquer banco de dados autônomo relacionado.Each service can include any related autonomous database.

Design controlado por domínio e SOA.Domain-driven design and SOA. Os padrões de arquitetura de microsserviços derivam da SOA (arquitetura orientada a serviços) e do DDD (design controlado por domínio).The microservices architecture patterns derive from service-oriented architecture (SOA) and domain-driven design (DDD). Ao projetar e desenvolver microsserviços para ambientes com necessidades e regras dos negócios em evolução, é importante considerar as abordagens e os padrões de DDD.When you design and develop microservices for environments with evolving business needs and rules, it's important to consider DDD approaches and patterns.

Desafios dos microsserviços.Microservices challenges. Os microsserviços oferecem muitos recursos avançados, como implantação independente, fortes limites de subsistema e diversidade tecnológica.Microservices offer many powerful capabilities, like independent deployment, strong subsystem boundaries, and technology diversity. No entanto, eles também apresentam vários novos desafios relacionados com o desenvolvimento de aplicativos distribuídos, como modelos de dados fragmentados e independentes, comunicação resiliente entre microsserviços, consistência eventual e complexidade operacional como resultado da combinação de registros em log e monitoramento de informações de diversos microsserviços.However, they also raise many new challenges related to distributed application development, such as fragmented and independent data models, resilient communication between microservices, eventual consistency, and operational complexity that results from aggregating logging and monitoring information from multiple microservices. Esses aspectos geram um nível de complexidade muito maior do que um aplicativo monolítico tradicional.These aspects introduce a much higher complexity level than a traditional monolithic application. Assim, apenas cenários específicos são adequados para aplicativos baseados em microsserviço.As a result, only specific scenarios are suitable for microservice-based applications. Isso inclui aplicativos grandes e complexos com vários subsistemas em evolução.These include large and complex applications with multiple evolving subsystems. Nesses casos, vale a pena investir em uma arquitetura de software mais complexa, pois ela fornecerá uma agilidade e uma manutenção de aplicativos melhores a longo prazo.In these cases, it's worth investing in a more complex software architecture, because it will provide better long-term agility and application maintenance.

Contêineres para qualquer aplicativo.Containers for any application. Os contêineres são convenientes para os microsserviços, mas também podem ser úteis para aplicativos monolíticos baseados no .NET Framework tradicional, quando são usados contêineres do Windows.Containers are convenient for microservices, but can also be useful for monolithic applications based on the traditional .NET Framework, when using Windows Containers. Os benefícios de usar o Docker, como resolver vários problemas entre as fases de implantação e produção e fornecer ambientes de desenvolvimento e teste de última geração, aplicam-se a vários tipos de aplicativos diferentes.The benefits of using Docker, such as solving many deployment-to-production issues and providing state-of-the-art Dev and Test environments, apply to many different types of applications.

CLI versus IDE.CLI versus IDE. Com as ferramentas da Microsoft, é possível desenvolver aplicativos .NET em contêineres usando sua abordagem preferencial.With Microsoft tools, you can develop containerized .NET applications using your preferred approach. Você pode desenvolver com uma CLI e um ambiente baseado em editor usando a CLI do Docker e o Visual Studio Code.You can develop with a CLI and an editor-based environment by using the Docker CLI and Visual Studio Code. Outra opção é usar uma abordagem centrada em IDE com o Visual Studio e seus recursos exclusivos para Docker, como a depuração de aplicativos de vários contêineres.Or you can use an IDE-focused approach with Visual Studio and its unique features for Docker, such as multi-container debugging.

Aplicativos de nuvem resilientes.Resilient cloud applications. Em sistemas baseados em nuvem e sistemas distribuídos em geral, há sempre o risco de falha parcial.In cloud-based systems and distributed systems in general, there is always the risk of partial failure. Como clientes e serviços são processos separados (contêineres), um serviço pode não ser capaz de responder de forma oportuna a uma solicitação do cliente.Since clients and services are separate processes (containers), a service might not be able to respond in a timely way to a client’s request. Por exemplo, um serviço pode estar inativo por causa de uma falha parcial ou de manutenção, estar sobrecarregado e respondendo a solicitações de maneira extremamente lenta ou simplesmente não estar acessível durante um curto período devido a problemas de rede.For example, a service might be down because of a partial failure or for maintenance; the service might be overloaded and responding slowly to requests; or it might not be accessible for a short time because of network issues. Portanto, um aplicativo baseado em nuvem deve adotar essas falhas e ter uma estratégia para responder a elas.Therefore, a cloud-based application must embrace those failures and have a strategy in place to respond to those failures. Essas estratégias podem incluir políticas de repetição (reenviar mensagens ou repetir solicitações) e padrões de implementação disjuntor para evitar uma carga exponencial de solicitações repetidas.These strategies can include retry policies (resending messages or retrying requests) and implementing circuit-breaker patterns to avoid exponential load of repeated requests. Basicamente, os aplicativos baseados em nuvem precisam ter mecanismos resilientes, seja com base na infraestrutura de nuvem ou personalizados, como os de alto nível fornecidos pelos orquestradores ou barramentos de serviço.Basically, cloud-based applications must have resilient mechanisms—either based on cloud infrastructure or custom, as the high-level ones provided by orchestrators or service buses.

Segurança.Security. O mundo moderno de contêineres e microsserviços pode expor novas vulnerabilidades.Our modern world of containers and microservices can expose new vulnerabilities. Há várias maneiras de implementar a segurança básica de aplicativo, com base em autenticação e autorização.There are several ways to implement basic application security, based on authentication and authorization. No entanto, a segurança do contêiner precisa considerar os principais componentes adicionais que resultam em aplicativos inerentemente mais seguros.However, container security must consider additional key components that result in inherently safer applications. Um elemento crítico da criação de aplicativos mais seguros é implantar uma maneira segura de comunicar-se com outros aplicativos e sistemas, algo que geralmente requer credenciais, tokens, senhas e assim por diante, conhecidos como segredos do aplicativo.A critical element of building safer apps is having a secure way of communicating with other apps and systems, something that often requires credentials, tokens, passwords, and the like, commonly referred to as application secrets. Toda solução de segurança precisa seguir as práticas recomendadas de segurança, como criptografia de segredos quando em trânsito e em repouso, e impedir que os segredos vazem ao serem consumidos pelo aplicativo final.Any secure solution must follow security best practices, such as encrypting secrets while in transit and at rest, and preventing secrets from leaking when consumed by the final application. Esses segredos precisam ser armazenados e mantidos em segurança, como quando o Azure Key Vault é usado.Those secrets need to be stored and kept safely, as when using Azure Key Vault.

Orquestradores.Orchestrators. Os orquestradores baseados em contêiner, como o Serviço de Kubernetes do Azure e o Azure Service Fabric são uma parte fundamental de qualquer microsserviço e aplicativo baseado em contêiner significativo.Container-based orchestrators, such as Azure Kubernetes Service and Azure Service Fabric are key part of any significant microservice and container-based application. Esses aplicativos apresentam alta complexidade, necessidades de escalabilidade e constante evolução.These applications carry with them high complexity, scalability needs, and go through constant evolution. Este guia apresentou os orquestradores e sua função em soluções baseadas em microsserviços e contêineres.This guide has introduced orchestrators and their role in microservice-based and container-based solutions. Se suas necessidades de aplicativo estão exigindo aplicativos complexos em contêineres, pode ser útil procurar outros recursos para saber mais sobre os orquestradores.If your application needs are moving you toward complex containerized apps, you will find it useful to seek out additional resources for learning more about orchestrators.