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