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
Seungmin 마량
February 04, 2022
Programming
0
72
잘 일하는 조직 만들기
2022년 2월 4일 NFT 뱅크에서 진행한 사내 조직문화 세미나의 발표자료 입니다. 실험과 테크스펙 문화에 대해 다루었습니다.
Seungmin 마량
February 04, 2022
Tweet
Share
More Decks by Seungmin 마량
See All by Seungmin 마량
대규모 트래픽을 처리하는 프론트 개발자의 전략
maryang
0
130
프론트엔드 개발자가 실제로 하는 일과 취업 준비 팁
maryang
0
28
나는 좋은 상사일까? 팀장은 꼭 봐야 할 리더십 공식
maryang
0
39
미국 교환학생 가서 무료 홈스테이 살면서 인턴 취업하기
maryang
0
120
글로벌 기업은 홈페이지에서 영어 번역을 어떻게 제공할까?
maryang
0
66
30살에 구글이 인정한 개발자가 될 수 있었던 공부법
maryang
0
170
좋은 서비스를 만들기 위한 제품팀 문화 이해하기
maryang
0
69
사수 없는 주니어 개발자가 성장하는 방법
maryang
0
380
개발자가 성과를 증명하는 방법 | A/B테스트 기반 개발
maryang
0
140
Other Decks in Programming
See All in Programming
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
2.5k
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
2.8k
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
24
12k
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
アルテニア コンサル/ITエンジニア向け 採用ピッチ資料
altenir
0
110
楽して成果を出すためのセルフリソース管理
clipnote
0
190
時間軸から考えるTerraformを使う理由と留意点
fufuhu
16
4.8k
はじめてのMaterial3 Expressive
ym223
2
900
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
170
個人開発で徳島大学生60%以上の心を掴んだアプリ、そして手放した話
akidon0000
1
150
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
さようなら Date。 ようこそTemporal! 3年間先行利用して得られた知見の共有
8beeeaaat
3
1.5k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A designer walks into a library…
pauljervisheath
207
24k
Docker and Python
trallard
46
3.6k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Statistics for Hackers
jakevdp
799
220k
Facilitating Awesome Meetings
lara
55
6.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Building Adaptive Systems
keathley
43
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Code Reviewing Like a Champion
maltzj
525
40k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Transcript
थ ߛ࢟۞٘ UX Strategy Product Manager GDE Android Korea
[email protected]
ੜ ੌೞח ઑ ٜ݅ӝ
ח… ߛ࢟۞٘ UX Strategy Product Manager Google Developers Experts
Android Korea
ੜੌೞח䞾ۆ
ੜੌೞח䞾ۆ بݽܰѷযਃ
ੜੌೞח䞾ۆ ઁ҃উী䞵 ݻо䟉Ҋࢤпೞחߑ䢲ٜਸҕਬ
प పझಖ
01 प
ӝദ -> ٣ੋ -> ѐߊ ࢲ࠺झ ѐߊ ࢎ
ӝദ -> ٣ੋ -> ѐߊ ࢲ࠺झ ѐߊ ࢎ
ࢲ࠺झ ѐߊ ࢎ ӝഥ ߊҷ -> оࢸ ࢸ -> प
-> ؘఠ ࠙ࢳ -> Ѿ
ࢲ࠺झ ѐߊ ࢎ ӝഥ ߊҷ -> оࢸ ࢸ -> प
-> ؘఠ ࠙ࢳ -> Ѿ
ࢲ࠺झ ѐߊ… ӏݽо ח ࢲ࠺झח ޖ Ҋ ѐࢶ೧ঠ ೞח ঌӝ
য۵णפ. Ӓېࢲ ؘఠܳ ࠁҊ ੋࢎܳ য ӝദ ഛبܳ ֫ৈঠ פ. ӏݽо ח ࢲ࠺झח ݅ٚ ӝמ ࢎਊо ਗೞח Ѫੋ ঌӝ য۵णפ. Ӓېࢲ पਵ۽ ࢎਊ ೯زਸ ஏೞҊ ഛܫ ֫ Ѿਸ ೧ঠ פ. ӏݽо ח ઑ ইޖܻ о ҙ જইب ݽٚ Ѫਸ Ѿೡ ࣻ হणפ. Ӓېࢲ ࣁࠗ ب ഛೠ ࢎѾਸ ೡ ࣻ ب۾ प೧ঠ פ.
0CTFSWBCJMJUZ 'FBUVSF'MBH &YQFSJNFOU
Observability
ؘఠܳ যڌѱ ݽਸ ࣻ ਸө ӝഥ ߊҷ -> оࢸ ࢸ
-> प -> ؘఠ ࠙ࢳ -> Ѿ ۽Ӧ (߮ ѐߊ)
۽Ӧۆ ࢎਊ ೯زਸ ӝ۾ ۽Ӧ೧ঠ ࢎਊ ೯ز ࠙ࢳ оמ
ࢎਊ ೯زۆ ࢎਊо ࢲ࠺झীࢲ ೞח ݽٚ ೯ز ചݶز, ܼ, ߑޙ,
ਖ਼ઓ, Ѿઁ, ஶబஎ ࢤࢿ ١
ࢎਊ ೯زۆ ࢎਊо ࢲ࠺झীࢲ ೞח ݽٚ ೯ز ࢎਊ ೯زਸ ࠙ࢳ
оמೠ ഋక۽ ೞݶ, ߮
߮ ѐߊ ࢎ ߮ -> ٘ बӝ
߮ ೞӝ ߮ -> ٘ बӝ ஏೞ۰ח ࢎਊ ೯زਸ
߮ ҳࢿ ചݶ ೯ز ఋ߁ য٣ীࢲ ೯زೞחо যڃ ೯زਸ ೞחо
ઁ ۽Ӧਸ ೡ Ѫੋо ܴ ചݶ, ೯ز, ఋ߁ਸ ೞա ܴਵ۽ അ ࣘࢿ э ೯زযب ܳ ࣻ ח ࢎਊ / ߮ ࢚ടਸ അ
߮ द No, ചݶ ࢎਊ ೯زҗ ఋ߁ ܴ ࣘࢿܴ
/ ч 1 ചݶ ੑ enter__assets_home 2 - زӝച ࢿҕ success__sync_assets 3 ٘୶ୌ ࢚ಿ ܼ click__product_card ܴ: id / ч: ࢚ಿ ই٣ ч द: 3425, 1829 ܴ: company / ч: ӝҙ ܴ ч द: नೠ٘, Ҵ٘ 4 ݽٚ ചݶ জ द ನӒۄ٘ ചݶ 0ѐীࢲ 1ѐо غח द open_app ܴ: os ч द: android, ios, web
߮ ؘఠ ࣠ೞӝ ߮ -> ٘ बӝ ߮ ߊࢤ
द ؘఠ ࣠
߮ ؘఠܳ ऺח ۖಬ
binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${houseLiveData.value.contact}")) ) }
fun logEvent(event: EventDefinition) { firebaseAnalytics.logEvent(event.eventName, Bundle()) amplitude.logEvent(event.eventName) } ߮ ٘ बӝ
binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${houseLiveData.value.contact}")) ) }
fun logEvent(event: EventDefinition) { firebaseAnalytics.logEvent(event.eventName, Bundle()) amplitude.logEvent(event.eventName) } ߮ ٘ बӝ ߡౡ ܼ द ߮ ࣠
binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${houseLiveData.value.contact}")) ) }
fun logEvent(event: EventDefinition) { firebaseAnalytics.logEvent(event.eventName, Bundle()) amplitude.logEvent(event.eventName) } ߮ ٘ बӝ Firebase, Amplitudeী ߮ ࣠
߮ ؘఠ ࣻೞӝ ೠ ߮о ߊࢤೞݶ, ब ٘о زೞݶ, ߮
ؘఠо ऺੑפ Firebase
ݽٚ ࢎਊ ೯زਸ ஏೡ ࣻח হ যڃ ߮ ؘఠܳ ࣻೡө?
2о ߮۽ ࢎਊ ೯ز ࠗ࠙ਸ ঌ ࣻ णפ Enter Click
Enter ߮ যڌѱ ҳഅೡө Base ചݶ ېझী ߮ ٘ ੑ
ചݶ߹۽ ߮ ܴ ചݶ ੑ ߮
Enter ߮ ٘ class BaseActivity : Activity() { protected open
var enterEvent: EventDefinition? = null override fun onResume() { super.onResume() if (enterEvent != null) { analyticsManager.logEvent(enterEvent!!) } } } class UploadTypeActivity : BaseActivity() { override var enterEvent: EventDefinition? = EnterEventDefinitions.uploadType() } class HouseListActivity : BaseActivity() { override var enterEvent: EventDefinition? = EnterEventDefinitions.houseList() }
Enter ߮ ٘ class BaseActivity : Activity() { protected open
var enterEvent: EventDefinition? = null override fun onResume() { super.onResume() if (enterEvent != null) { analyticsManager.logEvent(enterEvent!!) } } } class UploadTypeActivity : BaseActivity() { override var enterEvent: EventDefinition? = EnterEventDefinitions.uploadType() } class HouseListActivity : BaseActivity() { override var enterEvent: EventDefinition? = EnterEventDefinitions.houseList() } ചݶੑ ࢤݺӝী ߮ ٘ ੑ
Enter ߮ ٘ class BaseActivity : Activity() { protected open
var enterEvent: EventDefinition? = null override fun onResume() { super.onResume() if (enterEvent != null) { analyticsManager.logEvent(enterEvent!!) } } } class UploadTypeActivity : BaseActivity() { override var enterEvent: EventDefinition? = EnterEventDefinitions.uploadType() } class HouseListActivity : BaseActivity() { override var enterEvent: EventDefinition? = EnterEventDefinitions.houseList() } ചݶ݃ ܴ
Click ߮ যڌѱ ҳഅೡө UI ஹನքܳ ־ܰח ߮ Click Listenerী
߮ ٘ ੑ
binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${houseLiveData.value.contact}")) ) }
Click ߮ ٘
binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${houseLiveData.value.contact}")) ) }
ߡౡ ܼ द ߮ ࣠ Click ߮ ٘
Active User(AU) ӝળ ߮ ࢲ࠺झ ೨ब ߮ ‘জਸ ࢎਊೞҊ ח
ਬ’ܳ ౸ױೡ ࣻ ח ೯زਸ ೧ঠ פ. ࢲ࠺झо ਃೞѱ ࢤпೞח ೨ब ࢎਊ ೯زਸ ೧ঠ פ. ࢲ࠺झ ਃ ܳ ೞח ߮ܳ ೧ঠ פ
Active User(AU) ӝળ ߮ द झېद ചݶਸ ੑೞݶ AU۽ ನೣೠ
۽Ӓੋ റ ക ചݶী ੑೞݶ AU۽ ನೣೠ যڃ ചݶٚ ನӒۄ٘۽ ৢۄয়ݶ AU۽ ನೣೠ
ࢲ࠺झ ೨ब ߮ द ழݠझ ࢲ࠺झ۽ Ѿઁ ೯زਸ ਃ ߮۽
ஏೠ SNS۽ ஶబஎ ࢤࢿ ೯زਸ ਃ ߮۽ ஏೠ ࠗز ѐ ࢲ࠺झ۽ ࠗز োۅ ೯زਸ ਃ ߮۽ ஏೠ
ࢸ҅ೞҊ ѐߊೞৈ ߮ ؘఠܳ ऺও ߮ ؘఠܳ ࠙ࢳ೧ࢲ ࢲ࠺झ ੋࢎܳ
যࠇद
߮ ߊࢤ ࣻܳ ࠁח AU ࠙ࢳ enter - DAU 10݅ݺ
, 3݅ݺ Ѥъ ചݶী ٜযৡ user property - Ѥъ ചݶী ٜযয়ח 3݅ݺ 2݅ݺ ѤъѨ োز غয click - Ѥъ ചݶী ٜযয়ח 3݅ݺ , 1ୌݺ ߡౡਸ ׂ۞ ѤъѨ োزਸ दبೠ
AU ର द
߮ ߊࢤ ࣻܳ ࠁח AU ࠙ࢳ enter - DAU 10݅ݺ
, 3݅ݺ Ѥъ ചݶী ٜযৡ user property - Ѥъ ചݶী ٜযয়ח 3݅ݺ 2݅ݺ ѤъѨ োز غয click - Ѥъ ചݶী ٜযয়ח 3݅ݺ , 1ୌݺ ߡౡਸ ׂ۞ ѤъѨ োزਸ दبೠ Ѥъ ӝמ ਬ 30%о ࠁҊ, Ӓ 66%о োزغয োزغয ঋ ࢎਊ 10%о োزਸ दبೠ
ౠ ೯ز റ ੌ दр ٍ جইয়ח ܻబ࣌ ࠙ࢳ
োزਸ दب೮؍ ࢎۈ दبೞ ঋও؍ ࢎۈࠁ (Click) 7ੌ ղ জਸ ߑޙೞח ࠺ਯ (open_app) 10% ֫
ܻబ࣌ ର द
ౠ ೯ز റ ੌ दр ٍ جইয়ח ܻబ࣌ ࠙ࢳ
োزਸ दب೮؍ ࢎۈ दبೞ ঋও؍ ࢎۈࠁ (Click) 7ੌ ղ জਸ ߑޙೞח ࠺ਯ (open_app) 10% ֫ োزਸ औѱ दبೡ ࣻ ب۾ ѐࢶ೧ঠѷ
ױ҅߹۽ ఎܫਸ ࠁח ഐ ࠙ࢳ ഥਗоੑਸ ਤ೧ Ѣঠೞח 3ѐ ചݶ
ࠄੋੋૐਸ ೞח 2ߣ૩ ചݶীࢲ ఎ ݆
ഐ ର द
ഥਗоੑਸ ਤ೧ Ѣঠೞח 3ѐ ചݶ ࠄੋੋૐਸ ೞח 2ߣ૩ ചݶীࢲ
ఎ ݆ ࠄੋੋૐਸ औѱ ೡ ࣻ ب۾ ѐࢶ೧ঠѷ ױ҅߹۽ ఎܫਸ ࠁח ഐ ࠙ࢳ
ӝמՙܻ ਃ ࠺Ү জ AU AUח
80%, о҅ࠗ AUח 60%, زର AUח 10% ֢റח AUо ծ ঋ݅, ܻబ࣌ ݽٚ ӝמ ઁੌ ծ
ӝמ ࠺Ү ର द
ӝמՙܻ ਃ ࠺Ү জ AU AUח
80%, о҅ࠗ AUח 60%, زର AUח 10% ֢റח AUо ծ ঋ݅, ܻబ࣌ ݽٚ ӝמ ઁੌ ծ زର৬ ֢റח ࢲ࠺झ ਃ ӝמ ইפ
Feature Flag
߸҃ਸ द ߈ ߸҃ ҳഅ թ ঋই ഐജࢿਸ Ҋ۰ೞ
ঋইب ؽ ਬোೠ ࢲ࠺झۆ
߸҃ਸ द ߈ ߸҃ ҳഅ թ ঋই ഐജࢿਸ Ҋ۰ೞ
ঋইب ؽ ݽ߄ੌ ਬোೞ ঋ
ਬোೠ ࢲߡ۽ࠗఠ чਸ ߉ই৬ ഝਊೞ ݽ߄ੌ ਬোೞѱ ٜ݅ӝ Feature Flag
ࢲߡ۽ࠗఠ чਸ ߉ই৬ ഝਊ ࢲߡীࢲ чਸ ߸҃ೞݶ ߄۽ ਊ Feature
Flagۆ
Firebase Remote Config Remote Configী чਸ ೞҊ জীࢲ ਗѺਵ۽ ࢎਊ
ӝמ on / off Feature Flag ഝਊب
private fun setContactButton() { if (RemoteConfig.getBoolean(ConfigVariable.MoveContactButtonBottomToFloating)) { binding.contactButton.visibility = View.GONE
binding.contactButtonFab.visibility = View.VISIBLE } else { binding.contactButton.visibility = View.VISIBLE binding.contactButtonFab.visibility = View.GONE } } Feature Flag۽ ӝמ ఃҊ Սӝ
private fun setContactButton() { if (RemoteConfig.getBoolean(ConfigVariable.MoveContactButtonBottomToFloating)) { binding.contactButton.visibility = View.GONE
binding.contactButtonFab.visibility = View.VISIBLE } else { binding.contactButton.visibility = View.VISIBLE binding.contactButtonFab.visibility = View.GONE } } Feature Flag۽ ӝמ ఃҊ Սӝ
Experiment
ࢲ࠺झ ޖ જҊ ѐࢶ ਃೠ ؘఠܳ ా೧ ण оמೠ ࢲ࠺झ
߮ܳ ੜ ѐߊ೧ࢲ Observabilityо ֫ ࢲ࠺झ
ӝמਸ ߓನೞ؊פ о ৢۋযਃ زदী ܲ ӝמب ߓನೞחؘ ޖ ܳ
ৢܽѦөਃ?
زदী ݆ Ѫ ߸҃غח ݽ߄ੌ ࢲ࠺झ ղ স ೱبܳ ঌ۰ݶ
प ਃ ղ স ೱبо ҾӘ೧ਃ
प স ೱبܳ Ѩૐ : https://blog.banksalad.com/tech
A/B పझ ܻо ܙ प ߑߨ Aܳ ߓನೞҊ ӝઓ ӝמҗ
࠺Ү A,Bܳ ೣԋ ߓನೞҊ ࠺Ү
A/B పझ : https://blog.banksalad.com/tech
ࢎਊ Ӓܛ ա־ӝ Ӓܛ߹۽ ӝמਸ ܰѱ ҳഅ Ӓܛ߹۽ ؘఠܳ ࠙ࢳ
স ೱبܳ ഛ ঌӝਤೠ प ҳഅ
पਸ ҙܻೞח प ۖಬ
ࢎਊ Ӓܛ ա־ӝ Ӓܛ߹۽ ӝמਸ ܰѱ ҳഅ Ӓܛ߹۽ ؘఠܳ ࠙ࢳ
স ೱبܳ ഛ ঌӝਤೠ प ҳഅ
ઑҵ vs पҵ (Control vs Treatment) ࢎਊ Ӓܛ ա־ӝ
ઑҵ, पҵ ա־ӝ যڃ ઑѤਵ۽ ա־חо ݻݺঀ ա־חо
प ࢚ ےؒ যڃ ઑѤਵ۽ ա־חо
ࢎਊ ݻ%ܳ प ࢚ਸ ೡ Ѫੋо ݻݺঀ ա־חо
प ࢚ 50%о पҵ ݻݺঀ ա־חо ࢎਊ 100%
50%о पҵ ࢎਊ 50% 25%о पҵ
Firebaseীࢲ ࢎਊ Ӓܛ ա־ӝ
ࢎਊ Ӓܛ ա־ӝ Ӓܛ߹۽ ӝמਸ ܰѱ ҳഅ Ӓܛ߹۽ ؘఠܳ ࠙ࢳ
স ೱبܳ ഛ ঌӝਤೠ प ҳഅ
Feature Flagী ٮۄ ӝמ ࠙ӝೞҊ ߮ ѐߊ Ӓܛ߹۽ ӝמਸ ܰѱ
ҳഅ
Firebaseীࢲ प Feature Flag ٜ݅ӝ
private fun setContactButton() { if (RemoteConfig.getBoolean(ConfigVariable.MoveContactButtonBottomToFloating)) { binding.contactButton.visibility = View.GONE
binding.contactButtonFab.visibility = View.VISIBLE } else { binding.contactButton.visibility = View.VISIBLE binding.contactButtonFab.visibility = View.GONE } } Feature Flagী ٮۄ ӝמ ࠙ӝ
private fun setContactButton() { if (RemoteConfig.getBoolean(ConfigVariable.MoveContactButtonBottomToFloating)) { binding.contactButton.visibility = View.GONE
binding.contactButtonFab.visibility = View.VISIBLE } else { binding.contactButton.visibility = View.VISIBLE binding.contactButtonFab.visibility = View.GONE } } Feature Flagী ٮۄ ӝמ ࠙ӝ
Feature Flagী ٮۄ ߮ ѐߊ binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail())
startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${contact}")) ) } binding.contactButtonFab.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${contact}")) ) }
Feature Flagী ٮۄ ߮ ѐߊ binding.contactButton.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail())
startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${contact}")) ) } binding.contactButtonFab.setOnClickListener { view -> analyticsManager.logEvent(EventDefinitions.clickContactHouseDetail()) startActivity( Intent(Intent.ACTION_DIAL, Uri.parse("tel:${contact}")) ) } ೞա पীࢲ ࠙ӝغח ܲ ӝמٜীࢲ э ߮ܳ ࣠
ࢎਊ Ӓܛ ա־ӝ Ӓܛ߹۽ ӝמਸ ܰѱ ҳഅ Ӓܛ߹۽ ؘఠܳ ࠙ࢳ
স ೱبܳ ഛ ঌӝਤೠ प ҳഅ
Feature Flagী ٮۄ ߮ ؘఠ ࠙ࢳ Ӓܛ߹۽ ؘఠܳ ࠙ࢳ
݆ ߮ ؘఠ ޖਸ ࠺Үೡө प оࢸী ೞח Primary
Metric ೞա ܳ ࠺Ү Second Metric ଵҊ
प оࢸҗ Metric द оࢸ ಹद о҅ࠗ ࢸ ޙҳܳ ߸҃ೞ
ݶ, ࢸ ৮ܐࣻо ֫ই Ѫ. оࢸ ୶ୌచ ࢚ױ ߓցܳ ઁೞݶ ࢚ಿ ࣂ࣌ ਤ۽ ৢۄ৬, ࢚ಿ ܼࣻо ֫ই Ѫ. Primary Metric ࢸ ৮ܐ ࣻ Second Metric ࢸ ചݶ ߑޙ ࣻ Primary Metric ݽٚ ࢚ಿ ܼ ࣻ Second Metric ୶ୌచ ߑޙ ࣻ ٘, ࠁ, ١ п ࢚ಿٜ ܼ ࣻ प ࢸ҅ ױ҅ীࢲ оࢸҗ Metric
Firebaseীࢲ Primary Metric ١۾
Ӓܛ߹۽ ؘఠܳ ࠺Ү : https://blog.banksalad.com/tech
A/B పझ पۆ Aܳ ߓನೞҊ ӝઓ ӝמҗ ࠺Ү A,Bܳ ೣԋ
ߓನೞҊ ࠺Ү
Feature Flag + Observability ݽ߄ੌ ѐߊ ҙীࢲ पۆ
ܻ
ࢲ࠺झ ѐߊ ࢎ ӝഥ ߊҷ -> оࢸ ࢸ -> प
-> ؘఠ ࠙ࢳ -> Ѿ
ࢲ࠺झ ѐߊ ࢎ ӝഥ ߊҷ -> оࢸ ࢸ -> प
-> ؘఠ ࠙ࢳ -> Ѿ
ࢲ࠺झ ѐߊ… ӏݽо ח ࢲ࠺झח ޖ Ҋ ѐࢶ೧ঠ ೞח ঌӝ
য۵णפ. Ӓېࢲ ؘఠܳ ࠁҊ ੋࢎܳ য ӝദ ഛبܳ ֫ৈঠ פ. ӏݽо ח ࢲ࠺झח ݅ٚ ӝמ ࢎਊо ਗೞח Ѫੋ ঌӝ য۵णפ. Ӓېࢲ पਵ۽ ࢎਊ ೯زਸ ஏೞҊ ഛܫ ֫ Ѿਸ ೧ঠ פ. ӏݽо ח ઑ ইޖܻ о ҙ જইب ݽٚ Ѫਸ Ѿೡ ࣻ হणפ. Ӓېࢲ ࣁࠗ ب ഛೠ ࢎѾਸ ೡ ࣻ ب۾ प೧ঠ פ.
02 పझಖ
None
📝 ٬ೞӝীޙࢲܳࢿೞ䞶ਃ
ޙࢲ䤠ೡ ࠂبࢎ䥅ઁয 👫 )JTUPSZ 📖
None
ݽٚসޖীޙࢲоਵݶ ݽٚۄੋߓ҃ਸ୶ೡࣻ $PEF13+JSB5JDLFUޙࢲ
$PEF13+JSB5JDLFUޙࢲ
ޙࢲ䤠ೡ ࠂبࢎ䥅ઁয 👫 )JTUPSZ 📖
য䡣সޖੋо ਃড ৵ೞחо ߓ҃ য䡣䟽җܳ߄ۄࠁחо
ݾ ޖਸҊ۰ೞঋਸѪੋо ݾоইצѪ যڌѱӝࣿࢸ҅ܳೡѪੋо ҅ദ زܐܻ࠭
None
٬ࠗ࠙ ޙࢲী䞵ա
None
ӝദӝࣿࢸ҅࠼ਸ ܻח
ޙܳాೠ ഛपೠӝ۾ ࠺زӝழޭפா࣌ ழޭפா࣌࠺ਊх
ޙࢲ۽झషܻܳऺҊ ࠂبܳઁযೞ䞶ਃ
03 ݃ޖܻ
पਵ۽সоܳ 䟤ҙਵ۽ૐݺೞ䞶ਃ
ޙࢲ۽झషܻܳऺҊ ࠂبܳઁযೞ䞶ਃ
थ ߛ࢟۞٘ UX Strategy Product Manager GDE Android Korea
[email protected]
хࢎפ