All Projects → dollarshaveclub → Furan

dollarshaveclub / Furan

Licence: mit
Scale out Docker builds

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Furan

Ketchup
ketchup (番茄酱) 是一个基于dotnet core的微服务框架。
Stars: ✭ 170 (-49.85%)
Mutual labels:  microservice, grpc
Helloworld Msa
Main repository with documentation and support files
Stars: ✭ 218 (-35.69%)
Mutual labels:  microservice, containers
Horus
🎯 A gRPC-Node Distributed Tracing and Monitoring Tool.
Stars: ✭ 184 (-45.72%)
Mutual labels:  microservice, grpc
Go Grpc
A simpler grpc framework
Stars: ✭ 133 (-60.77%)
Mutual labels:  microservice, grpc
Jupiter
Jupiter是斗鱼开源的面向服务治理的Golang微服务框架
Stars: ✭ 3,455 (+919.17%)
Mutual labels:  microservice, grpc
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (-56.64%)
Mutual labels:  microservice, grpc
Mongoke
Instant Graphql for MongoDb (active branch is golang, rewrite in process)
Stars: ✭ 203 (-40.12%)
Mutual labels:  microservice, containers
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 (-63.42%)
Mutual labels:  microservice, grpc
kubernetes-go-grpc
Microservices using Go, gRPC and Kubernates
Stars: ✭ 35 (-89.68%)
Mutual labels:  microservice, grpc
Go Grpc Http Rest Microservice Tutorial
Source code for tutorial "How to develop Go gRPC microservice with HTTP/REST endpoint, middleware, Kubernetes deployment, etc."
Stars: ✭ 250 (-26.25%)
Mutual labels:  microservice, grpc
Sea
rpc framework built on grpc
Stars: ✭ 132 (-61.06%)
Mutual labels:  microservice, grpc
Yoyogo
🦄🌈 YoyoGo is a simple, light and fast , dependency injection based micro-service framework written in Go. Support Nacos ,Consoul ,Etcd ,Eureka ,kubernetes.
Stars: ✭ 277 (-18.29%)
Mutual labels:  grpc, containers
Grpc Nebula
微服务治理框架简介
Stars: ✭ 132 (-61.06%)
Mutual labels:  microservice, grpc
Dapr
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
Stars: ✭ 16,274 (+4700.59%)
Mutual labels:  microservice, containers
Mix
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server
Stars: ✭ 1,753 (+417.11%)
Mutual labels:  microservice, grpc
Go Chassis
a microservice framework for rapid development of micro services in Go with rich eco-system
Stars: ✭ 2,428 (+616.22%)
Mutual labels:  microservice, grpc
Go Shopping
A sample suite of services built on the go-micro framework
Stars: ✭ 98 (-71.09%)
Mutual labels:  microservice, grpc
Orion
Orion is a small lightweight framework written around grpc/protobuf with the aim to shorten time to build microservices at Carousell.
Stars: ✭ 101 (-70.21%)
Mutual labels:  microservice, grpc
Yivnet
Yivnet is a microservice game server base on go-kit
Stars: ✭ 237 (-30.09%)
Mutual labels:  microservice, grpc
Turbo
A lightweight microservice tool, turn your grpc|thrift APIs into HTTP APIs!
Stars: ✭ 275 (-18.88%)
Mutual labels:  microservice, grpc

Furan

Furan 2


Scale out Docker builds


Go Report Card

Furan 2 is a scalable, Kubernetes-native Docker build microservice (API) that builds and pushes Docker images from a specified GitHub repository to a specified image repository.

Furan supports gRPC and JSON clients, and runs builds asynchronously using BuildKit in single-shot, rootless Kubernetes Jobs.

Furan supports pushing build artifacts to the following image repository services:

(Both public and private image repositories are supported.)

Expressed in plain English, Furan handles build requests such as:

"Build the GitHub repository acme/foo at commit SHA xxx using the Dockerfile in the root, and push the resulting image to the image repository at quay.io/acme/foo:tagname."

Furan is a core part of the Dollar Shave Club software delivery pipeline and is used programmatically by services such as Acyl.

Architecture

Furan's only runtime dependencies are PostgreSQL and Kubernetes.

Architecture

API

At a high level, the Furan API consists of the following RPCs:

  1. StartBuild (asynchronously begin a build/push job)
  2. MonitorBuild (get a realtime stream of build messages for a running job)
  3. GetBuildStatus (get the status of a running job)
  4. ListBuilds (get a list of build jobs according to a set of criteria)
  5. CancelBuild (abort an actively running job)

For more details, see the protobuf definition.

Differences between Furan 1 and 2

Furan 1 did not require Kubernetes, and executed builds in the same server process via an external Docker Engine. If running in Kubernetes, this was a Docker-in-Docker (DinD) sidecar. To support the asynchronous API, Furan 1 had a large set of dependencies including Kafka, Consul and Cassandra/ScyllaDB.

In contrast, Furan 2 has greatly decreased runtime dependencies, simplified deployment and more efficient use of compute resources and now requires Kubernetes. Furan 2 uses BuildKit instead of Docker Engine and uses rootless build jobs by default. Furan 2 also now supports build cache.

···

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].