No momento, estamos no processo de projetar a arquitetura da nossa nova configuração de nuvem do Apache Mesos. O objetivo é unificar nossos sistemas movendo diferentes pilhas para a mesma arquitetura. As principais cargas de trabalho são análises de big data usando o Apache Spark e nossa infraestrutura corporativa, incluindo servidores da Web, servidores de email, etc.
A idéia é executar nossos serviços da Web em contêineres do Docker que estão sendo executados no topo de um dos planejadores disponíveis para o Mesos (Marathon / Chronos, Aurora ou Singularity). Este seria, portanto, o primeiro grupo de framework Mesos. Ao lado, teríamos o framework Apache Spark e várias estruturas de banco de dados para armazenamento de dados. Este seria o segundo grupo de frameworks do Mesos. Vamos escolher os detalhes depois de executá-los todos em paralelo para testes.
Nós temos problemas para decidir, no entanto, em que base rodar o próprio Mesos. Idealmente, queremos executá-lo o mais próximo possível do metal. Também queremos usar uma solução de orquestração para garantir que os Mesos & daemons de estrutura são sempre executados / reiniciados em caso de falha. As opções que estamos considerando são as seguintes:
1) Correndo Mesos & as estruturas como contêineres de estivadores em um sistema operacional mínimo. A este respeito, estamos atualmente inclinados para o CoreOS e para a frota.
2) Correndo Mesos & os frameworks diretamente nos servidores Ubuntu / Debian. Para esta opção, estamos nos inclinando para o Foreman e o Puppet.
Quanto à questão, procuramos identificar a solução que, por ordem de importância:
- é o menos complexo para configurar
- é o mais fácil de manter & mantenha-se atualizado
- tem menos sobrecarga
Nós não trabalhamos com o CoreOS antes, mas é a opção que parece que estamos caminhando. Um grande problema (subjetivo) que tenho com isso é que corremos Mesos em contêineres Docker e, em seguida, corremos contêineres Docker em Mesos. Isso parece "impuro" e errado para mim. Esta consideração é sem mérito?
Um pensamento semelhante diz respeito à redundância entre camadas. Para explicar de onde eu venho, eu preferiria se o Mesos fosse um sistema operacional real que apenas funcionasse bem em cima do metal. Parece que, independentemente da base usada, você acaba com a mesma funcionalidade pretendida em mais de uma camada da arquitetura (por exemplo, CoreOS e Fleet & SystemD == Mesos & Marathon & Chronos). Isso é inevitável?
Existem outras boas opções para executar a camada abaixo do Mesos que não consideramos, tendo em mente nossos critérios?