πŸ”₯ β€œλ‹€λ₯Έ μž‘μ—…μ΄ λ°€λ € μžˆμ–΄μ„œ 일주일 후에 착수 κ°€λŠ₯ν•˜κ³ , μž‘μ—…κΈ°κ°„λ„ 일주일 정도 μ˜ˆμƒν•©λ‹ˆλ‹€.”
ν”„λ‘œλͺ¨μ…˜ 진행을 μœ„ν•΄ λ‹Ήμž₯ κΈ°λŠ₯에 λŒ€ν•œ 확인이 ν•„μš”ν–ˆλ˜ 터라 λ§‰λ§‰ν–ˆλ‹€.

κ·Έλƒ₯ κΈ°λ‹€λ €μ•Ό ν•˜λ‚˜? μ•„λ‹ˆλ©΄ ν”„λ‘œλͺ¨μ…˜μ„ μ·¨μ†Œν•΄μ•Ό ν•˜λ‚˜?

λ‚΄κ°€ 이 μ„œλΉ„μŠ€ 주인인데… κΆŒν•œλ„ λͺ¨λ‘ κ°€μ§€κ³  μžˆλŠ”λ°β€¦ λ“€μ—¬λ‹€ 보기라도 ν• κΉŒ?

짧은 κ³ λ―Ό 끝에, ν΄λ‘œλ“œλ₯Ό λ―Ώκ³  ν•œ 번 λ„μ „ν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€.

μ•ˆ 되면 되게 ν•˜λΌ, 그것이 PM의 길…

image 1

κ°œλ°œνŒ€μ— 쿠폰 κΈ°λŠ₯ κ°œμ„ μ„ μš”μ²­ν–ˆλ”λ‹ˆ λŒμ•„μ˜¨ 닡은 β€œ2μ£Όβ€μ˜€λ‹€. μ°©μˆ˜κΉŒμ§€ 일주일, μž‘μ—…μ— λ‹€μ‹œ 일주일. 개발자 μž…μž₯μ—μ„œλŠ” 합리적인 μΌμ •μ΄μ—ˆλ‹€. λ‹€λ₯Έ μž‘μ—…λ“€μ΄ μš°μ„ μˆœμœ„μ— μžˆμ—ˆκ³ , 쿠폰 κΈ°λŠ₯은 κ·Έ μ€„μ˜ 맨 λ’€μ˜€λ‹€. λ¬Έμ œλŠ” λ‚΄ μͺ½ μ‚¬μ •μ΄μ—ˆλ‹€. ν”„λ‘œλͺ¨μ…˜ 일정은 이미 μž‘ν˜€ μžˆμ—ˆκ³ , κ·Έ μ•ˆμ— κΈ°λŠ₯이 λ™μž‘ν•˜λŠ”μ§€ 확인해야 ν–ˆλ‹€. 2μ£Όλ₯Ό 기닀리면 ν”„λ‘œλͺ¨μ…˜ μžμ²΄κ°€ 무산될 μƒν™©μ΄μ—ˆλ‹€.

κ°œμ„ μ΄ ν•„μš”ν–ˆλ˜ κΈ°λŠ₯은 쿠폰 λ°œκΈ‰ λ‘œμ§μ΄μ—ˆλ‹€. κΈ°μ‘΄μ—λŠ” 쿠폰 ν•˜λ‚˜μ— ν•œ λͺ…λ§Œ μ“Έ 수 μžˆλŠ” κ΅¬μ‘°μ˜€λŠ”λ°, μ΄λ²ˆμ—” ν•˜λ‚˜μ˜ μ½”λ“œλ₯Ό μ—¬λŸ¬ λͺ…이 μ„ μ°©μˆœμœΌλ‘œ μ‚¬μš©ν•˜κ³ , μ‚¬μš© 인원에 μƒν•œμ„ 두고(예: 3λͺ…κΉŒμ§€), μš΄μ˜μžκ°€ μ›ν•˜λŠ” λ¬Έμžμ—΄λ‘œ μ½”λ“œλ₯Ό μ§€μ •ν•˜κ³ , ν•œ μ‚¬λžŒμ΄ 같은 μ½”λ“œλ₯Ό 두 번 μ“°μ§€ λͺ»ν•˜κ²Œ λ§‰λŠ” κ²ƒκΉŒμ§€ ν•„μš”ν–ˆλ‹€. λΆ„λͺ… 개발자 μž…μž₯μ—μ„œλŠ” μ–΄λ ΅μ§€ μ•Šμ„ 것 같은데… μ½”λ“œλ₯Ό λͺ¨λ₯΄λ‹ˆ κ·Έλƒ₯ 손을 놓고 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 게 λ‹΅λ‹΅ν–ˆλ‹€.

μ•„λ§ˆλ„ 졜근의 λ°”μ΄λΈŒμ½”λ”© κ²½ν—˜μ΄ β€˜λ‚˜λ„ ν•  수 μžˆμ„ 것 같은’ κ·Όκ±° μ—†λŠ” μžμ‹ κ°μ„ μŒ“μ•„ 올렸던 것 κ°™λ‹€. λ°”μ΄λΈŒμ½”λ”©μ€ λͺ‡ μ°¨λ‘€ ν•΄ λ΄€μ§€λ§Œ, λ‚΄κ°€ μš΄μ˜ν•˜λŠ” μ‹€μ œ μ„œλΉ„μŠ€μ˜ μ½”λ“œλ₯Ό 직접 κ±΄λ“œλ¦¬λŠ” 건 μ²˜μŒμ΄μ—ˆλ‹€. μ„œλ²„λΆ€ν„° DBκΉŒμ§€ λͺ¨λ“  root 계정을 κ°€μ§€κ³  μžˆμ—ˆμ§€λ§Œ, κ·Έλ™μ•ˆ ν•œ 일은 λͺ¨λ‹ˆν„°λ§κ³Ό 쑰회 μ •λ„μ˜€μ§€ μ½”λ“œλ₯Ό μˆ˜μ •ν•΄ λ³Έ 적은 μ—†μ—ˆλ‹€. β€˜κΆŒν•œμ΄ μžˆλ‹€β€™μ™€ β€˜ν•  쀄 μ•ˆλ‹€β€™λŠ” μ „ν˜€ λ‹€λ₯Έ μ΄μ•ΌκΈ°μ˜€λ‹€.

κ·Έλž˜λ„ ν•œ 번 ν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€. ν΄λ‘œλ“œμ½”λ“œλ₯Ό λ―Ώκ³  κΉƒλž©μ— λ‘œκ·ΈμΈν–ˆλ‹€. 이 글은 κ·Έ μ΄ν‹€μ˜ 기둝이닀. λΉ„κ°œλ°œμžκ°€ 운영 μ„œλΉ„μŠ€μ˜ κΈ°λŠ₯을 μ‹€μ œλ‘œ λ°°ν¬ν•˜κΈ°κΉŒμ§€ μ–΄λ–€ 과정을 κ±°μ³€κ³ , μ–΄λ””μ„œ λ§‰ν˜”μœΌλ©°, κ·Έ κ²½ν—˜μ—μ„œ 무엇을 μ–»μ—ˆλŠ”μ§€λ₯Ό μ΅œλŒ€ν•œ μ†”μ§ν•˜κ²Œ μ •λ¦¬ν–ˆλ‹€. λ‚˜μ²˜λŸΌ AI둜 λ°”μ΄λΈŒμ½”λ”©μ— λ„μ „ν•˜λ €λŠ” λΉ„κ°œλ°œμž, 기획자, κ΄€λ¦¬μžμ—κ²Œ μž‘μ€ μ°Έκ³ κ°€ 되면 μ’‹κ² λ‹€.


순쑰둜운 좜발

coupon 폴더λ₯Ό μ°Ύμ•„μ„œ

λ‹€ν–‰νžˆ 이전에 μž‘μ„±ν•΄ λ‘” κΈ°λŠ₯λͺ…μ„Έκ°€ μžˆμ—ˆλ‹€. 처음 κ΅¬ν˜„ν•œ 게 2λ…„ μ „, 이후 λͺ‡ μ°¨λ‘€ κ°œμ„  μ‹œλ„κ°€ μžˆμ—ˆμ§€λ§Œ μ œλŒ€λ‘œ λ§ˆλ¬΄λ¦¬λ˜μ§€ μ•Šμ•˜λ˜ 기얡이 났닀. μ΅œμ‹  λ²„μ „μΈμ§€λŠ” μ•Œ 수 μ—†μ—ˆμ§€λ§Œ, κΈ°λŠ₯의 λŒ€λž΅μ μΈ ꡬ쑰λ₯Ό νŒŒμ•…ν•˜λŠ” λ°μ—λŠ” λ¬Έμ œκ°€ μ—†μ—ˆλ‹€. κΈ°λŠ₯을 κ°œμ„ ν•˜λ €λ©΄ 이 λ¬Έμ„œκ°€ μ§€κΈˆ μ½”λ“œμ™€ λ§žλŠ” λ‚΄μš©μΈμ§€λΆ€ν„° 확인해야 ν–ˆλ‹€.

κΉƒλž©μ— λ“€μ–΄κ°€ β€˜coupon’ 폴더λ₯Ό μ°Ύμ•˜λ‹€. ꡬ쑰λ₯Ό λœ―μ–΄λ³Έ 적이 μ—†μœΌλ‹ˆ, μ˜ˆμƒλ˜λŠ” 폴더λͺ…을 일일히 λˆŒλŸ¬κ°€λ©° μ°Ύμ•˜λ‹€. λ‹€ν–‰νžˆ ꡬ쑰가 μ•„μ£Ό κΉ”λ”ν•˜κ²Œ 잘 μ •λ¦¬λ˜μ–΄μžˆμ—ˆλ‹€!! μ–΄λ ΅μ§€ μ•Šκ²Œ μ°Ύμ•„μ„œ μ½”λ“œλ„ μ‘°νšŒν•΄λ³Ό 수 μžˆμ—ˆλ‹€. μ½”λ“œλ₯Ό κ·ΈλŒ€λ‘œ ν΄λ‘œλ“œμ— λ³΅λΆ™ν•΄μ„œ ν˜„μž¬ 개발 μƒνƒœλ₯Ό ν™•μΈν–ˆλ‹€. μš΄μ˜μžκ°€ μ›ν•˜λŠ”λŒ€λ‘œ 쿠폰λͺ…을 μ§€μ •ν•  수 있게 섀정이 λ˜μ–΄μžˆλ‹€λŠ” 점은 ν™•μΈν–ˆκ³ , λ‹€λ₯Έ κΈ°λŠ₯듀은 μˆ˜μ •/μ—…λ°μ΄νŠΈκ°€ ν•„μš”ν–ˆλ‹€. (μ—¬κΈ°μ„œ 일단 1차둜 속이 μ‹œμ›ν•΄μ‘Œλ‹€γ… )

그런데 κ·Έλ‹€μŒμ΄ λ¬Έμ œμ˜€λ‹€. 이걸 λ‹€μš΄λ‘œλ“œ λ°›μ•„μ„œ κ³ μΉ˜λŠ” 건가? μ–΄λ””μ„œ κ³ μΉ˜λŠ” κ±°μ§€? 정말 아무것도 λͺ°λžλ‹€. μ§€κΈˆ λ‹€μ‹œ μƒκ°ν•˜λ©΄ λ©μ²­ν•œ μ§ˆλ¬Έμ΄μ§€λ§Œ.. ν΄λ‘œλ“œμ—κ²Œ λ¬Όμ–΄λ΄€λ‹€.

image 2

λ‚΄κ°€ vscodeλ‚˜ cursorκ°€ μ•„λ‹ˆμ–΄λ„ λœλ‹€κ³  μ–˜κΈ°ν•΄μ„œ κ·ΈλŸ°μ§€, ν΄λ‘œλ“œκ°€ ν„°λ―Έλ„μ—μ„œ μž‘μ—…ν•˜λŠ” 방법을 μ•Œλ €μ€¬λ‹€. (λ‹€μŒλ²ˆμ— μž‘μ—…ν•˜λ©΄ 에디터λ₯Ό μ‚¬μš©ν•˜λŠ” 편이 λ‚«κ² λ‹€λŠ” 생각이긴 ν•˜λ‹€..) 폴더도 μ–΄λ–»κ²Œ λ‹€μš΄λ‘œλ“œ λ°›μ•„μ•Όν•˜λŠ” μ§€ λͺ°λΌμ„œ ν•˜λ‚˜ν•˜λ‚˜ 물어봐가며 μ§„ν–‰ν–ˆλ‹€.

ν΄λ‘œλ“œμ—κ²Œ 더 μžμ„Έν•˜κ²Œ μ„€λͺ…해달라고 ν•˜λ©΄ μ•„μ£Ό μžμ„Ένžˆ μ„€λͺ…ν•΄μ€€λ‹€. κ½€λ‚˜ μΉœμ ˆν•˜κ²Œ. λ‹€λ§Œ λŒ€λΆ€λΆ„ μ„œλΉ„μŠ€λ“€μ΄ κ³„μ†ν•΄μ„œ λ³€ν•˜κΈ° λ•Œλ¬Έμ—β€¦ ν΄λ‘œλ“œκ°€ μ„œλΉ„μŠ€ 화면을 100% μ„€λͺ…ν•˜μ§€λŠ” λͺ»ν•œλ‹€. λ²„νŠΌ μœ„μΉ˜κ°€ ν‹€λ¦¬κ±°λ‚˜ 이름이 살짝 틀릴 수 μžˆλ‹€. μ•Œμž˜λ”±κΉ”μ„ΌμœΌλ‘œ μ•Œμ•„λ“€μ–΄μ•Ό 함.

image 3

ν„°λ―Έλ„λ‘œ ν΄λ‘œλ“œμ½”λ“œμ— μ ‘μ†ν•˜κ³  λ‚œ μ΄ν›„μ—λŠ” ν„°λ―Έλ„μ—μ„œ 직접 클코와 λŒ€ν™”ν•˜λ©° μ§„ν–‰ν–ˆλ‹€.

μ§€κΈˆ 이 μƒνƒœμ—μ„œ 뭘 ν•΄μ•Ό ν•˜λŠ”μ§€, 이 μš©μ–΄λŠ” 무슨 λœ»μΈμ§€, ν•˜λ‚˜ν•˜λ‚˜ λ¬Όμ—ˆλ‹€. λͺ¨λ₯΄λ©΄ 물어보면 λœλ‹€λŠ” 게 이번 μž‘μ—… λ‚΄λ‚΄ ν†΅ν•œ μ›μΉ™μ΄μ—ˆλ‹€. ν΄λ‘œλ“œμ½”λ“œκ°€ ν˜„μž¬ μ½”λ“œλ₯Ό 읽고 ꡬ쑰λ₯Ό νŒŒμ•…ν•΄ 쀬고, μ΄λŸ¬μ €λŸ¬ν•˜κ²Œ 고쳐 달라고 ν•˜λ‹ˆ 고쳐 쀬닀. λ‚΄κ°€ μ½”λ“œλ₯Ό λͺ°λΌλ„, ν΄λ‘œλ“œκ°€ μ½”λ“œλ₯Ό 읽고 λ‚˜μ—κ²Œ ν•œκ΅­μ–΄λ‘œ μ„€λͺ…ν•΄ μ£ΌλŠ” κ΅¬μ‘°μ˜€λ‹€. 이 방식이 ν†΅ν•œλ‹€λŠ” κ±Έ 깨달은 μˆœκ°„, 막막함이 쑰금 μ€„μ—ˆλ‹€.

μ½”λ“œ μˆ˜μ • So Easy!! 무적의 ν΄λ‘œλ“œμ½”λ“œ

μ½”λ“œλ₯Ό β€˜μ§œλŠ”β€™ λ‹¨κ³„λŠ” λ†€λž„ 만큼 μˆ˜μ›”ν–ˆλ‹€. ν΄λ‘œλ“œμ½”λ“œμ—κ²Œ μ–΄λ–»κ²Œ λ°”κΎΈκ³  싢은지(To-be)λ₯Ό μ „λ‹¬ν–ˆλ”λ‹ˆ, ν˜„μž¬ μƒνƒœλ₯Ό ν™•μΈν•˜κ³ (As-is) μ΄λŸ¬μ €λŸ¬ν•˜κ²Œ λ°”κΎΈκ² λ‹€κ³  μ•Œλ €μ€¬λ‹€. λ‹€νšŒ μ‚¬μš©μ„ μœ„ν•œ ν•­λͺ©μ„ μΆ”κ°€ν•˜κ³ , μ‚¬μš© 횟수λ₯Ό μ„ΈλŠ” λ‘œμ§μ„ λ„£κ³ , 1인 1회 μ œν•œμ„ κ±°λŠ” μž‘μ—…κΉŒμ§€ μš”μ²­ν–ˆλ‹€.

ν΄λ‘œλ“œμ½”λ“œλ₯Ό μ‚¬μš©ν•  λ•Œ, λ˜λ„λ‘ μš”μ²­μ‚¬ν•­μ„ ꡬ체적으둜 미리 정리해두고 ν΄λ‘œλ“œμ½”λ“œμ—μ„œ μ‹€ν–‰ν•˜λŠ” νŽΈμ΄λ‹€. ν΄λ‘œλ“œμ½”λ“œμ—κ²Œ μˆ˜μ •μ‚¬ν•­μ„ μš”μ²­ν–ˆμ„ λ•Œμ— λ”°λ‘œ 확인받지 μ•Šκ³  λ°”λ‘œ μ½”λ“œμ— μˆ˜μ •ν•΄λ²„λ¦° 후에 μ•Œλ €μ£ΌλŠ” κ²½μš°λ“€μ΄ λ°œμƒν•¬λ‹€. μ–΄λ–€ κ²½μš°μ—λŠ” 이 방식이 λ„ˆλ¬΄ νŽΈν•˜κ³  μ’‹μ§€λ§Œ, μš”μ²­μ‚¬ν•­μ„ λ­”κ°€ λΉΌλ¨Ήμ—ˆκ±°λ‚˜ μˆ˜μ •μ΄ ν•„μš”ν•  λ•Œμ—λŠ” 전체 μ½”λ“œ μˆ˜μ •μ„ λ°˜λ³΅ν•΄μ•Ό ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ΄ 생긴닀. μ‹œκ°„λ„ μ‹œκ°„μ΄μ§€λ§Œ 토큰을 μ—„μ²­λ‚˜κ²Œ μž‘μ•„λ¨ΉλŠ”λ‹€. κ·Έλž˜μ„œ μš”μ²­μ‚¬ν•­μ„ 미리 ꡬ체적으둜 정리해두고, 이 μš”μ²­μ‚¬ν•­μ„ 클코에 μ „λ‹¬ν•˜λ©΄μ„œ β€˜λ°”λ‘œ μˆ˜μ •ν•˜μ§€ 말고 μˆ˜μ •λ°©ν–₯을 λ¨Όμ € μ•Œλ €λ‹¬λΌβ€™κ³  μš”μ²­ν•œλ‹€. κ·Έ λ‚΄μš©μ„ ν™•μΈν•˜λ‹€λ³΄λ©΄ λ­”κ°€ 빼먹은 것듀이 μƒκ°λ‚˜κΈ°λ„ ν•˜κ³ , μ•ˆν•΄λ„ 될 것듀이 μƒκ°λ‚˜κΈ°λ„ ν•œλ‹€. λ˜λ„λ‘ μˆ˜μ •ν•  λ‚΄μš©λ“€μ„ μ΄ν•΄ν•˜κ³ , μ–΄λ–€ νŒŒμΌλ“€μ„ κ±΄λ“œλ¦¬λŠ”μ§€ λŒ€λž΅ 확인을 ν•œ 후에 β€˜ν•΄λ„ λ˜κ² λ‹€β€™λΌλŠ” 생각이 λ“€λ©΄ μˆ˜μ •ν•˜λ„λ‘ ν•œλ‹€.

ν΄λ‘œλ“œμ½”λ“œκ°€ 쿠폰 μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λŠ” λ°μ—λŠ” 1뢄도 걸리지 μ•Šμ•˜λ‹€. κΈ°μ‘΄ DB에 code(μ§€μ • μ½”λ“œ), max_uses(μ΅œλŒ€ μ‚¬μš© 인원), used_count(ν˜„μž¬ μ‚¬μš© 횟수) 같은 ν•­λͺ©μ΄ λ”ν•΄μ‘Œλ‹€. 무슨 λœ»μΈμ§€ 물으면 κ·Έλ•Œκ·Έλ•Œ ν’€μ–΄ μ„€λͺ…ν•΄ 쀬기 λ•Œλ¬Έμ—, μ½”λ“œλ₯Ό 읽지 λͺ»ν•΄λ„ β€˜μ§€κΈˆ 뭘 λ°”κΎΈκ³  μžˆλŠ”μ§€β€™λŠ” λ”°λΌκ°ˆ 수 μžˆμ—ˆλ‹€. (λ‚΄κ°€ DB에 λŒ€ν•œ 이해가 μžˆμ–΄μ„œ μ’€ 더 μˆ˜μ›”ν–ˆμ„μ§€λ„ λͺ¨λ₯΄κ² λ‹€.)

μ—¬κΈ°κΉŒμ§€λŠ” λ‚˜λ¦„ μˆœμ‘°λ‘œμ› λ‹€. λ°”μ΄λΈŒμ½”λ”©μ„ ν•˜λ©΄μ„œ λ‚˜μ—κ²Œ κ°€μž₯ μ–΄λ €μš΄ 뢀뢄듀이 λ‚¨μ•„μžˆμ—ˆλ‹€.

image 4

μ‹œμž‘λ§Œ μ‰¬μ› μŒ;

첫 번째 ν—ˆλ“€: ν•˜λΌλŠ” λŒ€λ‘œ ν–ˆλŠ”λ° μ›¨μ•ŠλΌ

β€œλ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ ν•„μš”ν•΄μš”.” ν΄λ‘œλ“œκ°€ λ§ν–ˆλ‹€. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, κ°œλ°œμžλ“€μ΄ ν•΄μ•Όλœλ‹€κ³  ν•˜λŠ” κ±Έ λ“€μ–΄λŠ” λ΄€λŠ”λ° μ •ν™•ν•˜κ²Œ λ­”μ§€λŠ” λͺ°λžλ‹€. (λ‚΄κ°€ 직접 ν•˜κ²Œ 될 쀄은 더 λͺ°λžλ‹€.) ν΄λ‘œλ“œμ˜ 지침을 반쯀 μ΄ν•΄ν•œ μƒνƒœλ‘œ, 일단 ν•˜λΌλŠ” λŒ€λ‘œ μ°©μ‹€νžˆ λ”°λΌν–ˆλ‹€. 그런데 막상 ν•΄λ³΄λ‹ˆ μ—λŸ¬κ°€ 났닀.

였λ₯˜ λ‚΄μš©μ„ κ·ΈλŒ€λ‘œ λ³΅λΆ™ν•΄μ„œ μ•Œλ €μ€¬λ”λ‹ˆ ν΄λ‘œλ“œκ°€ 원인을 짚고 λŒ€μ•ˆμ„ μ œμ‹œν•΄ 쀬닀. ν•˜μ§€λ§Œ 계속 였λ₯˜κ°€ λ‚˜λŠ” 것이 μ•„λ‹Œκ°€? β€˜λ¬Έμ œλ₯Ό μ •ν™•νžˆ νŒŒμ•…ν–ˆμ–΄μš”β€™, β€˜μ΄μ œ 원인이 λͺ…ν™•ν•΄μš”!’라고 ν•˜λ©΄μ„œ κ·ΈλŒ€λ‘œ μ‹œλ„ν•˜λ©΄ 또 μ—λŸ¬κ°€ 났닀. 점점 μΈλ‚΄μ‹¬μ˜ ν•œκ³„μ— λ‹€λ‹€λ₯΄κ³  μžˆμ—ˆλ‹€. ν΄λ‘œλ“œλŠ” 계속 해결책을 내놓고 μžˆμ—ˆλŠ”λ°, 어쩐지 문제λ₯Ό κ²‰λŒκ³  μžˆλŠ” 것 κ°™μ•˜λ‹€. β€˜μ΄ 방법이 λ§žλŠ” 건지, 계속 따라가도 λ˜λŠ” 건지’ μ˜κ΅¬μ‹¬μ΄ μŠ€λ©€μŠ€λ©€ μ˜¬λΌμ™”λ‹€. 였λ₯˜μ½”λ“œλ§Œ 전달할 것이 μ•„λ‹ˆλΌ 근본적인 λ­”κ°€λ₯Ό ν•΄κ²°ν•΄μ•Ό ν•œλ‹€λŠ” λŠλ‚Œμ„ λ°›μ•˜λ‹€.

image 5

ν΄λ‘œλ“œμ—κ²Œ 였λ₯˜λ³΄κ³ λ₯Ό λ©ˆμΆ”κ³ , λŒ€μ‹  상황을 μžμ„Ένžˆ μ „λ‹¬ν–ˆλ‹€. β€˜μ•„λ§ˆλ„ λ„ˆκ°€ μ œμ•ˆν•œ μˆ˜μ •κ³Ό μƒˆλ‘œμš΄ 섀정듀이 없어도 될 κ±°μ•Ό.. μ™œλƒν•˜λ©΄ 이미 κ°œλ°œμžλ“€μ΄ μ‚¬μš©ν–ˆμ—ˆκ³  μ‚¬μš©ν•˜κ³  μžˆκ±°λ“ . λ‚΄κ°€ 처음이라 λ¬Έμ œμΈκ±°μ•Όβ€¦β€™ 라고 μ΄μ•ΌκΈ°ν•˜λ©° ν˜Ήμ‹œλ‚˜ μ°Έκ³ κ°€ 될까 ꡬ쑰도λ₯Ό μ „λ‹¬ν–ˆλ‹€. 운이 μ’‹κ²Œλ„ ν˜Ήμ‹œλ‚˜ ν•˜λŠ” 마음으둜 μ „λ‹¬ν•œ 것이 μ—΄μ‡ κ°€ λ˜μ—ˆλ‹€.

ν΄λ‘œλ“œκ°€ ν‹€λ¦° 건 μ•„λ‹ˆμ—ˆλ‹€. ν΄λ‘œλ“œκ°€ λͺ¨λ“  ꡬ쑰λ₯Ό κΏ°κ³  μžˆμ§€ μ•ŠμœΌλ‹ˆ, prisma(λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 도ꡬ)κ°€ 같은 폴더에 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  μ—‰λš±ν•œ 해결책듀을 μ „λ‹¬ν•˜κ³  μžˆμ—ˆλ˜ 것이 λ¬Έμ œμ˜€λ‹€. (ν΄λ‘œλ“œκ°€ μ•Œκ³  μžˆλŠ” 것이 일반적인 방법인데, 우리 ν”„λ‘œμ νŠΈμ—μ„œ μ’€ λ‹€λ₯΄κ²Œ μ„ΈνŒ…μ΄ λ˜μ–΄μžˆμ—ˆλ˜ 것 κ°™λ‹€) ν΄λ‘œλ“œλŠ” κ·Έκ±Έ μ•Œ 방법이 μ—†μ—ˆκ³ , λ‚˜λ„ λ¬Όλ‘  λͺ°λžλ‹€. κ·ΈλŸ¬λ‹ˆ λ‚΄κ°€ λ„£λŠ” λͺ…령은 계속 λΉ—λ‚˜κ°”λ˜ 것이닀.

μ •ν™•ν•œ 원인을 νŒŒμ•…ν•˜μž, 30λΆ„ λ„˜κ²Œ μ”¨λ¦„ν•˜λ˜ 것이 단 λ²ˆμ— ν•΄κ²°λ˜μ—ˆλ‹€. 기쑴에 μš΄μ˜ν•˜λ˜ ꡬ쑰와 κ·œμΉ™μ„ μ–΄λŠ 정도 νŒŒμ•…ν•˜κ³  μžˆμ–΄μ•Ό 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œμ— 더 λΉ λ₯΄κ²Œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€λŠ” 점을 λ‹€μ‹œ ν•œ 번 λŠκΌˆλ‹€.

두 번째 ν—ˆλ“€: λΉ„κ°œλ°œμžμ—κ²ŒλŠ” 배포가 항상 μ–΄λ €μ›Œ

λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ΄ ν†΅κ³Όν–ˆλ‹€κ³  끝이 μ•„λ‹ˆμ—ˆλ‹€. 바뀐 DB ꡬ쑰λ₯Ό μ½”λ“œκ°€ μ‹€μ œλ‘œ μΈμ‹ν•˜κ²Œ ν•˜λ €λ©΄ β€˜ν΄λΌμ΄μ–ΈνŠΈβ€™λΌλŠ” κ±Έ λ‹€μ‹œ 생성해야 ν–ˆκ³ , κ·Έλ‹€μŒ λ°±μ—”λ“œ ν”„λ‘œκ·Έλž¨μ„ μž¬μ‹œμž‘ν•΄μ•Ό ν–ˆλ‹€. μž¬μ‹œμž‘ λ’€μ—λŠ” 둜그λ₯Ό λ„μ›Œ β€˜database connected’, β€˜Listening on’ 같은 쀄이 μ œλŒ€λ‘œ μ°νžˆλŠ”μ§€ 눈으둜 ν™•μΈν–ˆλ‹€. λͺ¨λ“  μ½”λ“œλ₯Ό 이해할 ν•„μš”λŠ” μ—†λ‹€. β€˜connected’ 같은 μ£Όμš” λ‹¨μ–΄λ“€λ§Œ λ³΄κ±°λ‚˜, 빨간글씨가 λ‚˜μ˜€λŠ”μ§€ μ•ˆλ‚˜μ˜€λŠ”μ§€λ§Œ 봐도 이게 된 건지 μ•ˆ 된 건지 λŒ€λž΅ μ•Œ 수 μžˆλ‹€.(λ¬Όλ‘  μ™„μ „ν•˜μ§€ μ•Šμ§€λ§Œ)

λΉ„κ°œλ°œμžκ°€ λŠλΌκΈ°μ— μ½”λ“œ 자체λ₯Ό μˆ˜μ •ν•˜λŠ” 것 보닀 μˆ˜μ •ν•œ λ‚΄μš©μ„ λ°°ν¬ν•˜λŠ” 것이 제일 μ–΄λ ΅λ‹€. κ°€μž₯ 많이 였λ₯˜κ°€ λ‚˜λŠ” 뢀뢄도 Gitκ³Ό κ΄€λ ¨ν•œ 뢀뢄인 것 κ°™λ‹€. μ–Έμ œμ―€ ν΄λ‘œλ“œν•œν…Œ 물어보지 μ•Šκ³  git pushλ₯Ό ν•  수 μžˆμ„μ§€.. 그런 날이 올까?

μ„Έ 번째 ν—ˆλ“€: μ½”λ“œμ—λ„ μ—†κ³  κΉƒλž©μ—λ„ μ—†λŠ” 파일

λ°°ν¬κΉŒμ§€ 끝내고 β€œμ΄μ œ 됐닀” μ‹Άμ–΄ ν…ŒμŠ€νŠΈμ— λ“€μ–΄κ°”λ‹€. 쿠폰을 ν•˜λ‚˜ λ§Œλ“€μ–΄ νœ΄λŒ€ν°μœΌλ‘œ 등둝을 μ‹œλ„ν–ˆλŠ”λ°, β€œOops!” μ—λŸ¬ λͺ¨λ‹¬μ΄ λ–΄λ‹€. 쿠폰 생성이 잘λͺ»λœ 건지, 쿠폰 μƒνƒœλ₯Ό ν™•μΈν–ˆμ§€λ§Œ 쿠폰은 μ •μƒμ μœΌλ‘œ 등둝이 λ˜μ–΄μžˆμ—ˆλ‹€.

ν΄λ‘œλ“œμ—κ²Œ 였λ₯˜λ₯Ό μ „λ‹¬ν•˜λ‹ˆ β€˜μ„œλ²„ λ‘œκ·Έβ€™λ₯Ό 봐야 ν•œλ‹€κ³  ν–ˆλ‹€. 둜그λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ λ„μ›Œ 놓고 λ‹€μ‹œ 등둝을 μ‹œλ„ν–ˆλ‹€. νŠΉμ • JSON 파일이 μ—†μ–΄μ„œ λ‚˜λŠ” 500μ—λŸ¬μ˜€λ‹€.

이 νŒŒμΌμ€ 쿠폰 등둝 μ‹€νŒ¨ 횟수λ₯Ό κΈ°λ‘ν•˜λŠ” β€˜λŸ°νƒ€μž„ 데이터 νŒŒμΌβ€™μ΄μ—ˆλ‹€. 그런데 이 νŒŒμΌμ€ μ˜λ„μ μœΌλ‘œ κΉƒ(git)μ—μ„œ μ œμ™ΈλΌ μžˆμ—ˆλ‹€. μ½”λ“œ 이λ ₯을 λ³΄λ‹ˆ 과거에 β€œjson db 파일 μ‚­μ œ, gitignore μΆ”κ°€β€λΌλŠ” 흔적이 μžˆμ—ˆλ‹€. 즉 μ½”λ“œλ₯Ό 아무리 내렀받아도 이 νŒŒμΌμ€ λ”°λΌμ˜€μ§€ μ•Šκ³ , μ„œλ²„μ— 직접 λ§Œλ“€μ–΄ μ€˜μ•Ό ν•˜λŠ”λ° ν…ŒμŠ€νŠΈ μ„œλ²„μ—” 그게 μ—†μ—ˆλ˜ 것이닀.

빈 νŒŒμΌμ„ ν•˜λ‚˜ λ§Œλ“€μ–΄ 주자 μ—λŸ¬κ°€ μ‚¬λΌμ‘Œκ³ , κ·Έμ œμ•Ό 쿠폰 등둝 λͺ¨λ‹¬μ΄ μ •μƒμ μœΌλ‘œ λ–΄λ‹€. 이 였λ₯˜λ„ ν΄λ‘œλ“œκ°€ μ½”λ“œλ₯Ό 아무리 잘 읽어도 사전에 μ•Œ 수 μ—†λŠ” μ’…λ₯˜μ˜ λ¬Έμ œμ˜€λ‹€. β€˜μ΄ νŒŒμΌμ€ μ½”λ“œμ— μ—†μ§€λ§Œ μ„œλ²„μ—λŠ” μžˆμ–΄μ•Ό ν•œλ‹€β€™λŠ” 건 μ½”λ“œκ°€ μ•„λ‹ˆλΌ 우리 νŒ€μ˜ 운영 κ·œμΉ™μ΄μ—ˆλ˜ 것이닀.

감격의 ν…ŒμŠ€νŠΈ 배포 μ™„λ£Œ, κ·Έ ν›„ κ°€μž₯ λ¨Όμ € ν•œ 일은

QAλŠ” λˆ„κ΅¬λ³΄λ‹€ λΉ λ₯΄κ²Œ, κ²€μ¦κΉŒμ§€ μ±™κ²¨μ£ΌλŠ” ν΄λ‘œλ“œ

κ·Έλ ‡κ²Œ μ‹œν–‰μ°©μ˜€ 끝에 ν…ŒμŠ€νŠΈ μ„œλ²„ 배포에 μ„±κ³΅ν–ˆλ‹€. 이제 κΈ°λŠ₯이 μ˜λ„λŒ€λ‘œ λ™μž‘ν•˜λŠ”μ§€ 검증할 μ°¨λ‘€μ˜€λ‹€. ν…ŒμŠ€νŠΈ DB에 β€˜μ΅œλŒ€ 3λͺ…κΉŒμ§€β€™ μ“Έ 수 μžˆλŠ” 쿠폰을 ν•˜λ‚˜ λ§Œλ“€κ³ , νŒ€μ›λ“€μ—κ²Œ 쿠폰 등둝 ν…ŒμŠ€νŠΈλ₯Ό μš”μ²­ν–ˆλ‹€. μ—¬λŸ¬ λͺ…이 같은 μ½”λ“œλ₯Ό μ„ μ°©μˆœμœΌλ‘œ μ“°κ³ , μ •ν•΄μ§„ μΈμ›μ—μ„œ 마감되고, ν•œ μ‚¬λžŒμ€ ν•œ 번만 μ“Έ 수 μžˆλŠ” β€” μ›ν•˜λ˜ λ™μž‘μ΄ λͺ¨λ‘ 확인됐닀.

image 6

μ§„μ§œ 이걸 λ‚΄κ°€ ν–ˆλ‹€κ³ ? 말 κ·ΈλŒ€λ‘œ κ°κ²©μ΄μ—ˆλ‹€. 개발 일정 λ•Œλ¬Έμ— λͺ» ν•  λ»”ν–ˆλ˜ ν”„λ‘œλͺ¨μ…˜λ„ λ°”λ‘œ μ§„ν–‰ν•  수 있게 됐닀.

λ³Έμ„œλ²„ μ—…λ‘œλ“œλŠ” κ°œλ°œμžμ—κ²Œ 맑기기둜 ν–ˆλ‹€. 사고 λ°œμƒ μ‹œ λ‚΄κ°€ μˆ˜μŠ΅ν•  수 μ—†μ„ν…Œλ‹ˆβ€¦

⭐까먹기 전에 κΈ°λ‘ν•˜κΈ°(μ€‘μš”)

배포가 λλ‚˜μžλ§ˆμž κΈ°λŠ₯λͺ…μ„Έλ₯Ό μ΅œμ‹  λ‚΄μš©μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜κ³ , μ΄λ²ˆμ— κ²ͺ은 μ‹œν–‰μ°©μ˜€μ™€ μ£Όμ˜ν•  점을 λ”°λ‘œ μ •λ¦¬ν–ˆλ‹€. 우리 νŒ€μ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 방식, λ§‰ν˜”λ˜ 지점, ν•΄κ²° λ°©λ²•κΉŒμ§€. λŒ€ν™” λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ ν΄λ‘œλ“œκ°€ 정리해 μ€€ λ‚΄μš©μ„ κ²€ν† ν•˜κ³ , λΆ€μ‘±ν•΄ λ³΄μ΄λŠ” 뢀뢄은 μ’€ 더 μžμ„Έν•˜κ²Œ λ‚΄μš©μ„ μ±„μ›Œλ‹¬λΌκ³  ν–ˆλ‹€.

μ½”λ“œμ— μ΅μˆ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λΆ„λͺ…νžˆ λ‹€μŒ λ²ˆμ— κΈ°μ–΅ν•˜μ§€ λͺ»ν•  것이라 μƒκ°ν•˜κ³ β€¦ κΈ°λŠ₯ 검증에 ν•„μš”ν•œ μ£Όμš”ν•œ μ½”λ“œλ“€μ€ μ˜ˆμ‹œλ₯Ό 써두고, ν…Œμ΄λΈ”μ˜ μ£Όμš” μ»¬λŸΌλ“€μ— λŒ€ν•œ μ„€λͺ…도 μΆ”κ°€ν–ˆλ‹€. 무엇보닀 μ΄λ²ˆμ— λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κ³Όμ •μ΄λ‚˜ λ°°ν¬μ—μ„œ κ²ͺμ—ˆλ˜ 였λ₯˜λ“€κ³Ό μ‹œν–‰μ°©μ˜€, 해결방법을 κΌΌκΌΌν•˜κ²Œ μ •λ¦¬ν–ˆλ‹€.

λ‹€μŒμ— 또 μž‘μ—…ν•  일이 생기면 ν΄λ‘œλ“œμ—κ²Œ 이 λ…Έμ…˜ νŽ˜μ΄μ§€λΆ€ν„° 읽힐 생각이닀.


μ–΄μ©Œλ©΄ μ½”λ”© μ‹€λ ₯보닀 μ€‘μš”ν•œ 것은

AI와 λ‚˜μ˜ μ—­ν• λΆ„λ‹΄: SSκΈ‰ 코더와 μΌν•˜κΈ°

였λ₯˜κ°€ λ°œμƒν•œ λŒ€λΆ€λΆ„μ˜ 원인은 μ½”λ“œ μžμ²΄κ°€ μ•„λ‹ˆμ—ˆλ‹€. νŒ€μ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 방식, 도ꡬ μ„€μΉ˜ μœ„μΉ˜, 운영용 μ„œλ²„ μ„€μ •, κΉƒμ—μ„œ μ œμ™Έλœ λŸ°νƒ€μž„ 파일 같은 μ‹œμŠ€ν…œμ˜ κ·œμΉ™λ“€μ„ λͺ°λΌμ„œ λ°œμƒν•œ λ¬Έμ œλ“€μ΄μ—ˆλ‹€.

ν΄λ‘œλ“œμ½”λ“œκ°€ SSκΈ‰ 코더라면, λ‚΄κ°€ ν•΄μ•Όν•  일은 SSκΈ‰ 코더λ₯Ό 잘 ν™œμš©ν•˜λŠ” μ—­λŸ‰μ„ ν‚€μš°λŠ” 것이 μ•„λ‹κΉŒ ν•˜λŠ” 생각이 λ“€μ—ˆλ‹€. μš©λ³‘μ„ νˆ¬μž…ν•˜λŠ” κ°λ…μ²˜λŸΌ. μš©λ³‘μ΄ μž˜ν•˜λŠ” 일을 μš©λ³‘λ³΄λ‹€ 더 μž˜ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ‹œμŠ€ν…œμ— λŒ€ν•œ 이해도λ₯Ό λ†’μ—¬μ„œ μ œλŒ€λ‘œ μ§€μ‹œν•  수 μžˆλ„λ‘ ν•΄μ•Όκ² λ‹€.

AIμ—κ²Œλ„ λ§₯락을 κ³΅μœ ν•΄μ€˜μ•Ό ν•œλ‹€

μš”κ΅¬μ‚¬ν•­μ„ λͺ…ν™•ν•˜κ²Œ ν•˜λŠ” 것도 μ€‘μš”ν•˜μ§€λ§Œ, μ™œ μ΄λ ‡κ²Œ μš”μ²­ν•˜λŠ”μ§€μ— λŒ€ν•œ λ§₯락을 μ œκ³΅ν–ˆμ„ λ•Œ 더 쒋은 닡변이 λ‚˜μ™”λ‹€. 특히 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œμ— 원인을 μ°Ύκ±°λ‚˜ ν•΄κ²°λ°©μ•ˆμ„ μ œμ‹œν•  λ•Œμ—, 기쑴에 μ œκ³΅ν•œ β€˜λ§₯락’이 영ν–₯을 λ―ΈμΉ˜λŠ” 것 κ°™μ•„.

λ¬Όλ‘  λ¬Έμ œλ„ μžˆλ‹€. λͺ¨λ“  문제의 원인을 κ±°κΈ°μ„œ 찾으렀고 ν•˜κΈ°λ„ ν•œλ‹€λŠ”β€¦. λ„ˆλ¬΄ λ§Žμ€ 정보λ₯Ό μ€˜λ„ 문제일까. 이 뢀뢄은 μ‹œν–‰μ°©μ˜€λ₯Ό μ’€ 더 κ²ͺ으며 졜적의 방법을 μ°Ύμ•„κ°€λŠ” 쀑이닀.

κ²°κ΅­ PM이 ν•˜λ˜ 일과 λΉ„μŠ·ν•˜λ‹€

μˆ˜λ§Žμ€ μ—λŸ¬ μ•žμ—μ„œ ν¬κΈ°ν•˜μ§€ μ•Šκ³  λκΉŒμ§€ κ°€λŠ” 것. μ§ˆλ¬Έμ„ μ’ν˜€κ°€λ©° 문제λ₯Ό νŒŒμ•…ν•˜κ³  원인을 μ°ΎλŠ” 것. 리슀크λ₯Ό κ΄€λ¦¬ν•˜κ³  λ‚΄μš©μ„ μ •λ¦¬ν•˜λŠ” 것. κ²°κ΅­μ—λŠ” β€˜μΌμ΄ κ΅΄λŸ¬κ°€κ²Œ λ§Œλ“œλŠ”β€™ 것. λ°”μ΄λΈŒμ½”λ”©μ€ μ–΄μ©Œλ©΄ κΈ°νšμžκ°€ 더 잘 ν•  수 μžˆλŠ” 일일지도 λͺ¨λ₯΄κ² λ‹€.

μ•ˆ 되면? 되게 ν•˜λ©΄ λœλ‹€!