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

Kotlin製のGraphQLサーバーをNode.jsでモジュラモノリス化している話

 Kotlin製のGraphQLサーバーをNode.jsでモジュラモノリス化している話

Kazuhito Hokamura

November 19, 2023
Tweet

More Decks by Kazuhito Hokamura

Other Decks in Technology

Transcript

  1. 8 • ෳ਺ͷݴޠɾϑϨʔϜϫʔΫ͕ཚཱ͍ͯ͠Δ ◦ Kotlin/Spring Boot, Rails, Node.js/NestJS, Go, Python

    ◦ API ΋ GraphQL, gRPC, REST ͕ࠞࡏ • ίʔυϕʔε͕େ͖͘ͳ͖ͬͯͯػೳͷڥք͕ᐆດʹͳΓɺΦʔφʔγοϓ͕ෆ໌ྎʹͳ͍ͬͯΔ ◦ ಛʹϓϩμΫτଆͷαʔϏε͕ංେԽ͍ͯ͠Δ • ݹ͔͘Β͋ΔϨΨγʔͳγεςϜ΍σʔλ͕ΞʔΩςΫνϟతͳ࿪Λ࢈ΜͰ͍Δ ◦ ೝ஌ෛՙͷ্ঢɺอकίετͷ૿ՃͳͲʹΑΓੜ࢈ੑ͕௿Լ͍ͯ͠Δ γεςϜ্ͷ՝୊
  2. 11 औΓ૊ΜͰ͍Δ͜ͱ • ϦΞʔΩςΫςΟϯάʹΑΔٕज़తෛ࠴ͷղফ ◦ ٕज़ελοΫͷ౷Ұ ◦ ϞδϡϥϞϊϦεԽ • ٕज़తෛ࠴Λίϯτϩʔϧ͢ΔͨΊͷऔΓ૊Έ

    ◦ ٕज़ઓུɾํ਑ͷݴޠԽɾυΩϡϝϯςʔγϣϯ ◦ Design DocʹΑΔઃܭϨϏϡʔͷϓϩηε੔උ • ੜ࢈ੑࢦඪͷՄࢹԽͱ໨ඪͷઃఆ ◦ Four KeysʹΑΔՄࢹԽ ◦ ੜ࢈ੑվળͷͨΊͷઓུࡦఆ ← ࠓ೔͸͜͜ͷ࿩͠
  3. 14 ٕज़ελοΫͷ౷Ұ • όοΫΤϯυ͸ݴޠΛNode.js/Goʹ౷Ұ ◦ ϓϩμΫτଆͷαʔϏε͸Node.jsɺϓϥοτϑΥʔϜଆ͸Goʹ͢Δ ◦ Node.jsͷਪ঑ߏ੒͸ NestJS, Prisma

    ͋ͨΓ͕༗ྗ • ϑϩϯτΤϯυ͸Next.jsʹ౷Ұ ◦ ݱঢ়ͱ͋·Γဃ཭͸ͳ͍ͷͰٕज़ελοΫ͸େ෯ͳมߋ༧ఆ͸ͳ͠ • API͸GraphQLʹ౷Ұ ◦ gRPCͷซ༻Λߟ͍͕͑ͯͨGraphQLʹ౷Ұ͢Δํ޲Ͱݕ౼த
  4. 23 ٕज़બఆ • NestJS Ͱ GraphQL αʔόʔΛߏங͢Δ • ORM ͸

    Prisma • ϑϨʔϜϫʔΫ΍ϥΠϒϥϦ͸͍ͨͬͯී௨ͷߏ੒
  5. 24 ύοέʔδ؅ཧ • package.json ͕ϧʔτʹ͋Δ͚ͩͷී௨ͷ Node.js ϓϩδΣΫτ • npm workspace

    ͱ Turborepo Λ࢖ͬͨ multi packages ߏ੒΋ݕ౼ ◦ શͯͷϞδϡʔϧͰಉ͡ϥΠϒϥϦ΍ઃఆΛ࢖͏ͷͰ
 ϝϦοτ͕গͳ͍ ◦ ෳࡶੑͷ૿ՃͳͲͷσϝϦοτ্͕ճΔͱ൑அͯ͠΍Ίͨ
  6. 25 Database, ORM • DB͸ϞδϡʔϧؒͰڞ༗͢Δ ◦ Ϟδϡʔϧ͝ͱʹDBͷεΩʔϚΛ෼͚Δʢ༧ఆʣ • ςʔϒϧɾܕͷఆٛ͸Ϟδϡʔϧ͝ͱʹఆٛ͢Δ •

    prisma-import Λ࢖ͬͯ݁߹͢Δ ◦ github.com/ajmnz/prisma-import • ϞδϡʔϧΛލ͍ͩjoin͸ڐՄ͠ͳ͍ • ϞδϡʔϧΛލ͍ͩτϥϯβΫγϣϯ͸ݕ౼த