Inside the OpenGov Cloud: Application Architecture and Tech Stack

May 2, 2019 – Ashwani Wason

The OpenGov platform was originally developed as a monolithic application, which has continued to evolve and is still heavily in use. The newer applications, however, are written based on microservices practices. Acquisitions along the way have contributed to the diversity of tech in our application ecosystem. In summary, architecturally speaking, OpenGov’s application world is expected to thrive with its polyglot citizens in the form of monoliths and microservices. These are key aspects that we use to inform our decisions in the infrastructure land. It’s also worth mentioning that OpenGov uses cloud computing services provided by AWS.

Now, for the specifics of OpenGov’s tech stack.

Our frontend applications are written in TypeScript and React, with some JavaScript and jQuery. GraphQL is used by some frontend applications. Our backend microservices are written in Java and Node.js, with some Python, while the monoliths are written using the Ruby on Rails framework. Apache Kafka is used for pub-sub messaging in some applications. You can view more details on our application development tech stack in the embed below.

The current generation of our data platform uses PostgreSQL as the relational database in most backend services, with some MySQL and Amazon Aurora. Our data warehouse is based on Amazon Redshift. A few of our backend services use MongoDB as a document store. Redis is the main in-memory database, with some services using Memcached. You can view more details on our data platform tech stack in the embed below.

On the forefront of infrastructure and operations are containerization platforms, Docker and Kubernetes. Our continuous monitoring and alerting strategy is built on industry-leading services such as Datadog, Sumo Logic, StatusCake, Statuspage, Sentry, OpsGenie, and Slack. Terraform is the tool of choice for bootstrapping our infrastructure. Jenkins is used for CI and Spinnaker for CD, supported by JFrog Artifactory for artifact management and Helm for artifact deployment. LaunchDarkly is used for feature flagging. Our security and compliance operations uses the following continuous monitoring and analysis services covering full lifecycle of our bits: GitHub security alerts for our code repositories, JFrog Xray for our CI system, and Threat Stack for deployments. You can view more details on our engineering operations tech stack in the embed below.

Finally, our Software Quality Assurance team uses Howitzer and Nightwatch.js as the main frameworks for functional testing. We use a homegrown framework called rAPId for API testing, BrowserStack for cross-platform testing, and Ghost Inspector for continuous automated smoke and regression testing. We use TestRail for test-case management. You can view more details on our quality assurance tech stack in the embed below.

Interested in contributing to OpenGov's Engineering culture of innovation, leading-edge technology adoption, and quality? Check out our current job openings.

Category: Technology