DevOps is a set of practices that automates the processes between software development and IT teams. This is to enable them to build, test, and release software faster and more reliably. It builds a culture of collaboration between teams that historically functioned in relative silos. The promised benefits include increased trust, faster software releases, ability to solve critical issues quickly, and better manage. Site Reliability Engineering is a discipline that fuses aspects of software engineering and applies that to IT operations problems. The main goals are to create ultra-scalable and highly reliable software systems. DevOps Principles (In Short): 1. Reduce Organization Silos: Avoid the communication gap between the Developers and Operation team, Shared Ownership, Work as a Team. 2. Accept failure as normal: Treat application/service failures as normal, Blameless Postmortems. 3. Measure Everything: User impact, network stability, access methods and etc. 4. Automate as much
The Twelve-Factor App ( 12 Factor App) : 1. Codebase: One Revison Control System for entire codes. All codes related to an application (eg. source code, scripts, configuration settings) are stored in source code repository. This should be accessible for development, testing, system administration stuffs. This also accessible to all automation scripts that are part of Continuous Integration/Continuous Delivery (CI/CD) processes that are part of the enterprise's Software Development Lifecycle (SDLC). 2. Dependencies: Explicitly declare and isolate dependencies, avoid storing artifacts along with source code in the source code repository. Only code that is unique and relevant to the purpose of the application is stored in source control and any external artifacts/dependencies (eg. node.js, java.jr) should be referenced in a dependencies manifest. So that ii will be loaded accessed and loaded into memory at development, testing and production runtime. 3. Config: Store Configuration a