6 ms·
One nerd's opinion: Akka-http (and Spray, from which it came) is a building block, not a web framework. It would be semi-reasonable to build a web framework us
by gamache 11y ago
One nerd's opinion: Akka-http (and Spray, from which it came) is a building block, not a web framework. It would be semi-reasonable to build a web framework using akka-http, but suicidal to use it to build web services directly. It would be like writing a web service directly on top of TCP -- there's value in abstracting all that crap away so that the developer can focus on the actual problem space, rather than the transport.
If I were to suggest alternative web frameworks for Scala devs, I'd point to Play Framework (full) or Scalatra (lightweight). Personally I jumped languages and VMs to the Elixir community, where I am having a dandy time writing asynchronous web APIs using the Phoenix Framework.
[1] https://www.playframework.com/ https://www.playframework.com/
[2] http://www.scalatra.org/ http://www.scalatra.org/
[3] http://www.phoenixframework.org/ http://www.phoenixframework.org/
- martinsahlen 11y agoI totally agree, I'm also playing around with Play (no pun intended). But as stated in the post - for microservices that are used by other services, I think akka-http makes total sense - especially since it integrates nicely with akka that we are using for tasks / jobs in our platform.
- muraiki 11y agoDo you find that you miss Scala's type system in Elixir? I'm a big fan of FP, but I also really enjoy type safety. I just wrote a functional pipeline in perl and most of the errors were dumb things I did that a type system would have caught.
- gamache 11y agoI do find myself missing strong typing sometimes, but I'd been writing scalaz-flavored Scala, and one thing I do not miss is working around JVM type erasure all the time. It has been about six months since I've had to type .asInstanceOf[T] and I am not looking back. :) Aside from strong typing, almost everything related to FP/concurrency/fault-tolerance that I liked about Scala is in Elixir -- first-class functions, immutable everything, shared nothing, everything is actors passing messages, supervision trees, etc. I can even whip out monads when I want them! [1] https://github.com/rob-brown/MonadEx https://github.com/rob-brown/MonadEx
- alexgaribay 11y agoI transitioned from being a scala dev using play to using elixir with Phoenix. I'm much happier and I find Elixir to be fantastic. There's no going back for me.