Keynote: The Cloud Native Journey @Apple - Alena Prokharchyk, Engenheira de Software, Apple
Tradução automática para o português do Brasil. Gerada e salva em 2026-10-23. Pode conter erros; confira os termos e as citações na versão em inglês e no vídeo original. Os horários são os mesmos da fonte. A transcrição original em inglês está disponível abaixo.
Palestra da Apple de 2020 sobre migração para Kubernetes: acesso baseado em namespace, capacidade compartilhada, isolamento de plataforma e o trabalho organizacional de adoção.
Fonte da transcrição: reconhecimento automático de fala no Vidleaf (pode conter erros). Pontuação por IA adicionada pelo Vidleaf; correções de nomes revisadas aplicadas ao texto de leitura; âncoras de carimbo de data/hora mantidas. A transcrição original está disponível abaixo.
Pesquise esta transcrição na bancada de trabalhoLeia a transcrição
Resumo gerado por IA
Alena Prokharchyk descreve a mudança da Apple de uma plataforma de contêineres interna em direção ao Kubernetes. A palestra explica o atrativo de um sistema flexível e apoiado pela comunidade, ao mesmo tempo que reconhece a curva de aprendizado e a necessidade de reavaliar recursos existentes. Aborda acesso à plataforma, gerenciamento de capacidade, isolamento e as diferentes necessidades das equipes de desenvolvimento e operações. Seções posteriores discutem escalabilidade, observabilidade, produtividade do desenvolvedor e participação em código aberto. A migração também é uma história organizacional: responsabilidades por segurança, recursos e confiabilidade mudam junto com a stack técnica. Os capítulos vinculados mantêm as escolhas e trade-offs específicos descritos na palestra.
Pontos-chave
- [1:37] O Kubernetes é apresentado como uma plataforma flexível com componentes extensíveis e uma comunidade aberta.
- [5:54] Infraestrutura compartilhada exige gerenciamento deliberado de capacidade e isolamento entre tenants.
- [10:19] A adoção da plataforma muda as responsabilidades das equipes, bem como a tecnologia subjacente.
Gerado a partir da transcrição. Verifique as passagens vinculadas em relação ao vídeo original. Revisado pelo Vidleaf em 2026-10-20. Resumo e pontos principais revisados pelo Vidleaf em 2026-10-21.
Visão geral completa
Alena, uma engenheira de software da Apple que entrou há cerca de um ano para trabalhar em Kubernetes e projetos cloud-native, explica o que a atraiu para a função e traça o caminho da Apple do Mesos e seu orquestrador de contêineres construído internamente, o Jarvis, até o Kubernetes, escolhido como uma plataforma mais genérica e flexível com provedores de armazenamento, runtime e rede baseados em plugins, CRDs e controladores personalizados, e uma comunidade transparente. A palestra é franca sobre trade-offs como uma curva de aprendizado íngreme, reavaliar recursos construídos anteriormente em relação às melhores práticas cloud-native e investir em recursos de treinamento e suporte. Aborda usuários da plataforma, incluindo desenvolvedores, SREs de aplicações, engenheiros de QA de hardware, engenheiros de aprendizado de máquina e de processamento em lote usando CPUs e GPUs, e o setor Financeiro, junto com modelos de acesso cluster como serviço e namespace como serviço, sendo este último o principal hoje, além de controle centralizado de capacidade, privacidade e segurança multi-tenant, gerenciamento de CRDs, ferramentas cloud-native, escalabilidade com o Kubernetes PerfTest Cluster Loader de código aberto, contribuições para o SIG scheduling e microVMs para defesa em profundidade. Na escala da Apple, a empresa abandonou o Cluster como Serviço devido ao custo de gerenciamento de segurança, ineficiência de recursos e carga operacional, e começou a explorar alternativas como clusters virtuais, que oferecem autoatendimento e planos de controle e dados virtualizados em infraestrutura Kubernetes compartilhada; microVMs permitem que vários tenants não confiáveis compartilhem nós e um plano de controle com duas camadas de isolamento. O crescimento da pegada e a distribuição entre data centers impulsionam a demanda por gerenciamento de carga de trabalho multi-cluster, e a equipe está pesquisando soluções de proxy de API e investindo em uma solução de função como serviço construída sobre WebAssembly do lado do servidor para reduzir a complexidade da plataforma, mantendo alta segurança e baixa utilização de recursos, com observabilidade como prioridade máxima e produtividade do usuário final buscada por meio de CI/CD e ferramentas para desenvolvedores. A adoção em larga escala trouxe mudança organizacional: a equipe de segurança cresceu, a segurança de aplicações e da plataforma Kubernetes foi separada para manter um modelo de responsabilidade compartilhada, o planejamento de capacidade foi repensado com uma equipe dedicada de gerenciamento de recursos trabalhando com o setor financeiro, e a equipe de SRE mudou em direção à engenharia e a uma voz mais forte no design arquitetônico da plataforma, enquanto um conselho de revisão técnica entre equipes, uma equipe dedicada de inner source e código aberto, e o engajamento com a comunidade por meio de código, do conselho TOC da CNCF, da equipe de lançamento do Kubernetes, documentação e issues apoiam a colaboração; a migração, em última análise, muda não apenas a stack técnica, mas as pessoas envolvidas.
Resumos de capítulos com carimbos de tempo
Engenheira da Apple sobre escala em nuvem
- [0:18] Alena trabalha na Apple.
- [0:21] Ela entrou há cerca de um ano como engenheira de software em Kubernetes e projetos cloud-native.
- [0:21] Muitas pessoas na comunidade de código aberto perguntaram o que mais a atraiu para o trabalho.
- [0:34] A resposta dela é a escala da infraestrutura em nuvem e a variedade de aplicações rodando nela.
- [0:41] Ela anteriormente se concentrava principalmente no provisionamento de clusters Kubernetes.
- [0:41] Ela pensou que olhar para as coisas do ponto de vista da aplicação e do usuário final ajudaria a completar o ciclo.
História do Mesos na Apple e Consolidação da Plataforma
- [0:53] Aprender a história de uma equipe ou empresa ajuda a explicar as decisões e trade-offs atuais.
- [1:00] A Apple usou o Mesos por mais de cinco anos com um orquestrador de contêineres construído internamente chamado Jarvis.
- [1:06] O Mesos tinha uma boa reputação como plataforma de agendamento e escalava bem para suportar múltiplos frameworks para serviços Batch, Stateful e Stateless.
- [1:16] O orquestrador de contêineres tornou-se um gargalo para a delegação de habilidades e responsabilidades, levando à consideração de outras opções.
- [1:25] A Apple também usava outras soluções de gerenciamento de computação e queria consolidá-las em uma plataforma unificada para melhor utilização da capacidade.
Por que o Kubernetes Foi Escolhido
- [1:37] O Kubernetes foi considerado um vencedor óbvio como orquestrador.
- [1:42] O Kubernetes ser mais genérico e flexível permitiu uma melhor divisão do trabalho entre as equipes.
- [1:48] Escolher provedores para armazenamento, runtime e rede tornou-se apenas uma escolha de plugin que poderia ser reavaliada sem refatorar todo o sistema.
- [2:04] Os desenvolvedores foram atraídos pela capacidade de estender as APIs e a funcionalidade central do Kubernetes por meio de CRDs e controladores personalizados.
- [2:14] A comunidade Kubernetes foi um enorme ativo para a plataforma, com transparência e poder que deram conforto aos desenvolvedores.
- [2:25] O objetivo era atender à demanda de uma base diversificada de usuários, incluindo equipes que já executavam clusters Kubernetes e pessoas que nunca haviam trabalhado com Kubernetes, mas confiavam na tecnologia e queriam adotá-la.
Trade-offs da Migração para Kubernetes e Adaptação da Equipe
- [2:41] Uma mudança dessa magnitude exige honestidade sobre os trade-offs necessários para uma migração bem-sucedida.
- [2:50] A curva de aprendizado do Kubernetes é íngreme tanto para usuários finais quanto para desenvolvedores de plataforma.
- [2:57] Todos os recursos de plataforma construídos anteriormente tiveram que ser reavaliados.
- [3:03] Os recursos foram questionados quanto ao alinhamento com as melhores práticas nativas da nuvem e à relevância para a nova plataforma, o que pode ser desconfortável para as pessoas.
- [3:14] Como o software é construído por pessoas, a equipe aceitou que os processos atuais precisariam mudar e as pessoas teriam que se adaptar.
- [3:24] A equipe estava pronta para investir em recursos de treinamento e fornecer suporte completo aos desenvolvedores para tornar a adoção bem-sucedida.
Usuários da Plataforma Kubernetes da Apple
- [3:34] O Kubernetes tornou-se a escolha de plataforma da Apple para gerenciamento de computação.
- [3:40] O objetivo final é fazer com que a maioria das cargas de trabalho da Apple seja executada no Kubernetes.
- [3:46] A plataforma visa manter o foco no usuário final enquanto é construída.
- [3:51] Era necessário entender e categorizar os usuários da plataforma para estabelecer padrões comuns para o planejamento de infraestrutura de hardware e software.
- [4:00] Uma categoria de usuário é a de desenvolvedores Java, Python e Go que desejam testar e executar aplicações em contêineres.
- [4:08] Outra categoria é a de SREs de aplicação focados em construir fluxos de trabalho de implantação avançados para suas equipes.
- [4:16] Engenheiros de QA de hardware são outro exemplo, explorando soluções criativas com ferramentas nativas da nuvem para facilitar a validação de dispositivos para as equipes de hardware.
- [4:29] Engenheiros de aprendizado de máquina e cargas de trabalho em lote executam milhares de jobs em lote diariamente usando CPU e GPUs para treinar modelos de aprendizado de máquina.
- [4:39] O setor financeiro também é um usuário da plataforma, desempenhando um papel importante nas decisões de posicionamento e no planejamento de capacidade.
- [4:46] Todos esses usuários desejam ferramentas nativas da nuvem para melhor depuração, registro, monitoramento e rastreamento de seus aplicativos.
- [4:54] A responsabilidade dos desenvolvedores da plataforma é fornecer uma camada de orquestração escalável com isolamento seguro de recursos e agendamento confiável.
Modelos de acesso à plataforma Kubernetes
- [5:03] Construir abstrações de alto nível e ferramentas de CLI também é necessário para o sucesso e a adoção da plataforma.
- [5:11] Um grande pool de infraestrutura de recursos de computação e armazenamento é gerenciado pelo Kubernetes e pode ser oferecido aos usuários de duas maneiras: cluster como serviço e namespace como serviço.
- [5:25] Namespace como Serviço é o modelo principal hoje.
- [5:29] O SRE gerencia clusters Kubernetes multi-inquilino enquanto os usuários operam em um ou vários namespaces, para que os usuários evitem a sobrecarga do gerenciamento de infraestrutura e possam se concentrar na implantação e no desenvolvimento de aplicações.
- [5:29] Como o provisionamento de clusters foi comoditizado, algumas equipes ainda podem querer cluster como serviço.
Controle Centralizado de Capacidade e Segurança Multi-Inquilino
- [5:54] O controle centralizado de capacidade exigiu abstrair o gerenciamento de recursos em seu próprio sistema.
- [6:00] O sistema foi tornado o mais genérico possível para simplificar a solução para a nuvem híbrida no futuro.
- [6:06] O sistema equilibra dinamicamente clusters, prioridade, uso e limites para encontrar o melhor posicionamento para as aplicações dos usuários.
- [6:17] O isolamento de recursos é tratado atribuindo prioridade e cota a cada carga de trabalho.
- [6:22] As preocupações com privacidade e segurança de executar aplicações em clusters multi-inquilino ainda precisavam ser abordadas.
- [6:29] Privacidade e segurança tiveram que ser abordadas tanto nos níveis de configuração quanto de runtime.
- [6:34] Apesar da restrição de namespace como serviço, os usuários deveriam ter liberdade para escolher ferramentas nativas da nuvem para executar em seus namespaces.
- [6:42] Como algumas ferramentas exigem CRDs, um recurso de nível de cluster, era necessário um fluxo adequado de gerenciamento de CRDs para viabilizar essa implantação.
Ferramentas Nativas da Nuvem para Plataforma e Desenvolvedores
- [6:53] A solução dos desafios técnicos dependia de uma ampla variedade de ferramentas nativas da nuvem.
- [6:59] Essas ferramentas incluem as usadas no nível da plataforma e as recomendadas aos desenvolvedores de aplicações.
- [7:04] A lista de ferramentas está incompleta e continua crescendo à medida que novos projetos são constantemente avaliados e mais áreas para desenvolvimento e integração são encontradas.
Escalonamento do Kubernetes e Contribuição para a Comunidade
- [7:15] Somente executar coisas em escala poderia revelar certos problemas, apesar do planejamento cuidadoso.
- [7:20] Eles escolheram a ferramenta de código aberto Kubernetes PerfTest cluster loader para desafiar suas classes 3s.
- [7:26] Os desenvolvedores podem escrever seu próprio framework, mas acharam o Cluster Loader bastante poderoso.
- [7:32] Eles queriam se envolver mais com a comunidade e investir tempo corrigindo e expandindo a ferramenta existente para que outros a usassem.
- [7:40] O agendamento foi outro foco imediato porque eles executam cargas de trabalho mistas, incluindo cargas em lote, e desejam uma utilização razoável dos recursos.
- [7:51] Participar do SIG scheduling e contribuir de volta é importante para permanecer o mais próximo possível do upstream.
- [8:00] Para alguns membros da equipe, foi a primeira experiência contribuindo para o Kubernetes upstream, incluindo participar de discussões do SIG e abrir os primeiros issues.
- [8:20] Em um ambiente multi-inquilino, as cargas de trabalho de muitos clientes são executadas na mesma máquina.
Isolamento com MicroVM e Clusters Virtuais
- [8:26] A defesa em profundidade é um padrão comum para atender aos requisitos de segurança e isolar níveis mistos de confiança.
- [8:34] MicroVMs estão sendo usadas para permitir esse nível de isolamento.
- [8:39] Com microVMs, vários inquilinos que não confiam uns nos outros podem ser executados nos mesmos nós e compartilhar o mesmo plano de controle, mantendo duas camadas de isolamento: máquina virtual e contêiner.
- [8:51] Cluster como Serviço traz aumento do custo de gerenciamento de segurança, ineficiência na utilização de recursos e carga operacional em empresas da escala da Apple.
- [9:02] Como resultado, eles começaram a explorar modelos alternativos, como clusters virtuais.
Cluster Virtual e Gerenciamento Multi-Cluster
- [9:07] O Cluster Virtual fornece Usuário, Self Services e Plano de Controle e Dados Kubernetes Virtualizado em infraestrutura Kubernetes compartilhada.
- [9:15] Ele elimina a maioria das preocupações de segurança e operacionais.
- [9:20] O crescimento da pegada de implantação e a distribuição entre data centers impulsionam a demanda por gerenciamento de cargas de trabalho multi-cluster.
- [9:20] Eles estão pesquisando soluções de proxy de API para oferecer melhor autocorreção, eficiência de utilização, obstruções de alto nível e experiências de fluxo de trabalho de desenvolvedor para equipes que gerenciam cargas de trabalho em vários clusters.
- [9:42] Eles querem reduzir a complexidade da plataforma para desenvolvedores e operadores, mantendo altos padrões de segurança e baixa utilização de recursos.
- [9:42] Eles estão investindo em uma solução de função como serviço aproveitando o web assembly do lado do servidor para alcançar isso.
Prioridades de Observabilidade e Produtividade do Desenvolvedor
- [9:57] Com adições constantes de novos recursos e cargas de trabalho de usuários, a observabilidade torna-se uma das principais prioridades para manter o gerenciamento da plataforma sensato à medida que ela cresce.
- [10:09] A produtividade e a felicidade do usuário final são o objetivo final, buscadas por meio de CI/CD atraente e ferramentas de desenvolvedor.
Mudança Organizacional a partir da Adoção de Tecnologia
- [10:19] Adotar novas tecnologias em larga escala frequentemente traz mudanças organizacionais que afetam gerentes, finanças, equipes técnicas e liderança.
- [10:32] A transição é um longo caminho com muitas dores de crescimento.
- [10:35] A equipe de segurança cresceu e assumiu responsabilidades extras.
- [10:44] A segurança de aplicações e a segurança da plataforma Kubernetes exigiram uma clara separação de responsabilidades para manter um modelo de responsabilidade compartilhada.
- [10:54] Um objetivo era repensar o planejamento de capacidade, exigindo uma equipe dedicada de gerenciamento de recursos trabalhando em estreita colaboração com o setor financeiro.
- [11:03] Algumas novas equipes foram formadas, algumas cresceram em tamanho e responsabilidades, e algumas desenvolveram novas prioridades.
- [11:11] A equipe de SRE mudou do foco operacional e de sistemas para uma ênfase em engenharia e uma voz mais forte no design arquitetônico da plataforma.
- [11:21] Uma plataforma sólida e estável tornou possível manter o foco nas necessidades dos clientes e inovar mais rapidamente.
Revisão entre equipes e suporte a código aberto
- [11:30] A inovação requer colaboração, e um conselho de revisão técnica entre equipes para projetos nativos da nuvem fornece um local seguro para feedback de colegas com diferentes origens.
- [11:44] Os membros do conselho trazem experiências variadas, alguns em desenvolvimento de recursos do Kubernetes e outros em domínios como segurança.
- [11:52] Combinar suas contribuições é extremamente útil durante a fase de design.
- [11:57] Com uma plataforma compartilhada, compartilhar informações torna-se uma necessidade, e a Apple tem uma equipe dedicada gerenciando iniciativas de inner source e código aberto.
- [12:06] Essa equipe realiza treinamentos internos sobre Cloud Native e Kubernetes, aconselha contribuidores de código aberto de primeira viagem e apoia contribuidores de longa data.
- [12:21] A equipe ajuda a conectar pessoas e a crescer colaborações internas e externas.
- [12:27] A transformação em andamento deixa muito pouco tempo para reflexão, embora a reflexão seja sempre necessária.
- [12:33] Migração não é algo que todo mundo quer fazer.
Migração para a Nuvem e Comunidade de Código Aberto
- [12:37] Investir na modernização de aplicações e plataformas beneficia o futuro, permitindo a adoção de mais tecnologias nativas da nuvem sobre a base existente.
- [12:47] A migração em larga escala ensinou à equipe a abraçar as melhores práticas da comunidade e os aprendizados compartilhados, e eles queriam retribuir por meio de muitas formas de engajamento.
- [12:47] As formas de engajamento incluem escrever código, atuar no conselho do TOC da CNCF, ajudar a equipe de lançamento do Kubernetes, melhorar a documentação e abrir issues.
- [13:08] A inovação é impulsionada pelo compartilhamento e pela colaboração.
- [13:12] Compartilhar com a comunidade open source mais ampla e com outras equipes da sua empresa por meio do inner source ajuda a possibilitar a reutilização de soluções existentes e a minimizar a redundância.
- [13:23] Até mesmo uma pequena mudança pode começar a tornar uma mudança cultural maior uma realidade.
- [13:28] A migração, em última análise, muda não apenas a stack técnica, mas as pessoas envolvidas nela.
Correções de nomes revisadas pela Vidleaf
Revisado 2026-10-20. As legendas originais permanecem disponíveis abaixo.
[0:00] ♪ ♪ Olá a todos, meu nome é Alena e eu trabalho na Apple. Entrei na empresa como engenheira de software há cerca de um ano para trabalhar com Kubernetes e projetos cloud-native. Desde então, muitas pessoas da comunidade open source me perguntaram o que mais me atraiu no meu novo trabalho.
[0:34] E a resposta é fácil. É a escala da infraestrutura de nuvem e a variedade de aplicações rodando nela. Antes, eu me concentrava principalmente no provisionamento de clusters Kubernetes. Achei que olhar as coisas do ponto de vista da aplicação e do usuário final ajudaria a completar o ciclo, então aqui estou. Quando você entra em uma nova equipe ou empresa, conhecer sua história ajuda a entender as decisões e trade-offs atuais. O Mesos tem sido usado na Apple há mais de cinco anos com um orquestrador de contêineres construído internamente chamado Jarvis.
[1:06] Ele tinha uma boa reputação como plataforma de agendamento e escalava bem para suportar múltiplos frameworks para executar uma variedade de serviços como Batch, Stateful e Stateless. Mas o orquestrador de contêineres logo se tornou um gargalo para a delegação de habilidades e responsabilidades, então começamos a considerar outras opções. Além do Mesos, a Apple usava algumas outras soluções para gerenciamento de computação. Junto com a transição, queríamos consolidá-las e fornecer a plataforma unificada para melhor utilização da capacidade.
[1:37] Descobrimos que o Kubernetes era um vencedor óbvio como orquestrador. Sendo o Kubernetes mais genérico e flexível, isso significava que podíamos dividir melhor o trabalho entre as equipes. As decisões sobre qual provedor escolher para componentes centrais como armazenamento, runtime e rede não eram mais decisões de vida ou morte. Sabíamos que era apenas uma escolha de plugin e a escolha sempre poderia ser reavaliada sem refatorar todo o sistema. Outro grande atrativo para os desenvolvedores era a capacidade de estender as APIs e a funcionalidade central do Kubernetes aproveitando CRDs e controladores personalizados.
[2:14] A comunidade Kubernetes foi um enorme ativo para a plataforma. Sua transparência e poder eram tão óbvios e proporcionavam um grande nível de conforto aos desenvolvedores. O objetivo era atender à demanda de uma base de usuários diversificada. Tínhamos equipes que já executavam clusters Kubernetes com sucesso em suas organizações. E tínhamos pessoas que nunca haviam trabalhado com Kubernetes antes, mas confiavam na tecnologia e queriam adotá-la. Quando ocorre uma mudança dessa magnitude, é importante ser honesto sobre os trade-offs que precisam ser feitos para uma migração bem-sucedida.
[2:50] É um fato conhecido que a curva de aprendizado do Kubernetes é íngreme, não apenas para usuários finais, mas também para desenvolvedores de plataforma. Todos os recursos da plataforma que foram construídos no passado tiveram que ser reavaliados. O design atual do recurso está alinhado com as melhores práticas cloud-native? Esse recurso é sequer relevante para a nova plataforma? Fazer e responder a essas perguntas pode ser desconfortável para as pessoas. E software é feito por pessoas. Tivemos que aceitar o fato de que haveria necessidade de mudança nos processos atuais, e as pessoas teriam que se adaptar.
[3:24] Percebemos o impacto da decisão. Estávamos prontos para investir em recursos de treinamento e fornecer suporte total aos desenvolvedores, tudo para tornar a adoção bem-sucedida. Naquele momento, o Kubernetes se tornou nossa escolha de plataforma para gerenciamento de computação na Apple. Nossa meta é fazer com que a maioria das cargas de trabalho da Apple rode em Kubernetes. Queremos manter o foco no usuário final enquanto construímos a plataforma. Isso exigiu que entendêssemos e categorizássemos os usuários da nossa plataforma para estabelecer padrões comuns para o planejamento de infraestrutura de hardware e software.
[4:00] Uma categoria de usuários são desenvolvedores Java, Python, Go que querem testar e executar suas aplicações nos contêineres. Outra categoria são os SREs de aplicações cujo foco é construir fluxos de trabalho de implantação avançados para suas equipes. Outro exemplo são engenheiros de QA de hardware que não têm medo de experimentar coisas novas e explorar soluções criativas usando ferramentas cloud-native. Tudo para facilitar que as equipes de hardware validem dispositivos. Há engenheiros de machine learning e cargas de trabalho em lote que utilizam a plataforma diariamente, executando milhares de jobs em lote que usam CPU e GPUs para treinar modelos de machine learning.
[4:39] O setor financeiro também é um usuário da plataforma, pois é uma grande parte das decisões de posicionamento e planejamento de capacidade. Todos esses usuários querem adotar ferramentas cloud-native para melhor depuração, registro, monitoramento e rastreamento de seus aplicativos. Nossa responsabilidade como desenvolvedores de plataforma é fornecer uma camada de orquestração escalável com isolamento seguro de recursos e agendamento confiável. Construir abstrações de alto nível e ferramentas de CLI também é necessário para o sucesso e a adoção da plataforma.
[5:11] Então temos esse grande pool de infraestrutura de recursos de computação e armazenamento gerenciado pelo Kubernetes. Fornecê-lo aos usuários pode ser feito de duas maneiras: cluster como serviço e namespace como serviço. Namespace como Serviço é nosso modelo principal hoje. O SRE gerencia clusters Kubernetes multi-inquilino e o usuário opera em um ou vários namespaces. Dessa forma, os usuários não têm a sobrecarga do gerenciamento de infraestrutura e podem se concentrar na implantação e no desenvolvimento de aplicações. No entanto, percebemos que, no mundo em que o provisionamento de clusters foi comoditizado, algumas equipes ainda podem querer cluster como serviço.
[5:54] Com o objetivo de controle centralizado de capacidade, tivemos que abstrair o gerenciamento de recursos para seu próprio sistema. Queríamos torná-lo o mais genérico possível para simplificar a solução para a nuvem híbrida no futuro. O sistema faria um balanceamento dinâmico entre clusters, prioridade, uso e limites para encontrar o melhor posicionamento para a aplicação do usuário. O isolamento de recursos seria tratado atribuindo prioridade e cota a cada carga de trabalho. No entanto, ainda tínhamos que abordar as preocupações de privacidade e segurança de executar aplicações em clusters multi-inquilino.
[6:29] Isso tinha que ser feito tanto nos níveis de configuração quanto de runtime. Mesmo com a restrição de namespace como serviço, queríamos que os usuários tivessem a liberdade de escolher ferramentas cloud-native para executar em seus namespaces. Algumas dessas ferramentas exigem CRDs, um recurso de nível de cluster. Temos que pensar em um fluxo adequado de gerenciamento de CRDs para tornar essa implantação possível. Resolver esses desafios técnicos não teria sido possível sem a ampla variedade de ferramentas cloud-native. Aquelas que usamos no nível da plataforma e aquelas que recomendamos aos desenvolvedores de aplicações.
[7:04] Esta lista não está completa e continua crescendo à medida que avaliamos constantemente novos projetos e encontramos mais áreas para desenvolvimento e integração. Com todo o planejamento cuidadoso, apenas executar as coisas em escala poderia revelar certos problemas. Escolhemos a ferramenta de carregamento de cluster open source Kubernetes PerfTest. para desafiar nossas classes 3s. Os desenvolvedores sempre podem escrever seu próprio framework, mas achamos o Cluster Loader bastante poderoso. Queríamos nos engajar mais com a comunidade e investir tempo corrigindo e expandindo a ferramenta existente que poderia ser usada por outros.
[7:40] Outra área de foco imediato era o agendamento. Executamos tipos mistos de cargas de trabalho no Kubernetes, incluindo cargas em lote, e queremos manter uma utilização razoável de recursos. Participar do SIG scheduling e contribuir de volta é muito importante para nós, pois queremos ficar o mais próximo possível do upstream. Para algumas pessoas da nossa equipe, foi a primeira experiência contribuindo com o Kubernetes Upstream, passando pelo processo de ingressar no SIG para discussões. Abrir os primeiros issues no Kubernetes e reconhecer as várias maneiras de ajudar a comunidade foi tudo novo e empolgante.
[8:16] Gostaria de compartilhar algumas de nossas prioridades atuais. Em um ambiente multi-inquilino, as cargas de trabalho de muitos clientes rodam na mesma máquina. Para atender aos requisitos de segurança e fornecer isolamento entre níveis mistos de confiança, um padrão comum é aproveitar a defesa em profundidade. Estamos buscando habilitar esse nível de isolamento com microVMs. Com isso, vários inquilinos não confiáveis podem rodar nos mesmos nós e compartilhar o mesmo plano de controle, enquanto continuam a fornecer duas camadas de isolamento: máquina virtual e contêiner.
[8:51] O Cluster como Serviço traz consigo o custo de maior gestão de segurança, ineficiência na utilização de recursos e sobrecarga operacional. nas empresas da escala da Apple. Como resultado, começamos a explorar modelos alternativos, como clusters virtuais. Com o Cluster Virtual, Usuário, Autoatendimento, Plano de Controle e Dados do Kubernetes Virtualizado, sobre uma infraestrutura Kubernetes compartilhada. Ele elimina a maioria das preocupações de segurança e operacionais. Com o crescimento da pegada de implantação e a distribuição entre data centers, surge a demanda por gerenciamento de cargas de trabalho multicluster. Estamos pesquisando soluções de proxy de API para oferecer melhor autocorreção, eficiência de utilização, obstruções de alto nível e experiências de fluxo de trabalho para desenvolvedores para equipes que gerenciam cargas de trabalho em vários clusters.
[9:42] Queremos reduzir a complexidade da plataforma para desenvolvedores e operadores. Ao mesmo tempo, queremos manter altos padrões de segurança e baixa utilização de recursos. Por isso, estamos investindo em uma solução de função como serviço, aproveitando o web assembly do lado do servidor para resolver isso. Com as constantes adições de novos recursos e cargas de trabalho dos usuários, a observabilidade se torna uma das principais prioridades. Queremos manter o gerenciamento da plataforma sensato à medida que a plataforma cresce. A produtividade e a satisfação do usuário final são nosso objetivo final. Estamos sempre buscando maneiras de melhorá-la com CI/CD atraente e ferramentas para desenvolvedores.
[10:19] Adotar novas tecnologias em escala tão grande costuma vir junto com mudanças organizacionais. Você precisa mudar tudo e todos, desde gerentes e finanças até equipes técnicas e você mesmo. É um longo caminho com muitas dores de crescimento. Nossa equipe de segurança cresceu e assumiu responsabilidades extras. A segurança de seguros em cluster multi-atendente não é uma tarefa trivial. Tivemos que ter uma separação clara de responsabilidades entre a segurança de aplicações e a segurança da plataforma Kubernetes para manter um modelo de responsabilidade compartilhada.
[10:54] Um de nossos objetivos era repensar o planejamento de capacidade. Ter uma equipe dedicada de gerenciamento de recursos trabalhando próxima ao departamento financeiro era necessário. Algumas novas equipes foram formadas, algumas cresceram em tamanho e responsabilidades, e algumas desenvolveram um novo conjunto de prioridades. A equipe de SRE costumava ser mais operacional e focada em sistemas. Agora ela tem ênfase em engenharia e uma voz muito mais forte no design arquitetônico da plataforma. Ter uma plataforma sólida e estável tornou possível manter o foco nas necessidades do cliente e inovar mais rápido.
[11:30] A inovação é impossível sem colaboração. Formar um conselho de revisão técnica interequipes para projetos baseados em cloud-native foi inestimável para nós. É um lugar seguro para obter feedback de colegas com diferentes origens. Alguns têm mais experiência com o desenvolvimento de recursos para Kubernetes, e alguns têm profunda expertise em um domínio técnico específico, como segurança. Obter a contribuição combinada deles é extremamente útil durante a fase de design. Com uma plataforma compartilhada, compartilhar informações se torna uma necessidade. Temos a sorte de ter uma equipe dedicada gerenciando iniciativas de inner source e open source aqui na Apple.
[12:06] A equipe se concentra em treinamentos internos sobre Cloud Native e Kubernetes, aconselha pessoas que querem começar a fazer suas primeiras contribuições open source e apoia aqueles que já contribuem para o open source há algum tempo. A equipe ajuda a conectar pessoas e a crescer colaborações internas e externas. A transformação em andamento deixa muito pouco tempo para reflexão, mas a reflexão é sempre necessária. A migração não é algo que todo mundo quer fazer.
[12:37] Mas aqueles que investem na modernização de suas aplicações e plataformas se beneficiam no futuro ao adotar mais tecnologias cloud-native sobre a fundação. A migração em escala nos ensinou a abraçar as melhores práticas da comunidade e os aprendizados compartilhados. Queríamos retribuir e percebemos que o engajamento vem de muitas formas: escrever código, atuar no conselho do TOC para a CNCF, ajudar a equipe de lançamento do Kubernetes, melhorar a documentação, abrir issues e muito mais.
[13:08] A inovação é impulsionada pelo compartilhamento e pela colaboração. Compartilhar com uma comunidade mais ampla no open source, compartilhar com outra equipe na sua empresa por meio do inner source, ajuda a permitir a reutilização de soluções existentes e a minimizar a redundância. Mesmo uma pequena mudança pode começar a tornar realidade uma mudança cultural maior. Percebemos que, no final, a migração muda não apenas a stack técnica, mas as pessoas envolvidas nela. Entre em contato conosco se tiver alguma dúvida. Obrigado.
Ver a transcrição original em inglês
[0:00] ♪ ♪ Hello everyone, my name is Alina and I work for Apple. I joined the company as a software engineer about a year ago to work on Kubernetes and cloud-native projects. Since then, so many people from the open-source community have asked me what attracted me the most to my new job.
[0:34] And the answer is easy. It is the scale of the cloud infrastructure and the variety of applications running on it. Before, I mainly focused on Kubernetes clusters provisioning. I thought that looking at things from the application and end-user end-guide scale would help to complete the circle, so here I am. When you join a new team or a company, getting to know its history helps to understand current decisions and trade-offs. Mesos has been used at Apple for over five years with an internally built container orchestrator called Jarvis.
[1:06] It had a good reputation as a scheduling platform and it scaled well to support multiple frameworks for running a variety of services like Batch, Stateful and Stateless. But the container orchestrator soon became a bottleneck for skills and responsibilities delegation, so we started considering other choices. In addition to Mesos, Apple used some other solutions for compute management. Along with the transition, we wanted to consolidate them and provide the unified platform for better capacity utilization.
[1:37] We found that Kubernetes was an obvious winner as an orchestrator. With Kubernetes being more generic and fluggable, it meant we could better divide work among teams. The decisions on what provider to choose for core components like storage, runtime, and network were no longer life or death decisions. We knew that it was just a plugin choice and the choice could always be re-evaluated without refactoring the entire system. Another big point of attraction for developers was an ability to extend Kubernetes APIs and core functionality by leveraging CRDs and custom controllers.
[2:14] The Kubernetes community was a huge asset to the platform. Its transparency and power was so obvious and provided a great level of comfort to developers. The goal was to meet the demand of diverse user base. We had teams who were already successfully running Kubernetes clusters in their organization. And we had people who had never worked with Kubernetes before, but trusted the technology and wanted to adopt it. When the change of this magnitude happens, it is important to be honest about the trade-offs that need to be made for successful migration.
[2:50] It is a known fact that Kubernetes' learning curve is steep, not only for end users, but for platform developers too. All the platform features that were built in the past had to be re-evaluated. Is the feature's current design aligned with the cloud-native best practices? Is this feature even relevant to the new platform? Asking and answering these questions can be uncomfortable for people. and software is built by people. We had to accept the fact that there would be a need for a change to the current processes, and people would have to adapt.
[3:24] We realized the impact of the decision. We were ready to invest in training resources and provide full support for developers, anything to make the adoption successful. At that point, Kubernetes became our platform choice for compute management at Apple. Our target goal is to make the majority of Apple workloads run on Kubernetes. We want to maintain end-user focus while building the platform. That required us to understand and categorize our platform users to establish common patterns for hardware and software infrastructure planning.
[4:00] One category of users are Java, Python, Go developers who want to test and run their applications in the containers. Another category are applications SREs whose focus is on building advanced deployment workflows for their teams. Another example is hardware QA engineers who are not afraid to try new things and explore creative solutions using cloud-native tools. anything to make it easier for hardware teams to validate devices. There are machine learning and batch workloads engineers who utilize the platform daily, running thousands of batch jobs that use both CPU and GPUs for training machine learning models.
[4:39] Finance is also a platform user as they're a big part of placement decisions and capacity planning. All of these users want to adopt cloud-native tools for better debugging, logging, monitoring, and tracing for their apps. Our responsibility as platform developers is to provide a scalable orchestration layer with secure resource isolation and reliable scheduling. Building high-level obstructions and CLI tools is also necessary for the platform's success and adoption.
[5:11] So we have this big infrastructure pool of compute and storage resources managed by Kubernetes. Providing it to users can be done in two ways: cluster as a service and namespace as a service. Namespace as a Service is our primary model today. SRE manages multi-tenant Kubernetes clusters and user operates in one or multiple namespaces. This way, users do not have an overhead of infrastructure management and can focus on application deployment and development. However, we realize that in the world where cluster provisioning has been commodified, some teams may still want cluster as a service.
[5:54] With the goal of centralized capacity control, we had to abstract resource management to its own system. We wanted to make it as generic as possible to streamline the solution for the hybrid cloud in the future. The system would do a dynamic balancing between clusters, priority, usage, and limits to find the best placement for the user application. Resource isolation would be handled by assigning priority and quota to each workload. However, we still had to address privacy and security concerns of running applications in multi-tenant clusters.
[6:29] It had to be done both on configuration and runtime levels. Even with the namespace as a service constraint, we wanted users to have a freedom to choose cloud-native tools to run in their namespaces. Some of these tools require CRDs, a cluster-level resource. We have to think of a proper CRD management flow to make that deployment possible. Solving these technical challenges would not have been possible without the wide array of cloud-native tools. those we use on the platform level, and those we recommend to application developers.
[7:04] This list is not complete and keeps on growing as we constantly evaluate new projects and find more areas for development and integration. With all the careful planning, only running things at scale could reveal certain issues. We have chosen open source Kubernetes PerfTest cluster loader tool. to challenge our class 3s. Developers can always write their own framework, but we found Cluster Loader being quite powerful. We wanted to engage more with the community and invest time in fixing and expanding the existing tool that could be used by others.
[7:40] Another area of immediate focus was scheduling. We run mixed types of workloads on Kubernetes, including batch workloads, and want to maintain a reasonable resource utilization. Participating in SIG scheduling and contributing back is very important to us, as we want to stay as close to the upstream as possible. For some people in our team, it was their very first experience contributing to Upstream Kubernetes, going through the process of joining SICK for discussions. Filing first Kubernetes issues and recognizing the various ways to help the community, it was all new and exciting.
[8:16] I would like to share some of our current priorities. In a multi-tenant environment, many customers' workloads run on the same machine. To meet security requirements and provide isolation between mixed level of trust, A common pattern is to leverage defense in depth. We are seeking to enable this level of isolation with microVMs. With that, multiple untrusting tenants can run on the same nodes and share the same control plane, while continuing to provide two layers of isolation: virtual machine and container.
[8:51] Cluster as a Service comes with the cost of increased security management, resource utilization inefficiency, and operational burden. in the companies of Apple's scale. As a result, we started exploring alternative models like virtual clusters. With Virtual Cluster, User, Self Services, Virtualized Kubernetes Control and Data Plane, on top of shared Kubernetes infrastructure. It eliminates the majority of security and operational concerns. With the deployment footprint growth and distribution across data centers, comes the demand for multi-cluster workload management. We are researching on API proxy solutions to offer improved self-healing, utilization efficiency, high-level obstructions, and developer workflow experiences for teams that manage workloads across multiple clusters.
[9:42] We want to reduce the platform complexity for developers and operators. At the same time, we want to maintain high security standards and low resource utilization. So we are investing in function as a service solution, leveraging server-side web assembly to solve this. With the constant additions of the new features and user workloads, observability becomes one of the top priorities. We want to keep the platform management sane as the platform grows. End-user productivity and happiness is our end goal. We are always looking into ways to improve it with compelling CI/CD and developer tooling.
[10:19] Adopting new technology on such a big scale often comes hand in hand with organizational changes. You need to change everything and everyone from managers and finance to tech teams and yourself. It is a long road with a lot of growing pains. Our security team grew and took on extra responsibilities. Insurance security in multi-attendant cluster is not a trivial task. We had to have a clear separation of concern between application security and Kubernetes platform security to maintain a shared responsibility model.
[10:54] One of our goals was to rethink capacity planning. Having a dedicated resource management team working close with the finance department was necessary. Some new teams were formed, some grew in size and responsibilities, and some developed a new set of priorities. SRE team used to be more operational and systems focused. Now it has an emphasis on engineering and a much stronger voice in the platform architectural design. Having a solid and stable platform made it possible to maintain focus on the customer's needs and innovate faster.
[11:30] Innovation is impossible without collaboration. Forming a cross-team technical review board for cloud-native based projects was invaluable to us. It is a safe place to get peer feedback from people having different backgrounds. Some have more experience with developing features for Kubernetes, and some have a deep expertise in a particular technical domain like security. Getting their combined input is extremely useful during the design stage. With a shared platform, sharing information becomes a necessity. We are lucky to have a dedicated team managing inner source and open source initiatives here at Apple.
[12:06] The team focuses on internal trainings on Cloud Native and Kubernetes, advises people who want to start making their first open source contributions, and supports those who have been contributing to open source for a while. The team helps to connect people and grow both internal and external collaborations. The ongoing transformation leaves very little time for reflection, but the reflection is always necessary. Migration is not something everyone wants to do.
[12:37] But those who invest in modernizing their application and platform benefit in the future by adopting more cloud-native technologies on top of the foundation. Migration at scale has taught us to embrace the community best practices and shared learnings. We wanted to give back and have realized that engagement comes in many forms: writing code, serving on TOC board for CNCF, helping Kubernetes release team, improving documentation, filing issues, and many more.
[13:08] Innovation is driven by sharing and collaboration. Sharing with a broader community in the open source, sharing with another team in your company through the inner source, helps to enable reuse of existing solutions and minimize redundancy. Even small change can begin to make larger cultural change a reality. We have realized that in the end the migration changes not just the technical stack, but the people involved in it. Please reach out to us if you have any questions. Thank you.
Abrir no ambiente de trabalho do Vidleaf
Pesquise a transcrição, selecione linhas, copie citações com carimbos de data/hora, traduza.
Atribuição
"Keynote: The Cloud Native Journey @Apple - Alena Prokharchyk, Software Engineer, Apple" por CNCF [Cloud Native Computing Foundation] (https://www.youtube.com/@cncf), licenciado sob CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/). Vídeo original: https://www.youtube.com/watch?v=Tx8qXC-U3KM. Esta página é uma transcrição em texto do vídeo com quebras de parágrafo e carimbos de data/hora adicionados; o criador não é afiliado ao Vidleaf nem o endossa. O Vidleaf adicionou pontuação por IA e um resumo gerado por IA; o texto original permanece disponível nesta página. O texto de leitura também inclui correções de nomes verificadas na fonte pelo Vidleaf.
Você é o criador ou detentor de direitos? Solicite uma correção ou remoção: copyright@vidleaf.app (veja Sobre estas páginas).
Última atualização
Todas as páginas de transcriçãoFerramenta de transcrição do YouTube