Tag: cloud

  • A revolução do Kubernetes na confiabilidade e escalabilidade de Aplicações

    O Kubernetes se tornou rapidamente como o orquestrador de implantação para aplicações conteinerizadas mais utilizado em todo o mundo. Empresas gigantes como Globo, Netflix, Amazon e o Google possuem suas aplicações baseadas em contêineres e Kubernetes.

    Já vi de perto pequenas startups desenvolvendo projetos e aplicações baseadas em Docker, depois migrando para Docker Swarm e finalmente chegando ao Kubernetes. Existem projetos que já iniciaram avançados, mas não é uma regra.

    Em meio a todo esse cenário de Docker, Kubernetes e Contêineres, existem inúmeros modelos de aplicações que se beneficiam disso como: API de GPS, API de algum cloud provider, API governamentais e até mesmo relacionado a saúde.

    Desenvolver uma aplicação visando microsserviços se tornou uma realidade para quase toda empresa de tecnologia e startup hoje em dia. Alguns dos principais motivos são:

    • Velocidade
    • Confiabilidade
    • Escalabilidade
    • Imutabilidade
    • Abstração da Infraestrutura

    Velocidade

    Antigamente os lançamentos de softwares não eram tão rápidos, existia todo um processo e muitas vezes demorava bastante. Também não existia a cobrança de um público rigoroso, algo totalmente diferente nos dias atuais.

    O público atual espera e cobra mudanças, espera que sua aplicação seja a melhor, detestam bugs, são impacientes, e de um outro lado você tem concorrentes que estão na disputa. Isso faz com que hoje em dia o lançamento de softwares e também de novas features seja algo constante e veloz. Tem empresas que deployam novos códigos várias vezes todos os dias.

    E o Kubernetes também vem para te ajudar nisso, o objetivo dele é ser aquele parceiro que te ajuda ser veloz no lançamento de novas features e deploy do seu código. Em um ambiente de hospedagem de sites tradicional, se você alterar o código é bem provável que o usuário final irá ter problemas, seja de lentidão ou até mesmo ver erros.

    No Kubernetes podemos criar um planejamento na entrega de software onde o usuário final não terá problemas de lentidão ou até mesmo problemas de uptime. E caso você tenha lançado uma feature com bugs, um rollback para o deploy anterior pode ser feito rapidamente. Mas na prática a velocidade é um fator positivo quando nos possibilita lançar novos códigos, manter a alta disponibilidade e ao mesmo tempo poder realizar rollback em caso de bugs.  

    Confiabilidade

    Quando implementado corretamente o Kubernetes te entrega um nível de confiabilidade muito grande nas atividades que ele desempenha. Cada projeto possui seus requisitos e isso influencia completamente em como devemos implementar o Kubernetes, seja em cluster, em HA, separando workers, nodes, …

    Mas imagine o cenário onde o Kubernetes está totalmente pronto e estável, a cada lançamento de código, a cada novo deploy, a cada rollback, a cada demanda que você precise ele responda com velocidade e sem problemas técnicos.

    Isso é incrível, concorda? E é um cenário muito aclamado por aplicações que são extremamente críticas e precisam estar em um ambiente confiável para operação.

    Escalabilidade

    Na medida que sua aplicação cresce e tem mais demanda, você terá que escalar o time de desenvolvedores como também acaba escalando a infraestrutura da aplicação. E o Kubernetes não deixa a desejar, ele também te ajuda nesse cenário. O Kubernetes é totalmente capaz de atender a demanda favorecendo arquiteturas desacopladas.

    O desacoplamento seria basicamente “separar” todas as peças da arquitetura em clusters. Isso nos possibilita trabalhar modos de escalabilidade, seja automático ou até mesmo manual. O escalamento da infraestrutura é muito útil para o Kubernetes trabalhar plenamente, e com isso conseguir realizar escalamentos da aplicação que você está em produção.

    Já trabalhei com cenários onde o Kubernetes estava configurado em apenas um único servidor, e cada vez que o cliente tinha demandas ele escalava os recursos de hardware do servidor. E isso é bem bizarro, pois esse não é o escalamento correto.

    Imutabilidade

    Quando desenvolvemos software baseado em contêineres automaticamente tendemos a focar em construir software que obedeça a princípios de infraestrutura imutável. Desse modo, quando um artefato é criado dentro do Kubernetes, ele não pode ser modificado por ações do usuário.

    No modelo tradicional onde hospedamos e colocamos uma aplicação em produção, normalmente trabalhamos com o modelo de infraestrutura mutável. Ou seja, estamos sempre atualizando e incrementando mudanças em cima da infraestrutura existente. Essas atualizações podem ser feitas todas de uma só vez, ou ao longo do tempo, um exemplo disso é quando rodamos o comando apt-get update para atualizar os nossos repositórios do servidor.

    Em um ambiente imutável, sempre que realizarmos alguma modificação podemos criar uma nova imagem e simplesmente substituir a imagem anterior. Caso ocorra alguma falha não prevista, podemos utilizar a imagem anterior que noutrora funcionava bem.

    Em suma, para cada mudança, para cada nova atualização, criamos uma nova imagem para ser deployada no ambiente do Kubernetes. E isso é algo muito bom, nos dá muita segurança em realizar mudanças e atualizações no PHP ou versão do MySQL por exemplo.

    E vale ressaltar que também podemos ter todo o registro de imagens criadas e podemos saber as diferenças de uma imagem para a outra. Também podemos utilizar uma determinada imagem mesmo que muito antiga, a qualquer momento caso esteja no registry.

    Abstração da Infraestrutura

    Ainda existem equipes de desenvolvimento que trabalham a moda antiga. Colocar uma aplicação em ambientes de desenvolvimento e até mesmo homologação é uma dor de cabeça enorme. A aplicação funciona no notebook do dev mas não funciona nos ambientes da empresa, clássico isso.

    Desenvolver aplicação em contêineres e usar o Kubernetes para gerenciar tudo isso se torna incrível, pois tudo é declarativo. Escrevemos o “manual” de como queremos que a aplicação seja implantada, escolhemos nossas imagens de contêineres e tudo funciona bem. Principalmente pelo fato de que os devs podem desenvolver em ambiente local também usando o Docker.

    A abstração da infraestrutura fica tão nítidas quando notamos que a partir do momento que temos nossos arquivos de manifestos, podemos implantar nossas aplicações em qualquer ambiente que utilize o Kubernetes. A infraestrutura não é mais um problema, pois a aplicação irá ser deplorada sem nenhum problema.

    Em alguns casos quando usamos um serviço de Kubernetes gerenciado como EKS, GKS, MKS, temos que ajustar algum ou outro arquivo de configuração para se alinhar a API da nuvem. Mas nada muito complexo, resolvemos rápido.

    Desse modo é normal vermos equipes migrando as aplicações entre os mais diversos provedores que tenham Kubernetes, ou criando cenários multi-clusters ou até mesmo ambientes híbridos.

    Conclusão

    O Kubernetes revoluciona a entrega, a confiabilidade, a escalabilidade e velocidade que podemos empregar ao realizar deploy de nossa aplicação.

    Desenvolver aplicações em contêineres é uma realidade e é algo que vai agregar muita performance e qualidade ao seu projeto. Pois no modelo tradicional onde implementamos uma aplicação, salvo quando exista automações, é algo muito demorado e complexo. Muitas vezes sem direito a erros, e o Kubernetes vem para colocar isso no esquecimento.

    –> Precisa de ajuda? Conheça nossos serviços em DevOps. <–

    https://wp.alexjunio.com.br/consultoria-devops-automacoes/

  • O que é o SaaS ? Software como Serviço – Cloud Computing

    O que é o SaaS ? Software como Serviço – Cloud Computing

    SaaS Software como Serviço

    O SaaS (Software como serviço) é totalmente diferente dos demais. O SaaS permite com que usuários usem aplicativos baseado em nuvem através da internet. Os exemplos mais genéricos e comuns são: Gmail, Microsoft Office 365 e outros.

    Em um modelo SaaS basicamente contratamos o aplicativo, não precisamos configurar nem instalar nada a nível de servidor e infraestrutura. O aplicativo é fornecido pronto.

    E isso é algo muito bom para empresas que precisa de uma solução mas não quer alocar times no desenvolvimento e até mesmo sustentação daquele serviço, pois o provedor vai fornecer tudo.

    Casos de uso SaaS

    O SaaS é muito usado por empresas de pequeno e médio porte na utilização de serviços de e-mail corporativo como: GSuite, Gmail, Microsoft Exchange e outros.

    Também podemos usar ferramentas corporativas como SaaS, exemplos clássicos são o uso de soluções como: Bling, Salesforce, MailChimp e várias outras soluções.

    Vantagens do SaaS

    Existem muitas vantagens ao contratar uma solução/produto SaaS, conheça algumas:

    Aplicativos Modernos

    Imagine o qual profissional é uma solução de e-mail corporativo do Google, o famoso Gsuite. Imagine também o quão profissional é uma solução de ERP como o Bling e outros do mercado. Você não precisa alocar toda uma equipe para desenvolver algo próprio, pode contratar algo profissional e que uma outra empresa é quem vai cuidar de tudo, desde a parte da infraestrutura até os códigos do software.

    Pague pelo o que usar

    Normalmente você vai pagar por usuário, e deve encontrar algumas promoções caso queira incluir a solução para toda sua equipe.

    Alta Disponibilidade

    O provedor é quem vai cuidar da infraestrutura, então não importa o que ocorra, é dever deles zelar e cuidar da disponibilidade daquilo que propõem. Tente saber sobre o SLA da empresa.

    Acesso aos dados de qualquer lugar

    Você vai poder acessar a ferramenta através do navegador, alguns casos até por aplicativos seja de onde estiver, na hora que quiser.

    Conclusão

    Plataformas SaaS são bem interessantes para diversos cenários. Principalmente pela questão da redução de custos de infraestrutura e também pessoal técnico mantendo aquele serviço. 

    O provedor vai prover tudo, e vai te entregar o resultado final, pois você é o consumidor final daquele sistema. 

     

    Leia Mais:

     

  • O que é o IaaS – Infraestrutura como Serviço

    O que é o IaaS – Infraestrutura como Serviço

    IaaS Infraestrutura como Serviço 

    IaaS – (Infraestrutura como serviço), é um modelo de serviço em nuvem que nos possibilita provisionar rapidamente recursos computacionais como: processamento, armazenamento, memória e rede.

    Trabalhar com modelo IaaS, significa poder reservar ou provisionar no momento que quiser ou precisar, servidores em nuvem. Isso faz com que sua empresa elimine vários processos burocráticos internos para que um serviço esteja disponível para uso.

    Sua empresa não precisa gerar gastos investindo em hardware, rede, e até mesmo vai desafogar a equipe de T.I , pois eles não vão mais precisar consumir tempo na instalação de servidores, assim como é feito no modelo On Premises.

    Responsabilidades no IaaS

    Quando trabalhamos com serviços do tipo IaaS é importante que saiba sobre as responsabilidades que você vai tem e a que o provedor tem naquele produto. Pois o que mais vejo são empresas que não entendem disso e querem transferir a responsabilidade por algum tipo de falha ao provedor, principalmente algo que não é da responsabilidade dela. A imagem abaixo representa as responsabilidades do cloud e cliente.

    Responsabilidade do Provedor Cloud

    O provedor, seja ele a AWS, Google Cloud, Azure ou qualquer outro que trabalha com serviços IaaS tem a responsabilidade de gerenciar toda a infraestrutura do data center. É o provedor quem faz a gestão e garante a disponibilidade da infraestrutura para que você tenha os recursos que contratou, bem como a disponibilidade desses recursos.

    É o provedor quem gerencia as redes de internet na infraestrutura, modelos de segurança e até mesmo arquiteturas de energia elétrica. Pois isso é algo que você como cliente não tem acesso nessa modalidade de serviço cloud. Em outras palavras, o provedor vai te entregar a faca e o queijo para trabalhar, mas é você quem corta o queijo da forma que quiser.

    Responsabilidade do Cliente

    Quando um cliente contrata um servidor em cloud, ele recebe os recursos computacionais que escolheu, bem como pode escolher o tipo de sistema operacional, tipo de rede e IP’s do servidor.

    É de responsabilidade do cliente tudo o que vai ser configurado dentro do servidor, ex: banco de dados, servidor de e-mail, servidor de backup. Essas tarefas não são realizadas pelo provedor, muito menos realização de manutenções em caso de quedas no banco ou algum serviço que o cliente configurou. 

    Vantagens do IaaS

    Conheça as principais vantagens no IaaS.

    1. Redução de gastos contínuos

    A IaaS faz com que sua empresa elimine todos os custos com aquisição de equipamentos e até mesmo profissionais para gerenciamento de infraestrutura local ( On Premises ).
    Elimina também preocupações arcaicas com qualidade e eficiência do hardware, uma vez que será responsabilidades contínuas do provedor e não do cliente.

    2. Hardware de qualidade

    Grandes provedores como AWS, Azure e GCP investem muito dinheiro em equipamentos, tecnologias e infraestrutura constantemente. É possível trabalhar com classes de servidores para os mais diversos cenários de projetos.

    3. Agilidade no provisionamento

    Rapidez no provisionamento de infraestrutura, bem como rapidez na redução e/ou eliminação dos serviços ativos. Isso faz com que sua equipe tenha poder para atender a demanda do momento.

    4. Estabilidade e Confiabilidade

    Não vai existir a necessidade em atualizar o hardware ou software da infraestrutura, muito menos resolver problemas de equipamentos. A maioria das empresas possuem um SLA muito confiável para garantir a disponibilidade e qualidade para seu negócio.

    5. Escalabilidade

    Vários serviços poderão ser implementados em serviços que podem realizar escalamento conforme necessidade.

    Casos de uso do IaaS

    Conheça alguns casos onde podemos usar o modelo IaaS.

    1. Servidores de desenvolvimento e testes

    Sua equipe vai poder com poucos cliques colocar ativo servidores para serem usados em testes de software e desenvolvimento, como também vão poder deletar os servidores rapidamente. Isso faz com que você evite custos desnecessários, e pague apenas pelo o que usou e pelo tempo que usou.

    2. Hospedagem de sistemas web

    Hospedar sistemas, sites e e-commerce se torna bem interessante uma vez que a infraestrutura poderá escalar/reduzir verticalmente garantindo a disponibilidade das suas aplicações.
    Muitas empresas atualmente tem usado o Kubernetes para microsserviços e tem tido um ganho enorme de performance.

    3. Armazenamento e Backup

    Sua empresa não vai precisar preocupar com comprar discos para backups nem mesmo preocupar com a qualidade e segurança dos discos. Equipes de T.I tem uma liberdade maior de implementar o sistema de backup em servidores na nuvem.

     

    Conclusão

    Utilizar o modelo IaaS para provisionar e trabalhar com serviços na nuvem vai gerar uma outra ótica para seu negócio. Sua equipe de T.I poderá cuidar apenas da aplicação, desenvolvimento ou manutenção da aplicação e menos com infraestrutura física. 

    Você vai notar também que é muito mais fácil e rápido colocar algum projeto em produção com o máximo de qualidade. 

     

    Leia Mais:

  • Arquivo de Configuração PHP.INI

    Arquivo de configuração PHP.INI Otimizado WordPress

     

    Sempre que instalamos um servidor para hospedagem de sites em WordPress é interessante que deixamos otimizado o PHP. Isso vai gerar vários ganhos, vai dar mais performance e estabilidade para que o site funcione bem.

    Um dos principais arquivos para otimização é o PHP.INI. Mas saiba que não existe configuração padrão que serve para todos os casos, a configuração abaixo funciona muito bem para projetos de médio porte seguindo as configurações:

    • 4 GB RAM
    • 2 CPU
    date.timezone = America/Sao_Paulo
    max_execution_time = 300
    max_input_vars = 300
    memory_limit = 256M
    pcre.recursion_limit=1000
    
    zend_extension=opcache.so
    opcache.enable = 1
    opcache.enable_cli = 1
    opcache.memory_consumption = 126
    opcache.interned_strings_buffer = 4
    opcache.max_accelerated_files = 600
    opcache.max_wasted_percentage = 5
    opcache.use_cwd = 1
    opcache.validate_timestamps = 0
    ;opcache.revalidate_freq = 2
    ;opcache.validate_permission= 1
    opcache.validate_root= 1
    opcache.file_update_protection = 2
    opcache.revalidate_path = 0
    opcache.save_comments = 1
    opcache.load_comments = 1
    opcache.fast_shutdown = 1
    opcache.enable_file_override = 0
    opcache.optimization_level = 0xffffffff
    opcache.inherited_hack = 1
    opcache.blacklist_filename=/etc/opcache-default.blacklist
    opcache.max_file_size = 0
    opcache.consistency_checks = 0
    opcache.force_restart_timeout = 60
    opcache.error_log = "/var/log/php-fpm/opcache.log"
    opcache.log_verbosity_level = 1
    opcache.preferred_memory_model = ""
    opcache.protect_memory = 0
    ;opcache.mmap_base = ""

    Lembre de realizar backups de qualquer arquivo que alterar previamente.