Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINEの予約プラットフォームにおけるSpring WebFluxとKotlin Corout...

LINEの予約プラットフォームにおけるSpring WebFluxとKotlin Coroutineの活用事例 / Examples of using Spring WebFlux and Kotlin Coroutine in LINE Reservation Platform

LINEの予約プラットフォームにおけるSpring WebFluxとKotlin Coroutineの活用事例
LINEでは、予約台帳サービスを提供しているパートナー企業様と提携しLINE内での予約体験を実現するためのプラットフォームを運営しています。
本セッションでは、このプラットフォームの中核であるサーバーサイドアプリケーションにおけるSpring WebFluxやKotlin Coroutineの活用事例をご紹介いたします。

小山 淳平
LINE株式会社

LINE Developers

December 03, 2021
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. • -BOHVBHF,PUMJO • 'SBNFXPSL4QSJOH#PPU Y "SNFSJB • "1*3&45 +40/ H31$

    • .JEEMFXBSF.Z42- 3FEJT ,BGLB &MBTUJDTFBSDI ར༻͍ͯ͠Δٕज़
  2. • ͍ͣΕ΋ඇಉظΞʔΩςΫνϟΛ࠾༻ʢ4QSJOH8FC'MVY ,PUMJO$PSPVUJOF • ίΞͱͳΔ"1*ʹH31$Λ࠾༻ • ϏδωεϩδοΫ͸͜ͷίϯϙʔωϯτʹ·ͱΊ͍ͯΔɻH31$ 4FSWJDFͱͯ͠͸υϝΠϯຖʹ෼཭ ͍ͯ͠ΔͷͰ͍ͭͰ΋෼ׂՄೳ •

    ઀ଓίϯϙʔωϯτ͕ଟ͍ • ΤϯυϢʔβʔ͕৮ΕΔ8FCΞϓϦέʔγϣϯʢ3&45"1*ʣʹ8FC'MVYΛ࠾༻ • ௚઀H31$ FHϒϥ΢β ΛݺͿ͜ͱ͕೉͍͠෦෼͸3&45"1*Λఏڙ͍ͨ͠ • جຊతʹίΞͷH31$ʹͭͳ͙ͨΊͷ+40/QSPUPCVG΁ͷม׵ͷΈͳͷͰ8FC'MVYͱ૬ੑ͕Α͍ • FOWPZͳͲ΋ݕ౼͕ͨ͠جຊతʹUSBOTDPEFͷΈ͕໨తͩͬͨͷͰಠࣗͰ࣮૷ WebFlux, CoroutineΛ࠾༻͍ͯ͠Δίϯϙʔωϯτ
  3. • H31$ 4UVC $MJFOU ͕ੜ੒͞ΕΔͷͰݸʑͷ$MJFOU࣮૷͕ෆཁ • ࣾ಺ͷؔ࿈γεςϜʹ͸ੜ੒͞Εͨ4UVCDMBTTΛKBSͰ഑෍ʢࣾ಺NBWFOSFQPʣ • ϓϥοτϑΥʔϜ಺ͷΞϓϦέʔγϣϯ͸NPOPSFQPͳͷͰHSBEMF NPEVMFͱͯ͠CVJME࣌ʹࢀর

    • ϓϥάΠϯʹΑΔΧελϚΠζ • *%-͔ΒͷυΩϡϝϯτੜ੒ʢQTFVEPNVUPQSPUPDHFOEPDʣ • ίʔυੜ੒ػೳ΋ϓϥάΠϯͷͭ QSPUPDHFOHSQDKBWB QSPUPDHFOHSQDLPUMJO FUD • $VTUPN0QUJPOTΛར༻ͨ͠NFTTBHF GJFME΁ͷ੍໿ఆٛػೳΛಠ࣮ࣗ૷ • IJCFSOBUFWBMJEBUPSͷQSPHSBNNBUJD"1*Λར༻ gRPCͷ࠾༻ 1SPUPDPM#VGGFSTͷ*%- ΠϯλʔϑΣΠεهड़ݴޠ Λ࢖ָͬͯΛ͢Δͷ͕ϝΠϯ
  4. • "SNFSJBͷH31$ٴͼ4QSJOHTVQQPSUΛར༻ • H31$ 4FSWFSIUUQTBSNFSJBEFWEPDTTFSWFSHSQD • H31$ $MJFOUIUUQTBSNFSJBEFWEPDTDMJFOUHSQD • H31$

    4FSWFSΛ4QSJOH#PPUͰ্ཱͪ͛ΔͨΊʹ BSNFSJBTQSJOHCPPUBVUPDPOGJHVSFΛར༻͢ ΔIUUQTBSNFSJBEFWEPDTBEWBODFETQSJOHXFCGMVYJOUFHSBUJPO gRPCͷ࠾༻ H31$ͱ4QSJOHͷ*OUFHSBUJPO
  5. • ͜͜Ͱ͸ίϯςΩετ "1*ϦΫΤετͷ৘ใ౳ͷॲཧͷίϯςΩετΛࢦ͢ • ίϯςΩετ఻ൖ͸ॲཧʢϦΫΤετͳͲʣͷ0CTFSWBCJMJUZΛ͋͛ΔͨΊʹඞཁ • ॲཧ։࢝ʙ׬ྃ·ͰεϨουΛઐ༗͠ͳ͍ͨΊ5ISFBE-PDBM΁ͷίϯςΩετอ࣋͸ Ͱ͖ͳ͍ • SFBDUPSɺ$PSPVUJOFʹ͓͚Δ$POUFYUͷ

    ػೳΛ࢖ͬͯ఻ൖ͢Δ • .%$͸5ISFBECPVOEͳͷͰεϨου্Ͱॲཧ͕ ಈ͍͍ͯΔ͚ؒͩؒआΓ͢ΔΑ͏ͳ޻෉͕ඞཁ Tips 1 : WebFlux -> Coroutine΁ͷϦΫΤετίϯςΩετ఻ൖ ٴͼMDC΁ͷ൓ө
  6. • 3%#$͸ະ࠾༻ • ϓϩδΣΫτ։࢝౰ॳ͸NZTRMͷESJWFS΋ແ࣌͘ظঘૣͩͬͨ • .ZCBUJTʢ3%#$ະରԠʣͷ஌ݟ͕ଟ͔ͬͨ • ͳͷͰɺ+%#$઀ଓ͍ͯ͠Δ • %#ʹΫΤϦ͢ΔॲཧΛݺͿ෦෼͸࣮ߦεϨου

    Λม͍͑ͯΔ %JTQBUDIFST*0 ݁ہ%JTQBUDIFST*0ͷεϨου਺ͷ੍ݶ LPUMJOYDPSPVUJOFTJPQBSBMMFMJTN ͸͋Δ ͷͰૣΊʹϊϯϒϩοΩϯάͳํ๏ʹม͍͖͍͑ͯͨ Tips 3 : Blockingͳίʔυ͸ॻ͔ͳ͍ +%#$͸ϒϩοΩϯάʜͲ͏͢Δ
  7. • σϑΥϧτͰ͸%JTQBUDIFST6ODPOGJOFE͕ࢦఆ͞Ε͍ͯΔ • /FUUZΛར༻͍ͯ͠Ε͹/FUUZͷ&WFOU-PPQ5ISFBE͕࢖ΘΕΔ • ෮ؼͨ͋͠ͱͷ࣮ߦεϨου͕มΘ͍ͬͯΔՄೳੑ͕͋Δ • ྫ͑͹-FUUVDFͷDPNNBOEΛୟ͍ͯ෮ؼͨ͋͠ͱ͸-FUUVDFͷ&WFOU-PPQ 5ISFBE͕࢖ΘΕΔ •

    %JTQBUDIFST%FGBVMUΛ࢖͏Α͏ʹ$POUFYUΛม͍͑ͯΔ • ҙਤͤͣಛఆͷϥΠϒϥϦͰఏڙ͞ΕΔΠϕϯτ ϧʔϓεϨουͳͲΛফඅ͠ͳ͍Α͏ʹ͢Δ Tips 5 : WebFluxͰͷCoroutineͷ࣮ߦεϨου
  8. • -*/&ͷ༧໿ͷϓϥοτϑΥʔϜʹ͓͚Δ8FC'MVY $PSPVUJOFͷ࠾༻ཧ༝ • $PSPVUJOFͷಋೖʹΑͬͯඇಉظॲཧͷݟ௨͕͠ྑ͘ͳΔ • 8FC'MVYͷར༻ʹ஌ݟ͕͋Γෆ͕҆ͳ͔ͬͨ • কདྷతͳεέʔϧ͠΍͢͞ͷͨΊϓϩδΣΫτ։࢝࣌ʹ࠾༻ΛܾΊͨ •

    4QSJOH8FC'MVY ,PUMJO$PSPVUJOFͷར༻ʹ͍ͭͯ • ਖ਼͘͠ಈ࡞ͤ͞ΔͨΊɺ0CTFSWBCJMJUZ޲্ͷͨΊʹؾΛ͚ͭΔ΂͖ϙΠϯτ͸͋Δ • $PSPVUJOFͷͦͷଞඇಉظϥΠϒϥϦͱͷޓ׵ػೳʹΑͬͯॻ͖΍͘͢ͳΔ͜ͱ͕͋Δ ·ͱΊ