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
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
Goでデータパイプラインを作ろう
sansantech
PRO
1
450
強化学習「理論」入門
enakai00
3
3.6k
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
260
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.2k
20分でわかるセキュアAPI
nwiizo
2
270
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.7k
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
240
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
4
1.6k
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
750
事業価値と Engineering 2026年度版
recruitengineers
PRO
49
23k
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.5k
2026-08-05 IBM Z開発最前線!IBM Bob Premium Package for Zって何がすごいの?
yutanonaka
0
110
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
630
How to Ace a Technical Interview
jacobian
281
24k
Marketing to machines
jonoalderson
1
5.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1.1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How to build a perfect <img>
jonoalderson
1
5.9k
For a Future-Friendly Web
brad_frost
183
10k
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