Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goによるスキーマ駆動開発
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
atsushi-ishibashi
June 26, 2020
Technology
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goによるスキーマ駆動開発
atsushi-ishibashi
June 26, 2020
More Decks by atsushi-ishibashi
See All by atsushi-ishibashi
コンテナ運用におけるアプリケーション設定管理
atsushi51
0
530
モダンなアーキテクチャでゼロから作る証券基盤
atsushi51
1
2.9k
AWSにおけるクラウドネイティブでセキュアな証券システムの運用
atsushi51
0
160
独自ファイル形式にStructTagで立ち向かう
atsushi51
0
100
クラウドインフラの権限
atsushi51
0
89
AWSとGo言語とコンテナによる証券プラットフォーム
atsushi51
0
90
StepFunctionsフルコース
atsushi51
0
120
DevSecOps実践
atsushi51
0
160
Other Decks in Technology
See All in Technology
MIXIで活躍できるエンジニアを 若手社員目線で考えてみる
mixi_engineers
PRO
0
130
コーチングの奥義 何もしないテクニック
jinwatanabe
0
150
平文パスワードはログに“残り” ── 肝心の侵入は“痕跡すら残らない”
kuroneko13
0
120
LanceDB入門
mocobeta
9
670
同じWAFが、攻撃の“形”は弾く── 正当な“形”の不正は通す
kuroneko13
0
270
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
650
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
100
【GCC2026】鉄拳8でのVFX開発事例
bandainamcostudios
PRO
0
260
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
190
三人寄ればチューリング完全
puhitaku
6
2.9k
英語が話せなくてもKubeConスタッフに参加した話
yusuke427
2
1.1k
強化学習「理論」入門
enakai00
3
3.6k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
We Have a Design System, Now What?
morganepeng
55
8.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Believing is Seeing
oripsolob
1
200
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
GoʹΑΔεΩʔϚۦಈ։ൃʢԾʣ Finatext x ΤϒϦʔ ελʔτΞοϓ࠷લઢͷGoࣄྫ
ࣗݾհ - ੴڮ ३ࢤ • αʔόαΠυɺΠϯϑϥΛ୲ • ݩʑiOSͬͯͨ • εϚʔτϓϥεͷূ݊γεςϜΛ։ൃɺͦͷଞॾʑ
• terraform-provider-awsʹͦͦ͜͜ߩݙ • झຯαφ
εΩʔϚۦಈ։ൃͱ͍͑ • OpenAPIɺgRPCɺGraphQLͷ3ͭͰΑ͘ޠΒ ΕΔ • ࠓճGraphQLͷؚ·Ε·ͤΜ • gRPCͪΐͬͱ͚ͩ • OpenAPIΛϝΠϯͰ͠·͢
BaaSͰͷΤϯυϙΠϯτߏਤ ALB HTTP + JSON NLB gRPC ೝՄαʔϏε จܥ Ձ֨ܥ
ޱ࠲ܥ ػೳϨΠϠʔͱ͍͏ΑΓ͔ υϝΠϯͰ͚ͯΔ
gRPCʁ • ෦తͳೝՄαʔϏεͰར༻͍ͯ͠Δ • ͜ͷೝՄϏδωεϩδοΫدΓͷͷ • ଟͷαʔό͕ΫϥΠΞϯτͱͯ͠ར༻͢Δ • ΫϥΠΞϯτίʔυੜͰ͖Δͷخ͍͠ •
ϦΫΤετ͝ͱʹೝՄαʔϏεʹ͍߹ΘͤΔͷͰߴύϑΥʔϚϯεخ͠ ͍ خ͍͜͠ͱ ΊΜͲ͍͘͜͞ͱ • ΞΫηεϩάͷूܭϝτϦΫεͳͲʹϚωʔδυɾαʔϏε͑ͳ͍ • HTTP-JSONͷ߹ALB-TargetGroupͷΈ߹ΘͤͰHTTP StatusCode ͳͲΛCloudWatchMetricsͰूܭͯ͠Δ • gRPCͩͱinterceptorೖΕͯΞϓϦέʔγϣϯϩάʹग़ͯ͠ؤுͬͨΓɺ PrometheusͬͨΓʁ • ·ͩ֎ʹग़ͤΔAPIυΩϡϝϯτੜͰ͖ͳ͍ͱࢥ͏
OpenAPIͷ۩ମతͳར༻ํ๏ • ن֨Խ͞ΕͨAPIυΩϡϝϯτ͕࡞ΕΔ • mockੜͰ͖ͯϑϩϯτ͕ಉ࣌ਐߦͰ։ൃ ਐΊΕΔ • ίʔυੜՄೳ
ΤσΟλ Swagger Editor Stoplight Studio • ެࣜ • GUIΤσΟλ •
ෳϑΝΠϧฤूՄೳ • previewΆ͍(form)ͷ͔ΒฤूͰ ͖Δ
APIυΩϡϝϯτੜ Dockerfile ίϯςφ্ཱͪ͛
• ϩʔΧϧͰཱͯΕΔ͕ɺෳΤϯυϙΠϯτΛ ݟΔͷେมͳͷͰɺϒϥβͰURL͚ͯϗε ςΟϯά͞ΕͯΔͱศརͦ͏ • APIαʔόͱಉ͡gitϨϙδτϦʹswagger-ui༻ͷ DockerfileΛ࣋ͭ • ECSͰϗεςΟϯά •
AWS CodePipelineͰ։ൃڥʹϦϦʔε ։ൃڥʹϦϦʔε
Mockίϯςφͷੜ apisproutͷDockerfile Mock͔ΒͷϨεϙϯε
• ϩʔΧϧͰཱͯΕΔ͕ʢҎԼུ • APIαʔόͱಉ͡gitϨϙδτϦʹmock༻ ͷDockerfileΛ࣋ͭ • ECSͰϗεςΟϯά • AWS CodePipelineͰ։ൃڥʹϦϦʔε
UIͱಉ͘͡։ൃڥʹϦϦʔε
ίʔυੜ • routergorillaͰੜ͞ΕΔ • FinatextͰechoΛͬͯΔͨΊ modelͷΈநग़
ਖ਼͋Μ·Γخ͘͠ͳ͍… • APIͷϦΫΤετʹόϦσʔγϣϯ͍ͨ͠ • ͪΖΜopenapiύοέʔδʹॻ͚ͳ͍ • ؔ࡞ͬͯҾʁ • ໊લۭؒʹؾΛ͚ͭΔඞཁ͋Γ •
ผͷstructʹຒΊࠐΉʁ • ྑ͍͚ͲΊΜͲ͍͘͞
ଥڠతίʔυੜ • Swagger UI͔ΒJSONΛCtrl+C • ChimeraCoder/gojsonͰJSON͔ΒgoͷstructΛੜ • ͦΕΛ͋ͬͯ΄͍͠goϑΝΠϧʹషΔʂ
ͦͦεΩʔϚۦಈͷϞνϕͬͯʁ αʔόˠϑϩϯτͱ͍͏։ൃͷྲྀΕ ↓ ը໘͕ग़དྷ্͕ͬͯ͘ΔͱશํҐ͔ΒϑΟʔυόοΫ͕དྷΔ ↓ ϑϩϯτ͕UI͍ͯ͠Δ͏ͪʹαʔό৭ʑվम͢Δʢ߹ʹΑͬͯ APIมߋ… ↓ ϑϩϯτਵ͢Δ͕ɺUIζϨΔ… ͱϑϩϯτʹγϫدͤߦ͖͕ͪ
ͳͷͰϑϩϯτͱαʔό͕ಉ࣌ฒߦͰਐΊΕΔΑ͏ʹͱΓ͋͑ͣҰ୴API ༷ΛܾΊΔ͔͠ͳ͍ ͍ͭͰʹن֨Խ͞ΕͨAPIυΩϡϝϯτͱMock͕Ͱ͖Δͷศར
εΩʔϚΛܾΊͨ͘ͳ͍ཧ༝ Userͱ͍͏ߏମ͕͋Δͱ͢Δɻ ͦΕʹNameAgeͱ͍ͬͨଐੑΛՃ͍ͯ͘͠ɻ ຊͲ͕ͬͪઌʹ͋Δʁʁ
ଐੑ͕ઌͩͱࢥ͏ ଐੑΛʹྫ͑ΔͱɺߏମʢεΩʔϚʣ࠲ ։ൃதʹ֤ؔऀ͕ΛͲΜͲΜݟ͚ͭͯ͘Δ ͦͷࡍʹ࠲ΛΧνοͱܾΊ͗͢Δͱ৽͕͘͠ݟ͔ͭͬͨͱ͖ʹۙͷ ࠲ʹΈࠐΜͰ͠·͏
εΩʔϚʢԾʣۦಈ։ൃͷεεϝ • ͱΓ͋͑ͣલʹਐΉͨΊʹAPIεΩʔϚʢԾʣ Λ࡞Δ • ৽ن։ൃ࣌ޓੑΕͯΨϯΨϯഁյత มߋ͢͠ • ͍ͭͰʹAPIυΩϡϝϯτͱMockͰ͖Δͱศ རͩΑͶ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠