Microservices Meetup vol.9 (FiNC App & Frontend) でのウェルカムトークの資料です。
ϚΠΫϩαʔϏεͱΫϥΠΞϯτ: ཧͱݱ࣮ͷڱؒͰ@qsona / FiNC Technologies Inc.2018-10-30 Microservices Meetup vol.9 (FiNC App & Frontend)
View Slide
ୈ1෦: ϚΠΫϩαʔϏεͷ݁߹ϨΠϠʔ
ϚΠΫϩαʔϏεͷྑ͞!3• ٕज़ҟ࣭ੑ– ͦΕͧΕ࠷దͳݴޠɾϥΠϒϥϦɾσʔλετΞΛར༻Ͱ͖Δ– ٕज़తෛ࠴ΛҾ͖ͣΓʹ͍͘• ճ෮ੑ (Resilience)– αʔϏεʹো͕ى͖ͯશମͷӨڹগͳ͍• σϓϩΠͷಠཱ• খࣗ͘͞ɾಠཱͨ͠৫– ίϛϡχέʔγϣϯύεΛݮΒ͠ɺҙࢥܾఆΛૉૣ͘
αʔϏεͷૄ݁߹͔ΒདྷΔߴ͍ࣗ༝ɾࣗ
αʔϏε͕ີ݁߹ʹͳΔͱϚΠΫϩαʔϏεͷྑ͞ফ͑Δ
ϚΠΫϩαʔϏεΛ݁߹͢Δऀୡ... ݁߹ϨΠϠʔΛཧղ͠ɺదʹରॲ͠ͳ͚ΕͳΒͳ͍ࣄۀܭը, ΠϯϑϥετϥΫνϟ, ϑϩϯτΤϯυ, Ӧۀ, ԣஅతͳϏδωε,εΩϧηοτ, σʔλੳ, ηΩϡϦςΟ, ίετϚωδϝϯτ, etc..
݁߹ͷྫ (1) ϚΠΫϩαʔϏεͱӦۀ!7• ;ͭ͏ӦۀελοϑɺಛఆͷϚΠΫϩαʔϏεத৺ͷ৫ʹଐ͞ͳ͍• ͔͠͠ɺ͠ଐ͍ͯͨ͠Βʁ– Ӧۀελοϑ͕ࣗͷαʔϏεʹৄ͍͠– αʔϏεͷมߋʹڧ͍ (αʔϏεʹมߋ͕͋ͬͨͱ͖ʹવӦۀελοϑʹप͞ΕΔ)– Ӧۀઌ͔ΒͷϑΟʔυόοΫ͕࣮ʹө͞Ε͍͢– αʔϏεͷڧ͍Ѫண͕࣋ͯΔϚΠΫϩαʔϏενʔϜA ϚΠΫϩαʔϏενʔϜBΫϥΠΞϯτ(Ӧۀઌ)
݁߹ͷྫ (1) ϚΠΫϩαʔϏεͱӦۀ!8• ͪΖΜ͜ΕΤϯυϢʔβʔΛແࢹͨ͠ص্ͷۭ– ϚΠΫϩαʔϏε(ػೳ)୯ҐͰӦۀ͞Εͯ ސ٬خ͘͠ͳ͍– ΤϯυϢʔβʔϚΠΫϩαʔϏε͕౷߹͞ΕͨମݧΛΜͰ͍ΔϚΠΫϩαʔϏενʔϜA ϚΠΫϩαʔϏενʔϜBΫϥΠΞϯτ(Ӧۀઌ)
݁߹ͷྫ (1) ϚΠΫϩαʔϏεͱӦۀ!9• ӦۀνʔϜϚΠΫϩαʔϏεΛ౷߹͢Δ (݁߹ϨΠϠʔ)• νʔϜΛ·͕ͨͬͨίϛϡχέʔγϣϯͷऔΓํΛߟ͑Δඞཁ͋ΓϚΠΫϩαʔϏενʔϜA ϚΠΫϩαʔϏενʔϜBΫϥΠΞϯτ(Ӧۀઌ)ӦۀνʔϜ
݁߹ͷྫ (2) ϚΠΫϩαʔϏεͱԣஅϏδωε!10• ෳͷϚΠΫϩαʔϏεΛԣஅతʹར༻͢ΔϏδωεϞσϧ• FiNCͰͷྫ: ಛεϚʔτΞϓϦ– ಛఆͷܦ࿏͔ΒΞϓϦΛΠϯετʔϧ͢Δͱ ಛϢʔβʔʹͳΓɺ ಛઐ༻ΦϯϘʔσΟϯά͕࢝·Δ– ಛઐ༻ϛογϣϯ͕ղ์͞ΕΔ– ಛϢʔβʔ༻ʹΧελϚΠζ͞Εͨ push௨͕৴͞ΕΔ
݁߹ͷྫ (2) ϚΠΫϩαʔϏεͱԣஅϏδωε!11• ෳͷϚΠΫϩαʔϏεΛԣஅతʹར༻͢ΔϏδωεϞσϧ• FiNCͰͷྫ: ಛεϚʔτΞϓϦ– ಛఆͷܦ࿏͔ΒΞϓϦΛΠϯετʔϧ͢Δͱ ಛϢʔβʔʹͳΓɺ ಛઐ༻ΦϯϘʔσΟϯά͕࢝·Δ– ಛઐ༻ϛογϣϯ͕ղ์͞ΕΔ– ಛϢʔβʔ༻ʹΧελϚΠζ͞Εͨ push௨͕৴͞ΕΔ• User Tag αʔϏε• Onboarding αʔϏε• Mission αʔϏε• Push௨ αʔϏεͦΕͧΕ͕ϚΠΫϩαʔϏεʹରԠ
݁߹ͷྫ (2) ϚΠΫϩαʔϏεͱԣஅϏδωε!12• ίϛϡχέʔγϣϯܦ࿏͕ෳࡶʹͳΔ• ͷॴࡏ͕͍͋·͍ʹͳΓ͕ͪ– ֤αʔϏε͝ͱʹରԠࡁ·͍ͤͯΔ͕…– end-to-end ͰͷڍಈͷνΣοΫ͕ෆेͩͬͨΓ– ʮಛεΩʔϜʯͱ͍͏ମݧͷશମΛୡ͢ΔͨΊͷϘʔϧ͕མ͍ͪ͢• ༏ઌॱҐ͚ͮͷ– ࣗͷαʔϏεͷλεΫͱͲͪΒΛ༏ઌͤ͞Δͷ͔– ಛͷ߹ʮ༏ઌॱҐ͕࠷ߴʯͰ͋Δ͜ͱ͕໌Β͔ͩͬͨͷͰɺ ͦ͜·ͰͰͳ͔ͬͨ
ୈ1෦ ·ͱΊ!13• ͯ͢ͷϚΠΫϩαʔϏε͕ૄ݁߹ͳͷ͕ཧ– ٕज़ҟ࣭ੑ, খنͰࣗͨ͠৫, etc...• ϚΠΫϩαʔϏεΛ݁߹͍ͯ͠ΔϨΠϠʔͷଘࡏ͕ݱ࣮• ݁߹ʹΑΓى͖͏Δʹର͠ɺదʹରॲ͢Δඞཁ͕͋Δ– (۩ମࣄྫʹର͢Δղܾࡦɺࠓճ৮Ε·ͤΜ)– ͜ͷ2ͭͷࣄྫʹରͯ͋͠·Γ brilliant ͳղܾࡦͳ͍ɺͱ͍͏ҹ
ୈ2෦: ϑϩϯτΤϯυͰͷ݁߹
ϑϩϯτΤϯυ (Web, Native App, ...)ϚΠΫϩαʔϏεͷ݁߹ϨΠϠʔ
ϑϩϯτΤϯυͰͷ݁߹!16• ϑϩϯτΤϯυΤϯδχΞ ΤϯυϢʔβʔΛ࠷ڧ͘ҙࣝ͢Δ– ΤϯυϢʔβʔ͕ݟ͍ͨͷϚΠΫϩαʔϏεͰͳ͍– ౷߹͞ΕͨϢʔβʔମݧ
ϑϩϯτΤϯυͰͷ݁߹!17(ҎԼɺຊจΑΓҾ༻)ʮFOLIOͰɺBackends For FrontendsʢBFFʣΛ࠾༻͍ͯ͠ΔͷͰ͕͢ɺ͜ΕʹΑͬͯ͞·͟·ͳαʔϏεAPIΛఏڙ͢ΔࡍͷΛΞʔΩςΫνϟతʹղܾ͠Α͏ͱࢼΈ͍ͯ·͢ɻ(தུ) FOLIOͷαʔϏεͰɺޱ࠲Λཧ͢ΔɺגՁΛදࣔ͢Δͱ͍ͬͨػೳ͕ɺͦΕͧΕϚΠΫϩαʔϏεͱͯ͠ػೳ͍ͯ͠·͢ɻҰํͰɺϢʔβʔ͕ݟΔը໘͔ΒݸผͷαʔϏεΛݺͼग़͢ͱɺϒϥβͷෛՙ͕ߴ·ΓɺੑೳྼԽͳͲͷΛҾ͖ىͯ͜͠͠·͍·͢ɻBFFͰ֤ϚΠΫϩαʔϏεͷݺͼग़͠Λू͢Δ͜ͱͰɺ͜ΕΒͷΛղܾ͍ͯ͠·͢ɻ·ͨBFFΛઃ͚Δ͜ͱͰɺαʔϏεUIͷ౷ҰײΛอ͍ͪ͢ͱ͍͏ར͋Γ·͢ɻϚΠΫϩαʔϏεͰଟذʹΘͨΔػೳ͕ͦΕͧΕಠཱͯ͠ಈ͍͍ͯͯɺϑϩϯτΤϯυͰɺͦΕΛूͯ͠1ຕͷը໘ͰݟͤΔɻϢʔβʔ͕ཉ͍͠ͷ͋͘·Ͱը໘Λ௨ͨ͡“ମݧ”ͳͷͰɺͦΕΛεϜʔζʹఏڙ͢ΔͨΊʹ֤෦ॺͱ࿈ܞͯ͠ϑϩϯτΤϯυͷҰຕͷը໘ʹू͢Δɻ͔֬ʹ͜ΕϋϒతͳׂͰ͢ͶʯϑϩϯτΤϯυΤϯδχΞશମΛͭͳ͙“ϋϒ”ͷΑ͏ͳଘࡏΤϯδχΞʹٻΊΒΕΔίϛϡχέʔγϣϯೳྗɹࣾͷ“ϋϒ”ͱͯ͠ػೳ͢ΔϑϩϯτΤϯυΤϯδχΞϦϯάʔFOLIO ݟ ༸ีࢯ - Forkwell Press
FiNC͕औΓΜͰ͖ͨ͜ͱ• APIͷϦιʔεࢦԽ• APIΨΠυϥΠϯ• iOS/AndroidͷઃܭΛἧ͑Δ• ৫ͷϦϑΝΫλϦϯά (ϏδωεͰνʔϜׂ͠ɺΫϥΠΞϯτΤϯδχΞͱαʔόʔΤϯδχΞ͕ಉ͡νʔϜͰ։ൃ)• Backends for Frontends• Micro Frontends※͍ͣΕࠓͷΠϕϯτͷதͰ৮ΕΔτϐοΫͰ͢
APIͷϦιʔεࢦԽɾAPIΨΠυϥΠϯ!19• Backend API ڧ͘ϦιʔεΛҙࣝ͢Δ– ಉ͡υϝΠϯΛද͢ͳΒಉ͡ܗࣜ• Backend API ͷܗࣜΛͰ͖Δ͚ͩἧ͑Δ– ϖʔδϯάͳͲ– جຊతʹنΛकΔ͚ͩͰ͍͍ͷͰɺ όοΫΤϯυͷࣗ༝͕ୣΘΕΔΘ͚Ͱͳ͍• Ͳ͏ͯ͠ඞཁͳΒҳͰ͖Δ• ͦͦAPI͕ྑ͘ఆٛ͞Ε͍ͯͳ͍ͱɺ ΫϥΠΞϯτͰͷ݁߹ͷෛ୲͕૿͑Δ
Backends For Frontends ͱ Micro Frontends!20• ΞʔΩςΫνϟ͔Βͷ2ͭͷΞϓϩʔν– ͨͩ͠ɺํੑେ͖͘ҟͳΔ• Backends For Frontends ... ੵۃతʹ݁߹ΛҾ͖ड͚ɺෳࡶ͞ʹରॲ• Micro Frontends ... ݁߹ϨΠϠʔΛϑϩϯτΤϯυͷUIʹͣΒ͠ɺബ͘͢Δ
ΤϯυϢʔβʔʹͱͬͯͷཧ։ൃऀɾ৫ʹͱͬͯͷཧͦΕΒΛݱ࣮ʹམͱ͠ࠐΉ