• Stars
    star
    125
  • Rank 277,822 (Top 6 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 2 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Razorpay DevX cloud on laptop solution

Devstack

Devstack: Razorpay's cloud native development ecosystem

What is Devstack

  • Client only, developer friendly stack for running cloud workloads
  • Ability to define a collection of dependent micro services(service fleet) in a composable fashion
  • Ability to deploy service fleet and associated cloud infrastructure using a single command
  • Build, Test, debug inside kubernetes with hot reloading capability
  • Create unified blueprints for your deployment stack using an ephmeral infrastructure
  • Service Level/Feature Level routing via header propogation

Why did we build this?

At razorpay, we run all our workloads on kubernetes. Like any other mature organization, we have an involved CI/CD practice with extremely sophisticated pipelines. While this works great for all production and pre-production workloads, we have been noticing over a period of time a bunch of development challenges. In essence, the goal is to Simplify developer workflow and reduce the time taken to rollout features independently. Devstack, offers a set of tools to help build and develop code on the individual developer's laptop, as if they are working on a cloud environment.

In a nutshell: "Its a client based development tool for building cloud native applications on kubernetes"

See it in action

Provisioning Service Fleet
Hot sync local code to cloud

Presentations and Videos

Setup And Installation

Pre-Requisites

As we mentioned earlier, our solution is slightly opinionated and requires the following stack:

  • Cloud Provider : AWS(Note: Our custom infra helm hooks are all designed for AWS. However, it can be extended. See details below)
  • Kubernetes: Requires verion 1.15+
  • Traefik: 2.0+ to be deployed on the kubernetes cluster above. Please see the official installation instructions
  • Helm: 3.0+
  • LocalStack: To be deployed on kubernetes cluster above. Refer to LocalStack
  • Kube Janitor: Deploy Kube Janitor

Other requirements (For hot-reload) If you are using a loosely typed language like php / python etc, then you can safely skip this section. For static languages like golang, java, nodejs etc, please refer below:

Examples / Setup

Please look into the docs folder for specific examples. Some examples are listed below:

Design Goals

High Level Goals

  • Streamlined Dev Workflow: Provide a streamlined workflow and faster merges to main or master branches.
  • Consistent Environment: Provide a seamless consistent environment across dev, stage, pre-prod and production environments
  • Faster Feedback: Reduce time to write and build containerized applications. Enable faster feedback loop on local development environment

Design Choices

  • Remove vendor lock-in (rely on OSS practically)
  • Kubernetes native (At the moment, we don't have extensions for non K8s solutions). Our environment is kubernetes native
  • Hassle Free onboarding - minimal changes to application and development lifecycle
  • Cost Effective - We should eventually be able to bill developers and teams on usage patterns.
  • Slightly Opinionated - This isn't a PaaS offering at the momemt. And hence can be extended and deployed on any native kubernetes installation

Features

  • Build, Test and Deploy applications from laptop directly into kubernetes using simple CLI tools
  • Ship code to remote container without tunneling: Sync files into container directly using File Sync(using Devspace)
  • Ability to provide hot reloading of apps : sync directly into the containers without restart(e.g. CompileDaemon for statically typed languages)
  • Support out-of-the-box support using existing available helm hooks
  • Support for extensible custom Helm Hooks that handles provisioning of AWS infrastructure components using LocalStack
  • Declarative-ly define service and service dependencies using Helmfile
  • Traffic routing to right upstream. Uses traefik 2.0 IngressRoute
  • Ability to selectively route traffic to different upstream. Done via opentelemetry context/header propagation
  • Ability to expose preview URL for all services
  • Automatic timed cleanup(ttl) of resources using Kube Janitor

Docs

Architecture

Please refer to the Architecture Overview for entire details on the devstack architecture.

Extension

We have provided a collection of custom helm hooks for AWS and kubernetes specific workloads. All of these are extensible. Please refer to the documentation of the helm hooks

Need Help

Please file an issue on this repo using the following labels: Clarification, Feature, Bug

Contributing

Please refer to the Contribution Guide

More Repositories

1

blade

Design System that powers Razorpay
TypeScript
436
star
2

ifsc

🏦 IFSC Codes Repository
HTML
326
star
3

go-financial

A go port of numpy-financial functions and more.
Go
301
star
4

razorpay-php

Razorpay PHP Library
PHP
169
star
5

razorpay-node

Razorpay node.js bindings
JavaScript
146
star
6

razorpay-python

Razorpay Python SDK
Python
146
star
7

react-native-razorpay

React Native wrapper for Razorpay's mobile SDKs
Java
119
star
8

razorpay-flutter

Razorpay Flutter Plugin
Dart
105
star
9

razorpay-android-sample-app

Sample app demonstrating integration of Razorpay checkout
Java
86
star
10

ifsc-api

🏦 Standalone API for IFSC codes
CSS
75
star
11

concierge

Web Management & Secure Access Control of AWS Security Groups. Allows you to create IP leases for incoming connections to AWS instances. Also, allows creating invites to allow guest access by URL/Email Invites.Uses two factor authentication for additional security.
Go
68
star
12

razorpay-ruby

Razorpay Ruby SDK
Ruby
62
star
13

react-native-apollo-devtools

Flipper plugin to debug apollo client cache for React Native
TypeScript
57
star
14

razorpay-cordova

Cordova wrapper around Razorpay's Android and iOS SDKs
Shell
51
star
15

razorpay-java

Razorpay Java SDK
Java
50
star
16

metro

The Service Bus!
Go
48
star
17

shubhcron

A drop-in cron replacement that can run your jobs on auspicious timings.
Go
44
star
18

razorpay-woocommerce

Razorpay Payment Extension for Woocommerce
PHP
40
star
19

public-presentations

A curated list of public talks and articles by Razorpay
39
star
20

razorpay-go

Razorpay Go SDK
Go
33
star
21

alohomora

alohomora is razorpay's secret distribution system
Python
31
star
22

razorpay-php-testapp

Sample App for Razorpay PHP Integration
PHP
27
star
23

razorpay-magento

Razorpay Payment Extension for Magento
PHP
27
star
24

trino-gateway

Traffic routing for Trino Clusters
Go
24
star
25

razorpay-pod

📱 CocoaPod implementation of Razorpay's Payment SDK. Refer for instructions:
Objective-C
22
star
26

razorpay-python-testapp

Razorpay test app for python
HTML
18
star
27

razorpay-cordova-sample-app

📱 Razorpay Sample Application for Cordova, Ionic v1 and Ionic v2
JavaScript
16
star
28

opensource.razorpay.com

Razorpay Open Source showcase website
TypeScript
16
star
29

razorpay-opencart

Razorpay Payment Extension for Opencart
PHP
16
star
30

razorpay-whmcs

Razorpay Payment Extension for WHMCS
PHP
15
star
31

i18nify

Javascript library for internationalisation
TypeScript
14
star
32

razorpay-ios-sample-app

📱 Sample app demonstrating integration of Razorpay iOS Framework
Objective-C
14
star
33

razorpay-android-custom-sample-app

Sample app to demonstrate the custom UI integration
Kotlin
13
star
34

razorpay-dot-net

Razorpay .NET SDK
C#
13
star
35

razorpay-edd

Razorpay plugin for Wordpress Easy Digital Downloads
PHP
11
star
36

razorpay-prestashop

Prestashop plugin for Razorpay
PHP
11
star
37

bhadra

Bhadra is a Vulnerability Management Platform to handle all security issues
HTML
11
star
38

razorpay-dotnet-testapp

Test app for .net integration
ASP.NET
10
star
39

lytics.js

Simpler analytics using HTML attributes.
JavaScript
10
star
40

razorpay-cscart

Razorpay Payment Extension for CS Cart
PHP
10
star
41

razorpay-capacitor

Capacitor wrapper around Razorpay's Android and iOS SDKs
TypeScript
10
star
42

razorpay-arastta

Razorpay Payment Extension for Arastta stores
PHP
9
star
43

sorting-hat

Post new signup data to Slack using the clearbit API
Ruby
8
star
44

razorpay-quick-payments

Razorpay Quick Payments plugin for WordPress
PHP
8
star
45

razorpay-woocommerce-subscriptions

Razorpay WooCommerce Subscriptions Plugin
PHP
6
star
46

razorpay-java-testapp

Sample app for Razorpay Java Integration
Java
5
star
47

darts

🎯 The Razorpay Dart Board Championship Hall of Fame
HTML
5
star
48

terraform-aws-ssl-ciphers

Common SSL Negotiation Policies to be used with AWS ELBs using Terraform
HCL
5
star
49

common-frontend-utils

Common Frontend Utils
JavaScript
5
star
50

component.js

Simple and Opinionated way to build UI Components
JavaScript
5
star
51

wercker-ubuntu14.04-ansible1.6

Ubuntu 14.04 with Ansible 1.6 box for http://wercker.com/
5
star
52

gollum-setup

Scripts to help you setup gollum
Ruby
3
star
53

teamcolony-rss

RSS Feed generator for teamcolony reports
Ruby
3
star
54

razorpay-customui-pod

iOS CustomUI SDK of Razorpay
Objective-C
3
star
55

kong-template

Kong template for plugin development
Lua
3
star
56

.github

Razorpay's Public Profile Page
3
star
57

razorpay-flutter-customui

Razorpay Flutter Plugin for Customui
Dart
2
star
58

cryptocows-whitepaper

Technical Documentation for Razorpay CryptoCows
2
star
59

ftx-hackathon

Wiki for the FTX Hackathon
2
star
60

citadel

Documentation Platform
JavaScript
1
star
61

etcd-backup

Docker file for etcd-backup running as a k8s cron job.
Shell
1
star
62

go-openssl

OpenSSL bindings for Golang
Go
1
star
63

dot-settings

JavaScript
1
star
64

subscriptions-magento-plugin

Subscriptions plugin for magento.
PHP
1
star
65

RazorpaySalesDemo

CSS
1
star
66

payment-button-wordpress-plugin

Payment button plugin for wordpress.
PHP
1
star
67

omnipay-razorpay

Razorpay plugin for Omnipay Payment Processing Library
PHP
1
star