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

【EC/CRM基盤開発】 prismatix事業部 Devチーム(サーバーサイドエンジニア)の紹介 / Prismatix server side engineer job introduction

【EC/CRM基盤開発】 prismatix事業部 Devチーム(サーバーサイドエンジニア)の紹介 / Prismatix server side engineer job introduction

EC/CRM に特化したAPIプラットフォームを提供する prismatix 開発・運用の仕事内容について、主にサーバーサイドエンジニアの視点で紹介をさせていただきます。

Keiichi Nomura

December 09, 2022
Tweet

More Decks by Keiichi Nomura

Other Decks in Technology

Transcript

  1. prismatixࣄۀ෦ͷ։ൃʹ͍ͭͯ঺հ 2022/09/27 prismatixࣄۀ෦ ໺ଜܒҰ

  2. ࣗݾ঺հ  ໺ଜ ܒҰ Ϋϥεϝιου prismatix ࣄۀ෦ prismatix ஫จ/ܾࡁαʔϏε୲౰

  3. ࠓճ͓࿩͢Δ͜ͱ  • prismatix ࣄۀ෦ͷ͝঺հ • prismatix ͷٕज़ελοΫ • prismatix

    ΛͲͷΑ͏ʹ։ൃ͍ͯ͠Δ͔ • prismatix ͷ։ൃͰମݧͰ͖Δ͜ͱ • ࢲ͕ײ͡Δ prismatix ։ൃͷ՝୊ • Ұॹʹ՝୊ղܾʹऔΓ૊ΜͰ͘ΕΔํʹདྷͯ΄͍͠ʂ
  4.  prismatixͱ͸ʁ

  5. QSJTNBUJYͱ͸ʁ  https://prismatix.jp/ • EC / CRMಛԽܕϓϥοτϑΥʔϜ • ΫϥεϝιουͷB2BࣗࣾαʔϏε •

    ΤϯήʔδϝϯτίϚʔε • ൐૸ܕίϯαϧςΟϯά
  6. &$$3.ಛԽܕϓϥοτϑΥʔϜ  Λ௒͑Δ൚༻"1*Λඋ͓͑ͯΓɺ֤اۀಠࣗͷ&$αΠτɺ$3.ͷߏங ͕Մೳ

  7. QSJTNBUJYࣄۀ෦ͱ͸ʁ  prismatix ͷ։ൃɾӡӦΛ͢Δ෦ॺ ʮprismatix ࣄۀ෦ʯ

  8. QSJTNBUJYࣄۀ෦ͷνʔϜߏ੒  https://dev.classmethod.jp/articles/pz-team-structure/ • Dev • Kiban • SRE •

    CS (Customer Support) • ৽نϓϩμΫτ։ൃ • ςϯϓϨʔτ։ൃ • SI (System Integration) • ίϯαϧɾϚʔέɾӦۀ • ۀ຿վળ • ৘γε • ૯຿ • Ϙʔυ
  9. QSJTNBUJYࣄۀ෦ͷνʔϜߏ੒  https://dev.classmethod.jp/articles/pz-team-structure/ • Dev • Kiban • SRE •

    CS (Customer Support) • ৽نϓϩμΫτ։ൃ • ςϯϓϨʔτ։ൃ • SI (System Integration) • ίϯαϧɾϚʔέɾӦۀ • ۀ຿վળ • ৘γε • ૯຿ • Ϙʔυ ຊ೔͸DevνʔϜͷ࿩͕த৺
  10.  prismatix ͷٕज़ελοΫ

  11. QSJTNBUJYͷΞʔΩςΫνϟ  • γϯάϧςφϯτ • ඞཁʹԠ͓ͯ͡٬༷ʹಠཱͨ͠ෳ਺ͷ؀ڥΛఏڙ • ϚΠΫϩαʔϏε • αʔϏεࢦ޲ΞʔΩςΫνϟ

    (SOA) ʹج͍ͯɺෳ਺ͷαʔϏείϯϙʔωϯ τΛఏڙ • API ͷίϛϡχέʔγϣϯύλʔϯ • HTTPϝοηʔδϯάɺPub-Subϝοηʔδϯά • ετϨʔδʹେྔͷϦΫΤετσʔλΛ഑ஔ্ͨ͠Ͱ࣮ࢪ͢Δඇಉظॲཧʹ ΋ରԠ
  12. QSJTNBUJYͷٕज़ελοΫ  ɹɹ+BWB ɹɹ4QSJOH#PPU ɹɹEPDLFS ɹɹ&MBTUJDTFBSDI ɹɹ(JU)VC ɹɹ$JSDMF$* ɹɹ*OUFMMJ+*%&" &$4

    'BSHBUF 3%4 %ZOBNP%# &MBTUJ$BDIF ,JOFTJT 424 4/4 $MPVE8BUDI Development Infrastructure Monitoring / Noti fi cation
  13.  prismatix ͷ։ൃͷྲྀΕ

  14. ։ൃͷਐΊํ  • 2िؒεϓϦϯτͷΞδϟΠϧ։ൃ • ࠷୹2िؒͰ৽όʔδϣϯΛϦϦʔε • શମͷཁ๬͸PBL(ϓϩμΫτόοΫϩά)Ͱ؅ཧ • ཁ๬ҰͭҰͭΛPBI(ϓϩμΫτόοΫϩάΞΠςϜ)ͱͯ͠ν

    έοτԽ • PBIͷ಺༰͔Βɺઃܭʙςετɾސ٬޲͚υΩϡϝϯτ࡞੒ 
 ͳͲඞཁͳ࡞ۀΛνʔϜ಺Ͱٞ࿦͠෼ղ
  15. ։ൃͷਐΊํ 

  16. ։ൃελΠϧ  wϦϞʔτϫʔΫओମ w౦ژɾࡳຈɾ෱ԬΛத৺ʹɺ༷ʑͳ৔ॴͰۈ຿ w4MBDL΍(PPHMF.FFUΛϑϧ׆༻ͯ͠ίϛϡχέʔγϣϯΛऔ Δ wφϨοδ͸/PUJPO શࣾ FTBJP ෦಺

    Λར༻ͯ͠ڞ༗
  17.  prismatix ͷ։ൃͰମݧͰ͖Δ͜ͱ

  18. QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ  • ECɾCRMʹඞཁͳػೳ΍ཁ๬͕෼͔Δ • prismatix ͷػೳΛͲͷΑ͏ʹ࢖ͬͯ΋Β͍ͬͯΔ͔ • ސ٬͔ΒͲͷΑ͏ͳػೳ͕ඞཁͱ͞Ε͍ͯΔͷ͔ •

    ఏڙ͢Δ֤αʔϏεʹؔ࿈͢Δۀ຿஌ࣝ • ೝূɾೝՄ(OIDC,OAuth2) • ձһɺ঎඼ɺࡏݿɺ஫จɺܾࡁɾɾɾ
  19. QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ  • APIϓϥοτϑΥʔϜ։ൃͷྲྀΕ͕෼͔Δ • ͓٬༷ͷཁ๬͔ΒͲͷΑ͏ͳػೳ͕ඞཁͱͳΔ͔Λ੔ཧ͠ɺઃ ܭ͢Δ • prismatix Λར༻͢ΔϑϩϯτΤϯυγεςϜ΍ɺprismatix

    ͕ ར༻͢Δ֎෦αʔϏε΋ަ͑ͨγφϦΦɺॲཧϑϩʔͷઃܭ • API ͷར༻ݖݶ΍ϦΫΤετɾϨεϙϯεΠϯλʔϑΣʔεͷఆ ٛ • ඞཁͱͳΔ DB ΍ AWS ϦιʔεͳͲΛఆٛ
  20. QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ  • Java(Spring Boot) Λར༻࣮ͨ͠૷ɾςετ • ϑΥʔϚολ΍੩తίʔυղੳΛར༻࣮ͨ͠૷ϧʔϧͷ౷Ұ • ࣮૷ͱ߹Θͤͯςετ΋ॻ͘ʢϢχοτςετ΍౷߹ςετ

    • ސ٬޲͚υΩϡϝϯτΛ࣮૷ͱ߹Θͤͯ࡞੒ • markdown + Mkdocs Λར༻ͨ͠υΩϡϝϯςʔγϣϯ • Swagger Ͱ API ΠϯλʔϑΣʔεΛެ։
  21.  • CircleCIΛར༻ͨࣗ͠ಈςετɾϏϧυ • ίʔυղੳ΍ςετͳͲΛࣗಈ࣮ߦɻ໰୊͕͋Ε͹։ൃऀʹ௨ ஌ • ໰୊ͳ͚Ε͹DockerΠϝʔδ΍υΩϡϝϯτͷϦϦʔε·Ͱ࣮ ࢪ QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ

  22. QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ  • ϚΠΫϩαʔϏεΞʔΩςΫνϟΛѻ͏্Ͱͷ։ൃͷצॴ • ஫จαʔϏεˠܾࡁαʔϏεΛݺͿͳͲෳ਺αʔϏεΛ࿈ܞ͢ Δ৔߹ͷઃܭ • ଞͷαʔϏεͷॲཧ͕੒ޭ͍ͯ͠Δͷʹࣗ਎ͷαʔϏεͰॲ ཧࣦഊͨ͠৔߹ɺଞͷαʔϏεͷεςʔλε΋ิਖ਼͠ͳ͚Ε

    ͹͍͚ͳ͍ʢิਖ਼τϥϯβΫγϣϯʣ • ଞͷαʔϏεͷεςʔλε͕มΘͬͨΠϕϯτΛड͚औΓɺࣗ ਎ͷαʔϏε΋߹ΘͤͯॲཧΛ͢Δ
  23.  • ։ൃʹͱͲ·Βͣɺӡ༻͢Δ্Ͱͷߩݙ΋ • ސ٬؀ڥͰ࣮ࡍʹͲͷΑ͏ʹΞϓϦέʔγϣϯ͕ར༻͞Ε͍ͯ Δͷ͔Λ஌Δ • ؂ࢹ΍ސ٬͔Βͷ໰͍߹ΘͤΛड͚ɺސ٬؀ڥͷঢ়گ֬ೝΛ͢ Δ •

    ސ٬؀ڥͷো֐΍ར༻ϥΠϒϥϦͷ੬ऑੑ͕͋Δ৔߹ͳͲ • ΞϓϦέʔγϣϯͷϝτϦΫε΍ϩάͳͲௐࠪ͠ɺରԠࡦΛ ݕ౼ QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ
  24.  • ར༻͢ΔAWSαʔϏεͷ࢖͍ॴ͕਎ʹͭ͘ • ECS + Fargate Λج൫ͱͨ͠αʔϏεӡ༻ • SNS,

    SQS Λར༻ͨ͠ Pub - Sub ϝοηʔδϯά • CloudWatch, S3 + Athena Λར༻ͨ͠ϝτϦΫεɺϩάͳͲͷ ௐࠪ QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ
  25.  • ϑϧϦϞʔτϫʔΫɾϑϨοΫε • Ոఉͷ͜ͱ΍ϓϥΠϕʔτͷ༻ࣄ΋͜ͳͭͭ͠࢓ࣄ͕Ͱ͖Δ • νʔϜ಺ͷίϛϡχέʔγϣϯ͕׆ൃ • νϟοτɾϏσΦձٞͳͲͰੵۃతʹର࿩ΛॏͶΔ •

    φϨοδڞ༗΋ੵۃతʹߦ͍ɺνʔϜ։ൃʹߩݙͰ͖Δ QSJTNBUJYͷ։ൃͰମݧͰ͖Δ͜ͱ
  26.  ࢲ͕ײ͡Δ։ൃͷ՝୊

  27. ࢲ͕ײ͡Δ։ൃͷ՝୊  • Ձ஋Λಧ͚ΒΕΔͷʹɺ࣮ݱ͢Δʹ͸೉қ౓͕ߴ͍΋ͷ͕ଟ͍ • ݱঢ়ͷ࣮૷͔Βͷมߋ༰қੑ͕௿͍ • ݹ͔͘Βӡ༻͢ΔαʔϏε͸ಛʹ͜ͷ܏޲͕͋Δ • Ͳ͜ʹӨڹ͕͋Δͷ͔ௐࠪʹ࣌ؒΛཁ͢

  28. ࢲ͕ײ͡Δ։ൃͷ՝୊  • prismatix ࢓༷ʹؔ͢Δ໰͍߹Θ͕ͤଟ͍ • υΩϡϝϯτʹ஌Γ͍ͨ৘ใ͕໢ཏͰ͖͍ͯΔ͔ʁ • ͲͷΑ͏ͳ࢓༷Ͱ͋Ε͹ސ٬͕ར༻͠΍͍͔͢ʁ •

    ސ٬؀ڥͷ؂ࢹͰग़ͨΞϥʔτΛௐ΂ͨ݁Ռ໰୊ͳ͍έʔε͕ ଟ͍ • Өڹ͋Δ಺༰ͳͷ͔͕෼͔ΔΑ͏ʹɺΞϥʔτ΍ϩάͷग़ྗํ ๏ͳͲӡ༻ʹؔΘΔՕॴͷվળ΋ݕ౼ • ސ٬؀ڥ΁ͷௐࠪʹ౰ͨΔ෼ɺຊདྷ༧ఆ͢Δ։ൃʹ΋Өڹ͢Δ
  29. ՝୊ղܾʹ޲͚ͯ  • ՝୊͸ೝࣝ͠ɺվળʹ޲͚ͯಈ͍͍ͯΔ • ςετͷਐΊํΛվળ • εϓϦϯτ΍ϓϩδΣΫτ͝ͱͷ;Γ͔͑Γ • ސ٬΍ސ٬؀ڥʹؔΘΔνʔϜͱͷίϥϘϨʔγϣϯɺͳͲ

    • Ұॹʹ՝୊ղܾʹߩݙͯ͘͠ΕΔํɺprismatix ΛΑΓྑ͘͠ ͯ͘ΕΔํ͕͍Δͱ৺ڧ͍
  30.  ·ͱΊ

  31. ·ͱΊ  wQSJTNBUJYࣄۀ෦Ͱ͸ɺ&$$3.ʹಛԽͨ͠"1*ϓϥοτϑΥʔ ϜͱίϯαϧςΟϯάαʔϏεΛఏڙ͠·͢ w%FWνʔϜͰ͸"1*ϓϥοτϑΥʔϜͷ։ൃɾӡ༻Λ୲͍·͢ w&$$3.ͷۀ຿஌ࣝɺϚΠΫϩαʔϏεͷ։ൃ஌ࣝͳͲ਎ʹͭ͘ ͜ͱ͕ଟ͍Ͱ͢ wҰॹʹࠓͷ՝୊ʹऔΓ૊ΈɺQSJTNBUJYΛΑΓྑͯ͘͘͠ΕΔํ Λ͓଴͍ͪͯ͠·͢

  32. None