Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/endpoints4s/talk
https://github.com/endpoints4s/talk
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/endpoints4s/talk
- Owner: endpoints4s
- Created: 2019-08-20T18:07:02.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-08-12T15:19:46.000Z (over 4 years ago)
- Last Synced: 2024-11-06T19:25:45.280Z (about 2 months ago)
- Language: JavaScript
- Size: 2.18 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Endpoints
=========> a quest for the right level of coupling
## Abstract
Distributed systems (e.g., microservices, web apps, or web services) promise more flexibility to developers
because each node is loosely coupled with each other. Indeed, each node evolves on its own and is free to use its own
technology stack (e.g., JavaScript, Python, JVM, etc.). However, I argue that this loose coupling also introduces
more maintenance burden, which negatively impacts the developers productivity. Typically, when a server is modified
to require a new request parameter, the clients and the documentation may not automatically catch up on that change.
This results in additional work on the client and the documentation to carry that change forward, or, even worse,
in a failure at run-time if developers didn’t notice that they introduced an incompatible change.To address this problem, I’ve created the [endpoints4s](http://endpoints4s.github.io/) library. It introduces
just enough coupling between servers, clients and documentation such that they are automatically consistent regarding
the communication protocol, while keeping the flexibility of using different technology stacks on servers and clients.In this talk, I will show a demo of *endpoints*, explain the design decisions I’ve made, and compare the library
with other approaches.## Setup
This project contains both the slides and the demo code. To build the demo you only need sbt.
To build the slides you need Pandoc, and to show them you need Python 3.### Run the Demo
~~~
$ sbt
> server/reStart
~~~### Show the slides
Use the `makeSlides` sbt task to build the slides (into the `target/slides/` directory). Or the `showSlides` task
to run an HTTP server showing the slides. Typical developer workflow:~~~
$ sbt
> ~showSlides
~~~