Tumgik
#arquitetura de microserviços
Text
O futuro da programação está na Nuvem: Conheça a linguagem Go
A programação está em constante evolução e, com o crescimento da nuvem (O Netskope Cloud and Threat Report: Cloud Data Sprawl), a tendência é que cada vez mais aplicações sejam desenvolvidas nesta plataforma.
O futuro da programação está na Nuvem: Conheça a linguagem Go A programação está em constante evolução e, com o crescimento da nuvem (O Netskope Cloud and Threat Report: Cloud Data Sprawl), a tendência é que cada vez mais aplicações sejam desenvolvidas nesta plataforma. A linguagem Go é uma das principais apostas para o futuro da programação na nuvem e é fundamental conhecer suas características…
Tumblr media
View On WordPress
0 notes
progrmandoemmarte · 1 year
Text
Por que a arquitetura de microsserviços é uma tendência atual no desenvolvimento de software
Novo Post: Por que a arquitetura de microsserviços é uma tendência atual no desenvolvimento de software
O que são microsserviços ? Microsserviços é um estilo arquitetural com o objetivo de estruturar serviços que são: Independentes e entregáveis Um pequeno time como dono Uma única responsabilidade, de acordo com o negócio Baixo acoplamento e forte coesão. De acordo com Sam Newman no seu livro Building Microservices, Os microserviços são serviços independentes que podem ser lançados…
Tumblr media
View On WordPress
1 note · View note
brasilempregos · 1 year
Link
Descrição da vaga Analista de projetos (2061) Descrição: Mais de 04 anos de experiência em gestão de projetos; Experiência com gestão de projetos Agile e principalmente Waterfall; Conhecimento e experiência em análise de requisitos, principalmente escrita de historias; Experiência em projetos de Desenvolvimento de APIs e Integrações ; Experiência em projetos com arquitetura de microserviços e Event Drive Design (arquitetura de eventos); Conhecimento em BDD, Testes de Aceitação e homologação de sistema; Boa comunicação, facilidade de relacionamento principalmente atuando transversalmente com diversas áreas internas; Inglês nível Avançado ou acima; Conhecimento em qualidade de projeto; Formação em tecnologia/TI. Desejável Experiência no setor Financeiro; Certificação Scrum ou atuação como Scrum Master é um diferencial. Gerenciar projetos de TI, seja em metodologia Agil, Cascata ou Hibrido; Preparar status reports dos projetos e apresentar em Comites semanais/mensais; Garantir entrega dos projetos no prazo, custo e escopo; Garantir que projetos atendam todos os requisitos técnicos da MFS, bem como sejam entregues com qualidade.
0 notes
lucasrfsblog · 3 years
Text
Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Diario de bordo
Diário de bordo
O Diário de Bordo é um repositório de conteúdo de fácil e rápido acesso para sua consulta e que tem por intuito te auxiliar a construir um caderno de anotações sobre a disciplina. O seu professor PUCPR elaborou parte de uma síntese da disciplina, a partir de elementos-chave, como frases impactantes do professor referência, principais conceitos e ferramentas e/ou métodos de destaque da disciplina. A outra parte dessa síntese cabe a você, respondendo às perguntas abertas que seu professor elaborou, para que você faça uma autoavaliação da sua aprendizagem. Assim, essas anotações te auxiliarão a fixar os conhecimentos adquiridos ao longo da disciplina e, por isso, o Diário de Bordo é essencial para que você se prepare para o seu Projeto de Aplicação do curso, pois ele te auxiliará a resgatar os pontos fundamentais da disciplina e a complementar as suas anotações.  
Perguntas abertas:
Ao longo da disciplina, os conhecimentos assimilados foram trabalhados na Live com o Professor e por meio do Questionário da Disciplina. Porém, propomos a você uma reflexão mais profunda, isto é, uma autoavaliação. Responda as seguintes perguntas sobre o tema da disciplina, formuladas pelo seu professor PUCPR. Você poderá responder às questões da forma que achar melhor: no seu tradicional caderno de anotações ou de forma digital, em qualquer formato, seja em Word, Bloco de Notas, Evernote etc. Lembre-se: anotar ajuda a memorizar.
 / Quais são as vantagens e desvantagens da arquitetura orientada a microsserviços?
 - Vantagens:
Permite realizar escala(in/out) e (up/down) de forma mais simplificada e barata.
Permite maior integração entre times de desenvolvimento e operações por simplificar boa parte da camada de operações.
Com o uso de microserviços, o deploy se torna mais rápido e menos arriscado, podendo ser efetuado até mesmo no horário da operação.
Portabilidade, com o uso de containers, você quebra a necessidade de configurar ambientes e ganha a liberdade de levar o seu serviço para qualquer lugar e garantir que vai funcionar.
 - Desvantagem:
Desacoplamento da aplicação. Isso pode ser colocado como uma vantagem também, mas o acoplamento da aplicação entrega maior facilidade de comunicação entre os serviços.
Complexidade de gerenciamento causado pelo desacoplamento.
Integração com o legado.
Monitoramento e obversability.
 / Quais são os benefícios da utilização de tecnologias como containers e serverless?
 Containers:
Portabilidade, com o uso de containers, você quebra a necessidade de configurar ambientes e ganha a liberdade de levar o seu serviço para qualquer lugar e garantir que vai funcionar.
Maior agilidade para subir e parar algum serviço.
Melhor exploração do uso de recursos computacionais.
 Serverless:
Reduz grande parte da complexidade de infraestrutura para os desenvolvedores pois abstrai boa parte de rotinas e curva de aprendizado.
Em cloud serverless é um ambiente totalmente gerenciado e com possibilidade de ser replicado para diversas zonas de disponibilidade, neste caso, o serviço torna-se ainda mais resiliente e disponível.
Ainda em Cloud, o custo pode ser menor dependendo de como for o uso deste componente.
  Frases do professor referência: 
Confira a seguir duas frases do professor referência de suma importância para a compreensão da disciplina que o(a) seu/sua professor PUCPR selecionou para você:
/ "Modernização de aplicações: conjunto de técnicas que podem ser utilizadas para orientar a conversão de um serviço legado em um modelo de serviço distribuído de microsserviços"
/ "O que é container? É uma forma que eu consigo empacotar o meu sistema operacional e todas as minhas bibliotecas que são necessárias para que meu código seja executado. [...] A partir desse momento temos um artefato, uma imagem de contêiner que podemos utilizar em vários locais diferentes."
 Três conceitos-chave:
Quais seriam os três conceitos-chave, que foram abordados ao longo das aulas, e que sintetizariam o tema da disciplina? Confira a seguir:
/ Escalabilidade é a capacidade de sua aplicação atender ao aumento da demanda de requisições e volume de dados. Quando falamos em computação, existem dois tipos de escalabilidade: a vertical e a horizontal. A escalabilidade vertical aumenta os recursos (CPU, memória e disco) de uma unidade de computação, sendo uma estratégia mais rápida, porém, pode elevar rapidamente os custos de operação. Já a escalabilidade horizontal visa a replicação da aplicação em mais de uma instância para atingir maior processamento. Esse tipo de escalabilidade exige que sua aplicação esteja preparada para o modelo de computação distribuída e é uma estratégia mais lenta em relação à escalabilidade vertical, mas apresenta um custo menor, visto que recursos de menor custo serão utilizados.
/ Container é a definição e virtualização de um único ambiente isolado e portável, que contém todas as configurações e dependências necessárias para a execução de aplicações de forma rápida e confiável. Em uma única unidade de fácil compartilhamento podemos empacotar o sistema operacional, todas as bibliotecas e demais recursos necessários para a execução do meu software e até mesmo ele próprio.
/ Microsserviço é uma abordagem de arquitetura e desenvolvimento de software na qual um aplicativo único é composto por uma suite de pequenos serviços, cada um executando individualmente seu próprio processo e se comunicando através de mecanismos leves, como por exemplo uma API via HTTP. Esses pequenos serviços funcionam através de mecanismos de implantação independentes, totalmente automatizados. Isso possibilita a independência entre eles, o que permite que pequenas equipes autossuficientes possam ser responsáveis por um ou mais microsserviços. Até mesmo podem ser escritos em diferentes linguagens de programação e utilizando diferentes tecnologias de armazenamento de dados.
 Material Complementar:
Caso você queira complementar seus estudos e se aprofundar ainda mais no tema da disciplina, seu/sua professor(a) PUCPR indicou para você materiais valiosos. Veja:
/ Tutorial da AWS que demonstra na prática a divisão de um monolito em microsserviços utilizando Amazon Elastic Container Service, Docker e Amazon EC2. (ACESSE AQUI)
/ Playbook da Oracle sobre o desenvolvimento de uma aplicação RESTful em Java, baseado em microsserviços. Nele, há todos os passos, desde a configuração do ambiente de desenvolvimento, passando pelo desenvolvimento em si até a parte de testes e publicação utilizando Docker como container. (ACESSE AQUI)
/ E-book gratuito (em inglês) que detalha bem os conceitos de service mesh e quais componentes formam essa camada de comunicação entre microsserviços. Na sequência ele exemplifica com o Istio uma implementação de service mesh que o professor Giovane menciona em nossa disciplina. (ACESSE AQUI)
0 notes
Text
Scrum Master
Fidanto – São Paulo – SP – Desenvolvimento Web React js C PHP e React Native Arquitetura com Microserviços Git GitHub Bitbucket…… –
Clique aqui para se candidatar
Marcadores: vagas, empregos, oportunidades,Scrum Master
Vaga Emprego SAO PAULO
The post Scrum Master appeared first on Vagas de Empregos Informática - São Paulo.
from Vagas de Empregos Informática – São Paulo https://spinfovaga.cidadesbr.net.br/empregos/scrum-master-53/ via https://spinfovaga.cidadesbr.net.br/empregos
0 notes
Text
Programador .NET ? Curitiba ? PR
Requisitos: Ensino Superior Completo em Ciência da computação, Sistemas de informação ou áreas afins; Necessário possuir solida experiência em troubleshooting: análise e identificação de causas raízes de problemas; Desejável ter vivência com desenvolvimento em linguagens usuais de mercado C# .Net; Desejável ter noções de arquitetura de serviços (ESB, microserviços, etc) e arquitetura de soluções DesejávelContinue lendo →… –
Clique aqui para se candidatar
Marcadores: vagas, empregos, oportunidades,Programador .NET ? Curitiba ? PR
Vaga Emprego PARAN
The post Programador .NET ? Curitiba ? PR appeared first on Paraná Vagas de Emprego - Informática.
from Paraná Vagas de Emprego – Informática https://prinfovaga.cidadesbr.net.br/empregos/programador-net-curitiba-pr-2/ via https://prinfovaga.cidadesbr.net.br/empregos
0 notes
Photo
Tumblr media
Uma em cada quatro empresas estarão baseadas na nuvem no prazo de um ano Os autores do estudo da O’Reilly, inicialmente uma consultora , agora a maior e mais bem sucedida solução de aprendizagem online para temas técnicos e empresariais disponíveis na internet, alertam que os microserviços ainda podem não estar prontos para qualquer empresa: “só porque uma equipa de desenvolvimento usa as ferramentas, conceitos e métodos de arquitetura […] Source
0 notes
gpsdanoticia · 4 years
Text
Uma em cada quatro empresas estarão baseadas na nuvem no prazo de um ano
Uma em cada quatro empresas estarão baseadas na nuvem no prazo de um ano
Os autores do estudo da O’Reilly, inicialmente uma consultora , agora a maior e mais bem sucedida solução de aprendizagem online para temas técnicos e empresariais disponíveis na internet, alertam que os microserviços ainda podem não estar prontos para qualquer empresa: “só porque uma equipa de desenvolvimento usa as ferramentas, conceitos e métodos de arquitetura de microserviços não significa…
View On WordPress
0 notes
fulvius · 7 years
Link
Quatro guias de arquitetura de aplicação da divisão de desenvolvimento da Microsoft e do time de produto do Visual Studio estão disponíveis. Estes guias, anteriormente lançados como um rascunho, cobrem quatro áreas: Microserviços, Docker, Aplicações Web com ASP.NET Core e Azure, e Aplicações Corporativas usando Xamarin Forms. Os guias estão disponíveis no formato de Ebook. Existem duas aplicações de referência de ponta a ponta que os guias usam como exemplo para construir microserviços, aplicaç
via: http://eexponews.com/lancamento-guia-de-arquitetura-microsoft-net_5079186987810816
0 notes
brasilempregos · 1 year
Link
Requisitos Inglês avançado; Experiência em desenvolvimento de sistemas/software (Client/Server, WEB, Mobile), banco de dados, análise de sistemas; Conhecimento em arquitetura de microserviços e tecnologias correlatas (OpenShift, Kubernetes, Docker, Grafana, Jaeger, etc…); Conhecimento em ao menos um framework de arquitetura como TOGAF, IASA, Zachman; Experiência anterior com projetos de implementação Pega BPM; Experiência anterior com projeto mercado bancário ou financeiro; Escolaridade mínima Não informado Jornada de trabalho segunda a sexta Benefícios PJ. Observações Valor Negociável. Àrea: Informática / TI / Tecnologia Cidade: Itaquaquecetuba
0 notes
brasilempregos · 1 year
Link
Requisitos Sólida experiência com desenvolvimento em Java; Vivência em soluções baseadas em Microserviços; Habilidades com Spring (MVC, Boot, Data e Security), API Gateway; Experiência em soluções com uso de JWT/Oauth2; Rotinas com banco relacional e não relacional; Experiência com Design Pattern e Princípios de Arquitetura (POSA); Experiência em soluções com uso de cluster (Kubernets Helm charts, docker imagens…); Experiência em desenvolvimento de soluções provendo Observabilidade, versionamento e migração de databases, OIDC; Experiência em soluções com comunicação assíncrona (Kafka e afins); Experiência em construção de soluções baseada em DDD. Diferenciais: Experiência em soluções cloud (Azure) Escolaridade mínima Não informado Jornada de trabalho seg a sex Benefícios Àrea: Informática / TI / Tecnologia Cidade: São Paulo
0 notes
brasilempregos · 1 year
Link
Requisitos Inglês avançado; Experiência em desenvolvimento de sistemas/software (Client/Server, WEB, Mobile), banco de dados, análise de sistemas; Conhecimento em arquitetura de microserviços e tecnologias correlatas (OpenShift, Kubernetes, Docker, Grafana, Jaeger, etc…); Conhecimento em ao menos um framework de arquitetura como TOGAF, IASA, Zachman; Experiência anterior com projetos de implementação Pega BPM; Experiência anterior com projeto mercado bancário ou financeiro; Escolaridade mínima Não informado Jornada de trabalho segunda a sexta Benefícios PJ. Observações Valor Negociável. Àrea: Informática / TI / Tecnologia Cidade: Adamantina
0 notes
brasilempregos · 1 year
Link
Requisitos Requisitos: Sólida experiência com desenvolvimento em Java; Vivência em soluções baseadas em Microserviços; Habilidades com Spring (MVC, Boot, Data e Security), API Gateway; Experiência em soluções com uso de JWT/Oauth2; Rotinas com banco relacional e não relacional; Experiência com Design Pattern e Princípios de Arquitetura (POSA); Experiência em soluções com uso de cluster (Kubernets Helm charts, docker imagens…); Experiência em desenvolvimento de soluções provendo Observabilidade, versionamento e migração de databases, OIDC; Experiência em soluções com comunicação assíncrona (Kafka e afins); Experiência em construção de soluções baseada em DDD. Escolaridade mínima Não informado Jornada de trabalho seg a sex Benefícios Observações Modalidade de Contratação: CLT Local: Home office Valor negociável Àrea: Informática / TI / Tecnologia Cidade: Uberlândia
0 notes
brasilempregos · 1 year
Link
Requisitos Conhecimentos sólidos com J2EE, Oracle, SQL Server, Jenkins, GitLab, Docker, arquitetura de microserviços. Java 8, 11 / Java EE, Spring, Sprintboot, Hibernate, Keycloack, Jboss/Wildfly 14, Liquibase, Docker, Compose, Jenkins, Git, Scripts Bash, Angular 7/8, Microserviços Java, Kubernets Preferencialmente, conhecimento com nuvens públicas (AWS e/ou Azure) Escolaridade mínima Não informado Jornada de trabalho Horário comercial Benefícios CLT Àrea: Informática / TI / Tecnologia Cidade: Rio de Janeiro
0 notes
lucasrfsblog · 3 years
Text
Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Aula 2
Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Aula 2 – Parte 1
 Professor:  Giovane Moura
EP 03. Trade OFF
Conteudo:
 “Não é só ir para a nuvem. Não é só ir para microserviços. É a gente conseguir ter sucesso nessa arquitetura.”
 Event Driven: É a forma de controlar o envio de mensagens de um microserviço para o outro.
 Existem basicamente dois tipos de serviços para controlar os eventos:
 - Fila: First in first out – (FIFO)
- Topico: Quem grava mensagens no tópico é o Publisher e quem lê estas mensagens são os subscribers. (Muitos para muitos N:N)
 CI/CD: O conceito de CI/CD deve estar sempre atrelado ao emprego de microserviços e de certa forma, com o uso de containers o emprego do CI/CD fica mais simples de ser feito.
Criar a esteira do CI com build e teste do código e posteriormente e não menos importante mas de acordo com a maturidade da empresa, o CD, este então pode ponderar de fazer ou não o deploy de forma automática, mas a entrega do artefato deve ser feita.
 Base de dados: Isolamento da base de negocio para aquele microserviço em especifico.
 Reuso: Sera que este microserviço será reutilizado por outro time? Outras aplicações também vão utilizar?
 Tamanho: Não é por que é microserviço que consome microrecursos. Microserviço refere-se a pequena parcela de um sistema ou serviço como todo, mas nem sempre isso vai demandar poucos recursos.
 [Resumo]
  Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Aula 2 – Parte 2
 Professor:  Giovane Moura
EP 04. Ferramentas
Conteudo:
  Ler os conceitos de Cloud moderno:
 IaaS:
 PaaS:
 SaaS:
 FaaS:
 Portabildade: O uso de containers padroniza a infraestrutura e suas características e tras o beneficio da portabilidade e reduz os riscos de lock-in.
 O que é um container?
 Container é uma forma que eu consigo empacotar o meu sistema operacional e todas as minhas libs e runtime necessários para que meu código seja executado de forma consistente.
 “O objetivo do container é possibilitar que você execute o seu código de forma isolada e contida em um mesmo servidor.”
 Pesquisar:
 Namespace:
Introduzido em 2002, na versão 2.4.19 do kernel Linux, Namespace é uma feature que permite criar e lidar com diversos contextos em um mesmo sistema, vendo propriedades globais diferentes e isoladas em cada contexto. Para facilitar o entendimento, com namespace é possível criar um contexto (ou ambiente) de rede isolado do ambiente físico. Nesse novo contexto, existirão interfaces de rede física que não são visíveis no contexto do sistema; essas interfaces terão endereços físicos e lógicos diferentes do contexto do sistema e todo tráfego, regras de firewall, existentes nesse novo contexto, não são vistos por nenhum outro contexto, incluindo o contexto do sistema.
Essa é a feature que é utilizada para garantir isolamento. Embora exemplifiquei utilizando recursos de rede, existem diversos recursos que podem ser isolados utilizando namespaces. Os principais são:
·         Mount (mnt) namespace
·         Process identify (pid) namespace
·         Unix timesharing system (UTS) namespace
·         Network (net)namespace
·         inter-process comunication (IPC) namespace
·         user namespace
O Mount namespaces é responsável por criar um contexto isolado do sistemas para dispositivos que podem ser montados pelo sistema. Aqui, você pode observar que nem todo dispositivo montado no contexto físico deve ser disponibilizado para containers, ou algo que é montado em um container não deve ser também montado em outro. Precisa existir um isolamento e o mount namespaces garante isso para o recurso de dispositivos montados.
Além desses, existem também artigos que complementam a necessidade de isolar outros recursos encontrados nos sistemas Linux através de namespaces. Eles foram propostos e que ainda não foram implementados, como por exemplo:
·         time namespace
·         system log (syslog) namespace
Arquitetura de namespaces
A maneira que o sistema operacional irá criar e gerenciar namespaces depende principalmente da arquitetura de namespace que é implementado no kernel do sistema operacional. Existem duas arquiteturas básicas que os namespaces podem ser implementados: a arquitetura hierárquica e a não-hierárquica.
A arquitetura hierárquica relaciona os recursos em diferentes contextos. Geralmente os recursos dos novos contextos são relacionados com o contexto do sistema já criado. Embora os namespaces sejam isolados entre si, eles podem ser mapeados para que o contexto principal possa, de alguma maneira saber que existem outros contextos em execução. A Figura 1 demonstra como podem diferentes namespaces podem ser relacionados hierarquicamente.
Figura 1- Arquitetura hierárquica de namespaces
Para fins de exemplo, suponhamos que os círculos enumerados sejam processos. Na arquitetura hierárquica, os namespaces filhos (Child namespaces) foram originados do namespace pai (Parent namespace), e, com isso, estabeleceu-se uma hierarquia onde, os processos executados pelos filhos são mapeados através de processos no pai. Vale salientar que o identificar nos namespaces filhos são diferentes dos nomeados pelo namespace pai.
A arquitetura não-hierárquica não relaciona os recursos em diferentes contextos. Quanto mais simples for o recurso, mais candidato ele será a utilizar essa arquitetura (UTS, por exemplo). Nessa arquitetura os recursos do namespace filhos não são mapeados para o namespace que o criou (contexto de sistema, por exemplo).
Mas, qual das duas arquiteturas é utilizada atualmente?
Ambas. Dependendo do recurso que está se isolando atráves do namespace, uma ou outra arquitetura é utilizada. E isso pode ser visto em containers LXC e Docker: quando rodamos um processo dentro de um container LXC (um contexto LXC), ele pode ser visto fora do container (no contexto do sistema) pois foi mapeado.
O PID do processo no contexto do lxc será diferente do PID no contexto do sistema. Logo, o PID é um tipo de recurso que utiliza a arquitetura hierárquica em seus namespaces e nos recursos que ele isola.
Conclusão
Namespace é algo incrível, uma feature que alavancou o uso de containers. Existe outra técnina que permite um “isolamento do sistema”, como é o caso do chroot, mas a maneira que ele trabalha é primitiva e não permite integrar com outros elementos de controlo (como o caso do cgroups).
Somente essa pequena explanação já foi capaz de abrir os horizontes e entender como um container funciona e como seus recursos são isolados. Isso responde muitas das dúvidas mais frequentes como: Porque meu pendrive não aparece no meu container? porque minhas regras de firewall não são aplicadas no meu container?
Futuramente, pretendo explanar mais sobre o assunto, mostrando algo mão na massa (Show me code, show me commands!). Qualquer dúvida, ou comentário contrutivo, deixem logo abaixo.
 Cgroup:
 Os cgroups permitem alocar recursos — tais como tempo da CPU, memória do sistema, largura de banda de rede ou combinações destes recursos — entre grupos de usuários definidos de tarefas (processos) rodando em um sistema. Você pode monitorar os cgroups que configurar, negar acesso dos cgroups a certos recursos e mesmo reconfigurar seus cgroups dinamicamente em um sistema em execução. O serviço cgconfig (“control group config ”) pode ser configurado para iniciar no momento do boot e restabelecer seus cgroups pré definidos, fazendo-os persistentes através de reboots.
Usando cgroups, os administradores de sistema ganham controle refinado sobre a alocação, prioridades, negação, gerenciamento e recursos de monitoramento do sistema. Recursos de hardware podem ser divididos inteligentemente entre tarefas e usuários, aumentando a eficiência geral.
1.1. Como os Grupos de Controle são Organizados
Os cgroups são organizados hierarquicamente, como processos, e cgroups filhos herdam alguns atributos de seus pais. Entretanto, existem diferenças entre os dois modelos.
O Modelo de Processo do Linux
Todos os processos em um sistema Linux são processos filhos de um pai comum: o processo init, que é executado pelo kernel no momento de boot e inicia todos os outros processos (que por sua vez iniciam seus próprios processos filhos). Por causa que todos os processos descendem de um pai único, o modelo de processamento do Linux é uma hierarquia única, ou árvore.
Adicionalmente, todos os processos do Linux exceto o init herdam o ambiente (tal como a variável PATH) [1] e outros certos atributos (tal como abrir arquivos descritores) de seu processo pai.
O Modelo Cgroup
Os cgroups são similares aos processos em:
·         eles seguem uma hierarquia, e
·         Os cgroups filhos herdam certos atributos de seus cgroups pais.
A diferença fundamental é que muitas hierarquias diferentes de cgroups podem existir simultaneamente em um sistema. Se o modelo de processo Linux é uma árvore única de processos, então o modelo cgroup é uma ou mais árvores desconectadas e separadas de tarefas (exemplo: processos).
Múltiplas hierarquias separadas de cgroups são necessárias porque cada hierarquia é anexada a um ou mais subsistemas. Um subsistema [2] representa um recurso único, tal como tempo de CPU ou memória, O Red Hat Enterprise Linux 6 fornece nove subsistemas cgroups, listados abaixo por nome e função.
Subsistemas Disponíveis no Red Hat Enterprise Linux
·         blkio — este subsistema define limites de acesso de entrada/saída para e a partir de dispositivos de bloco tais como drives físicos (disco, estado sólido, USB, etc).
·         cpu — este subsistema usa o agendador para fornecer acesso às tarefas de cgroups para o CPU.
·         cpuacct — este subsistema gera relatórios automáticos nos recursos de CPU usados pelas tarefas em um cgroup.
·         cpuset — este subsistema atribui CPUs individuais (em sistema multicore) e nós de memória para atribuir em um cgroup.
·         devices — este subsistema permite ou nega acesso aos dispositivos por tarefas em um cgroup.
·         freezer — este subsistema suspende ou retoma tarefas em um cgroup.
·         memory — este subsistema define limites no uso de memória pelas tarefas em um cgroup e gera relatórios automáticos nos recursos de memória usados por essas tarefas.ol
·         net_cls — este subsistema marca os pacotes de rede com um identificador de classe (classid) que permite que o controlador de tráfego do Linux (tc) identifique os pacotes que originam de um cgroup em particular.
·         ns — o subsistema do namespace.
Nota
Você pode encontrar o termo controlador de recursos (resource controller) ou simplesmente controlador (controller) nas literaturas do cgroup tais como as páginas man ou documentação do kernel. Ambos destes termos são sinônimos com “subsistemas”, e partem do fato que um subsistema tipicamente agenda um recurso ou aplica um limite aos cgroups na hierarquia que está anexada.
A definição de um subsistema (controlador de recurso) é bem geral: é algo que age sobre um grupo de tarefas, como exemplo os processos.
 Chroot:
chroot é uma operação que altera o diretório raiz aparente para o processo atual de execução e seus filhos. Um programa que é executado em tal ambiente modificado não consegue acessar os arquivos e comandos fora dessa árvore de diretórios ambiental. Esse ambiente modificado é chamado de um prisão chroot (ou chroot jail).
Lançamento do Docker em 2013.
 Outros benefícios do uso de containers:
 - Infraestrutura imutável. (Stateless)
- Deployment muito mais rápido.
- Reuso da imagem do container por outras pessoas ou serviços.
- Versionamento do container.
- Portabilidade
- Visibilidade
- Share (compartilhável)
 “Coloca a imagem do container em um lugar único, compartilha, né? Essa é a ideia da colaboração ela é muito importante e ela também vai ser fator crucial para alavancar o seu negocio , seu aplicativo e etc.”
 Já existem Windows containers com IIS, DOTNET framework e etc.
 Para tratar das limitações de escala e proxy de acesso a aplicações em containers foi criado os orquestradores de containers:
 - SWAN
- MESUS
- KUBERNETES
 2013 o google começou a trabalhar com o desenvolvimento do Kubernetes com base no BORG.
 Kubernetes é um orquestrador de containers.
  [Resumo]
0 notes
lucasrfsblog · 3 years
Text
Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Aula 1
Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Aula 1 – Parte 1
 Professor:  Giovane Moura
EP 01. Conceitos
Conteudo:
 Conceitos:
 Monilito: É uma aplicação onde toda a codificação esta em apenas um lugar, concentrada.
 Aplicação de 3 camadas: Dividida em 3 camadas, apresentação, aplicação (APIs) e data tier (camada de dados).
 Acoplamento com a base de dados: Aplicações monilitas geralmente estão fortemente acopladas a uma base de dados.
 “Não basta apenas criar uma aplicação. Precisamos conquistar os usuários e mante-los ativos na plataforma.”
 [O que é confiabilidade para você?]
 Confiabilidade é um termo relacionado a confiança. Confiar que algo vai acontecer de acordo com o esperado ou combinado.
 Professor: Segurança, disponibilidade, performance. “ Dependendo da pessoa que você perguntar do foco, do objetivo, ela vai ter, uma dor diferente, uma necessidade diferente.”
 RTO: Recovery time objective. Tempo de recuperação de um serviço.
RPO: Recovery point objective. Quanto eu aceito de perda para recuperação.
 Time to Market: Quanto tempo minha empresa leva para entregar uma feature ou aplicativo no mercado. (Desde a ideia até o go-live)
 [Resumo]
  Arquitetura de Microsserviços e Microcontainer: O Negócio como Serviço (e Saiba Como Evitar as Armadilhas) – Aula 1 – Parte 2
 Professor:  Giovane Moura
EP 02. Outras necessidades
Conteudo:
 Escalabilidade: Fazer crescer ou aumentar os recursos de forma horizontal ou vertical. (Scale out e scale up)
Resiliencia: Menos vulnerabilidades, neste cenário, não só segurança deve ser levado em pauta, mas tbm a continuidade do serviço ou aplicação.
Otimização: Pensar de forma a otimizar o uso dos recursos para que a menor fatia possível fique ociosa.
Alta Disponibilidade: Estar sempre ativo, com uma boa performance e sem taxas de erro.
Consistencia: Mesmo que toda a aplicação esteja distribuída para obter o melhor possível da escalabilidade, a aplicação precisa permanecer consistente.
 [Modernização de aplicação]
 É um conjunto de técnicas que vão ser utilizadas para orientar a conversão de um serviço legado em um modelo de serviços distribuídos e de microserviços. (Cloud Native)
 “Falando de nuvem acho que é mais fácil, né?. É só migrar e esta tudo certo. Não, não é bem assim...”
 Mensagem: Não adianta pensar só na parte computacional, só a parte técnica para trazer modernização para o legado e aplicações. É uma combinação de tudo, vale muito a questão de talentos, pessoas e cultura.
 [Tecnicas]
 1-      Desacoplamento de aplicação: Quebrar a aplicação em pedaços menor, de maneira que estas possam trabalhar de forma independentes e possam principalmente ser administradas e escalar de forma separada.
2-      Serviços gerenciados: Utilizar serviços gerenciados nos provedores de Cloud.
3-      Serverless: Empregar serverless que de fato vai tirar boa parte da complexidade de gerenciamento de infraestrutura e de certa forma, deixa o desenvolvedor mais focado no desenvolvimento de features.
4-      Portabilidade: É a habilidade de tornar sua aplicação executável em qualquer ambiente, de forma simples e consistente. (Containers?)
5-      DevOps: Que tem como objetivo automatizar a esteira de desenvolvimento, reduzir erros humanos, fazer releases mais leves e mais rápidos.
  [Desacoplar as aplicações]
 - Vantagens:
 1-      Simplifica a manutenção do código.
2-      Diminui a barreira da alteração.
3-      Fazer releases mais rápidos e mais leves.
4-      Suportar diferentes plataformas.
5-      Suportar diferentes linguagens.
  [Microserviço]
 Quando devo  a aplicação deve ser quebrada e virar um microserviço?
 1-      Reuso do serviço? Este serviço ou posso reutilizar em algum outro serviço?
Ex: Autenticação.
2-      Escalabilidade.
3-      Qual time vai gerenciar este microserviço futuramente.
 Exemplo:
 - GMAIL:  Atualmente o gmail é composto de vários microserviços.
 Com o uso de microserviços é possível atualizar pequenas partes do código que compõe a solução como um todo e mesmo se esta atualização falhar, o serviço continua disponível sem afetar os outros componentes (microserviços).
 - Base de dados: Com as técnicas de quebrar aplicações em microserviços, não é mais necessário ter uma base de dados gigante ou extremamente performática para todas as minhas aplicações. Neste cenário, cada microserviço tem a sua base de dados própria e os  serviços não conectam mais na base de dados central, elas se conectam na API dos microserviços.
 [SRE]
 SRE is what you get when you treat operations as if it’s a software problem. Our mission is to protect, provide for, and progress the software and systems behind all of Google’s public services — Google Search, Ads, Gmail, Android, YouTube, and App Engine, to name just a few — with an ever-watchful eye on their availability, latency, performance, and capacity.
 [Niveis de serviço]
 SLI: Indicador de nível de serviço.
 Qual é a métrica de nível de serviço?
 Error rating.
 SLO: Indicador de objetivo de nível de serviço.
 Com base nos indicadores de serviço que devem ser considerados, quais serão os níveis adequados?
  SLA: Acordo de nível de serviço.
 É o KPI de acordo para atender tanto SLI e SLO. Neste caso, apura-se se os indicadores de SLI foram atendidos de acordo como foi definido no SLO.
 Como um SRE implementa o DevOps:
 1-      Reduzir silos organizacionais:
Share ownership: Promover a cultura de compartilhamento de responsabilidade. Não existe apenas uma área responsável por um assunto, todos devem compartilhar as responsabilidades e colaborar com a resolução dos problemas.
A mensagem geral é: Compartilhar responsabilidades e senso de dono do negócio.
2-      Aceitar falhar como normal:
Não existe falha humana. Se um humano errou e causou uma falha é por que o sistema não estava preparado para aquele evento ou por que os acessos não estavam adequados e foi possível realizar aquela ação catastrófica.
Como implentar esta cultura:
               Blame-less posmorten: Investigar a causa raiz do erro sem apontar o dedo para possíveis culpados.
               Error budget: Com base nas definições do SLI/SLO, saber exatamente quanto tempo eu posso ter de indisponibilidade sem ferir o acordo do SLA.
               Changes gradual: Lançar versões novas de uma aplicação ou microserviço e não disponibilizar para todos os usuários antes de validar se esta totalmente funcional. Segregar uma pequena parte do trafego de acesso para esta validação. Desta forma, mesmo que ocorra uma quebra do serviço, apenas uma pequena parte dos usuários sera afetada e desta forma você consegue “esticar” o SLO para investigar e corrigir o que for pertinente para a nova release.
               Tooling e automation: Ferramentas e automação são essenciais para uma evolução do T.I e para trazer agilidade tanto no deploy quanto no rollback. O mundo perfeito é que ninguém coloque a mão no ambiente de produção.
               Medir tudo: Sair do monitoramento tradicional e ir para telemetria (Observability).
 [Resumo]
0 notes