Slide 1

Slide 1 text

GoʹΑΔεΩʔϚۦಈ։ൃʢԾʣ Finatext x ΤϒϦʔ ελʔτΞοϓ࠷લઢͷGoࣄྫ

Slide 2

Slide 2 text

ࣗݾ঺հ - ੴڮ ३ࢤ • αʔόαΠυɺΠϯϑϥΛ୲౰ • ݩʑ͸iOS΍ͬͯͨ • εϚʔτϓϥεͷূ݊γεςϜΛ։ൃɺͦͷଞॾʑ • terraform-provider-awsʹ͸ͦͦ͜͜ߩݙ • झຯ͸α΢φ

Slide 3

Slide 3 text

εΩʔϚۦಈ։ൃͱ͍͑͹ • OpenAPIɺgRPCɺGraphQLͷ3ͭͰΑ͘ޠΒ ΕΔ • ࠓճ͸GraphQLͷ࿩͸ؚ·Ε·ͤΜ • gRPC͸ͪΐͬͱ͚ͩ • OpenAPIΛϝΠϯͰ࿩͠·͢

Slide 4

Slide 4 text

BaaSͰͷΤϯυϙΠϯτߏ੒ਤ ALB HTTP + JSON NLB gRPC ೝՄαʔϏε ஫จܥ Ձ֨ܥ ޱ࠲ܥ ػೳϨΠϠʔͱ͍͏ΑΓ͔͸ υϝΠϯͰ෼͚ͯΔ

Slide 5

Slide 5 text

gRPC͸ʁ • ಺෦తͳೝՄαʔϏεͰར༻͍ͯ͠Δ • ͜ͷೝՄ͸ϏδωεϩδοΫدΓͷ΋ͷ • ଟ਺ͷαʔό͕ΫϥΠΞϯτͱͯ͠ར༻͢Δ • ΫϥΠΞϯτίʔυੜ੒Ͱ͖Δͷخ͍͠ • ϦΫΤετ͝ͱʹೝՄαʔϏεʹ໰͍߹ΘͤΔͷͰߴύϑΥʔϚϯε͸خ͠ ͍ خ͍͜͠ͱ ΊΜͲ͍͘͜͞ͱ • ΞΫηεϩάͷूܭϝτϦΫεͳͲʹϚωʔδυɾαʔϏε࢖͑ͳ͍ • HTTP-JSONͷ৔߹͸ALB-TargetGroupͷ૊Έ߹ΘͤͰHTTP StatusCode ͳͲΛCloudWatchMetricsͰूܭͯ͠Δ • gRPCͩͱinterceptorೖΕͯΞϓϦέʔγϣϯϩάʹग़ͯ͠ؤுͬͨΓɺ Prometheus࢖ͬͨΓʁ • ·ͩ֎ʹग़ͤΔAPIυΩϡϝϯτ͸ੜ੒Ͱ͖ͳ͍ͱࢥ͏

Slide 6

Slide 6 text

OpenAPIͷ۩ମతͳར༻ํ๏ • ن֨Խ͞ΕͨAPIυΩϡϝϯτ͕࡞ΕΔ • mock΋ੜ੒Ͱ͖ͯϑϩϯτ͕ಉ࣌ਐߦͰ։ൃ ਐΊΕΔ • ίʔυ΋ੜ੒Մೳ

Slide 7

Slide 7 text

ΤσΟλ Swagger Editor Stoplight Studio • ެࣜ • GUIΤσΟλ • ෳ਺ϑΝΠϧฤूՄೳ • previewΆ͍(form)ͷ͔Β௚઀ฤूͰ ͖Δ

Slide 8

Slide 8 text

APIυΩϡϝϯτੜ੒ Dockerfile ίϯςφ্ཱͪ͛

Slide 9

Slide 9 text

• ϩʔΧϧͰ΋ཱͯΕΔ͕ɺෳ਺ΤϯυϙΠϯτΛ ݟΔͷ΋େมͳͷͰɺϒϥ΢βͰURL෼͚ͯϗε ςΟϯά͞ΕͯΔͱศརͦ͏ • APIαʔόͱಉ͡gitϨϙδτϦʹswagger-ui༻ͷ DockerfileΛ࣋ͭ • ECSͰϗεςΟϯά • AWS CodePipelineͰ։ൃ؀ڥʹϦϦʔε ։ൃ؀ڥʹϦϦʔε

Slide 10

Slide 10 text

Mockίϯςφͷੜ੒ apisproutͷDockerfile Mock͔ΒͷϨεϙϯε

Slide 11

Slide 11 text

• ϩʔΧϧͰ΋ཱͯΕΔ͕ʢҎԼུ • APIαʔόͱಉ͡gitϨϙδτϦʹmock༻ ͷDockerfileΛ࣋ͭ • ECSͰϗεςΟϯά • AWS CodePipelineͰ։ൃ؀ڥʹϦϦʔε UIͱಉ͘͡։ൃ؀ڥʹϦϦʔε

Slide 12

Slide 12 text

ίʔυੜ੒ • router͸gorillaͰੜ੒͞ΕΔ • FinatextͰ͸echoΛ࢖ͬͯΔͨΊ modelͷΈநग़

Slide 13

Slide 13 text

ਖ਼௚͋Μ·Γخ͘͠ͳ͍… • APIͷϦΫΤετʹόϦσʔγϣϯ͍ͨ͠ • ΋ͪΖΜopenapiύοέʔδʹ͸ॻ͚ͳ͍ • ؔ਺࡞ͬͯҾ਺ʁ • ໊લۭؒʹؾΛ͚ͭΔඞཁ͋Γ • ผͷstructʹຒΊࠐΉʁ • ྑ͍͚ͲΊΜͲ͍͘͞

Slide 14

Slide 14 text

ଥڠతίʔυੜ੒ • Swagger UI͔ΒJSONΛCtrl+C • ChimeraCoder/gojsonͰJSON͔ΒgoͷstructΛੜ੒ • ͦΕΛ͋ͬͯ΄͍͠goϑΝΠϧʹషΔʂ

Slide 15

Slide 15 text

ͦ΋ͦ΋εΩʔϚۦಈͷϞνϕͬͯʁ αʔόˠϑϩϯτͱ͍͏։ൃͷྲྀΕ ↓ ը໘͕ग़དྷ্͕ͬͯ͘ΔͱશํҐ͔ΒϑΟʔυόοΫ͕དྷΔ ↓ ϑϩϯτ͕UI௚͍ͯ͠Δ͏ͪʹαʔό΋৭ʑվम͢Δʢ৔߹ʹΑͬͯ͸ APIมߋ΋… ↓ ϑϩϯτ௥ਵ͢Δ͕ɺUIζϨΔ… ͱϑϩϯτʹγϫدͤߦ͖͕ͪ ͳͷͰϑϩϯτͱαʔό͕ಉ࣌ฒߦͰਐΊΕΔΑ͏ʹͱΓ͋͑ͣҰ୴API ࢓༷ΛܾΊΔ͔͠ͳ͍ ͍ͭͰʹن֨Խ͞ΕͨAPIυΩϡϝϯτͱMock͕Ͱ͖Δͷศར

Slide 16

Slide 16 text

εΩʔϚΛܾΊͨ͘ͳ͍ཧ༝ Userͱ͍͏ߏ଄ମ͕͋Δͱ͢Δɻ ͦΕʹName΍Ageͱ͍ͬͨଐੑΛ௥Ճ͍ͯ͘͠ɻ ຊ౰͸Ͳ͕ͬͪઌʹ͋Δʁʁ

Slide 17

Slide 17 text

ଐੑ͕ઌͩͱࢥ͏ ଐੑΛ੕ʹྫ͑Δͱɺߏ଄ମʢεΩʔϚʣ͸੕࠲ ։ൃதʹ֤ؔ܎ऀ͕੕ΛͲΜͲΜݟ͚ͭͯ͘Δ ͦͷࡍʹ੕࠲ΛΧνοͱܾΊ͗͢Δͱ৽͘͠੕͕ݟ͔ͭͬͨͱ͖ʹۙ๣ͷ ੕࠲ʹ૊ΈࠐΜͰ͠·͏

Slide 18

Slide 18 text

εΩʔϚʢԾʣۦಈ։ൃͷεεϝ • ͱΓ͋͑ͣલʹਐΉͨΊʹAPIεΩʔϚʢԾʣ Λ࡞Δ • ৽ن։ൃ࣌͸ޓ׵ੑ͸๨ΕͯΨϯΨϯഁյత มߋ͢΂͠ • ͍ͭͰʹAPIυΩϡϝϯτͱMockͰ͖Δͱศ རͩΑͶ

Slide 19

Slide 19 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠