Para que é útil o Scala?
O Scala é a linguagem de escolha para sistemas distribuídos escaláveis, e a nova geração de grandes fluxos de dados e ferramentas. Let's considera dois exemplos chave: A pilha do Twitter e o Apache Spark. Cada um deles é representado por uma palestra no Scala By The Bay 2014, a conferência anual SF Scala, realizada de 8 a 9 de agosto deste ano (2014).Twitter é uma empresa em escala web que fornece atualizações em tempo real com mensagens e conexões no gráfico social. Ela é construída sobre uma fundação sólida como uma rocha Scala. Finagle, a camada de serviços, conecta os componentes, e Scala futuros fornecem uma abstração assíncrona compostável para os serviços. A programação funcional torna seguro e fácil raciocinar sobre o manuseio e propagação de erros, o que é inevitável em tal arquitetura. O Apache Mesos fornece uma base de cluster para os serviços. Todos eles surgem como instrumentos, facilitando a depuração de hot loops e a compreensão da performance do fluxo geral.
Play Framework e Akka fornecem uma plataforma distribuída similar à pilha do Twitter, e permitem a programação reativa com contrapressão até o fim. É a maneira mais rápida de construir aplicações web que escalam desde o primeiro dia.
No backend analítico, Scalding (software) é um DSL fantástico para Hadoop, Summingbird (Twitter Engineering: What are some good uses for Summingbird?) é uma abstração adicional para escrever trabalhos de Mapa/Redução que se parecem com programas Scala regulares para várias plataformas.
Isso nos leva ao meu ponto chave: Scala é a linguagem ideal para escrever programas de mapa/redução no pequeno e no grande. Sua abordagem funcional de programação guia você a usar mapa, flatMap e dobrar em um único nó, e se estende naturalmente a multicores e clusters.
Apache Spark prova o ponto -- podemos pensar nisso como coleções Scala distribuídas, uma abordagem que eu defendo na spark.recepes. A API para Spark corresponde de perto à API para coleções Scala. Uma vez que você aprende como programar em Scala -- e você pode fazê-lo na REPL, interativamente -- você pode naturalmente proceder para fazer isso em escala com Spark. Spark é a base de toda uma série de sistemas, tais como Shark para SQL em tempo real em escala de colméia, BlinkDB para amostragem rápida, MLLib para biblioteca ML fácil, e GraphX para análise gráfica interoperável com Spark e Shark e o resto.
Se você está apenas começando com Big Data e Hadoop, você pode pular para a cabeça da linha aprendendo Scala e Spark e aprender uma melhor abordagem para Mapear/Reduzir desde o início. Se você precisa construir uma arquitetura escalável orientada a serviços, a pilha do Twitter e Play/Akka o levará até lá com programação reativa e ferramentas de cluster estabelecidas. Qualquer backend, qualquer fluxo analítico, incluindo streaming em tempo real, será mais fácil de raciocinar, projetar, escrever e manter no Scala. Os engenheiros do Scala são alguns dos melhores que existem.
Se você precisa construir um sistema escalável e/ou uma empresa que lhe permita servir APIs e analisar os dados em tempo real, o Scala vem com um conjunto de ferramentas de código aberto, comunidades e talentos de engenharia para levá-lo lá mais rápido do que qualquer outro ecossistema.
Artigos semelhantes
- O Scala é uma boa linguagem de programação para fazer aplicativos para Android?
- Você acha que a Siri é útil? Eu não posso fazer nada de útil com ela.
- O Chromebook é útil para desenvolver um programa Python? Alguém já tentou usar o Chromebook para o seu ambiente de desenvolvimento?
- Você pode dar alguma dica útil para quando você tiver um novo celular para ajudá-lo a durar mais tempo? O telemóvel é um Samsung S10.