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
現場の課題を解決するために大事にしていること
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Arashi
August 03, 2023
Technology
940
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
現場の課題を解決するために大事にしていること
自社プロダクトの構想から開発・運用・改善の一連の流れを経験しました。
その中で、エンジニア組織としてビジネスインパクトを最大限に創出するために、何をなぜ大切にしているかをまとめました。
Arashi
August 03, 2023
Other Decks in Technology
See All in Technology
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.3k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
380
サイバー捜査員研修(後半)
nomizone
1
870
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
110
Sets in Go
ramalho
1
500
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
280
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.5k
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
150
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.2k
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
150
私がブラウザを自作したくなった理由
supurazako
1
230
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.4k
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
380
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
410
Producing Creativity
orderedlist
PRO
348
40k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
Crafting Experiences
bethany
1
250
Facilitating Awesome Meetings
lara
57
7.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Music & Morning Musume
bryan
47
7.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
430
Paper Plane
katiecoart
PRO
2
53k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Transcript
ݱͷ՝Λղܾ͢ΔͨΊʹ େࣄʹ͍ͯ͠Δ͜ͱ CloudNative Days Fukuoka 2023/08/03 @_arstkn 1
ࣗݾհ ໊લ : ∁ ཛྷ ॴଐ : QUANDO,Inc. ৬ :
ςοΫϦʔυ 𝕏 : _arstkn ΫΞϯυҰے7ʂ 2
ݱʹಛԽͨ͠ϦϞʔτίϛϡχέʔγϣϯπʔϧ SynQ Remote ʮ͋ΕɾͦΕɾ͜Εʯ͕؆୯ʹΘΔ - ඞͣಉ͡ө૾ΛࢀՃऀશһ͕ݟΔ - ը໘ΛλοϓʢΫϦοΫʣͰϙΠϯλΛදࣔ ௨৴ڥ͕ѱͯ͘Ͱ͖ΔݶΓߴը࣭ -
શһ͕ݟ͍ͯΔө૾ͷΈ͕ ৴͞ΕΔΑ͏੍ޚ ΞϓϦΠϯετʔϧ͚ͩͰར༻Մೳ - ಛघͳෆཁ - ΞϓϦΛΠϯετʔϧ͢Δ͚ͩ 3
ࠓ͍ͨ͜͠ͱ 4
5 ݱʢΤϯυϢʔβʔʣͷ՝ղܾʹ ΠϯύΫτ͕͋Δͱ͜Ζʹ ϦιʔεΛ͔͚Δ͜ͱ͕Ͱ͖ΔΑ͏ʹߏங͢Δ͜ͱ େࣄͩͱࢥ͏͜ͱ
ϦϦʔεॳ ΤϯδχΞͷເͱر͕٧·͍ͬͯͨ 6
ΤϯδχΞͷເͱر ٕज़తح৺ 7
ͲΜͳເͱر͔ͩͬͨ ϕϯμʔϩοΫΠϯΛආ͚ΔͨΊOSSΛͬͯ ϚΠΫϩαʔϏεͰ࡞Γ͍ͨ 8
ٕज़ελοΫ 9 Kubernetes ίϯςφΦʔέετϨʔ γϣϯΛϕϯμʔʹґଘͤ ͣʹӡ༻͍ͨ͠ ElasticSearch ϩάج൫Λϕϯμʔʹґଘ ͤͣʹӡ༻͍ͨ͠
10 ηϧϑϚωʔδυʹ͕͗ͨͨ͢͠Ίʹ ӡ༻͢Δ͜ͱʹίετ͕͔͔͍ͬͯͨ
ݱͷ՝ 11 ߴྸԽ ਓखෆ ಠΓཱͪʹ ͕͔͔࣌ؒΔ
ٕज़ελοΫ 12 Kubernetes ίϯςφΦʔέετϨʔ γϣϯΛϕϯμʔʹґଘͤ ͣʹӡ༻͍ͨ͠ ElasticSearch ϩάج൫Λϕϯμʔʹґଘ ͤͣʹӡ༻͍ͨ͠
Kubernetesฤ 13
14 ϝΠϯͷػೳʹؔͯ͠ KubernetesͰͷӡ༻ΛࣙΊͨ ݱࡏ
Kubernetesӡ༻ʹ͓͚Δ࠴ ίϯςφԽ͞ΕͨΞϓϦέʔγϣϯ͕ಈ͘ͱ͍͏͜ͱΛ อূͯ͘͠ΕΔΘ͚Ͱͳ͍ 15 Kubernetes͕֤ίϯςφΛͲ͏ಈ͔͔͢Λ ࣗࣾͷͰదʹઃܭ͢Δඞཁ͕͋Δ
దʹઃܭ͢Δ͜ͱ͕Ͱ͖Ε ϕϯμʔϩοΫΠϯΛආ্͚ͨͰ ίϯςφΛಈ͔͢͜ͱ͕Մೳ 16
ฐࣾϦϦʔεॳͳ͘ίϯςφ͕ಈ͍͍ͯ·ͨ͠ 17
1ਓͷઋਓ͕Kubernetesͷӡ༻Λʹͳͬͯ͘Ε͍͔ͯͨΒ 18
͜ͷ··্ख͍͔͘͘ͳͱࢥ͍ͬͯͨઌʹɺ ͜ͷઋਓ͕৫ΛΕΔ͜ͱʹͳΓ·ͨ͠ 19
৽͍͠ՁͷఏڙͷͨΊ ৽نػೳͷ։ൃͱϦϦʔε ຖճόλόλɾ෮چʹ͕͔͔࣌ؒΔ 20
Kubernetes → Azure App Service 21 Azure App Service Web
ΞϓϦ API Λ݅ʹ߹ΘͤͯਝʹߏஙɺσϓϩΠɺεέʔϦϯάͰ͖· ͢ɻίϯςφʔɺWindows ·ͨ Linux ্Ͱ࣮ߦ͞Ε͍ͯΔ .NETɺ .NET Coreɺ Node.jsɺ Javaɺ Pythonɺ·ͨ PHP Λૢ࡞Ͱ͖·͢ɻ1 ͋ͨΓ 600 ԯ݅Λ͑ΔཁٻΛॲཧ͢Δ৴པੑʹ༏Εͨϑϧ Ϛωʔδυ αʔϏεΛ͏͜ͱ ͰɺΤϯλʔϓϥΠζ Ϋϥεͷݫ͍͠ύϑΥʔϚϯεɺηΩϡϦςΟɺ͓Αͼί ϯϓϥΠΞϯεཁ݅ʹରԠͰ͖·͢ɻ
22 ίϯςφΦʔέετϨʔγϣϯͱ͍͏࠴Λ AzureʹݞΘΓͯ͠Β͏ ͭ·Γ
CDͷҠߦ 23 App Service × Container Registry Azure Container Registry
ͯ͢ͷ OCI ՌΛαϙʔτ͢ΔɺDocker Πϝʔδͱ Open Container Initiative (OCI) ΠϝʔδͷϨδετϦɻ
CDͷҠߦ App ServiceͷҙͷContainer RegistryͷλάΛࢹͯ͠ มߋΛݕ͢Δͱࣗಈతʹ৽͍͠DockerΠϝʔδΛσϓϩΠ͢Δػೳ → Ϗϧυͨ͠Πϝʔδʹରͯ͠versionλάͱlatestλάΛ͚ɺ Container RegistryʹPush͠ɺlatest͕ߋ৽͞Εͨ߹ʹσϓϩΠ͞ΕΔ
Α͏ͳઃఆΛߦ͍ӡ༻͠·ͨ͠ɻ 24
25 ӡ༻ͷෛՙ͕ܰݮ ϏδωεϩδοΫʹूத ։ൃͷεϐʔυ্͕
ͳͥઋਓʹґଘ͔ͨ͠ 26
27 ߏͱͯ͠ ίετ͕͔͔Δ෦ Ձఏڙ͍ͯ͠Δ෦ ࢿ͕ૄ͔ʹͳΔ ࠷ѱӡ༻ͷةػʁ
ݱࡏͷKubernetesͷར༻༻్ 28
29 ըػೳͷͨΊʹར༻ ར༻༻్
௨ػೳ WebRTCΛར༻࣮ͯ͠ WebRTC࣮ίετ͕ߴ͍ → Twilio Programmable VideoΛར༻ 30
Composition API Twilio Programmable VideoͷըੜAPI ύϒϦογϡ͞Εͨө૾ͱԻͷه͔Β ҙͷө૾ͱͦͷஔΛܾΊ ҙͷԻͱ݁߹͠ಈըΛੜ
31
ϙΠϯλػೳ WebRTCͷσʔλνϟωϧΛհͯ͠ ʮࠓͲ͜Λࢦ͍ࠩͯ͠Δ͔ʯ ͱ͍͏ใͷΓऔΓΛ࣮ͯ͠ݱ 32
Composition APIͰ݁߹Ͱ͖Δͷ ө૾ͱԻͷΈͰσʔλνϟωϧͦͦه͞Εͳ͍ → ʮ͋ΕɾͦΕɾ͜Εʯͱݴ͍ͳ͕Βձͯ͠ϙΠϯλ͕ه ͞Ε͍ͯͳ͚Εɺ͋ͱ͔Βݟͨ࣌͠ʹԿʹ͍ͭͯ͠ ͍ͯΔ͔͕͔Βͳ͍ 33
Ͳ͏͍ͬͯΔ͔ botΛ௨ʹࢀՃͤ͞ ԾͷϒϥβʹϨϯμϦϯάͤͨ͞ͷΛ GstreamerͰऩ 34
Kubernetesʹͨ͠ཧ༝ ө૾ͷॲཧΛ͢ΔͨΊॏ͘ ͍ͭ࢝·Γ͍ͭऴྃ͢Δ͔͔Βͳ͍ॲཧ ΛޮΑ࣮͘ߦͰ͖ͦ͏͔ͩͬͨΒ 35
ElasticSearchฤ 36
ϩάج൫ӡ༻ͷ՝ ϩάج൫ʹৗʹେྔͷϦΫΤετ͕ඈΜͰ͖ͯ ϚγϯϦιʔεཧ͕ෳࡶ 37
ฐࣾͷ߹ Kubernetes্ͰElasticSearchΛӡ༻͍ͯͨ࣌͠ʹ શͯͷίϯςφ͕Pending → શͯͷαʔϏεͷϩάΛऔಘ͠Α͏ͱ͍ͯͨͨ͠Ί ɹ ElasticSearch͕ϝϞϦΛ৯͍௵͠
ɹ ଞͷίϯςφΛىಈͰ͖ͳ͍ 38
͋͘·Ͱϩάج൫Λӡ༻͢Δ͜ͱ͕తͰͳ͍ 39
ElasticSearch → Azure Application Insights 40 "[VSF"QQMJDBUJPO*OTJHIUT "QQMJDBUJPO*OTJHIUT"[VSF.POJUPSͷ֦ுػೳͰ͋ΓɺΞϓϦέʔγϣϯ ύϑΥʔϚϯεࢹ "1.
ػೳΛఏڙ͠·͢ɻ"1.πʔϧɺ࣍ͷํ๏Ͱɺ ։ൃɺςετɺӡ༻ڥ͔ΒΞϓϦέʔγϣϯΛࢹ͢Δͷʹཱͪ·͢ɻ
App Insightsͷ౷߹ 41 "QQMJDBUJPO*OTJHIUTΛ&OBCMFEʹ͠ Ͳͷ"QQ*OTJHIUTʹϩάΛૹ৴͢Δ͔બ͢Δ͚ͩͰઃఆ͕ྃ
ΞϓϦέʔγϣϯϚοϓ ෳͷApp Service͔ΒಉҰͷApplication Insightsʹ ϩάΛૹ৴͢ΔΑ͏ʹઃఆ͢Δ͚ͩ 42
τϥϯβΫγϣϯͷݕࡧ 43
ϕϯμʔϩοΫΠϯΛڐ༰ͨ͜͠ͱʹΑΓ ϩάͷऩू͔Βੳػೳͷߏங·ͰϫϯετοϓͰྃ εϐʔυײखܰ͞ͳͲͷԸܙ 44
45 ϩάج൫ͷӡ༻ʹ಄Λ·͢ඞཁੑ͕ݱ ϏδωεϩδοΫʹूத ։ൃͷεϐʔυ্͕
͜͜·Ͱ 46
ϕϯμʔʹґଘ͠ͳ͍ ՁఏڙͰͳ͍෦Ͱ ӡ༻ͷͨΊʹϦιʔεΛׂ͍ ͍ͯͨߏ ϕϯμʔʹґଘ ӡ༻ʹඞཁͳϦιʔεΛܰݮ ػೳͷ։ൃʹϦιʔεΛूத Ͱ͖ΔΑ͏ʹߏΛมߋ 47
ٕज़తح৺ʹΛ͚ΔͷͰͳ͘ ݱͷ՝ʹΛ͚Δ 48
OSSಋೖͷऔΓΈ 49
ԿΛ͠Α͏ͱ͍ͯ͠Δ͔ʁ Relation-Based Access ControlʢReBACʣΛ͢ΔͨΊʹ OpenFGAͱ͍͏OSSΛ࠾༻͠Α͏ͱ͍ͯ͠·͢ɻ 50
OpenFGAͱ • OpenFGAReBACΛ؆୯ʹߏங͠ར༻Ͱ͖ΔOSS • CNCFͷSandBoxͷϓϩδΣΫτ • GoogleͷೝՄج൫Ͱ͋ΔZanziberͷจΛͱʹ Auth0͕࣮͠OSSͱͯ͠ެ։ 51
52 ݱ͔Βͷχʔζ͕͋Δ ReBACΛ࣮ݱ͢ΔͨΊͷαʔϏε͕ͳͦ͞͏ ͳͥOpenFGAʁ
ݱͷχʔζ 53 🏭 ݱ 👤 Ϣʔβʔ 👤 Ϣʔβʔ 🏭 ݱ
👤 Ϣʔβʔ ऀ ࢀՃऀ ऀ ήετ
OpenFGAͰͷReBAC 1. DSLͰσʔλϞσϧΛఆٛ 2. Relation TupleΛ࡞ 3. ݖݶΛ͍࣋ͬͯΔ͔Ͳ͏͔ΫΤϦ 54
DSLͰσʔλϞσϧΛఆٛ 55
Relation TuppleΛ࡞ 56
ݖݶΛ͍࣋ͬͯΔ͔Ͳ͏͔ΫΤϦ 57
ΫΤϦͷྫ • anneࢿྉZʹରͯ͠ӾཡݖݶΛ͍࣋ͬͯΔ͔ʁ • anne͕ӾཡݖݶΛ͍࣋ͬͯΔࢿྉʁ 58
anneZʹରͯ͠ӾཡݖݶΛ͍࣋ͬͯΔ͔ʁ 59
anne͕ӾཡݖݶΛ͍࣋ͬͯΔࢿྉʁ 60
OpenFGAͷظ • ؔͱσʔλͷ͕ਐΉ͜ͱͰ֤ϚΠΫϩαʔϏεͷ࣮ ΑΓσʔλʹରͯ͠ूதͰ͖Δ • DSLͰݖݶϞσϧΛҰݩཧͰ͖ΔͷͰɺݖݶͷʹΑ ΔηΩϡϦςΟϦεΫܰݮ 61
ݱͷ՝Λղܾ͢Δ্Ͱ ඞཁੑΛײ͡Δ߹ ੵۃతʹνϟϨϯδ͍ͯ͘͠ελϯε 62
Ϣʔβʔͷ՝ղܾʹΠϯύΫτ͕͋Δͱ͜Ζʹ ϦιʔεΛ͔͚Δ͜ͱ͕Ͱ͖ΔΑ͏ʹ ߏங͢Δ͜ͱ͕େࣄͩͱࢥ͍ͬͯ·͢ 63
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 64