WordCamp Kansai 2016セッション資料
Wo rd P re s s w i t hM i c ro s e r v i c e sWo rd C a m p K a n s a i 2 0 1 6
View Slide
Ta l k a b o u t …• Why Microservices ?• Example Case• How to building Microservices ?• Conclusion
H i d e t a k aO k a m o t o• Digitalcube developer• WordBenchژϞσϨʔλWP REST API / WP - CLIɹɹίΞίϯτϦϏϡʔλʔ• WP/React/AWS SDK/Alexa
A W S + Wo rd P re s s = > A M I M O T O A M Ih t t p s : / / a m i m o t o - a m i . c o m /
T h i n k a b o u t …
ʮ ࢲ ͕ ٳ Ή ͱ ɺɹ ࣄ ͕ · Θ Β ͳ ͍ ʯ
ʮ ࢲ ͕ ٳ Ή ͱ ɺɹ ࣄ ͕ · Θ Β ͳ ͍ ʯີ݁߹ʢMonolithicʣͳνʔϜ
W H Y ?• ͦͷਓ͕͍ͳ͍ͱػೳ͠ͳ͍Օॴ͕͋Δɹˠͦͷਓ͕͍ͳ͘ͳͬͨΒػೳෆશʹؕΔ• ͋ͳͨͷձࣾʹɹʮ͍ͳ͘ͳΔͱۀ͕ࢭ·Δਓʯ͍·ͤΜ͔ʁ
ʮ ͜ ͷ α ʔόʔ ͕ ࢭ · Δ ͱ ɺɹ α ʔ Ϗ ε ͕ ࢭ · Δ ʯ
S i n g l e P o i n t O f F a i l u re୯ Ұ ো
ྫ ͑ ɺ ͜ Μ ͳ ߏ
̍ Օ ॴ ͷ ো ͰαΠ τ ͕ શ ͯ μ ϯ ͢ Δ×
B u i l d i n g M i c ro s e r v i c e s
ί ϯ ς ϯ π ཧ
Ϛʔ έ ς Ο ϯ ά
σ ʔ λ ݕ ࡧ
α ʔό ϩ άऩ ू
α ʔό ϩ άղ ੳ
Ϗ δϡ Ξ ϥ Π ζ
ෳ ͷ Ξ ϓ Ϧ Λ Έ ߹ Θ ͤ ͯα ʔ Ϗ ε ʹ ͢ Δ
ো ͕ α ʔ Ϗ ε શ ମ ʹ ٴ ͠ ʹ͘͘ ͳ Δ×
ো ͕ α ʔ Ϗ ε શ ମ ʹ ٴ ͠ ʹ͘͘ ͳ Δ×Ϛʔ έ ς Ο ϯ άػ ೳ ͩ ͚ ఀ ࢭ
W h y M i c ro s e r v i c e ?• εέʔϧʢ֦ுʣ͘͢͠ɺμϯ͠ʹ͍͘• ಛఆͷٕज़ͷґଘ͕খ͘͞ͳΔ• σϓϩΠ͘͢͠ɺΞοϓσʔτΛසൟʹͰ͖Δ
εέ ʔϧ ͱམ ͪ ʹ͘ ͞• αʔϏεಉ͕࢜ૄ݁߹• མͪͨαʔϏεΛΓ͢• ػೳݮΔ͕ɺαʔϏεΛམͱ͞ͳ͍• ඞཁͳαʔϏε͚ͩɺɹɹεέʔϧͤ͞Δ×
ಛ ఆ ٕ ज़ ͷґ ଘ Λ ճ ආ• αʔϏεಉ͕࢜ૄ݁߹ɹɹˠϓϩάϥϜ͕ಠཱՔಇ• ॲཧɾαʔϏεʹ࠷దͳɹݴޠɾFW͕બՄೳ• ඞཁʹԠͯ͡ɹɹɹɹɹɹαʔϏε୯ҐͰϦϓϨΠεs y m f o n yJ S J a v aWo rd P re s s
͋ · Γ ߋ ৽ ͠ ͳ ͍ස ൟ ʹΞ ο ϓ σ ʔ τখ ͞ ͘ ස ൟ ͳΞ οϓ σ ʔ τ• αʔϏε୯ҐͰͷσϓϩΠ• มߋͷӨڹ͕શମ͔ΒɹɹαʔϏε୯Ґʹ• όʔδϣχϯά͞ΕͨAPI• ςετͷࣗಈԽͰΑΓߴɾߴසͳσϓϩΠ͕Մೳʹ
খ ͞ ͘ ස ൟ ͳΞ οϓ σ ʔ τ• αʔϏε୯ҐͰͷσϓϩΠ• มߋͷӨڹ͕શମ͔ΒɹɹαʔϏε୯Ґʹ• όʔδϣχϯά͞ΕͨAPI• ςετͷࣗಈԽͰΑΓߴɾߴසͳσϓϩΠ͕Մೳʹ7"1*αʔϏε
খ ͞ ͘ ස ൟ ͳΞ οϓ σ ʔ τ• αʔϏε୯ҐͰͷσϓϩΠ• มߋͷӨڹ͕શମ͔ΒɹɹαʔϏε୯Ґʹ• όʔδϣχϯά͞ΕͨAPI• ςετͷࣗಈԽͰΑΓߴɾߴසͳσϓϩΠ͕Մೳʹ7 7"1*αʔϏε
̏ छ ྨ ͷ Ξ ϓ ϩ ʔ ν• ֎෦αʔϏεͱͷ࿈ܞ• ΠϯϑϥϨΠϠͷׂ• WordPress as a Microservices
ಛ ఆ ͷ ػ ೳ Λଞ ͷ α ʔ Ϗ ε Ͱ ࣮ ͢ Δ
֎ ෦ α ʔ Ϗ ε ͷ A P I ʹ ର ͯ͠ɺw p _ re m o t e _ g e t ( ) ;w p _ re m o t e _ p o s t ( ) ;ͳ Ͳ Ͱ ଓ ͢ Δ
h t t p s : / / a w s . a m a z o n . c o m / m a r k e t p l a c e / p p / B 0 1 B 3 Z E 1 N CRDBϝσΟΞετϨʔδΛAWS͕Ϛωʔδυ͢ΔαʔϏεʹҠৡ
h t t p s : / / a w s . a m a z o n . c o m / m a r k e t p l a c e / p p / B 0 1 B 3 Z E 1 N CRDBϝσΟΞετϨʔδΛAWS͕Ϛωʔδυ͢ΔαʔϏεʹҠৡϝ ϯ ς φ ϯε ΛAW S ͕ ࣮ ࢪϝ ϯ ς φ ϯε ΛAW S ͕ ࣮ ࢪϝ ϯ ς φ ϯε ΛAW S ͕ ࣮ ࢪϝ ϯ ς φ ϯε ΛAW S ͕ ࣮ ࢪ
ϑΝΠϧɾσʔλΛ֎෦Խ͢Δ͜ͱͰɺαʔόʔͷࣗಈεέʔϧΞτ͕Մೳʹ
h t t p : / / j a . s t a t i c p re s s . n e t /StaticPressʹΑΔwp-adminͱϑϩϯτΤϯυͷ
StaticPressʹΑΔwp-adminͱϑϩϯτΤϯυͷ
h t t p s : / / a m i m o t o - a m i . c o m / a m i m o t o - n i n j a /ԻೝࣝαʔϏεͱͷ࿈ܞ
A u d i oC a p t u reA u d i oP l a y b a c kYo u rC o d ea n o t h e r A P IW h a t i sWo rd p re s s ?Wo rd P re s s i s …
h t t p s : / / g i t h u b . c o m / w c - a p p / w c - a p pCordovaReact NativeΛ༻͍ͨωΠςΟϒΞϓϦ
M i c ro s e r v i c e Ξ ϯ νύ λ ʔϯ͡Ί͔ΒMicroserviceͱͯ͠ߏங͠Α͏ͱ͢Δ
ε λ ʔ τ Ұ ຕ ؠ• ελʔτγϯϓϧ͔ͭখ͘͞• ͡Ί͔Βෳࡶͳߏʹ͢Δͱมߋίετ͕ߴ͘ͳΔ• γϯϓϧʹ͡ΊɺඞཁʹԠׂͯ͢͡Δ
͍ ͭ ׂ ͢ ͖ ͔ʁ• ίʔυͷཧ͕Ͱ͖ͳ͘ͳΔ·ͰංେԽͨ࣌͠• Ұ෦ͷػೳͷΈසൟʹΞοϓσʔτ͍ͨ࣌͠• ։ൃνʔϜ͕ཧతʹΕ͍ͯΔ࣌• ηΩϡϦςΟΛڧݻʹ͍ͨ͠෦͕Ͱ͖ͨ࣌• ଞͷݴޠɾϑϨʔϜϫʔΫΛ༻͍ͨ࣌͠
H o w t o M i c ro s e r v i c e ?• Ϗδωε୯ҐͰׂʢίϯΣΠͷ๏ଇʣ• ີ݁߹͔Βૄ݁߹ʢAPIϕʔεͰͷߏஙʣ• αʔϏεͷࢹͱোͷ
ί ϯ Σ Π ͷ ๏ ଇ
– M E LV I N C O N WAY“γεςϜΛઃܭ͢Δ৫ɺͦͷߏΛͦͬ͘Γ·ͶͨߏͷઃܭΛੜΈग़ͯ͠͠·͏”
ί ϯ Σ Π ͷ ๏ ଇ• ີ݁߹ͳ৫ɺີ݁߹ͳγεςϜΛઃܭ͍͢͠• ϓϩδΣΫτɾػೳ୯ҐͷνʔϜͰ։ൃ͢Δͱɺɹɹૄ݁߹ʹͳΓ͍͢• ʮ̎ຕͷϐβͰΓͳ͍νʔϜ࡞Δ͖Ͱͳ͍ʯ(Amazon)
A P I ϕʔε ͷ ։ ൃ
A P I ϕʔε ͷ ։ ൃ• αʔϏεຖʹಠཱͨ͠ΞϓϦͱͯ͠։ൃ• APIΛ༻͍ͯ֎෦ͱ࿈ܞ͢Δ• APIͷΤϯυϙΠϯτόʔδϣχϯά͠ɺɹɹɹɹഁյతͳΞοϓσʔτʹඋ͑Δɹɹɹɹɹɹɹɹɹɹྫɿʮ/v1/coupons/ʯʮ /v2/wp/postsʯ
α ʔ Ϗ ε ͷ ࢹ ͱো ͷ
Ͳͷ α ʔ Ϗ ε ͕ࢭ · ͬͯ ͍ Δ ͔ Λ Δ ඞ ཁ ͕ ͋ Δ×
α ʔ Ϗ ε ࢹ ͱ ো ͷ • αʔϏε୯ҐɾΞϓϦશମͰࢮ׆ࢹ• োͷى͖ͨαʔϏεҎ֎ͰՔಇ͢ΔΈͷߏங• APIϦΫΤετͷλΠϜΞτʹΑΔԆʹඋ͑Δ
R O U T E 5 3 Λ ༻ ͍ ͨϑ Σ Πϧ Φ ʔόʔα ʔό ো ࣌ S 3 ʹ ϧ ʔ ς Ο ϯ ά
ै དྷ ͷ Wo rd P re s s ߏ ங8PSE1SFTT$PSF1MVHJO 1MVHJO 1MVHJO 5IFNF1MVHJO
ै དྷ ͷ Wo rd P re s s ߏ ங Ұ ຕ ؠ ʹ ͳ Γ ͢ ͍8PSE1SFTT$PSF1MVHJO 1MVHJO 1MVHJO 5IFNF1MVHJO 1MVHJO $IJME1MVHJO1MVHJO 1MVHJO1MVHJO 1MVHJO1MVHJO 1MVHJO1MVHJO 1MVHJO
ϓϥάΠϯɾςʔϚͷিಥ͕ൃੜ͢Δͱɾɾɾ8PSE1SFTT$PSF1MVHJO 1MVHJO 1MVHJO 5IFNF1MVHJO 1MVHJO $IJME1MVHJO1MVHJO 1MVHJO1MVHJO 1MVHJO1MVHJO 1MVHJO1MVHJO 1MVHJO
ཛ Λ ̍ ͭ ͷ Χ ΰ ʹ · ͱ Ί Δ ͱ ɺͦ ͷ Χ ΰ Λ མ ͱ ͠ ͨ ࣌ ʹ શ ໓ ͢ Δ
+BWB4DSJQUػ ೳ ݮ Δ ͕ ɺ શ ମ ੜ ͖ Δ)5.-"1* "1* "1*×
ʮ ઈ ର ʹ མ ͱ ͞ ͳ ͍ Α ͏ ʹ ؤ ு Δ ʯͰ ͳ ͘ ɺʮ ো ͕ ى ͖ ͯ શ ໓ ͞ ͤ ͳ ͍ ʯ
https://ja.wikipedia.org/wiki/%E8%88%AA%E7%A9%BA%E6%A9%9F#/media/File:Qantas_a380_vh-oqa_takeoff_heathrow_arp.jpg
https://ja.wikipedia.org/wiki/%E8%88%AA%E7%A9%BA%E6%A9%9F#/media/File:Qantas_a380_vh-oqa_takeoff_heathrow_arp.jpg ͠ Τ ϯ δ ϯ ͕ࢭ · ͬ ͨ Β ʁ
ϥϜ Τ Ξλ ʔ Ϗ ϯ• ඈߦػͷΤϯδϯ͕ࢭ·Δͱىಈ͢Δ෩ྗൃిػ• ඈߦܭثͷిྗΛ֬อ͢Δ• Ͳ͔͜ʹো͕ى͖ͯɺઈରʹඞཁͳ֬อ͢Δhttps://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%82%A8%E3%82%A2%E3%83%BB%E3%82%BF%E3%83%BC%E3%83%93%E3%83%B3#/media/File:757_ram_air_turbine.jpg
ʮ ઈ ର ʹ མ ͱ ͞ ͳ ͍ Α ͏ ʹ ؤ ு Δ ʯ͔ Βʮ ো ͕ ى ͖ ͯ શ ໓ ͞ ͤ ͳ ͍ ʯ
T H A N K S !• Why Microservices ?• Example Case• How to building Microservices ?• Conclusion