If you are writing software applications for a while that can be in the category of a SaaS application and has to scale and work in a distributed environment, you might face or participate in Design or Architectural Audits of your applications. If you want to conduct or simply Ice-breaking with the process, you would need homework before you proceed. If you don’t have a well-written template that helps reduce the time taken the process or you want to know how to start with the review, this blog can help plan it better.
12 Factors App
It is a set of guiding rules which can be used to govern and audit the applications which we are writing to be competitive SaaS applications. These are very detailed and well explained on The Twelve-Factor App page. My intention in this blog is to use it as a reference and build a set of questions that we can use to ice-break the Audit process. All questions might not be applicable to a particular service that you have written but the list of questions is not exhaustive. You can also add your own version to it if it makes more sense. The answer to these questions can be useful in collecting general violations of each of the factors which we can collect.
How to use This Questionnaire?
The below tables contain the link to explanations of the 12 Factor App guidelines. For e.g. You can click on the hyperlink of the I. Codebase and come back to the question. By looking at the answer to each of these questions, you would be able to find if any of the guidelines are applicable in your scenario and if applicable, if the service is following the principle or not.
Are all services part of a CI pipeline? Is it automated?
How deployment is triggered? Is it scripted and source controlled for each environment?
What is the release frequency?
What is the revert policy in case of failures? Blue/Green enabled?
Build, Release, Run should avoid inconsistencies
What next?
So far, I have only listed questions to the first five rules of the 12 Factor App. In the upcoming part of the continuation, I will list more questions as applicable covering other aspects of the application. You are welcome to add more questions in the comments or comments on the existing ones if you find them relevant. Thanks for Reading!!
Manish Mishra is Lead Software Consultant, with experience of more than 7 years. His primary development technology was Java. He fell for Scala language and found it innovative and interesting language and fun to code with. He has also co-authored a journal paper titled: Economy Driven Real Time Deadline Based Scheduling. His interests include: learning cloud computing products and technologies, algorithm designing. He finds Books and literature as favorite companions in solitude. He likes stories, Spiritual Fictions and Time Traveling fictions as his favorites.