ReadingDiscover What It's Like to Work at DevRev: Get an Intern’s View from a Software Company Startup
blog

Discover What It's Like to Work at DevRev: Get an Intern’s View from a Software Company Startup

hero

Who are we?#

On May 2, 2022, we kicked off an incredible experience in the DevRev Bangalore office as interns. We embraced life in a new city and discovered their tech stack with help from the warm and welcoming team! Despite some initial challenges during our onboarding process, everyone was incredibly hospitable - it felt like home away from home!

After unpacking our bags and getting up to speed with the project's requirements, we jumped right into developing a sample application that could be deployed on Amazon Elastic Beanstalk. Let the coding commence!

The first step in a new project#

With careful consideration, we crafted a product requirements document that was customized to the specifications of one of our Beta customers. As every minute detail was discussed and accounted for, we gradually zoomed in on all aspects - from high-level descriptions to intricate technical specs - ensuring nothing had been overlooked.

As part of our project, we covered some of the following high-level tasks.

Create the flask application#

We sought to explore the capabilities of AWS Beanstalk when it comes to CI/CD deployments using Github actions. To do this, we created a small Flask app with a minimalistic design and simple HTML templates. This allowed us to test different methods for sending data via APIs or webhooks as well as setting up virtual environments on our local machines in Python- all while keeping things super straightforward!

all while keeping things super straightforward!

Create GitHub organization and uploading to Repo#

To simulate an actual DevOrg customer experience, we launched our project into a GitHub repository and used Github Actions to deploy it on AWS Beanstalk. We made this process possible through the config yaml file located in the .github folder – all using my personal free-tier AWS account!

tier AWS account!

Create separate DevOrg on DevRev and GitHub integration#

We created a separate DevOrg on the DevRev app to bring our sample application to life. This incredible feature of this powerful tool allowed us to import users, issues and even set up automations based upon activity - making it easy for everyone involved in the project! In addition, you can integrate your existing GitHub repository or organization with DevRev - giving you instant access not only visibility across tasks but also enabling work action associations that make tracking changes simpler than ever before.

We smoothly connected our DevOrg sample to the GitHub organization, thanks to webhooks. This way, any event on Github can be monitored and its payload sent directly through a URL provided by our DevRev app. We even found solutions for CI/CD pipelines involved in Elastic Beanstalk deployments-- giving us seamless failure-log management so users stay up-to-date!

making it easy for everyone involved in the project! In addition

you can integrate your existing GitHub repository or organization with DevRev - giving you instant access not only visibility across tasks but also enabling work action associations that make tracking changes simpler than ever before.

Deploy Elastic Beanstalk App with Github#

Using Github Actions, we automated our application's build and deployment process. Every push to the main branch triggers a workflow in which our app is built, tested then deployed via AWS Beanstalk with its version marked by the git commit SHA ID. This allows us to easily track CI/CD changes on DevRev that are associated with specific work items - all thanks to adding each unique commit ID as an identifying Version Label for every EB deploy!

all thanks to adding each unique commit ID as an identifying Version Label for every EB deploy!

Send Payload with CI/CD Info to Any API with AWS Lambda Post Deployment#

To ensure the accurate tracking of changes in our timeline, we set up a local ngrok server and explored using an AWS service called EventBridge. Ultimately, though it didn't quite provide us with all of what was needed for picture-perfect results; so we crafted a Lambda function to pick up on environment updates from Elastic Beanstalk and launch into action! With each successful change comes an event payload containing the name of that respective environment - enabling us to retrieve pertinent commit IDs through querying the EB API.

perfect results; so we crafted a Lambda function to pick up on environment updates from Elastic Beanstalk and launch into action! With each successful change comes an event payload containing the name of that respective environment - enabling us to retrieve pertinent commit IDs through querying the EB API.

Create a Stack in cloud formation template#

Our team created an AWS Cloudformation template for setting up a Lambda function and built a bash file to deploy it with ease. This script streamlines the process by verifying certain criteria (like valid URL, correct CLI set-up, accurate AWS profile) before pushing our yaml based cloud formation template into the environment!

up

accurate AWS profile) before pushing our yaml based cloud formation template into the environment!

Update Timeline with Payload Information#

With the right payload data, we can tailor DevRev's components to get exactly what you need. With Rego code in a yaml config file, your timeline will stay up-to-date automatically! Customize flows based on readymade samples or jump into open-source options for an even deeper level of customization.

to-date automatically! Customize flows based on readymade samples or jump into open-source options for an even deeper level of customization.

The end of our journey#

Our journey through the week was an incredible learning experience – from how to dynamize event sources with automation tools, to finally integrating those processes into our DevRev application. Every day revealed new insights and knowledge, allowing us to gain a greater understanding of each task until it was fully complete.