Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

0

Share

Download to read offline

The Twelve-Factor App

Download to read offline

The 12-factor app is a set of important criteria for an application to strive in a modern technology world. The benefits of following these 12 principles come in the areas of development performance, teams benefiting from best practices, future-proof architecture, and integration.
Understanding 12 factors on a conceptual level using practical examples is the goal of the talk.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

The Twelve-Factor App

  1. 1. The Twelve-Factor App ...and beyond
  2. 2. So what are the Twelve Factors? The Twelve Factors aren’t rules set in stone. They are not strictly necessary to follow to achieve the same result. Same as Patterns or Refactorings they are guidelines and approaches that one can follow to make your software scalable and future-proof. ● Applicable to any programming language with any backends ● Suitable for all sizes of apps and facilitates organic growth ● Facilitates architecture and clean contract between infrastructure, runtime and application ● Minimizing the cost of onboarding new developers by using shared approaches, concepts and terminology
  3. 3. I. Codebase One codebase tracked in revision control, many deploys II. Dependencies Use dependency management: declare (and fix) dependencies and resolve them during the build 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 The Twelve Factors at a glance
  4. 4. Go ahead and use the Twelve Factors
  5. 5. But why?
  6. 6. Non-functional business requirements ● Growth capacity => Scalability ● Time to market => Efficient provisioning and deployment ● Zero downtime (X nines) => Redundancy, Blue-Green deployment ● Business Continuity => Redundancy, Monitoring
  7. 7. What are we talking about Client Server App
  8. 8. Let’s apply some load... Client Server
  9. 9. Scalability Vertical Horizontal
  10. 10. Vertical scalability Client Server
  11. 11. ...still limited possibilities Clients Server
  12. 12. Are there any other solution?... Clients Server
  13. 13. Back to square one - apply some load Client Server
  14. 14. Horizontal scalability Client Load balancer
  15. 15. Horizontal scalability with elasticity Load balancer VM VM VM VM
  16. 16. Challenges of Horizontal Scalability
  17. 17. So what are the new challenges? App State (Session, DB, Messaging, Caches) Ephemeral instances - they come and go - as needed Provisioning & Deployment (Code, Versions, Runtime, Environment) Maintenance & Monitoring App App App
  18. 18. And if that was not enough of a challenge…. State (Session, DB, Messaging, Caches) Ephemeral instances Provisioning & Deployment (Code, Versions, Runtime, Environment) Maintenance & Monitoring State (Session, DB, Messaging, Caches) Ephemeral instances - they come and go - as needed Provisioning & Deployment (Code, Versions, Runtime, Environment) Maintenance & Monitoring State (Session, DB, Messaging, Caches) Ephemeral instances Provisioning & Deployment (Code, Versions, Runtime, Environment) Maintenance & Monitoring Dev Test Prod
  19. 19. Aspects of the Twelve Factors Building and Releasing Deployment and Running Environment provisioning Operations and Monitoring Architecture and State
  20. 20. Building and Releasing I. Codebase One codebase tracked in revision control, many deploys One-to-one correlation between the codebase and the app II. Dependencies Use dependency management: declare dependencies and resolve them during the build Fix dependency versions and prevent dependency leaks V. Build, release, run Strictly separate build and run stages
  21. 21. Environment provisioning IX. Disposability Maximize robustness with fast startup and graceful shutdown III. Config Store config in the environment X. Dev/prod parity Keep development, staging, and production as similar as possible
  22. 22. Deployment and Running V. Build, release, run Strictly separate build and run stages VI. Processes Execute the app as one or more stateless and share-nothing processes VII. Port binding Export services via port binding No containers, self-contained VIII. Concurrency Scale out via the process model IX. Disposability Maximize robustness with fast startup and graceful shutdown XII. Admin processes Run admin/management tasks as one-off processes. Same codebase, same release, same environment, same config
  23. 23. Architecture and State III. Config Store config in the environment IV. Backing services Treat backing services as attached resources 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
  24. 24. Operations and Monitoring XI. Logs Treat logs as event streams IV. Backing services Treat backing services as attached resources IX. Disposability Maximize robustness with fast startup and graceful shutdown
  25. 25. Whoooh.... Anything else? ● DevOps ● Containerization ● Microservices ● Zero downtime updates ● Blue/green deployment ● Config server ● CI/CD ● Circuit Breakers ● 15 factors ● Infrastructure as a code ● Cross-service traceability ● Much more...
  26. 26. Yaroslav Novytskyy www.linkedin.com/in/ynovytskyy @ynovytskyy Q&A

The 12-factor app is a set of important criteria for an application to strive in a modern technology world. The benefits of following these 12 principles come in the areas of development performance, teams benefiting from best practices, future-proof architecture, and integration. Understanding 12 factors on a conceptual level using practical examples is the goal of the talk.

Views

Total views

198

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

6

Shares

0

Comments

0

Likes

0

×