Выпьем Vodka

Moscow Scala Meetup #3

29 июля 2016

Алексей Фомкин, Data Monsters

Каждый раз, когда вы ленитесь прочитать доклад на митапе, Фомкин вынужден писать очередной велосипед

HTTP в Scala делает мне больно

  • Высокий порог входа
  • Много зависимостей

Spay и akka-http

  • Fast, lightweight HTTP Server

  • Elegant DSL for API Construction

  • Support for Servlet 3.0 Containers

  • SSL

  • Compression

  • Auth

Play

  • MVC

  • Templates

  • ...

Ребята, мне просто нужно сходить в базу и отдать JSON!

Я не готов тратить месяцы на понимание тонкостей ваших нетленок!

И не готов думать о совместимости вашего поделья с другими подельями 

По этому я убрал из обзора Finagle/Finch вообще

Colossus


  implicit val system = IOSystem()

  Server.basic("example-server", 9000) { 
    new HttpService(_) {
      def handle = {
        case request @ Get on Root => 
          request.ok("Hello world!")      
        case request @ Get on Root / "echo" / str =>
          request.ok(str)
      }
    }
  }

Colossus

  • Тянет за собой Akka
  • Примеры из документации не компилируются

Http4s


  val service = HttpService {
    case GET -> Root / "hello" / name =>
      Ok(s"Hello, $name.")
  }

Изумительно!

Http4s

Ребята, ну зачем вы притянули Scalaz?

Vodka

  import scala.concurrent.Future
  import Vodka._

  Vodka() {
    case request <| GET -> Root / "hello" / name =>
      val msg = s"Hello, comrade $name. Let's drink vodka."
      Future.successful(msg)
  }

Vodka

  • Без зависимостей
  • Менее 1000 строк кода
  • Написана за вечер
  • Для остального есть Nginx

Присоединяйтесь!

Вопросы?

Алексей Фомкин, Data Monsters

@fomkin

@yelbota

Let's drink vodka

By Aleksey Fomkin

Let's drink vodka

  • 670