Jagadeesh Katla
How to Develop Perfect Web Apps with 12 Factor Rules Sep 13, 2020
12 Factor app rules really helpful when you develop modern web apps. mainly software-as-a-service (SaaS) apps. these rules are developer-friendly and mostly proved in different types of software architecture.

The 12 Factor App website introduction looks like Below Statement because we don't need old classical methods and we will Develop and Delivery projects in minimal time. you must understand before reading the rules what are the difference between website and web apps and web services.

In the modern era, the software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps that:

- Use declarative formats for setup automation, to minimize time and cost for new developers joining the project;
- Have a clean contract with the underlying operating system, offering maximum portability between execution environments;
- Are suitable for deployment on modern cloud platforms, obviating the need for servers and systems administration;
- Minimize divergence between development and production, enabling continuous deployment for maximum agility;
- And can scale up without significant changes to tooling, architecture, or development practices.
- The twelve-factor methodology can be applied to apps written in any programming language, and which use any combination of backing services (database, queue, memory cache, etc).

we can understand these rules when we practice with serverless container technologies in the cloud. and we can develop cost-effective, zero down-time apps very easily. these rules avoid project management conflicts like auto-scaling, code database maintains, memory, and maintenance issues. project configuration, dev/prod maintenance, etc.

so what are the advantages..?

suppose if we learn and successfully apply these rules in our projects. we can get many benefits like this.

1. we can develop cost-effective apps in minimal time. already these rules proved to Develop SaaS applications.
2. Developers easily apply different programming languages to different services in a single project. 
   like frontend-javascript, backend-python, chat protocols-elixir, continuos builds-Golang, etc
3. we can understand how to maintain different environments with the environment variables.
4. we can understand how to develop microservices architecture like amazon, Facebook, Uber< Netflix, etc. (Yes, they using microservices..not monolithic).
5.we can understand the post-development stage process like software quality, DevOps, deployments, port bindings, administrations, etc.
6.we can design software products based on client requirements in Budget.

these rules do not change our fate in a single day but change our ideology. most old-fashioned developers not adopt these rules, especially those using monolithic architecture frameworks and who forced from their manager/boss complete the project in given timelines. Most of the rules I adopted last year when I used cloud technologies. I am just copying Headings from here 12 Factorapp to minimal understand. if you want a clean explanation please visit this site 12 Factorapp.

I. Codebase
One codebase tracked in revision control, many deploys
II. Dependencies
Explicitly declare and isolate dependencies
III. Config
Store config in the environment
IV. Backing services
Treat backing services as attached resources
V. Build, release, run
Strictly separate build and run stages
VI. Processes
Execute the app as one or more stateless processes
VII. Port binding
Export services via port binding
VIII. Concurrency
Scale-out via the process model
IX. Disposability
Maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity
Keep development, staging, and production as similar as possible
XI. Logs
Treat logs as event streams
XII. Admin processes
Run admin/management tasks as one-off processes

And Trust your abilities to learn, understand, and implement on each stage. I am sure these rules change every web developer's fate in months. read and practice, best of luck.