#12Factor App and explain how they contribute to the design and development of modern, scalable, and maintainable #cloud-native applications
1. #Codebase: Maintain one codebase tracked in version control, allowing for multiple deployments. This ensures consistency and reproducibility across environments.
2. #Dependencies: Explicitly declare and isolate dependencies. Use dependency management tools and avoid relying on system-wide packages to ensure consistent and predictable runtime environments.
3. #Config: Store configuration in the environment. Keep environment-specific configuration (such as credentials or URLs) separate from the codebase, allowing for easy configuration management and portability.
4. #Backing services**: Treat backing services (like databases, caches, or queues) as attached resources. Access these services via network endpoints and configure them via environment variables, enabling easy replacement and scaling.
5. #Build, release, run: Strictly separate build, release, and run stages. This ensures a clear distinction between code development, packaging, and deployment, leading to reproducible and reliable builds.
6. #Processes: Execute the application as one or more stateless processes. Design applications to be stateless and share-nothing, enabling horizontal scaling and easy recovery from failures.
7. #Port binding: Export services via port binding. Use self-contained services that export their functionality via ports, making them accessible to other services and promoting flexibility and scalability.
8. #Concurrency: Scale out via the process model. Scale the application horizontally by adding more stateless processes, rather than vertically by increasing the size or power of individual instances.
9. #Disposability: Maximize robustness with fast startup and graceful shutdown. Design applications to start up quickly and shut down gracefully, allowing for easy scaling, deployment, and resilience to failures.
10. #Dev/prod parity: Keep development, staging, and production environments as similar as possible. Aim for consistency across environments to reduce bugs caused by environmental differences and streamline deployment processes.
11. #Logs: Treat logs as event streams. Log output to stdout or stderr and let the execution environment handle log aggregation and storage. This simplifies debugging, monitoring, and analysis.
12. #AdminProcesses: Run admin/management tasks as one-off processes. Implement management tasks, such as database migrations or one-time scripts, as standalone processes rather than bundling them with the main application, ensuring separation of concerns and maintainability.
B.Tech CSE JIIT 2026
1wInsightful