Material prepared to present top government officials of NISG (National Institute for Small Governance) workshop at New Delhi by CCICI App Factory Task Force.
1. By Krishna Kumar @CCICI Application Factory Task Force
A snippet from material for National Workshop for NISG, New Delhi- 11th June 2015
12 Factor app –
an introduction
2. What is
12 factor
app?
• The twelve-factor app is a methodology for building
software-as-a-service apps that has clean contract with
underlying operating system, enable continuous
deployment with maximum agility, significant scale up
capability, and Independent of programming languages
and back end services.
• This is derived by Heroku (a Sales Force PaaS platform)
after witnessing thousands of applications development &
deployments in cloud.
• Read more @http://12factor.net/
Why 12
factor
app?
• Good code fails if you don’t have a process and platforms.
Complexity increases if you have diverse programming
environments. Applying certain constraints will help
adequately track, use and share the applications easily –
that’s why 12 factor app is popular in cloud development.
• Its build to exploit the modern cloud platforms principles
with agility in mind and so easy for new developers to join
with less time, less tooling and low cost
3. 12 factors
(solid
principle for
Cloud
Software
Architecture)
Codebase One codebase tracked in revision control, many
deploys
Dependencies Explicitly declare and isolate dependencies
Config Store configuration in the environment
Backing Services Treat backing services as attached resources
Build, release, run Strictly separate build and run stages
Processes Execute the app as one or more stateless
processes
Port binding Export services via port binding
Concurrency Scale out via the process model
Disposability Maximize robustness with fast startup and
graceful shutdown
Dev/prod parity Keep development, staging, and production as
similar as possible
Logs Treat logs as event streams
Admin processes Run admin/management tasks as one-off
processes
4. Use Cases
Best fit for Docker considering it code registry, hub, isolated images, DevOps nature - build once and run
anywhere. Though you can store all information in Docker container itself, there are best way to configure in other
places to be in align with 12 factor app.
•http://www.slideshare.net/williamyeh/12-factor-app-from-dockers-point-of-view
•http://www.activestate.com/blog/2014/10/getting-granular-microservices-paas-twelve-factor-apps-and-docker
Software deployment in Platform-as-a-Service (PaaS) must be scalable, reliable and easy. 12 factor app is a very
useful one such approach. In fact this approach can be treated as a baseline for modern app building and PaaS can
move beyond to further incorporating hybrid cloud and other legacy app migration scenarios.
•http://apprenda.com/blog/paas-should-move-beyond-twelve-factor-app/
•http://blog.pivotal.io/cloud-foundry-pivotal/features/all-things-pivotal-episode-7-a-look-at-12-factor-apps
In IoT world each individual device matters and act like a disposable standard interface. End user expects the
device to work well with even spotty connectivity and app developer must follow some standards to interact with
all kinds of app stacks. Each and every factor in 12 factor app directly helps IoT apps development.
•https://resin.io/blog/reinterpreting-12-factor-apps-for-the-internet-of-things
•http://community.arm.com/groups/internet-of-things/blog/2014/05/27/design-patterns-for-an-internet-of-things
Micro Services is a componentization via services – do one thing and do it right approach. With smart end points
distributed system based on micro services communicates via message queues. A smaller component with distinct
interface is easy to build and this software methodology helps a lot in that environment - considering building a
large system with small such ‘standardized’ components.
•http://www.slideshare.net/dejanglozic/micro-services-reactive-manifesto-and-12factors
•https://spring.io/blog/2015/01/30/why-12-factor-application-patterns-microservices-and-cloudfoundry-matter
5. Some
other
similar
Patterns
Various cloud computing patterns
http://www.cloudcomputingpatterns.org
Microsoft Cloud Design Patterns
https://msdn.microsoft.com/en-us/library/dn568099.aspx
IBM methodology
http://www.computerworld.com/article/2490115/app-development-ibm-brings-development-methodologies-to-
the-cloud.html
Google Model
https://cloud.google.com/docs
CollabNet View
ttp://www.collab.net/content/enterprise-cloud-development-roadmap-modern-software-delivery
IoT Canvas
http://www.slideshare.net/IoTMethodology/a-methodology-for-building-the-internet-of-things-42112202
31 Reference Architectures for DevOps and Continuous delivery
http://server.dzone.com/articles/31-reference-architectures
Yarmouk University Model
http://www.igi-global.com/chapter/software-development-methodologies-cloud-computing/75743
IEEE Papers (several other papers in this line…)
http://ieeexplore.ieee.org/xpl/abstractAuthors.jsp?reload=true&arnumber=6927520
http://www.ijstr.org/final-print/oct2013/Model-Driven-Approach-For-Developing-Cloud-Application.pdf
Thank You