/zio-microservice

ZIO-powered microservices via HTTP and other protocols.

Primary LanguageScalaApache License 2.0Apache-2.0

ZIO Microservice

Project Stage CI Release Issues Discord
Project stage Build Status Release Artifacts Average time to resolve an issue badge-discord

ZIO Microservice supports the features you need to be productive:

  • Endpoints. Define reliable and scalable endpoints concisely, type-safely, and composably.
  • Protocol-Agnostic. Deploy endpoints to any supported protocol, including HTTP and gRPC.
  • Stream-friendly. Handle requests and responses that are too big to fit in memory at once.
    • WebSockets
  • Introspection-friendly
    • Documentation. Generate documentation that is automatically in-sync with the endpoints.
    • Client. Interact with an endpoint type-safely from Scala without writing any code.
  • Middleware-friendly. Middleware is type-safe and compositional and can include built-in middleware or third-party middleware, or combinations.
    • Metrics/Monitoring. Built-in integration with ZIO Metrics.
    • Rate-limiting. Customizable rate-limiting with DDOS protection.
    • Logging. Request/response logging in Common Log format.
    • Via third-party libraries, pluggable authentication, authorization, persistence, caching, session management.
  • High-performance. Fastest functional Scala library.

Compared to the competition, ZIO Microservice features:

  • ZIO native
  • Beginner-friendly
    • Minimal / no type classes, implicits, or higher-kinded types
    • Highly discoverable API
    • Good type inference
    • Minimal jargon
  • Expert-friendly
    • Type-safe
    • No magic, edge cases, or surprises
  • GraalVM-ready
  • Fast performance
  • Composable

Protocols

ZIO Microservice supports the following protocols out-of-the-box:

  • HTTP
  • WebSockets
  • gRPC
  • Avro

Installation

Add in your build.sbt:

libraryDependencies += "dev.zio" %% "zio-web-core" % "<version>"