κ°œλ°œκ΄€λ ¨

[회고] SSAFY 곡톡 ν”„λ‘œμ νŠΈ - Street Coding Fighter

SunYerim 2024. 8. 31. 15:26

πŸ₯ˆ SSAFY 2ν•™κΈ° 첫 ν”„λ‘œμ νŠΈ (곡톡 ν”„λ‘œμ νŠΈ) μš°μˆ˜μƒ μˆ˜μƒ

첫 ν”„λ‘œμ νŠΈλ₯Ό 마치고 νšŒκ³ ν•˜λŠ” κΈ€λ‘œ κ²½ν—˜ν•œ 것과 λŠλ‚€μ μ„ 자유둭게 μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€ :)

ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” 2024λ…„ 7μ›” 8일 - 2024λ…„ 8μ›” 16일 총 6μ£Όλ™μ•ˆ μ§„ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ„€λͺ…

ν”„λ‘œκ·Έλž˜λ°μ„ κ²Œμž„μ²˜λŸΌ μ¦κΈ°λŠ”, μ‹€μ‹œκ°„ μ°Έμ—¬ν˜• ν•™μŠ΅ ν”Œλž«νΌ 'Street Coding Fighter(μŠ€μ½”νŒŒ)'

μ•„λž˜λŠ” ν”„λ‘œμ νŠΈ κ°œμš”μž…λ‹ˆλ‹€.

2017λ…„ ꡐ윑 κ³Όμ • κ°œμ •μœΌλ‘œ 인해 ν˜„μž¬ 고등학생듀은 ν”„λ‘œκ·Έλž˜λ° κ΅μœ‘μ„ 의무적으둜 λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 2025λ…„λΆ€ν„°λŠ” μ΄ˆλ“±ν•™μƒκ³Ό 쀑학생도 ν”„λ‘œκ·Έλž˜λ°μ„ 의무적으둜 배우게 λ©λ‹ˆλ‹€.

μ €ν¬λŠ” 경남 μ–‘μ‚°μ˜ ν•œ 고등학ꡐ 학생듀을 λ§Œλ‚˜ 이야기λ₯Ό λ“€μ–΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

인터뷰 κ²°κ³Ό 학생듀은 코딩이 μ€‘μš”ν•˜λ‹€λŠ” 것을 μ•Œμ§€λ§Œ, 학ꡐ μˆ˜μ—…μ΄ 이둠 μ€‘μ‹¬μœΌλ‘œ μ§„ν–‰λ˜μ–΄ μ§€λ£¨ν•˜κ³  μž¬λ―Έκ°€ μ—†λ‹€κ³  λ§ν–ˆμŠ΅λ‹ˆλ‹€. 특히 학생듀은 μ½”λ”©μ˜ μ€‘μš”μ„±μ„ μΈμ§€ν•˜κ³  μžˆμ§€λ§Œ, 이둠 μ€‘μ‹¬μ˜ μˆ˜μ—…κ³Ό 배운 λ‚΄μš©μ„ λ‹¨μˆœ ν•™μŠ΅μ§€μ— λ‹΅μ•ˆμ„ μ±„μš°λŠ” λ°©μ‹μ˜ μˆ˜μ—…μ— ν₯λ―Έλ₯Ό μžƒκ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, μ €ν¬λŠ” μ–΄λ–»κ²Œ ν•˜λ©΄ 학생듀이 코딩을 재미있게 배우고 더 효과적으둜 ν•™μŠ΅ν•  수 μžˆμ„μ§€ κ³ λ―Όν•˜μ—¬ 코딩을 κ²Œμž„μ²˜λŸΌ 즐길 수 μžˆλŠ” μ‹€μ‹œκ°„ μ°Έμ—¬ν˜• ν•™μŠ΅ ν”Œλž«νΌ, '슀트릿 μ½”λ”© νŒŒμ΄ν„°'λ₯Ό μ œμž‘ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

μ„œλΉ„μŠ€μ˜ κΈ°λŠ₯κ³Ό 기술 μŠ€νƒ 등은 μ•„λž˜ κΉƒν—ˆλΈŒ λ ˆν¬μ§€ν† λ¦¬ λ¦¬λ“œλ―Έλ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš” :)

 

https://github.com/SunYerim/Street-Coding-Fighter

 


ν”„λ‘œμ νŠΈ μ§„ν–‰ν•˜λ©°

1. νŒ€ λΉŒλ”©

μ €ν¬λŠ” 본인 포함 μ „κ³΅μž 3λͺ…κ³Ό λΉ„μ „κ³΅μž 3λͺ…μœΌλ‘œ νŒ€μ΄ κ΅¬μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ „κ³΅μž λΆ„λ“€κ³ΌλŠ” 1ν•™κΈ°λ•Œ 같은 λ°˜μ΄μ—ˆκΈ°μ— μΉœν–ˆμ—ˆκ³ , λΉ„μ „κ³΅μžλΆ„ 쀑 ν•œ λΆ„κ³Ό μ˜€λ©°κ°€λ©° μΈμ‚¬λŠ” ν•˜κ³  μ§€λƒˆμ—ˆμŠ΅λ‹ˆλ‹€. 반이 λ°°μ •λœ ν›„ λΉ λ₯΄κ²Œ νŒ€ λΉŒλ”©μ„ ν•΄μ•Ό μ’‹λ‹€λŠ” 이야기λ₯Ό 듀어왔기에, μ œκ°€ λ‚˜μ„œμ„œ νŒ€μ„ κΎΈλ ΈμŠ΅λ‹ˆλ‹€. λΉ„μ „κ³΅μžλΆ„λ“€κ³Ό ν•¨κ»˜ 첫 ν˜‘μ—…μ΄λ‹€λ³΄λ‹ˆ κΈ°λŒ€κ°€ 많이 λ˜μ—ˆκ³ , μ–΄λ–€ 뢄듀인지 잘 λͺ°λžκΈ°μ— μ„€λ ˜ 반, κ±±μ • 반 .. μ΄μ—ˆμŠ΅λ‹ˆλ‹€!

κ·Έλ ‡μ§€λ§Œ, νŒ€μ›λ“€μ˜ μžκΈ°μ†Œκ°œλ₯Ό 보며 'λ‹€λ“€ 열정이 λ„˜μΉ˜μ‹œλŠ” 뢄듀이신 것 κ°™λ‹€'λΌλŠ” 생각이 λ“€μ–΄ ν”„λ‘œμ νŠΈκ°€ κΈ°λŒ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€ πŸ˜„

 

2. κ°€ν™”λ§Œμ‚¬μ„±νŒ€μ˜ 'κ·ΈλΌμš΄λ“œ λ£°'

λ§ˆμΈλ“œμ…‹

  • 학무지경
  • λͺ¨λ₯΄λŠ” 것 μΈμ •ν•˜κΈ°
  • μƒλŒ€κ°€ λͺ¨λ₯Ό 것이라고 μ „μ œν•˜μ§€ μ•ŠκΈ°
  • λˆˆμΉ˜λ³΄μ§€ μ•ŠκΈ°

κ·ΈλΌμš΄λ“œλ£°

  • 맀일 마치기 30λΆ„ μ „ 개인 회고 진행
  • μ˜μ–΄μ΄λ¦„ λΆ€λ₯΄κΈ°
  • νšŒμ˜μ‹œ μΈν˜•μ„ λ“€κ³  μ΄μ•ΌκΈ°ν•˜κΈ°
  • μ•„μΉ¨ μΈμ‚¬λŠ” 무쑰건 μ˜μ–΄μ΄λ¦„μœΌλ‘œ ν•˜κΈ°

등이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ €λŠ” μ—¬κΈ°μ„œ 'λͺ¨λ₯΄λŠ” 것 μΈμ •ν•˜κΈ°', 'μƒλŒ€κ°€ λͺ¨λ₯Ό 것이라고 μ „μ œν•˜μ§€ μ•ŠκΈ°' 이 두 뢀뢄이 특히 μ’‹μ•˜μŠ΅λ‹ˆλ‹€.

이전에 ν”„λ‘œμ νŠΈ κ²½ν—˜μ€ μ–΄λŠμ •λ„ μžˆμ—ˆμœΌλ‚˜, λ°±μ—”λ“œ 개발 파트λ₯Ό 맑아 μ œλŒ€λ‘œ ν•΄λ³΄λŠ” ν”„λ‘œμ νŠΈλŠ” μ²˜μŒμ΄μ—ˆκΈ°μ—, ν—·κ°ˆλ¦¬λŠ” λΆ€λΆ„μ΄λ‚˜ 처음 μ ‘ν•˜λŠ” κΈ°μˆ λ„ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이 뢀뢄에 λŒ€ν•œ λŠλ‚€μ μ€ 후에 μ–ΈκΈ‰ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€ γ…Žγ…Ž

 

3. ν”„λ‘œμ νŠΈ 섀계

μš°μ„ , μ €ν¬νŒ€μ€ 흐름도, 화면섀계, ERD 섀계 λ“± λͺ¨λ“  섀계λ₯Ό 6λͺ… λ‹€ ν•¨κ»˜ μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 사싀 이전에 ν•™κ΅μ—μ„œ ν–ˆλ˜ ν”„λ‘œμ νŠΈλ“€ λͺ¨λ‘ μ›¬λ§Œν•˜λ©΄ ν”„λ‘ νŠΈμ—”λ“œ, λ°±μ—”λ“œ λͺ¨λ‘ λ‹€ ν•¨κ»˜ μ„€κ³„ν•˜κΈ°λ„ ν–ˆμ–΄μ„œ λ‚―μ„€μ§€λŠ” μ•Šμ•˜μŠ΅λ‹ˆλ‹€. κ·Έλ ‡μ§€λ§Œ, μ΄μ •λ„λ‘œ λͺ¨λ“  것을 닀같이 ν•΄λ³Έ 건 처음이라 '개발 μ‹œκ°„μ΄ 뢀쑱해지지 μ•Šμ„κΉŒ?'λΌλŠ” 생각이 λ“€κΈ΄ν–ˆλŠ”λ°, 결과적으둠 그렇지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€!!

섀계에 μ‹œκ°„μ„ 많이 λ“€μΈλ§ŒνΌ, 6λͺ… λͺ¨λ‘μ˜ 생각이 같은 λ°©ν–₯으둜 μ •λ¦½λ˜μ—ˆκ³ , 개발 속도도 λΉ¨λžμŠ΅λ‹ˆλ‹€. 무엇보닀 μ†Œν†΅μ΄ μ›ν™œν–ˆκΈ°μ— λͺ¨λ“  과정이 크게 λ§‰νž˜μ—†μ΄ μ§„ν–‰λ˜μ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€.

νŒ€μ›λ“€κ³Ό ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ 같은 생각을 가지고 μžˆλ‹€λŠ” 것 μžμ²΄κ°€ λ“ λ“ ν–ˆκ³ , '쀑간에 μ–΄λ– ν•œ 어렀움이 생기더라도 이 μ‚¬λžŒλ“€κ³Ό ν•¨κ»˜λΌλ©΄ 무쑰건 ν—€μ³λ‚˜κ°ˆ 수 μžˆκ² λ‹€!'λΌλŠ” 확신이 μƒκ²Όμ—ˆμŠ΅λ‹ˆλ‹€.

 

4. ν”„λ‘œμ νŠΈ 개발

μ €λŠ” 이번 ν”„λ‘œμ νŠΈμ—μ„œ "νšŒμ›κ΄€λ¦¬, ν”„λ‘œν•„ 관리, νŠœν† λ¦¬μ–Ό λͺ¨λ“œ" κ°œλ°œμ„ 도맑아 ν–ˆμŠ΅λ‹ˆλ‹€. μœ„μ—μ„œλ„ μ–ΈκΈ‰ν–ˆμ§€λ§Œ, μ €λŠ” λ°±μ—”λ“œ κ°œλ°œκ²½ν—˜μ΄ ν’λΆ€ν•˜μ§€ μ•Šμ•˜κΈ°μ—, Spring security μ‚¬μš©μ΄ μ²˜μŒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡μ§€λ§Œ, ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ„ ν–ˆμ—ˆκΈ°μ— 흐름은 μ•Œκ³ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μ €ν¬λŠ” λ°±μ—”λ“œ νŒ€μ›λΌλ¦¬ mrλ§ˆλ‹€ μ½”λ“œλ¦¬λ·°λ₯Ό μ§„ν–‰ν–ˆμ—ˆλŠ”λ°, 첫 mr을 λ‚ λ Έμ„λ•Œ 정말 λ§Žμ€ 질문이 λ“€μ–΄μ™”μ—ˆμŠ΅λ‹ˆλ‹€ ......γ…Ž μ§€κΈˆ 생각해보면 섀계에 쑰금 더 μ‹œκ°„μ„ 많이 듀이고 μ½”λ“œλ₯Ό μž‘μ„±ν•΄λ„ λμ—ˆμ„ 것 같은데 빨리 ν•΄μ€˜μ•Όλ  것 κ°™λ‹€λŠ” μƒκ°λ•Œλ¬Έμ— λ‘œμ§μ„ 꼼꼼히 ν™•μΈν•˜μ§€λ„ μ•Šμ•˜λ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‘œκ·ΈμΈν•  λ•Œ tokenλ°œκΈ‰ λ‘œμ§μ„ 2번 μž‘μ„±ν•΄λ’€λ‹€λ˜κ°€ .... (μ§„μ§œ λ°”λ³΄λ©μ²­μ΄μ˜€λ„€ λ‚˜μžμ‹ μ•„)

λ‹Ήμ‹œμ— λ‹€λ₯Έ λ°±μ—”λ“œ νŒ€μ›λΆ„λΌλ¦¬ μ²˜μŒλΆ€ν„° μ½”λ“œλ¦¬λ·°λ₯Ό λ„ˆλ¬΄ μŽ„κ²Œ(?) ν•˜λŠ” 것이 μ•„λ‹ˆλƒ λΌλŠ” 이야기가 μ˜€κ°”λ‹€κ³  ν•˜λŠ”λ° μ €λŠ” 였히렀 μ’‹μ•˜μŠ΅λ‹ˆλ‹€. 저도 securityλ₯Ό 처음 μ‚¬μš©ν•΄λ΄€κΈ°μ— μ½”λ“œμ— λŒ€ν•œ 확신이 μ—†μ—ˆκ³ , λ§ˆμŒμ— 듀지 μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 리뷰 ν•΄μ£Όμ‹  것듀을 ν•˜λ‚˜ν•˜λ‚˜ 읽어보며 '이런 뢀뢄은 고쳐야겠닀, μ•žμœΌλ‘œ 섀계 μ‹œκ°„μ„ 쑰금 더 많이 κ°€μ Έκ°€μ•Όκ² λ‹€' λΌλŠ” 생각을 정말 많이 ν–ˆμŠ΅λ‹ˆλ‹€.

이후 mrλ‚ λ¦΄λ•ŒλΆ€ν„°λŠ” μƒκ°ν•˜λŠ” μ‹œκ°„μ„ 이전보닀 쑰금 길게 κ°€μ Έκ°€κ³  κΌΌκΌΌν•˜κ²Œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ € λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€. ν™•μ‹€νžˆ μ²˜μŒλ³΄λ‹€ μ½”λ“œ 가독성 λΆ€λΆ„μ—μ„œλ„ κ·Έλ ‡κ³  μ’‹μ•„μ§€λŠ” 게 λˆˆμ— λ³΄μ˜€μŠ΅λ‹ˆλ‹€. ν—·κ°ˆλ¦¬λŠ” 뢀뢄이 μžˆλ‹€λ©΄ 무쑰건 νŒ€μ›μ—κ²Œ 질문 또 질문, λ‚΄κ°€ μ΄ν•΄ν•œ 둜직이 λ§žλŠ”μ§€ λ…Όμ˜ν–ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€!

 

μž…μ— 발린 쒋은 말듀 λ“£λŠ” 것도 μ’‹μ§€λ§Œ, λ”°λ”ν•˜κ²Œ 쑰언을 λ“£κ³  λΆ€μ‘±ν•œ 뢀뢄을 μ±„μ›Œκ°€λ©° 슀슀둜 μ„±μž₯ν•˜κ³  싢은 μš•μ‹¬μ΄ 더 컸기에 μ½”λ“œλ¦¬λ·° 뢀뢄이 정말 μ’‹μ•˜μŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ mrλ•Œ 남겨주신 μ½”λ©˜νŠΈλ“€μ„ 기둝해두고, μŠ€μŠ€λ‘œλ„ λ‹€μ‹œ μ½”λ“œλ₯Ό μ½μ–΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 뢀뢄듀을 이번 νŠΉν™”ν”„λ‘œμ νŠΈλ•Œ μ‹ κ²½μ¨μ„œ κ°œλ°œν•΄ λ³Ό μ˜ˆμ •μž…λ‹ˆλ‹€.

 

4-1. μ μš©ν•  μƒˆλ‘œμš΄ κΈ°μˆ λ“€μ΄ μŸμ•„μ§„λ‹€!

μš°μ„ , 이번 ν”„λ‘œμ νŠΈ μ§„ν–‰ν•˜λ©° 처음 써 λ³Έ κΈ°μˆ λ“€μ΄ λ§Žμ•˜μŠ΅λ‹ˆλ‹€!

MSAμ•„ν‚€ν…μ²˜λ‚˜ Docker와 같은 인프라μͺ½ κΈ°μˆ λ“€μ€ 이전에 μΉœκ΅¬μ™€ 개인 ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©΄μ„œ μ‚¬μš©μ„ ν•΄λ΄€μ—ˆλŠ”λ°, Kafka, Redis, Spring security ... λŠ” 처음 μ‹œλ„ν•΄λ³Έ κΈ°μˆ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

처음 μ‹œλ„ν•΄λ³Έ κΈ°μˆ λ“€μ΄λΌ 걱정이 많이 λ˜μ—ˆλŠ”λ°, νŒ€μ›λ“€κ³Ό ν•¨κ»˜μ—¬μ„œ κΈ°κ°„ 내에 λͺ¨λ‘ μ μš©ν•  수 μžˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. κ·Έ κ³Όμ •μ—μ„œ 또 많이 배울 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 

4-2. RequestHeaderμ—λŠ” userIdκ°€ μ•„λ‹ˆλΌ memberId !

이건 별 λ¬Έμ œλŠ” μ•„λ‹ˆμ—ˆμ§€λ§Œ μ•½κ°„μ˜ μ›ƒν”ˆ 이슈 ...? μ •λ„κ² λ„€μš”.

이전에 MSA μ•„ν‚€ν…μ²˜λ‘œ ν”„λ‘œμ νŠΈλ₯Ό μ„€κ³„ν–ˆμ„λ•Œ, μΈμ¦μ„œλ²„(Gateway Server)λ₯Ό λ”°λ‘œ λ’€μ—ˆλŠ”λ°μš”. μ΄λ•Œ ν΄λΌμ΄μ–ΈνŠΈ μž…μž₯μ—μ„œλŠ” header에 accessToken만 ν¬ν•¨ν•˜μ—¬ μΈμ¦μ„œλ²„(Gateway Server)둜 μš”μ²­μ„ 보내면 ν•΄λ‹Ή μ„œλ²„μ—μ„œ 토큰 검증 ν›„ token에 ν¬ν•¨λœ memberIdλ₯Ό μΆ”μΆœν•΄ 헀더에 μΆ”κ°€ν•œ λ’€ μ‹€ μš”μ²­ μ„œλ²„λ‘œ μš”μ²­μ„ μ „λ‹¬ν–ˆλŠ”λ°μš”.

 

μ΄λ²ˆμ—λ„ μ—­μ‹œ λ™μΌν•œ 둜직으둜 μ²˜λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€. λ¬Όλ‘  μ΄λ²ˆμ—λŠ” Nginxκ°€ gateway역할을 λ‹΄λ‹Ήν–ˆμŠ΅λ‹ˆλ‹€.

 

μ œκ°€ μœ μ €μΈ‘ μ„œλΉ„μŠ€λ₯Ό λ‹΄λ‹Ήν–ˆκΈ°μ— ERDμ—μ„œ member ν…Œμ΄λΈ”μ˜ PK인 memberId둜 token에 κ° νšŒμ›μ˜ 고유 idλ₯Ό λ„£μ–΄λ’€μ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ Nginx(API Gateway)μ—μ„œ token을 decodingν•  λ•Œ userIdλ₯Ό 찾으렀 ν–ˆκΈ° λ•Œλ¬Έμ— νšŒμ› 고유 id 값을 찾을 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 톡신이 μ œλŒ€λ‘œ λ˜μ§€ μ•Šμ•˜μ—ˆλŠ”λ°μš”. μ΄λ•Œ, μ‚¬μ†Œν•œ 뢀뢄이라고 μƒκ°λ˜λ”λΌλ„ μ†Œν†΅μ„ ν•˜μž ! λΌλŠ” κ΅ν›ˆμ„ μ–»μ—ˆμŠ΅λ‹ˆλ‹€.

 

4-3. κ²Œμž„ κ²°κ³Όκ°€ μ†μ‹€λ˜μ§€ μ•Šλ„λ‘ Kafka λ©”μ‹œμ§€ 큐λ₯Ό λ„μž…ν•˜μž.

저희 μ„œλΉ„μŠ€μ˜ μ£Όμš” κΈ°λŠ₯인 'λ©€ν‹° λͺ¨λ“œ'의 경우 ν•œ κ²Œμž„ 방에 μ΅œλŒ€ 100λͺ…μ˜ μœ μ €κ°€ κ²Œμž„μ„ ν”Œλ ˆμ΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λ•Œ, μ—¬λŸ¬ 개의 λ°©μ—μ„œ ν”Œλ ˆμ΄ 쀑인 μ΅œλŒ€ 100λͺ…μ˜ μœ μ €λ“€μ˜ 문제 풀이와 κ²Œμž„ κ²°κ³Ό 기둝을 μœ μ‹€μ‹œν‚€μ§€μ•Šκ³  μ•ˆμ „ν•˜κ²Œ μ €μž₯μ‹œμΌœμ•Ό λ˜μ§€ μ•Šμ„κΉŒ? λΌλŠ” νŒ€μ›μ˜ 고민을 λ“£κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 κ²Œμž„ κ²°κ³ΌλŠ” λ™μ‹œμ— λž­ν‚Ήμ„ μ—…λ°μ΄νŠΈ ν•˜λŠ” μš”μ²­κ³Όλ„ μ§κ²°λ˜μ–΄μžˆκΈ° λ•Œλ¬Έμ—, κ²Œμž„ κ²°κ³Όλ₯Ό μ—…λ°μ΄νŠΈ ν•˜λŠ” μš”μ²­μ΄ ν•œκΊΌλ²ˆμ— μŸμ•„μ§€κ²Œ 되면 κ²Œμž„ κ²°κ³Όκ°€ μ†μ‹€λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆκ² λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

μ΄λ•Œλ¬Έμ— μ €ν¬λŠ” Kafka λ©”μ‹œμ§€ 큐λ₯Ό λ„μž…ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.

 

4-4. Kafka μ—μ„œ 100만번의 둜그 λ°œμƒμœΌλ‘œ μ„œλ²„κ°€ λ‹€μš΄λ˜λ²„λ Έλ‹€.

κ²Œμž„μ΄ λλ‚œ ν›„, GameResult의 리슀트λ₯Ό publishν–ˆμŠ΅λ‹ˆλ‹€. 이 λ•Œ, 리슀트 자체λ₯Ό μ§λ ¬ν™”ν•˜λ©΄μ„œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. λ¦¬μŠ€νŠΈκ°€ μ§λ ¬ν™”λ˜λ©΄μ„œ λ¬Έμžμ—΄(String)둜 λ³€ν™˜λ˜μ—ˆκ³ , 이λ₯Ό λ‹€μ‹œ μ—­μ§λ ¬ν™”ν•˜λ €κ³  μ‹œλ„ν–ˆμ„ λ•Œ λ¬Έμ œκ°€ μƒκ²ΌμŠ΅λ‹ˆλ‹€. 이둜 인해 100만 번의 둜그..κ°€ λ°œμƒν–ˆκ³ , 둜그 μš©λŸ‰μ΄ μ–΄λ§ˆμ–΄λ§ˆν•΄μ„œ κ²°κ΅­ μ„œλ²„κ°€ λ‹€μš΄λ˜λŠ” ν˜„μƒκΉŒμ§€ λ°œμƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€πŸ˜‚

 

이 κ²½μš°λŠ” Kafka 기술 자체λ₯Ό 처음 μΌλ‹€λ³΄λ‹ˆ μƒκ²Όλ˜ 문제라고 μƒκ°ν•©λ‹ˆλ‹€ .. !

Listλ₯Ό publishν•˜μ§€λ§κ³  κ°œλ³„ 객체λ₯Ό for문을 톡해 publishν•˜μž! λΌλŠ” κΉ¨λ‹¬μŒμ„ 얻을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 


5. ν”„λ‘œμ νŠΈ ν›„λ°˜

ν›„λ°˜λΆ€μ—λŠ” μ œκ°€ 맑은 κΈ°λŠ₯ κ°œλ°œμ„ 마치고, ν”„λ‘œμ νŠΈμ˜ 완성도λ₯Ό 높이기 μœ„ν•΄ λ””ν…ŒμΌν•œ λ””μžμΈ λΆ€λΆ„ μˆ˜μ • μž‘μ—…μ„ ν•˜κ³  ν”„λ‘ νŠΈμ—”λ“œ λΆ„λ“€κ³Ό μ†Œν†΅ν•˜λ©° 더 ν•„μš”ν•œ apiκ°€ 있으면 섀계λ₯Ό ν•˜λ©° μ‹œκ°„μ„ λ³΄λƒˆμŠ΅λ‹ˆλ‹€. 

 

λ‚˜ 혼자 ν•˜λŠ” ν”„λ‘œμ νŠΈκ°€ μ•„λ‹ˆλΌ, 우리 λͺ¨λ‘κ°€ ν•˜λŠ” ν”„λ‘œμ νŠΈλΌκ³  μƒκ°ν–ˆκΈ°μ— ν”„λ‘ νŠΈμ—”λ“œ λΆ€λΆ„ κ°œλ°œμ„ ν•˜λ©΄μ„œλ„ 즐겁게 ν”„λ‘œμ νŠΈλ₯Ό ν•  수 μžˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€ !!

 

그리고 제 동생이 고등학생인데, 저희 ν”„λ‘œμ νŠΈ μ‚¬μš© λŒ€μƒμ΄ 고등학생 μΉœκ΅¬λ“€μ΄μ–΄μ„œ λ™μƒμ˜ 도움을 정말 많이 λ°›μ•˜μŠ΅λ‹ˆλ‹€.

μ‹€μ œ 고등학생 μΉœκ΅¬λ“€(5λͺ…) 인터뷰도 ν•˜κ³  직접 ν”Όλ“œλ°±μ„ λ°›μ•„ μ„œλΉ„μŠ€λ₯Ό λ”μš± κ°œμ„ ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

 

6. λ‚΄κ°€ 500λͺ… μ•žμ—μ„œ λ°œν‘œλ₯Ό ν•˜κ²Œλ˜λ‹€λ‹ˆ ?! 그런데 λ°œν‘œ μ€€λΉ„ν•  μ‹œκ°„μ΄ 이틀밖에 μ•ˆ λ‚¨μ•˜λ‹€..

μ €ν¬νŒ€μ€ μ›λž˜ λ‹€λ₯Έ νŒ€μ›λΆ„μ΄ λ°œν‘œλ₯Ό μ§„ν–‰ν•˜μ…¨μŠ΅λ‹ˆλ‹€. λ°œν‘œλ₯Ό 잘 ν•΄μ£Όμ…¨λŠ”λ°, 저희 ν”„λ‘œμ νŠΈμ˜ 컨셉과 λ°œν‘œμž λΆ„μ˜ λͺ©μ†Œλ¦¬ 톀이 μ•ˆ λ§žλ‹€λŠ” ν”Όλ“œλ°±μ„ 계속 λ°›κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 

κ·Έλ ‡μ§€λ§Œ, λ°œν‘œ μ²˜μŒλΆ€ν„° λκΉŒμ§€ μ „λ°˜μ μœΌλ‘œ 잘 ν•΄μ£Όμ…”μ„œ νŒ€μ› λͺ¨λ‘ μœΌμŒ°μœΌμŒ°ν•˜λ©° 쑰금만 더 νŒŒμ΄νŒ…ν•˜μžλŠ” λΆ„μœ„κΈ°μ˜€λŠ”λ°, λ³Έμ„  μ§„μΆœν›„μ—λ„ ν•΄λ‹Ή ν”Όλ“œλ°±μ΄ 계속 λ“€μ–΄μ™€μ„œ κ²°κ΅­μ—” μ œκ°€ ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

이전 λŒ€ν•™κ΅ λ‹€λ‹λ•Œ μ „κ³΅μˆ˜μ—…, 동아리, μ‘Έμ—…μž‘ν’ˆ λ“±μ—μ„œ λ°œν‘œ κ²½ν—˜λ„ μ–΄λŠμ •λ„ μžˆμ—ˆκ³ , 1ν•™κΈ° κ΄€ν†΅ν”„λ‘œμ νŠΈ μ΅œμ’… λ°œν‘œμ—μ„œλ„ μ œκ°€ λ°œν‘œμžμ˜€μ–΄μ„œ 'λ°œν‘œ 자체'μ—λŠ” 크게 뢀담이 λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. κ·Έλ ‡μ§€λ§Œ, μ΄λ²ˆμ— μƒˆλ‘œ μ μš©ν•œ κΈ°μˆ λ“€λ„ μ›Œλ‚™λ§Žκ³  μ „ λ°œν‘œμžλΆ„μ— λΉ„ν•΄μ„œ 정말 μ™„λ²½ν•˜κ²Œ μˆ™μ§€λœ μƒνƒœκ°€ μ•„λ‹ˆμ˜€κΈ°λ•Œλ¬Έμ— 질문 뢀뢄에 μžˆμ–΄μ„œ μ•½κ°„μ˜ 뢀담감이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. (λ°”λŠ˜λ‘œ μΏ‘ 찌λ₯΄λ©΄ λ°”λ‘œ μ™„λ²½ν•˜κ²Œ 술술 λ‚˜μ˜¬ μ •λ„λŠ” μ•„λ‹ˆμ—ˆμŠ΅λ‹ˆλ‹€ ..)

κ·Έλ ‡μ§€λ§Œ νŒ€μ„ μœ„ν•΄ μ œκ°€ ν•΄λ‹Ή 역할을 λ§‘μ•˜μœΌλ‹ˆ 남은 μ‹œκ°„λ™μ•ˆ μ΅œλŒ€ν•œ λ…Έλ ₯을 ν•΄λ³΄μžλŠ” λ§ˆμŒμ„ κ°–κ³  λ°œν‘œ μ—°μŠ΅λ„ μƒˆλ²½κΉŒμ§€ ν•˜λ©° λ‚˜μ˜¬λ§Œν•œ μ§ˆλ¬Έμ΄λ‚˜ κΈ°μˆ λ“€μ„ λ‹€μ‹œ κΌΌκΌΌν•˜κ²Œ μ •λ¦¬ν•˜λŠ” μ‹œκ°„μ„ κ°€μ‘Œλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. λ°œν‘œ μŠ€ν¬λ¦½νŠΈλ„ μ²˜μŒλΆ€ν„° λκΉŒμ§€ λ‹€μ‹œ 짜고, μ‹œμ—°μžκ°€ μ–΄λŠ λΆ€λΆ„μ—μ„œ νŽ˜μ΄μ§€λ₯Ό λ„˜κ²¨μ•Όλ˜λŠ”μ§€λ„ λ‹€ μž‘μ„±ν•΄μ„œ μ‹œμ—°μžμ™€ 계속 합을 λ§žμ·„μŠ΅λ‹ˆλ‹€. μ΄λ•Œ μƒˆλ²½κΉŒμ§€ νŒ€μ›λ“€μ„ 쑰금 κ΄΄λ‘­ν˜”λŠ”λ° λ‹€λ“€ μ—΄μ‹¬νžˆ λ“€μ–΄μ£Όκ³  ν”Όλ“œλ°±μ£Όμ…”μ„œ μ •~말정말 κ°μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€ πŸ˜„


μ•„μ‰¬μš΄ 점

그리고 entity에 Setter μ‚¬μš©μ„ μ§€μ–‘ν•΄μ•Όλœλ‹€λŠ” κ±Έ μ•Œκ³  μžˆμ—ˆλŠ”λ°, 이번 ν”„λ‘œμ νŠΈλ•Œ 이 뢀뢄을 κ°„κ³Όν•˜κ³  μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. μ € 뢀뢄은 읡히 λ“€μ–΄μ™”λŠ”λ°, 'λ‚΄κ°€ μ™œ κ·Έλž¬μ§€?'λΌλŠ” 생각이 정말 많이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€. 제일 기본적인 뢀뢄인데, λ„ˆλ¬΄ κΈ‰ν•˜κ²Œ κ°œλ°œν•œ 게 ν›„νšŒκ°€ λ˜λ”λΌκ³ μš” .. κ·Έλž˜μ„œ λ‹€μŒ ν”„λ‘œμ νŠΈλ•ŒλŠ” κΌ­ μ‹ κ²½μ¨μ„œ κ°œλ°œμ„ ν•˜λ € ν•©λ‹ˆλ‹€.

λ”μš± μ²΄κ³„μ μœΌλ‘œ κΌΌκΌΌν•˜κ²Œ κ°œλ°œν•˜κ³ μ‹Άμ—ˆλŠ”λ°, μƒˆλ‘œ μ μš©ν•΄μ•Όλ˜λŠ” κΈ°μˆ λ“€λ„ μŸμ•„μ‘Œκ³  κΈ°ν•œμ΄ κ·Έλ ‡κ²Œ λ„‰λ„‰μΉ˜ μ•Šμ•˜κΈ°μ— 쑰급함이 μ•žμ„œ 깊게 κ³΅λΆ€ν•˜μ§€ λͺ»ν•œ λΆ€λΆ„, 그리고 νŠΈλŸ¬λΈ” μŠˆνŒ…λ„ μ œλŒ€λ‘œ ν•˜μ§€ λͺ»ν•œ 점이 μ•„μ‰½μŠ΅λ‹ˆλ‹€.

맀일맀일 λŠλ‚€μ μ— λŒ€ν•΄ κ°„λ‹¨ν•˜κ²ŒλΌλ„ 1일 1λΈ”λ‘œκ·Έλ₯Ό μž‘μ„±ν•΄μ•Όκ² λ‹€ ... λ‹€μ§ν–ˆμ—ˆλŠ”λ° λͺ» 지킨 뢀뢄도 μ•„μ‰½μŠ΅λ‹ˆλ‹€.

 

ν”„λ‘œμ νŠΈ ν›„κΈ°

λ°±μ—”λ“œλ‘œ μ „ν–₯ ν›„ μ–Όλ§ˆλ˜μ§€μ•Šμ•„ μ‹Έν”Ό μž…κ³Όλ₯Ό ν•΄μ„œ controller, service, model(dto, entity) μ–΄λ–€μ‹μœΌλ‘œ λ‚˜λˆ„κ³  μž‘μ„±ν•΄μ•Όν•˜λŠ”μ§€, entity to dtoλ₯Ό μ™œν•΄μ•Όλ˜λŠ”μ§€ λ“± 기본적인것도 많이 ν—·κ°ˆλ €ν•΄μ„œ μ–΄λ €μ›Œν–ˆλ˜ 게 μ—Šκ·Έμ œ 같은데, λͺ‡κ°œμ›”λ§Œμ— 많이 μ„±μž₯ν–ˆμŒμ„ λŠκΌˆμŠ΅λ‹ˆλ‹€.  1μ›” μ΄ˆμ— μ‘Έμ—… μ „ λ™μ•„λ¦¬μ—μ„œ ν–ˆλ˜ ν”„λ‘œμ νŠΈ λ§ˆλ¬΄λ¦¬κ°€ μ•ˆλ˜μ„œ, νŒ€μ›λΆ„ 쀑 ν•œ λΆ„ν•œν…Œ 집쀑 κ³Όμ™Έλ₯Ό μš”μ²­ν•œ 것도 μ—Šκ·Έμ œ κ°™λ„€μš”.

ν•œνŽΈμœΌλ‘œ, 기본적인 뢀뢄듀을 λ‹€μ‹œ ν•œ 번 더 꼼꼼히 μ •λ¦¬ν•΄μ•Όκ² λ‹€λŠ” 생각을 ν–ˆμŠ΅λ‹ˆλ‹€.

이전 λŒ€ν•™κ΅ 동아리 WAPμ—μ„œ μ§„ν–‰ν–ˆλ˜ Bejuryu ν”„λ‘œμ νŠΈλ„ νŒ€μ›κ°„ 합이 정말 잘 λ§žμ•˜μ–΄μ„œ '이것보닀 잘 λ§žλŠ” μ‚¬λžŒλ“€μ„ λ§Œλ‚  수 μžˆμ„κΉŒ'ν–ˆμ—ˆλŠ”λ°, ν•΄λ‹Ή ν”„λ‘œμ νŠΈλ‘œλΆ€ν„° μ •ν™•νžˆ 1λ…„ λ’€ μ •λ§ 합이 쒋은 νŒ€μ›λ“€μ„ 또 λ§Œλ‚¬λ„€μš” πŸ˜ 정말 μ €λŠ” 운이 쒋은 것 κ°™μŠ΅λ‹ˆλ‹€ γ…Žγ…Ž 

 

μ œκ°€ μ΄λ ‡κ²ŒκΉŒμ§€ λ§Œμ‘±ν•˜λ©΄μ„œ ν”„λ‘œμ νŠΈλ₯Ό ν•  수 μžˆμ—ˆλ˜ μ΄μœ λŠ” νŒ€ λΆ„μœ„κΈ°κ°€ μ •~말 μ’‹μ•˜κΈ° λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

  • μ„œλ‘œμ˜ μ˜κ²¬μ„ μ‘΄μ€‘ν•˜κ³  λ‹€λ₯Έ 의견이 λ‚˜μ˜€λ”λΌλ„ κΈ°λΆ„ λ‚˜λΉ ν•˜μ§€ μ•Šκ³  κ²½μ²­ν•˜λ©° 본인의 μ˜κ²¬μ„ λ§ν•˜λŠ” 점이 μ’‹μ•˜μŠ΅λ‹ˆλ‹€.
  • 저희 νŒ€μ€ λͺ¨λ“  섀계λ₯Ό 6λͺ… 닀같이 ν–ˆλŠ”λ°, 비둝 μ„€κ³„ν•˜λŠ” 데 λ‹€λ₯Έ νŒ€λ³΄λ‹€ μ‹œκ°„μ΄ 였래 κ±Έλ Έμ§€λ§Œ ν”„λ‘œμ νŠΈ λκΉŒμ§€ 초기 섀계가 거의 λ³€ν•˜μ§€ μ•Šμ•˜λ˜ 점이 λŒ€λ‹¨ν•˜λ‹€ ! μƒκ°ν•©λ‹ˆλ‹€.
  • 각자의 업무가 λ‚˜λˆ μ Έμžˆλ‹€ μƒκ°ν•˜μ§€μ•Šκ³ , λͺ¨λ‘κ°€ ν•¨κ»˜ κ³ λ―Όν•΄μ£Όκ³  도왔기에 λ³Έμ„  μ§„μΆœν•˜μ—¬ 'μš°μˆ˜μƒ'도 받을 수 μžˆμ—ˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. νž˜λ“€μ–΄λ„ ν‹°λ‚΄μ§€μ•Šκ³  ν•¨κ»˜ λκΉŒμ§€ μ—΄μ‹¬νžˆ λ‹¬λ €μ˜¨ 우리 κ°€ν™”λ§Œμ‚¬μ„± νŒ€μ›λ“€μ—κ²Œ κ³ λ§™λ‹€λŠ” 말을 μ „ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€ 😊

μš°λ¦¬νŒ€ κ³ μƒν–ˆμŠ΅λ‹ˆλ‹€~ κ°€ν™”λ§Œμ‚¬μ„±νŒ€ 졜고

λ‹€μŒ νŠΉν™”ν”„λ‘œμ νŠΈ νŒ€μ›듀과도 λΆ„μœ„κΈ°κ°€ λ„ˆλ¬΄ μ’‹μ•„ κΈ°λŒ€κ°€ λ©λ‹ˆλ‹€. λΆ€μ‘±ν•œ 뢀뢄은 μ œκ°€ 더 λ…Έλ ₯ν•΄μ„œ μ±„μ›Œκ°€λ©° μ—΄μ‹¬νžˆ λ‹¬λ €λ³΄κ² μŠ΅λ‹ˆλ‹€. νŒŒμ΄νŒ… :)