All Projects → wso2 → Product Microgateway

wso2 / Product Microgateway

Licence: apache-2.0
A cloud native, developer centric and decentralized API gateway for microservices

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Product Microgateway

Kong
🦍 The Cloud-Native API Gateway
Stars: ✭ 30,838 (+15795.88%)
Mutual labels:  microservices, api-gateway, apis, cloud-native
Product Apim
Welcome to the WSO2 API Manager source code! For info on working with the WSO2 API Manager repository and contributing code, click the link below.
Stars: ✭ 508 (+161.86%)
Mutual labels:  microservices, api-gateway, apis, gateway
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 (-36.08%)
Mutual labels:  microservices, api-gateway, cloud-native, gateway
Apioak
Full Lifecycle Management API Gateway.
Stars: ✭ 335 (+72.68%)
Mutual labels:  api-gateway, apis, cloud-native, gateway
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 (+98.45%)
Mutual labels:  api-gateway, gateway, cloud-native
Gloo
The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy
Stars: ✭ 3,219 (+1559.28%)
Mutual labels:  microservices, api-gateway, cloud-native
Go Microservices
Golang Microservices Example
Stars: ✭ 345 (+77.84%)
Mutual labels:  microservices, api-gateway, gateway
Apisix
The Cloud-Native API Gateway
Stars: ✭ 7,920 (+3982.47%)
Mutual labels:  microservices, api-gateway, cloud-native
Hgw
hgw是由gateway网关服务、manager控制服务构成的一套轻量级网关系统。目前支持http/https协议的服务控制
Stars: ✭ 81 (-58.25%)
Mutual labels:  microservices, api-gateway, gateway
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 (-50%)
Mutual labels:  microservices, api-gateway, cloud-native
Apisix Docker
the docker for Apache APISIX
Stars: ✭ 119 (-38.66%)
Mutual labels:  microservices, api-gateway, cloud-native
Krakend Ce
KrakenD Community Edition. Make your binary of KrakenD API Gateway
Stars: ✭ 245 (+26.29%)
Mutual labels:  microservices, api-gateway, cloud-native
Goku Api Gateway
A Powerful HTTP API Gateway in pure golang!Goku API Gateway (中文名:悟空 API 网关)是一个基于 Golang开发的微服务网关,能够实现高性能 HTTP API 转发、服务编排、多租户管理、API 访问权限控制等目的,拥有强大的自定义插件系统可以自行扩展,并且提供友好的图形化配置界面,能够快速帮助企业进行 API 服务治理、提高 API 服务的稳定性和安全性。
Stars: ✭ 2,773 (+1329.38%)
Mutual labels:  microservices, api-gateway, gateway
Tenso
Tenso is an HTTP REST API framework
Stars: ✭ 167 (-13.92%)
Mutual labels:  microservices, api-gateway, gateway
Gravitee Gateway
Gravitee.io - API Management - OpenSource API Gateway
Stars: ✭ 1,123 (+478.87%)
Mutual labels:  microservices, api-gateway, gateway
Tree Gateway
This is a full featured and free API Gateway
Stars: ✭ 160 (-17.53%)
Mutual labels:  microservices, api-gateway, gateway
Kuma
🐻 The Universal Service Mesh. CNCF Sandbox Project.
Stars: ✭ 2,516 (+1196.91%)
Mutual labels:  microservices, apis, cloud-native
Curiefense
Curiefense is a unified, open source platform protecting cloud native applications.
Stars: ✭ 136 (-29.9%)
Mutual labels:  microservices, cloud-native
Spring Cloud Config
External configuration (server and client) for Spring Cloud
Stars: ✭ 1,740 (+796.91%)
Mutual labels:  microservices, cloud-native
Coolstore Microservices
A full-stack .NET microservices build on Dapr and Tye
Stars: ✭ 1,903 (+880.93%)
Mutual labels:  microservices, cloud-native

WSO2 API Microgateway

The WSO2 API Microgateway (MGW) is a Cloud Native API Gateway which can be used to expose one or many microservices as APIs.

The WSO2 API Microgateway is designed to expose heterogeneous microservices as APIs to end consumers using a common API interface based on the Open API Specification. This helps expose microservices using a unified interface to external consumers, internal consumers and partners. It applies the common quality of service attributes on API requests such as security, rate limiting and analytics and also offers a wide range of features which helps organizations to deploy APIs microservice architectures efficiently.

Build Status License License CII Best Practices

Table of Contents

Quick Start

Let's expose the publicly available petstore service via microgateway.

  1. Download the latest WSO2 API Microgateway release from the product official page or github release page and extract it. For Docker container based usages, downloading only the toolkit will be sufficient.

  2. Add the 'bin' directory of the extracted distributions to your PATH variable.

    Docker
    export PATH=$PATH:<TOOLKIT_EXTRACTED_LOCATION>/bin
    
    Virtual Machine
    export PATH=$PATH:<TOOLKIT_EXTRACTED_LOCATION>/bin
    export PATH=$PATH:<RUNTIME_EXTRACTED_LOCATION>/bin
    
  3. First we need to initialize a project by adding the open API definition of the petstore service. We'll name the project as "petstore". To initialize the project, execute following command.

    micro-gw init petstore -a https://petstore.swagger.io/v2/swagger.json
    
  4. The project is now initialized with the open api definition of the petstore service.

  5. Next, Lets build the project and create a microgateway instance.

    Docker
    micro-gw build petstore --docker-image petstore:v1 --docker-base-image wso2/wso2micro-gw:3.2.1
    
    Virtual Machine
    micro-gw build petstore
    
  6. Start the gateway.

    Docker
    docker run -d -p 9090:9090 -p 9095:9095 petstore:v1
    
    Virtual Machine
    gateway <PROJECT_LOCATION>/target/petstore.jar
    
  7. Now we can test our API. Since APIs on the MGW are by default secured. We need a valid token or key in order to invoke the API. MGW can issue API keys on its own. Execute the command below to get a API key from microgateway. Following command will set the api key into TOKEN variable.

    TOKEN=$(curl -X get "https://localhost:9095/apikey" -H "Authorization:Basic YWRtaW46YWRtaW4=" -k)
    
  8. We can now invoke the API running on the microgateway using cURL as below.

    curl -X GET "https://localhost:9095/v2/pet/1" -H "accept: application/json" -H "api_key:$TOKEN" -k
    

Documentation

Features

Below is a list of most noticeable features out of many other features MGW hosts.

  1. Exposing one or more microservices as APIs using the Open API Specification.
  2. Authentication and Authorization based on OAuth2.0 (opaque tokens and JWTs), API keys, Basic Auth and Mutual TLS.
  3. Rate Limiting of API requests based on numerous policies.
  4. Business Insights through API Analytics.
  5. Service discovery.
  6. Request and Response transformations.
  7. Load balancing, failover and circuit breaking capabilities of API requests.
  8. Seamless Docker and Kubernetes integration.
  9. Integration with WSO2 API Manager to support design first APIs, API Analytics and shared rate limiting.

It also has the following characteristics that makes it a perfect fit for microservice architectures

  • Less than 1s startup time, allowing faster scaling.
  • Built on a stateless architecture, allowing for infinite scaling.
  • Has an immutable runtime, making it heavily robust.
  • CI/CD friendly worlkflow.
  • Runs in isolation with no dependencies to other components

Workflow

Architecture

Exposing APIs with MGW involves in two main phases.

Dev Phase

MGW uses OpenApi specification and a set of MGW specific OpenApi vendor extensions to define an API. Users can use these extensions to enable/disable different gateway features on an API. A sample can be found in here. Dev phase involves defining the required API(s) using these extensions. This phase can involve below basic steps.

  1. Initializing a project.
  2. Adding/updating project's OpenApi definition(s).
  3. Sharing the project with other developers/teams (in Github or any VCS)

Ops Phase

Once the project is ready for the deployment, MGW can produce three types of main deployment artifacts. Out of these three types, you can select which artifact(s) you need for the required deployment.

  1. Executable
    This is the default build output of a project. Output executable can be provided to a MGW runtime installation to start a microgateway server instance. Otherwise this executable can me mounted to a MGW docker container.
  2. Docker
    MGW Toolkit build command can be configured to produce a docker image required to create a docker installation.
  3. Kubernetes
    Similar to docker images, build command can be configured to produce kubernetes artifacts required to create a kubernetes installation.

Contributing

MGW runtime is mostly implemented with ballerina-lang. However the toolkit is implemented with Java. You can contribute your code to both runtime and toolkit.

Contribution is not limited to the code. You can help the project with identifying issues, suggesting documentation changes etc.

For more information on how to contribute, read our contribution guidelines.

Contact

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