Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Beyond the Twelve-Factor App
Search
Kazuya Takahashi
August 30, 2016
Technology
5
24k
Beyond the Twelve-Factor App
クラウドネイティブアプリケーションの設計パターン「Beyond the Twelve-Factor App」の紹介
Kazuya Takahashi
August 30, 2016
Tweet
Share
More Decks by Kazuya Takahashi
See All by Kazuya Takahashi
ソリューションカンパニーの開発組織はどう成長してきたのか
tayasu
0
250
ポイントシステム基盤を支える技術
tayasu
0
470
サーバレス?で重たいバッチ処理
tayasu
1
920
Other Decks in Technology
See All in Technology
Cloud Native Java with Spring Boot (CNCF Aarhus, April 2024)
thomasvitale
1
130
Databricks における 『MLOps』
databricksjapan
2
140
Hands-on / Kaname Frusawa / Cloud Compare Users Meetup 2024 at University of Tokyo on April 17
paraworld
2
480
Discord とビルダー&チャットボットの使い方 / How to use Discord and Builder & Chatbots
ks91
PRO
0
130
ユーザーストーリーのレビューを自動化したみたの
bun913
1
330
Janus
bkuhlmann
1
490
AWS を使う上で知っておきたいオンプレミス知識/aws-on-premise-essentials
emiki
1
4.2k
TransitGatewayの基礎
toru_kubota
0
230
Next'24 事例セッションの紹介とクラウド資格を活用したキャリア形成について語りMuscle
yasumuusan
1
350
オブザーバビリティの Primary Signals
onk
PRO
0
550
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
550
反実仮想機械学習とは何か
usaito
PRO
7
2.5k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
175
21k
Being A Developer After 40
akosma
56
580k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.5k
How to Ace a Technical Interview
jacobian
272
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
77
41k
Learning to Love Humans: Emotional Interface Design
aarron
266
39k
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
RailsConf 2023
tenderlove
2
530
Making Projects Easy
brettharned
108
5.5k
The Language of Interfaces
destraynor
151
23k
Debugging Ruby Performance
tmm1
70
11k
Code Review Best Practice
trishagee
54
15k
Transcript
The Twelve Factor App 12 Cloud NATIVE APPLICATION PATTERNS 2016.08.26
Kazuya Takahashi @REALWORLD Beyond
About me The Twelve Factor App 12 Beyond גࣜձࣾϦΞϧϫʔϧυ(. גࣜձࣾ3&"-'*/5&$)$50
∁ڮ ΞδϟΠϧͰϑϧελοΫͳҙࣝߴ͍ΤϯδχΞ ݸਓͰ-*7&"(&ͱ͍͏Իָʷ8&#ͳूஂͷҰһͰ͢ IUUQTMJWFBHFUPEBZ
the Twelve-Factor App )FSPLVͷதͷਓ͕ʹॻ͍ͨɺϞμϯͳΫϥυΞϓϦέʔγϣϯͷϕ ετϓϥΫςΟε͕ʮ5IF5XFMFWF'BDUPS"QQʯ ࠷ۙɺ.BSUJO'PXMFSࢯͷϒϩάهࣄʮ4FSWFSMFTT"SDIJUFDUVSFTʯͰ/FU'MJY ͷ"ESJBO$PDLDSPGUࢯͷʠΦʔέʔɺͦΕ͕Ͳ͏ͨ͠ɻ͠ࢲ͕༏लͳ 'BDUPS"QQͷσϕϩούʔͳΒɺίʔυͷॻ͖ํʹԿͷҧ͍͕͋Δͷ͔ʡͱ͍ ͏ίϝϯτ͕৺ʹͬͨ͞ͷͰɺվΊͯ'BDUPSʹֶ͍ͭͯΜͰΈ·ͨ͠ɻ The
Twelve Factor App 12 Beyond
the Twelve-Factor App 'BDUPS"QQΛௐͯݟ͚ͭͨͷ͕ʮ#FZPOEUIF5XFMWF'BDUPS"QQʯ ΦϦδφϧ'BDUPS"QQඇৗʹ༗༻͕ͩɺʹॻ͔ΕͨͷͰঢ়گ͕ มΘ͖͍ͬͯͯΔɻಛʹ"84Λ࢝Ίͱͨ͠ΫϥυڥΛ׆༻ͨ͠ΫϥυωΠ ςΟϒΞϓϦέʔγϣϯͷ৽ͨͳϕετϓϥΫςΟεͱͯ͠ɺʹ1JWPUBM ͕ࣾɺΦϦδφϧͷݸͷΨΠυϥΠϯͷΞοϓσʔτͱݸͷ৽ͨͳΨΠυϥ ΠϯΛՃͨ͠ͷ͕#FZPOEUIF'BDUPS"QQͰ͢ɻ Beyond
The Twelve Factor App 12 Beyond
01. One Codebase, One Application όʔδϣϯཧ͞Ε͍ͯΔͭͷίʔυϕʔεʹͭͷΞϓϦέʔγϣϯ The Twelve Factor App
12 Beyond
01. One Codebase, One Application ΫϥυωΠςΟϒΞϓϦέʔγϣϯɺ୯ҰͷϦϙδτϦͰཧ͞Εͨίʔυ ϕʔεΛ࣋ͪɺෳͷҟͳΔڥʹϦϦʔε͞ΕΔɻ ෳͷνʔϜ͕ɺಉ͡ϦϙδτϦͰҟͳΔػೳΛ։ൃ͢ΔͱɺͭͷΞϓϦέʔ γϣϯͰͳ͘ͳͬͯ͠·͏ͨΊɺϚΠΫϩαʔϏεԽΛݕ౼͖͢Ͱ͋Δɻ ʠΞʔΩςΫνϟ৫ʹ͕ͨ͠͏ɻ৫ΞʔΩςΫνϟʹ͕ͨ͠͏ʡʙίϯ
ΣΠͷ๏ଇ The Twelve Factor App 12 Beyond
02. API First αʔϏεͷߏங"1*ͷઃܭ͔Β࢝ΊΔ The Twelve Factor App 12 Beyond
02. API First ϞόΠϧϑΝʔετ͔Β"1*ϑΝʔετɻ"1*ͩͱෳαʔϏεͷ࿈ܞɺε ϚϗΞϓϦͱ8&#ΞϓϦͷΑ͏ͳϚϧνσόΠεʹରԠͰ͖Δɻ "1*ͷઃܭ"1*υΩϡϝϯτ࡞πʔϧΛར༻͢Δɻ4XBHHFS"1* #MVFQSJOUͱ"QJBSZͱ͍ͬͨπʔϧΛ͑ɺ"1*υΩϡϝϯτ͔Βɺίʔυ 4%,ɺϞοΫαʔόͳͲΛੜ͢Δ͜ͱ͕Ͱ͖Δɻ "1*ϑΝʔετͷγεςϜɺ༷͕໌֬ʹఆٛ͞Ε͍ͯΔͷͰɺςετ͕ॻ͖ ͘͢ɺ$*ڥͰγεςϜΛҡ͍࣋ͯ͘͠ࣄ͕Ͱ͖Δɻ
The Twelve Factor App 12 Beyond
03. Dependency Management ґଘؔΛ໌ࣔతʹએݴ͢͠Δ The Twelve Factor App 12 Beyond
03. Dependency Management ϥΠϒϥϦͷཧɺ1)1ͷ$PNQPTFSɺ3VCZͷ(FNɺ/PEFKTͷOQNͳͲ ͷύοέʔδཧγεςϜΛར༻͢Δ͜ͱʹΑͬͯɺΞϓϦέʔγϣϯ͕Ͳͷϥ ΠϒϥϦʹґଘ͍ͯ͠Δ͔͕໌֬ʹͳΓɺγεςϜ࣮ߦڥʹґଘ͠ͳ͍ɻ γεςϜʹΠϯετʔϧ͞Ε͍ͯΔͰ͋Ζ͏DVSM*NBHF.BHJDLͳͲͷπʔϧ Λ͏߹ɺকདྷҧ࣮ͬͨߦڥͰΘΕͨ߹ʹଘࡏ͍ͯ͠ͳ͍Մೳੑ͕͋ ΔͷͰɺΞϓϦέʔγϣϯଆͰཧ͢Δ͖Ͱ͋Δɻ The
Twelve Factor App 12 Beyond
04. Design, Build, Release, Run ઃܭɺϏϧυɺϦϦʔεɺ࣮ߦ The Twelve Factor App
12 Beyond
04. Design, Build, Release, Run ઃܭɿΞϓϦέʔγϣϯࣄલʹશ෦ઃܭ͢ΔͷͰͳ͘ɺઃܭͱίʔσΟϯά Λখ͍͞୯ҐͰ܁Γฦ͠ߦ͍ͬͯ͘ɻ ϏϧυɿϦϙδτϦͰࢦఆ͞ΕͨίʔυϕʔεͷґଘؔΛղܾ͠ίϯύΠϧɻ ϩʔΧϧڥͰಉ༷ͷखॱΛߦ͑ϩʔΧϧͰಈ͍͕ͨຊ൪Ͱಈ͔ͳ͍ͱ͍͏ ൃੜ͠ͳ͍ɻ
ϦϦʔεɿϏϧυ͞ΕͨͷΛڥຖͷσϓϩΠઃఆͱ݁߹ͯ͠ϦϦʔεɻϦϦʔ εඞͣҰҙͳ*%Λ࣋ͪɺϩʔϧόοΫͰ͖ΔΑ͏ʹ͢Δɻ$BQJTUSBOPͩͱλ ΠϜελϯϓΛͬͨσΟϨΫτϦɺ%PDLFSͩͱλάɻ The Twelve Factor App 12 Beyond
04. Design, Build, Release, Run The Twelve Factor App 12
Beyond ࣮ߦɿϦϦʔε͞ΕͨίϯςφͳͲͷϓϩηεΛىಈ࣮ͯ͠ߦɻϩʔΧϧͰϏϧ υ࣮ͯ͠ߦͨ͠ͷ͕ɺ$*$%ύΠϓϥΠϯΛ௨ͯ͡ɺͦͷ··ෳͷΫϥυ ڥͰ࣮ߦ͞ΕΔɻ
05. Configuration, Credentials, and Code ઃఆΛڥมʹ֨ೲ͢Δ The Twelve Factor App
12 Beyond
05. Configuration, Credentials, and Code ઃఆೝূใίʔυ͔Β͖͢Ͱ͋ΓɺόʔδϣϯཧʹؚΉ͖Ͱ ͳ͍ɻ·ͨɺڥ͝ͱʢEFW QSPEʜʣʹઃఆΛάϧʔϐϯά͖͢Ͱͳ͍ɻ ڥແݶʹ૿͍͑ͯ͘Մೳੑ͕͋Δɻ ઃఆΛ͢ΔҰ൪ͷํ๏ڥมͷ֨ೲͰ͋Δɻίʔυमਖ਼͢Δ͜ͱͳ͘
σϓϩΠ͝ͱʹ؆୯ʹมߋͰ͖ɺݴޠ04ʹґଘ͠ͳ͍ϑΥʔϚοτɻ ઃఆͱίʔυ͕Ͱ͖͍ͯΔ͔ͷ֬ೝɺࠓ͙͢ʹͰίʔυΛΦʔϓϯιʔ εԽͰ͖Δ͔Ͳ͏͔ͰΘ͔Δɻ The Twelve Factor App 12 Beyond
06. Logs ϩάΛΠϕϯτετϦʔϜͱͯ͠ѻ͏ The Twelve Factor App 12 Beyond
06. Logs ΫϥυωΠςΟϒΞϓϦέʔγϣϯαʔό͕؆୯ʹ૿ݮͨ͠ΓɺҰ࣌తͳε τϨʔδ͔͠ͳ͍߹͋ΔͷͰɺϑΝΠϧγεςϜʹґଘ͠ͳ͍Α͏ʹɺϩά ͷग़ྗઌετϨʔδʹ͍ͭͯҰؔͤͣɺ࣮ߦதͷϓϩηεΠϕϯτε τϦʔϜΛඪ४ग़ྗʹॻ͖ग़͠ɺ࣮ߦڥͰετϦʔϜΛॲཧ͢ΔqVFOUE $MPVE8BUDI-PHTͳͲͰॲཧ͢Δɻ ϩάΛूͨ͠Γੳ͍ͨ͠߹ɺ5SFBTVSF%BUB&-,ελοΫ &MBTUJD4FBSDI -PHTUBTI
BOE,JCBOB ͳͲΛར༻͢Δɻ The Twelve Factor App 12 Beyond
07. Disposability ߴͳىಈͱάϨʔεϑϧγϟοτμϯͰݎ࿚ੑΛ࠷େԽ͢Δ The Twelve Factor App 12 Beyond
07. Disposability ΫϥυωΠςΟϒΞϓϦέʔγϣϯͷϓϩηεഇغ༰қੑʢߴͳϓϩηε ͷىಈͱऴྃʣ͕େͰ͋Δɻ"84-BNCEBͳͲϦΫΤετ͝ͱʹҰ࣌తͳ ϓϩηε͕ىಈͯ͠ॲཧ͢ΔͨΊىಈ࣌ؒͷॖॏཁͰ͋Δɻ ·ͨىಈ͕͍࣌ؒͱɺϦϦʔε࡞ۀεέʔϧΞοϓૉૣ͘ߦ͑ΔΑ͏ʹͳ Γɺ։ൃϓϩηεߴԽ͢Δɻ The Twelve Factor
App 12 Beyond
08. Backing services όοΫΤϯυαʔϏεΛΞλον͞ΕͨϦιʔεͱͯ͠ѻ͏ The Twelve Factor App 12 Beyond
08. Backing services σʔλϕʔεϝʔϧαʔόͳͲͷόοΫΤϯυͷαʔϏεɺαʔυύʔςΟ ͷαʔϏεΛ"1*ͳͲΛ௨ͯ͡ར༻͢Δࣄ͕૿͍͑ͯΔͷͰɺΞλον͞ΕͨϦ ιʔεͱͯ͠ѻ͍ɺ؆୯ʹΓସ͑ͯར༻Ͱ͖ΔΑ͏ʹ͢Δɻ The Twelve Factor App
12 Beyond σʔλϕʔεͷ"NB[PO3%4ɺ 4.51ͷ1PTUpYͱ$VFOPUF434 4FOE(SJEɺΩϡʔͷ #FBOTUBMLEͱ424ͳͲɻ
08. Backing services αʔυύʔςΟͷαʔϏεΛ͏߹ɺαʔϏε͕μϯ͢ΔͱίωΫγϣϯͷ λΠϜΞτ͕ͪൃੜͯ͠ɺଞͷॲཧμϯͯ͠͠·͏Մೳੑ͕͋ΔͨΊɺ $JSDVJU#SFBLFSύλʔϯΛ࠾༻͢ΔͱΑ͍ɻ The Twelve Factor App
12 Beyond $JSDVJU#SFBLFSύλʔϯͱɺϦϞʔτΞΫηεͷޭʗࣦഊΛΧϯτ͠ɺΤϥʔ͕ᮢΛ ͑ͨͱ͖ʹࣗಈతʹΞΫηεΛःஅ͢ΔΈɻ WJBࢄαʔϏεڥͷ$JSDVJU#SFBLFSͷద༻-*/&&OHJOFFST#MPH
09. Environment Parity ͯ͢ͷڥΛͰ͖Δ͚ͩҰகͤͨ͞ঢ়ଶΛอͭ The Twelve Factor App 12 Beyond
09. Environment Parity ։ൃڥɾεςʔδϯάڥɾຊ൪ڥͳͲͷෳͷڥͰ͖Δ͚ͩΪϟοϓ Λ࡞ΒͣʹҰகͤ͞Δɻڥ͝ͱʹΪϟοϓ͕࡞ΒΕΔཁҼओʹʮ࣌ؒʯ ʮਓʯʮϦιʔεʢόοΫΤϯυαʔϏεʣʯͷͭɻ ࣌ؒɿຊ൪ڥͷϦϦʔεग़དྷΔݶΓظؒʢ࣌ؒ୯ҐʣͰߦ͏ɻ ਓɿίʔυΛॻ͘ਓͱσϓϩΠ͢Δਓಉ͡ਓ͕୲͢Δɻͦͯ͠σϓϩΠ ΞΫγϣϯͰ؆୯ʹͰ͖ΔΑ͏ʹ͢Δɻ The
Twelve Factor App 12 Beyond
09. Environment Parity ϦιʔεɿϩʔΧϧڥͱຊ൪ڥ$IFG%PDLFSͳͲΛར༻ͯ͠ग़དྷΔݶΓ Ұகͨ͠όοΫΤϯυαʔϏεΛ͏ɻຊ൪.Z42-ͰϩʔΧϧ42-JUFɺ ຊ൪NFNDBDIFEͰϩʔΧϧΠϯϝϞϦͳͲͱ͍͏Ϊϟοϓ࡞Βͳ͍ɻ ڥͷҰக࣌ؒͱखؒΛ͔͚ͯͰߦ͏͖Ͱ͋Δɻ શͯͷίϛοτσϓϩΠީิͱͯ͠ɺͲͷڥͰಈ͘Α͏ʹ৺͕͚Δɻ The Twelve
Factor App 12 Beyond
10. Administrative Processes ཧλεΫΞϓϦέʔγϣϯ͔Β͢Δ The Twelve Factor App 12 Beyond
10. Administrative Processes ΦϦδφϧ'BDUPS"QQͰཧλεΫΛΞϓϦέʔγϣϯʹ࣮ɺ͘͠ 3&1-ʢ3BJMTͷQSZ-BSBWFMͷUJOLFSͳͲʣΛ׆༻͢Δͱͳ͍ͬͯΔ͕ɺ #FZPOE൛ͰҟΛএ͍͑ͯΔɻ ΞϓϦέʔγϣϯͱҰॹͩͱεέʔϧΞτ࣌ʹແͷཧλεΫ͕ىಈͯ͠͠ ·͏͔͠Εͳ͍ɻ·ͨΫϥυωΠςΟϒͳΞϓϦέʔγϣϯDSPOͳͲͷσʔ Ϟϯ͕͑ͳ͍࣌͋Δɻ 4Ͱ੩తαΠτɺ-BNCEBͰνϟοτϘοτͱ͔
·ͨɺΞϓϦέʔγϣϯͷཧλεΫͷηΩϡϦςΟΛߟ͑ͳ͍ͱ͍͚ͳ͍ɻ The Twelve Factor App 12 Beyond
10. Administrative Processes ཧλεΫΞϓϦέʔγϣϯ෦Ͱ࣮ͤͣʹɺ"84-BNCEBͳͲͰཧλ εΫઐ༻ͷΫϥυωΠςΟϒΞϓϦέʔγϣϯΛ࡞Δ͖Ͱ͋Δɻ ηΩϡϦςΟͷߟྀ͕ݶఆతͱͳΓɺΞϓϦέʔγϣϯ͕ͲΜͳʹεέʔϧΞ τͯ͠ӨڹΛ͏͚ͳ͍ɻ The Twelve Factor
App 12 Beyond
11. Port binding ϙʔτόΠϯσΟϯάΛΊͯίϯςφͱͯ͠αʔϏεΛެ։͢Δ The Twelve Factor App 12 Beyond
11. Port binding ΦϦδφϧ'BDUPS"QQͰΞϓϦέʔγϣϯΛϙʔτΛόΠϯυͯ͠αʔϏ εͱͯ͠ެ։͢Δͱͳ͍ͬͯΔ͕ɺΫϥυωΠςΟϒΞϓϦέʔγϣϯίϯ ςφ୯ҐͰαʔϏεͱͯ͠ެ։͢Δɻ ·ͨϩʔΧϧͰMPDBMIPTUɺຊ൪ڥͰBQQFYBNQMFDPNͱڥʹ ΑͬͯϙʔτΛόΠϯυ͢Δ߹ڥมʹΑͬͯมߋ͕Ͱ͖ΔΑ͏ʹ͢Δɻ The Twelve
Factor App 12 Beyond
12. Stateless Processes γΣΞʔυφογϯάύλʔϯʹΑΔεςʔτཧ The Twelve Factor App 12 Beyond
12. Stateless Processes ΞϓϦέʔγϣϯͷϓϩηεશͯεςʔτϨεͱͳΓɺηογϣϯͳͲͷঢ়ଶ ཧʹγΣΞʔυφογϯάͳόοΫΤϯυαʔϏεΛར༻͢Δɻ ΫϥυωΠςΟϒΞϓϦέʔγϣϯͷϑΝΠϧγεςϜҰ࣌తͳͷϦʔ υΦϯϦʔͷ߹͋ΔͨΊόοΫΤϯυαʔϏεͱͯ͠༻͖͢Ͱͳ͍ɻ ·ͨΠϯϝϞϦΩϟογϡɺϓϩηεىಈ࣌ʹϝϞϦΩϟογϡ͢Δͱϓ ϩηεഇغ༰қੑͰड़ͨΞϓϦέʔγϣϯͷϓϩηεىಈߴԽΛ્͢Δͨ Ίɺ3FEJTͳͲͷΩϟογϡαʔϏεΛ͏͖Ͱ͋Δɻ
The Twelve Factor App 12 Beyond
13. Concurrency εέʔϧΞοϓͰͳ͘εέʔϧΞτͰϓϩηεΛ૿͢ The Twelve Factor App 12 Beyond
13. Concurrency εςʔτϨε͔ͭγΣΞʔυφογϯάͰഇغ༻ҙͳϓϩηεΛ࣋ͭΫϥυω ΠςΟϒΞϓϦέʔγϣϯɺෳͷΠϯεϯεΛ্ཱͪ͛ͯεέʔϧΞτ͢ Δ͜ͱ͕ɺ$16Λ্͛ͨΓϝϞϦΛ૿ͨ͠Γ͢ΔεέʔϧΞοϓΑΓ؆୯Ͱޮ ՌతͰ͋Δɻ The Twelve Factor App
12 Beyond
14. Telemetry େͳΫϥυͰͷϦϞʔτࢹ The Twelve Factor App 12 Beyond
14. Telemetry ΦϦδφϧͷ'BDUPS"QQʹແ͍߲ɻࢹʹ"1. ύϑΥʔϚϯε ɺ ,1* Ϗδωεࢦඪ ɺࢮ׆ࢹͷ͕ͭඞཁɻΫϥυωΠςΟϒΞϓϦέʔγϣ ϯ༷ʑͳΠϯεϯεʗόοΫΤϯυαʔϏεʗαʔυύʔςΟαʔϏεͰߏ ͞ΕΔͨΊࢹ͕ෳࡶ໘ʹͳͬͯ͠·͏ͷͰɺઃܭஈ֊͔Βࢹํ๏Λݕ౼͢
͖Ͱ͋Δɻ "1.ɿ/FX3FMJD (BOHMJB %BUB%PH ,1*ɿ(PPHMF"OBMZUJDT 5SFBTVSF%BUB 3FETIJGU ࢮ׆ࢹɿ/BHJPT $MPVE8BUDI $MPVE5SBJM The Twelve Factor App 12 Beyond
15. Authentication and Authorization ϩʔϧϕʔεͷೝূͱೝՄ The Twelve Factor App 12
Beyond
15. Authentication and Authorization ΦϦδφϧͷ'BDUPS"QQʹແ͍߲ɻΫϥυωΠςΟϒΞϓϦέʔγϣ ϯͷηΩϡϦςΟରࡦ3#"$ 3PMF#BTF"DDFTT$POUSPMM ͕ద͍ͯ͠ΔɻΞ ϓϦέʔγϣϯͲͷϢʔβʔ͕ϦΫΤετ͍ͯ͠Δͷ͔Λೝূ͠ɺͦͷϢʔβʔ ͕ଐ͍ͯ͠Δϩʔϧ͔Β࣮ߦͰ͖ΔॲཧΛೝՄ͢Δɻ
ैདྷͷόοΫΤϯυαʔϏεͱͷଓͰ*1Ͱͷ੍ݶ͕ଟ͍͕ɺΠϯελϯε͕ ૿ݮͨ͠ΓҰ࣌తͳͷͰ͋Δ߹*1ཧ͕͍ͨ͠ΊɺϢʔβʔͱಉ༷ʹ 3#"$͕༗ޮͰ͋Δɻ The Twelve Factor App 12 Beyond