All Projects → jexia → semaphore

jexia / semaphore

Licence: MIT license
Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.

Programming Languages

go
31211 projects - #10 most used programming language
HCL
1544 projects
shell
77523 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
Makefile
30231 projects

Projects that are alternatives of or similar to semaphore

Ambassador
open source Kubernetes-native API gateway for microservices built on the Envoy Proxy
Stars: ✭ 3,583 (+4741.89%)
Mutual labels:  api-gateway, cloud-native, gateway-api
Apisix
The Cloud-Native API Gateway
Stars: ✭ 7,920 (+10602.7%)
Mutual labels:  api-gateway, cloud-native
Krakend
Ultra performant API Gateway with middlewares. A project hosted at The Linux Foundation
Stars: ✭ 4,752 (+6321.62%)
Mutual labels:  api-gateway, gateway-api
Apisix Docker
the docker for Apache APISIX
Stars: ✭ 119 (+60.81%)
Mutual labels:  api-gateway, cloud-native
Gloo
The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy
Stars: ✭ 3,219 (+4250%)
Mutual labels:  api-gateway, cloud-native
Apioak
Full Lifecycle Management API Gateway.
Stars: ✭ 335 (+352.7%)
Mutual labels:  api-gateway, cloud-native
Grpcjsontranscoder
A filter which allows a RESTful JSON API client to send requests to .NET web server over HTTP and get proxied to a gRPC service
Stars: ✭ 97 (+31.08%)
Mutual labels:  api-gateway, cloud-native
Helmet
🐺 A Lightweight Cloud Native API Gateway.
Stars: ✭ 124 (+67.57%)
Mutual labels:  api-gateway, cloud-native
Krakend Ce
KrakenD Community Edition. Make your binary of KrakenD API Gateway
Stars: ✭ 245 (+231.08%)
Mutual labels:  api-gateway, cloud-native
Product Microgateway
A cloud native, developer centric and decentralized API gateway for microservices
Stars: ✭ 194 (+162.16%)
Mutual labels:  api-gateway, cloud-native
hango-gateway
Hango API Gateway, build on Envoy & Istio.
Stars: ✭ 306 (+313.51%)
Mutual labels:  api-gateway, cloud-native
lura
Ultra performant API Gateway with middlewares. A project hosted at The Linux Foundation
Stars: ✭ 5,159 (+6871.62%)
Mutual labels:  api-gateway, gateway-api
Kong
🦍 The Cloud-Native API Gateway
Stars: ✭ 30,838 (+41572.97%)
Mutual labels:  api-gateway, cloud-native
Dubbo Go Pixiu
Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and gRPC[developing].
Stars: ✭ 124 (+67.57%)
Mutual labels:  api-gateway, cloud-native
dubbo-go-pixiu
Based on the proxy gateway service of dubbo-go, it solves the problem that the external protocol calls the internal Dubbo cluster. At present, it supports HTTP and gRPC[developing].
Stars: ✭ 385 (+420.27%)
Mutual labels:  api-gateway, cloud-native
gotway
☸️ Cloud native API Gateway powered with in-redis cache
Stars: ✭ 71 (-4.05%)
Mutual labels:  api-gateway, cloud-native
souls
SOULs 🔥 Build Serverless Apps faster like Rails. Powered by Ruby GraphQL, RBS/Steep, Active Record, RSpec, RuboCop, and Google Cloud.
Stars: ✭ 327 (+341.89%)
Mutual labels:  cloud-native
incubator-eventmesh
EventMesh is a dynamic event-driven application runtime used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
Stars: ✭ 939 (+1168.92%)
Mutual labels:  cloud-native
genie-cloud
Genie As A Service and Thingpedia
Stars: ✭ 267 (+260.81%)
Mutual labels:  cloud-native
CoSky
High-performance, low-cost microservice governance platform. Service Discovery and Configuration Service | 高性能、低成本微服务治理平台
Stars: ✭ 57 (-22.97%)
Mutual labels:  cloud-native

Semaphore CI


Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC!

Create advanced and high performing data flows and expose them through endpoints over multiple protocols such as HTTP, GraphQL, and gRPC. Create custom extensions or use the availability of custom functions and protocol implementations.

Key features of Semaphore are:

  • 🔗 Connect with anything Use the right tool for the job. Semaphore supports various protocols out of the box with the ability to supporting additional protocols through modules. Endpoints could be created to expose a single flow through multiple protocols.

  • 🚀 Blazing fast Semaphore scales up to your needs. Branches are created to execute resources concurrently. Branches are based on dependencies between resources made through references or hard coded values. Creating high-performance flows is almost boringly easy.

  • Transactional flows Make sure that your data stays consistent. Rollback data when an unexpected response is returned from one of your services. References to returned values could be made allowing to ensure that your customers have the best experience possible.

  • ⛩️ Conditional logic Only call services when needed. Conditional expressions ensure that resources are only executed when needed. Conditions grow to your needs. Whether you want to keep things simple or need to achieve complex goals.

  • 🌍 Adapts to your environment Semaphore integrates with your existing system(s). Define flows through simple and strict typed definitions. Use your already existing schema definitions such as Protobuffers. Or extend Semaphore with custom modules and proprietary software. Integrate services through flow definitions and create a great experience for your customers and your teams.


asciicast

Enterprise

Want to take your systems to the next level? Semaphore Enterprise allows users to fully embrace the power their data flows. Additional modules and tooling allows users to build more complex environments and helps running Semaphore in production.

Feel free to request for more information or a demo by sending us a email at: [email protected]

Documentation and Getting Started

Documentation is available at Github pages.

If you are new to Semaphore and want to get started with building flows, please check out the available 🚀 Examples. Feel free to reach out to the community on Discord or by opening a new issue.

Data streams inside Semaphore are defined as flows. A flow could manipulate, deconstruct, and forwarded data in between resources. Flows are exposed through endpoints. Flows are generic and could handle different protocols and codecs from a single flow. All flows are strictly typed through schema definitions. These schemas define the contracts provided and accepted by services.

Currently, are only protobuffers supported but more schema definitions are planned to be supported in the future. Feel free to open a new issue to discuss which schema definition you require.

endpoint "checkout" "http" {
	endpoint = "/cart/checkout"
	method = "POST"
}

endpoint "checkout" "grpc" {
	package = "webshop.cart"
	service = "Payment"
	method = "Checkout"
}

flow "checkout" {
	input "services.Order" {}

	resource "product" {
		request "services.Warehouse" "GetProduct" {
			product = "{{ input:product }}"
		}
	}

	resource "shipping" {
		request "services.Warehouse" "Send" {
			user = "{{ input:user }}"
		}
	}

	output "services.OrderResult" {
		status = "{{ shipping:status }}"
		product = "{{ product:. }}"
	}
}

Installing Semaphore

There are variouse sources available to download and install the Semaphore CLI. For more information and install methods please check out the installing section.

$ curl https://raw.githubusercontent.com/jexia/semaphore/master/install.sh | sh

Install Semaphore

Developing Semaphore

If you wish to work on Semaphore itself or any of its built-in systems, you'll first need Go installed on your machine. Go version 1.13.7+ is required.

For local dev first make sure Go is properly installed, including setting up a GOPATH. Ensure that $GOPATH/bin is in your path as some distributions bundle old version of build tools. Next, clone this repository. Semaphore uses Go Modules, so it is recommended that you clone the repository outside of the GOPATH. You can then download any required build tools by bootstrapping your environment:

$ make bootstrap
...

To compile a development version of Semaphore, run make or make dev. This will put the Semaphore binary in the bin folders:

$ make dev
...
$ bin/semaphore
...

To run tests, type make test. If this exits with exit status 0, then everything is working!

$ make test
...

Contributing

Thank you for your interest in contributing to Semaphore! Check out the open projects and/or issues and feel free to join any ongoing discussion.

Everyone is welcome to contribute, whether it's in the form of code, documentation, bug reports, feature requests, or anything else. We encourage you to experiment with the project and make contributions to help evolve it to meet your needs!

See the contributing guide for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].