SlideShare a Scribd company logo
The Twelve-Factor App
ddemirel / 24.07.2018
https://12factor.net
Nedir?
Ölçeklenebilir cloud tabanlı/SaaS uygulamalar geliştirebilmek
için 2012 yılında Heroku’nun kurucularından olan Adam Wiggins
tarafından ortaya atılmış bir manifestodur.
On iki faktör uygulaması herhangi bir programlama dili ile yazılmış uygulamalara
uygulanabilir.
«Bizim motivasyonumuz, modern uygulama geliştirmesinde gördüğümüz bazı sistemik
problemlerin farkındalığını arttırmak, terimlerle birlikte geniş kavramsal çözüm setleri
sağlamak ve bu problemleri tartışmak için ortak bir kelime sunmakdır.»
https://12factor.net
Amaç?
• Projeye yeni katılan geliştiricilerin ortamlarını hızlı ve ucuz
maliyetli bir şekilde ortamlarını kurabilmeleri ve
otomasyonlarını sağlayabilmeleri için direktiflerin
kullanılması
• Çalışma ortamları arasında maksimum taşınabilirlik sunan
temel işletim sistemi ile şifresiz iletişim vardır
• Üzerine WebApp/SaaS uygulamalar deploy edilebilecek
modern Cloud Platformları sayesinde sunucu ve sistem
yöneticiliği ile uğraşmamak
• İşlem, mimari veya geliştirme uygulamalarında önemli
değişiklikler olmaksızın ölçekleyebilmek
12 Factor Apps
1. Codebase
• Uygulamanızın dev, pre-prod, production için bir tane
Codebase olması. Environment ile ilgili config bilgilerinin
ilgili environment ortamında bulunması .
• Pre-prod ortamına commit edilmemiş dev geliştirmeleri veya
production ortamına commit edilmemiş pre-prod
geliştirmeleri olabilir. Tüm bu versiyonlara ait kodun tek bir
codebase üzerinden kontrol edilebilmesi gerekmektedir.
2. Dependencies
• Projenizin bağımlılıklarını, bağımlı olduğu diğer
kütüphaneleri projenizin içerisine statik olarak gömerek
değilde, açık bir şekilde bir dosyada belirterek ve bir paket
yöneticisinin ilgili bağımlılıkları getirmesini sağlatarak
gerçekleştirmelisiniz. Bunun için farklı dillere yönelik farklı
paket yöneticileri bulunuyor.• RubyGems / Bundler (Ruby)
• PIP / PyPI (Python)
• Packagist / Composer (PHP)
• NPM (Node.JS)
• Bower (JS, CSS, HTML)
• CocoaPods (Objective-C)
• Maven (Java)
• Lein (Clojure)
Bu sayede Codebase
içerisindeki bir dosyada
bağımlılıklarınızın ismini,
versiyonunu tutmanız yeterli.
3. Config
• Projenize ait konfigurasyon bilgilerini kodunuzun içerisinde
statik olarak tutmayın. Çünkü test, preprod, prod veya başka
bir durum için ortamı klonlandığında bu konfigurasyon
bilgilerinin güncellenmesi gerekecektir.
Konfigurasyon bilgileri;
• Veritabanı, Memcache ve diğer Backend servislerine erişim bilgilerini içerebilir.
• Dışarıdaki başka servislere erişim için Credentials(AWS, Twitter, Facebook vb)
• Deploy edilen hostname ile ilgili konfigurasyon bilgilerini içerebilir.
• Bu tip configurasyon bilgilerinin env variable olarak
saklanması. Kodun ortamdan bağımsız olmasını sağlayacaktır.
4. Backing Services
• Arka planda çağrılan servisleri microservis olarak kullanması.
Bir kaynak olarak kullanılması. İlgili kaynağa erişebilmek için
gerekli DNS adresinin ve Credentials bilgisinin yeterli olması.
En önemli terimlerden birisi Loose Coupling olması
Bu sayede sistemin arka planında kullanılan servisleri kod
değişikliği yapılmadan sadece
konfigurasyon güncellemesi değiştirilebilir.
5. Build, Release Run
• Build, Relase ve Run işlemlerinin birbirinden ayrılması.
Deployment araçları, otomasyon araçlarının bu işleri
birbirinden ayırarak tüm süreçleri oluşturması beklenir.
1. Code Güncellemesi
2. Build
3. Release (Config bilgilerinin eklenemesi)
4. Run Time Deploy’u
6. Processes
• Stateless (State tutmayan) process’ler geliştirin. State veya veri
tutma ihtiyacınız var veritabanı gibi stateful backend
servislerinde bu bilgileri tutun. Bu sayede 1..n Process
uygulamanızı çalıştırabilirsiniz. Burada bellekte tutulan sticky
session yerine bunları Redis/Memcached saklayarak servis
olarak kullanmak Process sayınızı kolay bir şekilde
arttırabilmenizi sağlar.
• Bu sayede servislerinizi kolayca scale edebilirsiniz
7. Port Binding
• Servislerin dışarıya port binding sayesinde belli URL ve portlar
üzerinden erişilebilir hale gelmesi. Bu sayede istediğiniz
servise bu IP ve Portlar üzerinden erişebilirsiniz.
• Servislerin belirli kurallara göre dışarıya açılıp açılmayacağını
belirleyedek erişim güvenliği de sağlanmış olur
Müşteri Servisi https://192.162.12.16:5555
Ürün Katalog Servisi https://23.123.15.17:5000
8. Concurrency
• Çalışan processlerin ölçeklendirilme ihtiyaçlarına göre eş
zamanlı şekilde tasarlanması ve duruma göre klonlanması ve
restart edilebilmelidir. Bu sayede Req/Resp yük çoğaldı
ise Web modülü, eğerki işleme kısmında bir gecikme var
is Worker modülü ölçeklendiribilecektir (Yatay
ölçeklendirme).
9. Disposability
• Hızlı şekilde başlatılabilmeli ve hızlı şekilde kapatılabilmeli.
Servislerin tek kullanımlık oluşturulup yok edilebilmeli.
Bunun maliyeti oldukça düşük olmalı. Dockerlar bunun için
uygun örnekler . AWS Lambdalarda bunun için iyi bir örnek
• Örn. FaaS(Function as a Service, Serverless)
10. Dev/Prod Paritiy
• Geliştirme ve Canlı ortam arasında oluşacak boşluğu(gap)
kapatmayı amaçlar. Bu boşluklar/farklılaşmalar neden ortaya
çıkar ?
• Zaman Farkı: Geliştirme ortamına Push saatte bir gerçekleşirken, production ortamına Push işlemi
haftalar aylar alabilir.
• Personel Farkı: Geliştirme(Dev) ve Deploy(Ops) işlemlerinin farklı kişiler tarafından yapılması,
geliştirme işleminin bitmesine rağmen deploy süresini daha ileriye atabilir.
• Tools(Araçlar) : Geliştirme ve Canlı ortamda kullanılan araçların farklı olması. Örneğin geliştirme
ortamında Tomcat, Canlı ortamda Weblogic kullanılması vb..
Geleneksel Uygulama ile Twelve-factor App arasındaki olması istenen farkları aşağıda listelemiş.
11. Logs
• Logları dosyaya statik yazılan bir log cümleleri olarak tutmak
yerine. Dağıtık sistemde event-streamleri oluşturularak başka
servislerin bunları yakalayıp, görüntülemesi, debugging,
üzerinde arama yapılamabilmesine izin veren Hadoop,
ElasticSearch sistemlerinin kurulu olmasını bekler.
• Çünkü sistemin gerçek zamanlı/geçmişe yönelik
görüntülemenin en iyi yöntemi logları kullanmaktır.
12. Admin Processes
• Tek seferlik yapılan admin ve yönetim görevlerinin
gerçekleştirilmesi.
• Veritabanı migrationlarının çalıştırılması
• Tek seferlik scriptlerin çalıştırılması
• Console üzerinden bazı kodların çalıştırılması
• vb..

More Related Content

Similar to 12factor apps

Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup
Mustafa AKIN
 
OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017
OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017
OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017
Serhat Dirik
 
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Tolga Kaprol
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
Cihan Özhan
 
Devnot - Dev Summit 2018
Devnot - Dev Summit 2018Devnot - Dev Summit 2018
Devnot - Dev Summit 2018
Gökhan Şengün
 
Cloud computing and technologies
Cloud computing and technologiesCloud computing and technologies
Cloud computing and technologies
Bilal Dursun
 
Bulut Bilişim (Overview)
Bulut Bilişim (Overview)Bulut Bilişim (Overview)
Bulut Bilişim (Overview)
Burak Okumuş
 
System Center 2012 SP1 ve R2 Yenilikleri
System Center 2012 SP1 ve R2 YenilikleriSystem Center 2012 SP1 ve R2 Yenilikleri
System Center 2012 SP1 ve R2 YenilikleriMustafa
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım Analizi
Gokhan Boranalp
 
cloud adoption strategy
cloud adoption strategy cloud adoption strategy
cloud adoption strategy
Özgür Uğur
 
Microsoft Private Cloud ve Datacenter Yönetimi
Microsoft Private Cloud ve Datacenter YönetimiMicrosoft Private Cloud ve Datacenter Yönetimi
Microsoft Private Cloud ve Datacenter Yönetimi
MSHOWTO Bilisim Toplulugu
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Alonelaz
 
vSphere Integrated Containers
vSphere Integrated ContainersvSphere Integrated Containers
vSphere Integrated Containers
Vahric Muhtaryan
 
Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1
Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1
Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1
Önder Değer
 
Microsoft private cloud
Microsoft private cloudMicrosoft private cloud
Microsoft private cloud
Mustafa
 
Microsoft - Buluta Geçiş-hpnberdem.pptx
Microsoft - Buluta Geçiş-hpnberdem.pptxMicrosoft - Buluta Geçiş-hpnberdem.pptx
Microsoft - Buluta Geçiş-hpnberdem.pptx
ErdemEnust1
 
Microsoft Azure Temelleri - Modul 2
Microsoft Azure Temelleri - Modul 2Microsoft Azure Temelleri - Modul 2
Microsoft Azure Temelleri - Modul 2
MSHOWTO Bilisim Toplulugu
 
Bulutbilisim sunum
Bulutbilisim sunumBulutbilisim sunum
Bulutbilisim sunum
ugurbudak
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
Burak Erol
 

Similar to 12factor apps (20)

Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup Docker - Ankara Cloud Meetup
Docker - Ankara Cloud Meetup
 
OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017
OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017
OPENSHIFT KONTEYNER PLATFORM İLE GELİŞTİRMEYE HIZLI BAŞLANGIÇ - Webinar-Aug2017
 
Cloud_Computer
Cloud_ComputerCloud_Computer
Cloud_Computer
 
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
Sinema Seans Bilgi ve Rezervasyon Sisteminin Mikro Servis Yaklaşımıyla Gelişt...
 
İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19İleri Seviye T-SQL Programlama - Chapter 19
İleri Seviye T-SQL Programlama - Chapter 19
 
Devnot - Dev Summit 2018
Devnot - Dev Summit 2018Devnot - Dev Summit 2018
Devnot - Dev Summit 2018
 
Cloud computing and technologies
Cloud computing and technologiesCloud computing and technologies
Cloud computing and technologies
 
Bulut Bilişim (Overview)
Bulut Bilişim (Overview)Bulut Bilişim (Overview)
Bulut Bilişim (Overview)
 
System Center 2012 SP1 ve R2 Yenilikleri
System Center 2012 SP1 ve R2 YenilikleriSystem Center 2012 SP1 ve R2 Yenilikleri
System Center 2012 SP1 ve R2 Yenilikleri
 
Buluta Ilk Adım Analizi
Buluta Ilk Adım AnaliziBuluta Ilk Adım Analizi
Buluta Ilk Adım Analizi
 
cloud adoption strategy
cloud adoption strategy cloud adoption strategy
cloud adoption strategy
 
Microsoft Private Cloud ve Datacenter Yönetimi
Microsoft Private Cloud ve Datacenter YönetimiMicrosoft Private Cloud ve Datacenter Yönetimi
Microsoft Private Cloud ve Datacenter Yönetimi
 
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örneklerAğ i̇şleti̇m si̇stemleri̇ne örnekler
Ağ i̇şleti̇m si̇stemleri̇ne örnekler
 
vSphere Integrated Containers
vSphere Integrated ContainersvSphere Integrated Containers
vSphere Integrated Containers
 
Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1
Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1
Microsoft Azure ITPro - Microsoft Azure'a Giriş- Bölüm 1
 
Microsoft private cloud
Microsoft private cloudMicrosoft private cloud
Microsoft private cloud
 
Microsoft - Buluta Geçiş-hpnberdem.pptx
Microsoft - Buluta Geçiş-hpnberdem.pptxMicrosoft - Buluta Geçiş-hpnberdem.pptx
Microsoft - Buluta Geçiş-hpnberdem.pptx
 
Microsoft Azure Temelleri - Modul 2
Microsoft Azure Temelleri - Modul 2Microsoft Azure Temelleri - Modul 2
Microsoft Azure Temelleri - Modul 2
 
Bulutbilisim sunum
Bulutbilisim sunumBulutbilisim sunum
Bulutbilisim sunum
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
 

More from Dilaver Demirel

Git - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim SistemiGit - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim Sistemi
Dilaver Demirel
 
Unit test
Unit testUnit test
Unit test
Dilaver Demirel
 
Software/Yazılım Test
Software/Yazılım TestSoftware/Yazılım Test
Software/Yazılım Test
Dilaver Demirel
 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
Dilaver Demirel
 
Yazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check ListYazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check List
Dilaver Demirel
 
Oracle Weblogic Server
Oracle Weblogic ServerOracle Weblogic Server
Oracle Weblogic Server
Dilaver Demirel
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
Dilaver Demirel
 
Pentaho BI
Pentaho BIPentaho BI
Pentaho BI
Dilaver Demirel
 
JVM ve VisualVm
JVM ve VisualVmJVM ve VisualVm
JVM ve VisualVm
Dilaver Demirel
 
Apache Maven
Apache MavenApache Maven
Apache Maven
Dilaver Demirel
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
Dilaver Demirel
 
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
Dilaver Demirel
 
NodeJS Nedir
NodeJS NedirNodeJS Nedir
NodeJS Nedir
Dilaver Demirel
 
Jpa
JpaJpa

More from Dilaver Demirel (14)

Git - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim SistemiGit - Code Versiyon Yönetim Sistemi
Git - Code Versiyon Yönetim Sistemi
 
Unit test
Unit testUnit test
Unit test
 
Software/Yazılım Test
Software/Yazılım TestSoftware/Yazılım Test
Software/Yazılım Test
 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
 
Yazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check ListYazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check List
 
Oracle Weblogic Server
Oracle Weblogic ServerOracle Weblogic Server
Oracle Weblogic Server
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
Pentaho BI
Pentaho BIPentaho BI
Pentaho BI
 
JVM ve VisualVm
JVM ve VisualVmJVM ve VisualVm
JVM ve VisualVm
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
NodeJS ve MongoDB
NodeJS ve MongoDBNodeJS ve MongoDB
NodeJS ve MongoDB
 
NodeJS Nedir
NodeJS NedirNodeJS Nedir
NodeJS Nedir
 
Jpa
JpaJpa
Jpa
 

12factor apps

  • 1. The Twelve-Factor App ddemirel / 24.07.2018 https://12factor.net
  • 2. Nedir? Ölçeklenebilir cloud tabanlı/SaaS uygulamalar geliştirebilmek için 2012 yılında Heroku’nun kurucularından olan Adam Wiggins tarafından ortaya atılmış bir manifestodur. On iki faktör uygulaması herhangi bir programlama dili ile yazılmış uygulamalara uygulanabilir. «Bizim motivasyonumuz, modern uygulama geliştirmesinde gördüğümüz bazı sistemik problemlerin farkındalığını arttırmak, terimlerle birlikte geniş kavramsal çözüm setleri sağlamak ve bu problemleri tartışmak için ortak bir kelime sunmakdır.» https://12factor.net
  • 3. Amaç? • Projeye yeni katılan geliştiricilerin ortamlarını hızlı ve ucuz maliyetli bir şekilde ortamlarını kurabilmeleri ve otomasyonlarını sağlayabilmeleri için direktiflerin kullanılması • Çalışma ortamları arasında maksimum taşınabilirlik sunan temel işletim sistemi ile şifresiz iletişim vardır • Üzerine WebApp/SaaS uygulamalar deploy edilebilecek modern Cloud Platformları sayesinde sunucu ve sistem yöneticiliği ile uğraşmamak • İşlem, mimari veya geliştirme uygulamalarında önemli değişiklikler olmaksızın ölçekleyebilmek
  • 5. 1. Codebase • Uygulamanızın dev, pre-prod, production için bir tane Codebase olması. Environment ile ilgili config bilgilerinin ilgili environment ortamında bulunması . • Pre-prod ortamına commit edilmemiş dev geliştirmeleri veya production ortamına commit edilmemiş pre-prod geliştirmeleri olabilir. Tüm bu versiyonlara ait kodun tek bir codebase üzerinden kontrol edilebilmesi gerekmektedir.
  • 6. 2. Dependencies • Projenizin bağımlılıklarını, bağımlı olduğu diğer kütüphaneleri projenizin içerisine statik olarak gömerek değilde, açık bir şekilde bir dosyada belirterek ve bir paket yöneticisinin ilgili bağımlılıkları getirmesini sağlatarak gerçekleştirmelisiniz. Bunun için farklı dillere yönelik farklı paket yöneticileri bulunuyor.• RubyGems / Bundler (Ruby) • PIP / PyPI (Python) • Packagist / Composer (PHP) • NPM (Node.JS) • Bower (JS, CSS, HTML) • CocoaPods (Objective-C) • Maven (Java) • Lein (Clojure) Bu sayede Codebase içerisindeki bir dosyada bağımlılıklarınızın ismini, versiyonunu tutmanız yeterli.
  • 7. 3. Config • Projenize ait konfigurasyon bilgilerini kodunuzun içerisinde statik olarak tutmayın. Çünkü test, preprod, prod veya başka bir durum için ortamı klonlandığında bu konfigurasyon bilgilerinin güncellenmesi gerekecektir. Konfigurasyon bilgileri; • Veritabanı, Memcache ve diğer Backend servislerine erişim bilgilerini içerebilir. • Dışarıdaki başka servislere erişim için Credentials(AWS, Twitter, Facebook vb) • Deploy edilen hostname ile ilgili konfigurasyon bilgilerini içerebilir. • Bu tip configurasyon bilgilerinin env variable olarak saklanması. Kodun ortamdan bağımsız olmasını sağlayacaktır.
  • 8. 4. Backing Services • Arka planda çağrılan servisleri microservis olarak kullanması. Bir kaynak olarak kullanılması. İlgili kaynağa erişebilmek için gerekli DNS adresinin ve Credentials bilgisinin yeterli olması. En önemli terimlerden birisi Loose Coupling olması Bu sayede sistemin arka planında kullanılan servisleri kod değişikliği yapılmadan sadece konfigurasyon güncellemesi değiştirilebilir.
  • 9. 5. Build, Release Run • Build, Relase ve Run işlemlerinin birbirinden ayrılması. Deployment araçları, otomasyon araçlarının bu işleri birbirinden ayırarak tüm süreçleri oluşturması beklenir. 1. Code Güncellemesi 2. Build 3. Release (Config bilgilerinin eklenemesi) 4. Run Time Deploy’u
  • 10. 6. Processes • Stateless (State tutmayan) process’ler geliştirin. State veya veri tutma ihtiyacınız var veritabanı gibi stateful backend servislerinde bu bilgileri tutun. Bu sayede 1..n Process uygulamanızı çalıştırabilirsiniz. Burada bellekte tutulan sticky session yerine bunları Redis/Memcached saklayarak servis olarak kullanmak Process sayınızı kolay bir şekilde arttırabilmenizi sağlar. • Bu sayede servislerinizi kolayca scale edebilirsiniz
  • 11. 7. Port Binding • Servislerin dışarıya port binding sayesinde belli URL ve portlar üzerinden erişilebilir hale gelmesi. Bu sayede istediğiniz servise bu IP ve Portlar üzerinden erişebilirsiniz. • Servislerin belirli kurallara göre dışarıya açılıp açılmayacağını belirleyedek erişim güvenliği de sağlanmış olur Müşteri Servisi https://192.162.12.16:5555 Ürün Katalog Servisi https://23.123.15.17:5000
  • 12. 8. Concurrency • Çalışan processlerin ölçeklendirilme ihtiyaçlarına göre eş zamanlı şekilde tasarlanması ve duruma göre klonlanması ve restart edilebilmelidir. Bu sayede Req/Resp yük çoğaldı ise Web modülü, eğerki işleme kısmında bir gecikme var is Worker modülü ölçeklendiribilecektir (Yatay ölçeklendirme).
  • 13. 9. Disposability • Hızlı şekilde başlatılabilmeli ve hızlı şekilde kapatılabilmeli. Servislerin tek kullanımlık oluşturulup yok edilebilmeli. Bunun maliyeti oldukça düşük olmalı. Dockerlar bunun için uygun örnekler . AWS Lambdalarda bunun için iyi bir örnek • Örn. FaaS(Function as a Service, Serverless)
  • 14. 10. Dev/Prod Paritiy • Geliştirme ve Canlı ortam arasında oluşacak boşluğu(gap) kapatmayı amaçlar. Bu boşluklar/farklılaşmalar neden ortaya çıkar ? • Zaman Farkı: Geliştirme ortamına Push saatte bir gerçekleşirken, production ortamına Push işlemi haftalar aylar alabilir. • Personel Farkı: Geliştirme(Dev) ve Deploy(Ops) işlemlerinin farklı kişiler tarafından yapılması, geliştirme işleminin bitmesine rağmen deploy süresini daha ileriye atabilir. • Tools(Araçlar) : Geliştirme ve Canlı ortamda kullanılan araçların farklı olması. Örneğin geliştirme ortamında Tomcat, Canlı ortamda Weblogic kullanılması vb.. Geleneksel Uygulama ile Twelve-factor App arasındaki olması istenen farkları aşağıda listelemiş.
  • 15. 11. Logs • Logları dosyaya statik yazılan bir log cümleleri olarak tutmak yerine. Dağıtık sistemde event-streamleri oluşturularak başka servislerin bunları yakalayıp, görüntülemesi, debugging, üzerinde arama yapılamabilmesine izin veren Hadoop, ElasticSearch sistemlerinin kurulu olmasını bekler. • Çünkü sistemin gerçek zamanlı/geçmişe yönelik görüntülemenin en iyi yöntemi logları kullanmaktır.
  • 16. 12. Admin Processes • Tek seferlik yapılan admin ve yönetim görevlerinin gerçekleştirilmesi. • Veritabanı migrationlarının çalıştırılması • Tek seferlik scriptlerin çalıştırılması • Console üzerinden bazı kodların çalıştırılması • vb..