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
0
780
現場の課題を解決するために大事にしていること
自社プロダクトの構想から開発・運用・改善の一連の流れを経験しました。
その中で、エンジニア組織としてビジネスインパクトを最大限に創出するために、何をなぜ大切にしているかをまとめました。
Arashi
August 03, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
110
白金鉱業Meetup_Vol.19_PoCはデモで語れ!顧客の本音とインサイトを引き出すソリューション構築
brainpadpr
2
490
原則から考える保守しやすいComposable関数設計
moriatsushi
3
500
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
850
Oracle Audit Vault and Database Firewall 20 概要
oracle4engineer
PRO
3
1.6k
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
140
In Praise of "Normal" Engineers (LDX3)
charity
3
1.2k
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
490
Snowflake Summit 2025全体振り返り / Snowflake Summit 2025 Overall Review
mtpooh
2
200
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
3
290
[TechNight #90-1] 本当に使える?ZDMの新機能を実践検証してみた
oracle4engineer
PRO
3
140
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
810
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Optimizing for Happiness
mojombo
379
70k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
A better future with KSS
kneath
239
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
How to Ace a Technical Interview
jacobian
277
23k
A Tale of Four Properties
chriscoyier
160
23k
Writing Fast Ruby
sferik
628
61k
Designing for humans not robots
tammielis
253
25k
It's Worth the Effort
3n
184
28k
4 Signs Your Business is Dying
shpigford
184
22k
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