Inspiration

Since my discovery of docker, I've always been interested in DevOps and CI CD practices. On LinkedIn or Twitter, people always joke and post memes about breaking the production. I wanted to turn it into a fun game where people could laugh when seeing the errors and basically turning this traumatic experience of breaking a production into a really fun thing. Another advantage is discovering the basics errors we make that are likely to break the prod

What it does

The user authenticate with github and then paste a link of a public url repository. They select the project type and the backend automatically deploys the project on AWS cloud. The errors logs are parsed and the user is given a score. The critical the errors the better it is. The user can consult the leaderboard and see the list of the users and the errors as well as the project types and their url.

How I built it

I built it using Next.js and Typescript. I used clean architecture principles to decouple the backend from the framework. I used codebuild for the build, s3 for the artifacts and cloudwatch-logs for the logs. For the hosting I used amplify. The deployment instances of the users' project depend on the project type (Elastic Beanstalk or Lambda)

Challenges I ran into

Since it is my first experience with aws it was difficult to get used to the services and understand how each relates to the others. The documentation is clear but it do not provide practical examples of how the services can be combined and used in real world projects. Also the javascript sdk just provides basic examples which are not in Typescript. Figuring out the type of the parameters for Cloudwatchquery for example was not intuitive with aws sdk in ts.

Accomplishments that I'm proud of

I'm really proud because I managed to get a good understanding of aws ecosystem as well as the powerful help that aws q provided me and the opportunities lying in AI-assisted coding. Implementing a full system like this in clean architecture was a very good experience. All of the theoretical principles I've learned so far have been put in a real project. I m proud of the implementation as well as the testing that saved me a lot of time in debugging.

What I learned

I learned a lot about aws cloud services, aws sdk, clean architecture, dependency inversion. I was very happy to absorb the information contained in the rich aws documentation. I also got better understanding about how aws will be very impactful tools in my career

What's next for break my prod

There are a lot of features which can be added: We can add other code repositories like gitlab or bitbucket. We can also add another game called save my prod where, instead of breaking the production, the users will be required to correct the project errors since the project are public. A CI CD pipeline can be created using aws CodePipeline and when the users create new branches and commit changes to the project, the project will be deployed and we will see the Saviors and their Savees on the leaderboard. The other users could go and see which modifications where made and how to solve this particular problem. Making it easier to know the single most asked internal question by Cloud engineers and Developers : "What the hell happened to the prod ?". Another interesting feature is the detection of vulnerabilities in the code and based on their levels, the scoring will be better. This will help to educate more developers and cloud or network engineers about the vulnerabilities underlying each app deployment. The tools I know, are either CLI tools or api based. I think aws should create a service dedicated to vulnerabilities detection in the code deployment process.

Thanks for reading.

Built With

Share this project:

Updates