Dark é uma linguagem de programação com editor e infraestrutura integrados para o desenvolvimento e o fornecimento de aplicações backend. O Dark, disponibilizado para beta privado em Setembro de 2019, visa simplificar o desenvolvimento, minimizando a complexidade.
O Dark concentra-se em quatro preocupações principais de infraestrutura: terminais HTTP, datastores, tarefas em segundo plano e tarefas agendadas. A infraestrutura é implementada, hospedada e dimensionada automaticamente pelo Dark, abstraindo a configuração e a implementação da infraestrutura da experiência do desenvolvedor.
O código do aplicativo é escrito no editor estruturado Dark e a linguagem de programação Dark é fortemente integrada ao editor e à infraestrutura. Como resultado, o preenchimento automático no Dark está ciente da infraestrutura completa da aplicação. A solicitação ao vivo dos usuários pode ser visualizada no editor em tempo real. As alterações de código são implantadas imediatamente e ativadas com flags de recursos, eliminando a necessidade de pipelines de implantação, mantendo o processo seguro.
O InfoQ procurou a co-fundadora da linguagem Dark, Ellen Chisa, para aprender mais sobre a filosofia e o design do projeto.
InfoQ: Como a idéia do Dark se originou e o que a motivou a criar a empresa?
Ellen Chisa: O co-fundador, Paul, e eu viemos para essa área de maneiras separadas. Para Paul, depois de anos trabalhando com softwares (incluindo um PhD em compiladores e fundador do CircleCI), ainda sentia que o trabalho necessário para configurar um backend significava escrever muito código com padrão repetitivo e criar as mesmas cadeias de ferramentas diversas vezes. Para mim, que trabalhei em empresas de produtos de consumo, vi muitos casos em que a infraestrutura e as ferramentas nos impediam de enviar os produtos aos clientes de forma mais rápida e eficaz.
InfoQ: Ao descrever os problemas que o Dark está tentando resolver, foi feito uma referência ao conceito de "complexidade acidental" de Frederick P. Brooks. Quais são os elementos da complexidade acidental de software de hoje que o Dark aborda?
Chisa: Sim! A complexidade acidental originalmente pretendia se referir a qualquer tarefa relacionada ao funcionamento do código em um computador (como gerenciamento de memória), em vez de tarefas que estamos tentando desenvolver. Na época, Brooks argumentou que não podia melhorar as coisas em uma ordem de magnitude melhor porque a maioria das tarefas não era acidentais. Hoje, com o movimento em direção a nuvens públicas e sistemas distribuídos, vemos desenvolvedores gastando muito tempo em desafios relacionados ao sistema e não à lógica de negócios: infra, implantação, lógica de repetição de API, paridade de desenvolvimento/produção e gerenciamento de dependência apenas para citar alguns. Costumamos descrever Dark como uma "falta de complexidade" e não como algo específico.
InfoQ: Dark faz uso extensivo de flags de recursos, de ambientes de desenvolvimento a migrações de bancos de dados. Pode comentar sobre essa decisão de design e por que é um recurso tão importante para o Dark?
Chisa: Os sinalizadores de recursos são uma prática recomendada no ciclo de desenvolvimento de software moderno e uma grande mudança na forma como entregamos o software. Historicamente, usamos a implantação para decidir quando os usuários recebem um software (quando estava em produção). Com flags de recursos, temos muito mais nuances. Podemos fornecer recursos para um grupo de teste ou um conjunto específico de usuários. Ao adicionar flags de recursos, a implantação se tornou uma complexidade acidental, e não a entrega aos usuários. No Dark, vemos as flags de recursos como uma parte fundamental da linguagem, podendo ser usadas da maneira clássica de entrega para os usuários, mas também como uma maneira de colaborar com a equipe.
InfoQ: Como o Dark equilibra a remoção da complexidade do usuário e ainda fornece controle e observabilidade adequados nas aplicações?
Chisa: Sempre que pensamos na experiência no Dark, pensamos na essência do que um desenvolvedor está tentando fazer e no potencial impacto no software. Por exemplo, consistência ou disponibilidade podem ser mais ou menos importantes para um determinado serviço. Também determinamos prioridades baseados nos feedbacks dos desenvolvedores que usam o Dark.
O Dark está na versão beta privada, aberta a projetos com escopo bem definido e prontos para serem iniciados. Para solicitar acesso beta privado ou saber mais sobre o uso do Dark, visite o site do Dark.