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
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
520
モダンなアーキテクチャでゼロから作る証券基盤
atsushi51
1
2.9k
AWSにおけるクラウドネイティブでセキュアな証券システムの運用
atsushi51
0
160
独自ファイル形式にStructTagで立ち向かう
atsushi51
0
99
クラウドインフラの権限
atsushi51
0
86
AWSとGo言語とコンテナによる証券プラットフォーム
atsushi51
0
86
StepFunctionsフルコース
atsushi51
0
120
DevSecOps実践
atsushi51
0
160
Other Decks in Technology
See All in Technology
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
250
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
0
2.1k
初めてのDatabricks勉強会
taka_aki
2
240
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
8.1k
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
800
cccccc
moznion
0
1.8k
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
550
完全自律ロボットを作りたくて、先に開発を自律させた話(ROS Japan UG #63 LT)
rryz09
0
400
テスト設計の本質を改めて考えてみる~生成AIを活用する時代だからこそ、作ったテストの説明性を高めよう~
yamasaki696
1
390
どうして今サーバーサイドKotlinを選択したのか
nealle
0
210
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
340
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
400
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Thoughts on Productivity
jonyablonski
76
5.2k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
280
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
870
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
A designer walks into a library…
pauljervisheath
211
24k
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Ͱ͖Δͱศ རͩΑͶ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠