Skip to content

😎 곽윀경 πŸ˜Άβ€πŸŒ«οΈ κΉ€κ·œλ¦° 🎸 이기연 😺 μž„μ›μž¬ 🐰 ν•œμ†Œν˜œ

License

Notifications You must be signed in to change notification settings

beyond-sw-camp/be04-4th-Triumers-Newsnippet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ₯ TEAM TRIUMERS πŸ₯




😎 곽윀경

πŸ˜Άβ€πŸŒ«οΈ κΉ€κ·œλ¦°

🎸 이기연

😺 μž„μ›μž¬

🐰 ν•œμ†Œν˜œ



πŸ“š Tech Stack πŸ“š

✨ Platforms & Languages ✨







πŸ›  Tools πŸ› 





πŸ—“οΈ 전체 ν”„λ‘œμ νŠΈ 일정

2024.04.08 ~ 2024.04.17




1. ν”„λ‘œμ νŠΈ κ°œμš”

πŸ”— ν”„λ‘œμ νŠΈ κ°œμš”

Newsnippet은 데일리 μ‹œμ‚¬ 상식 ν€΄μ¦ˆ ν”Œλž«νΌμœΌλ‘œ 맀일 μ΅œμ‹  λ‰΄μŠ€λ₯Ό 기반으둜 μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” λ¬Έμ œλ“€μ„ ν’€λ©° μ‹œμ‚¬ 상식을 μŠ΅λ“ν•  수 μžˆλŠ” μ›Ήμ‚¬μ΄νŠΈμž…λ‹ˆλ‹€. μ‚¬μš©μžλ“€μ€ ν€΄μ¦ˆλ₯Ό ν’€κ³  κ²°κ³Όλ₯Ό ν™•μΈν•˜λ©°, 해섀을 톡해 ν•™μŠ΅ 효과λ₯Ό 높일 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 점수 μ‹œμŠ€ν…œμ„ 톡해 ν•™μŠ΅ 동기λ₯Ό λΆ€μ—¬ν•˜λ©°, ν•™μŠ΅ 기둝과 톡계λ₯Ό 톡해 μ„±μž₯을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.




2. ν”„λ‘œμ νŠΈ λ¬Έμ„œ

πŸ”— ν”„λ‘œμ νŠΈ λ¬Έμ„œ




3. UI

πŸ”— UI




4. CI/CD(λΉŒλ“œ-배포)

πŸ”— CI/CD λΉŒλ“œ-배포




5. 회고

😎 곽윀경

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ λ°±μ—”λ“œ 개발 κ³Όμ •μ—μ„œ Many-to-Many λ“±μ˜ 관계λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄ DDL을 μˆ˜μ •ν•˜κ³  논리 및 물리 λͺ¨λΈλ§μ„ 톡해 ν…Œμ΄λΈ” μ •μ˜λ₯Ό λͺ…ν™•νžˆ ν•œ ν›„ μž‘μ—…μ„ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. μ²˜μŒλΆ€ν„° ν™•μ‹€ν•˜κ²Œ μ •μ˜ν•˜κ³  μ΅œλŒ€ν•œ λ§Žμ€ 경우의 수λ₯Ό κ³ λ €ν•˜λ©° μ§„ν–‰ν•œ 것이 μž‘μ—… 속도λ₯Ό λ†’μ΄λŠ” 데 도움이 λ˜μ—ˆκ³ , 쀑간에 μ•½κ°„μ˜ μˆ˜μ • 사항이 μžˆμ—ˆμ§€λ§Œ 이λ₯Ό μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 개발 ν™˜κ²½μ„ λ‘œμ»¬μ—μ„œ μ‹œμž‘ν•˜μ—¬ 곡톡 DBλ₯Ό 가진 μ„œλ²„λ‘œ μ΄λ™ν•˜κ³ , μ΅œμ’…μ μœΌλ‘œλŠ” RDS둜 μ—°κ²°ν•˜μ—¬ μž‘μ—…ν–ˆκΈ° λ•Œλ¬Έμ— yml 파일이 μ—¬λŸ¬ 번 λ³€κ²½λ˜λŠ” 과정을 κ²ͺμ—ˆμŠ΅λ‹ˆλ‹€. μ΄ˆκΈ°μ—λŠ” 더미 데이터λ₯Ό 직접 μž…λ ₯ν–ˆμ§€λ§Œ, 점차 λ‰΄μŠ€ 크둀링과 GPTλ₯Ό ν™œμš©ν•œ 문제 생성 κΈ°λŠ₯이 κ΅¬ν˜„λ˜λ©΄μ„œ RDS μ„œλ²„μ™€ DBμ—μ„œ 크둀링된 λ¬Έμ œλ“€μ΄ μ‹€μ œλ‘œ λ‚˜μ˜€λŠ” 것을 보며 μ²˜μŒμ— κΈ°νšν•˜λ©΄μ„œ λ§‰μ—°ν•˜κ²Œλ§Œ λ³΄μ˜€λ˜ κΈ°λŠ₯듀이 μ‹€μ œλ‘œ λ™μž‘ν•˜λŠ” λͺ¨μŠ΅μ— κ°νƒ„ν–ˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ—μ„œλŠ” Vue.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ νŽ˜μ΄μ§€λ₯Ό κ΅¬μ„±ν•˜κ³  CSS와 ν•„μš”ν•œ κΈ°λŠ₯듀을 κ΅¬ν˜„ν•˜λŠ” 데 μ£Όλ ₯ν–ˆμŠ΅λ‹ˆλ‹€. Vuexλ₯Ό ν™œμš©ν•˜μ—¬ λ‘œλ”© μ°½κ³Ό 닀크 λͺ¨λ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” λ“± μ‚¬μš©μž νŽΈμ˜μ„±μ„ κ³ λ €ν•œ μž‘μ€ κΈ°λŠ₯듀도 μ„Έμ‹¬ν•˜κ²Œ κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€. λ°±μ—”λ“œμ—μ„œ 잘 κ΅¬ν˜„λœ κΈ°λŠ₯을 μ‚¬μš©μžμ—κ²Œ μ΅œλŒ€ν•œ 잘 ν‘œν˜„ν•˜κ³  λͺ¨λ“  κΈ°λŠ₯을 μ΄μš©ν•  수 μžˆλ„λ‘ UI λ””μžμΈμ— λ§Žμ€ λ…Έλ ₯을 κΈ°μšΈμ˜€μŠ΅λ‹ˆλ‹€. λ˜ν•œ ν€΄μ¦ˆ 풀이, μ •λ‹΅ 여뢀와 ν•΄μ„€ ν‘œμ‹œ, κ²°κ³Ό 화면을 ν•˜λ‚˜μ˜ Vue νŒŒμΌμ— κ΅¬ν˜„ν•˜λŠ” 것은 쉽지 μ•Šμ•˜μ§€λ§Œ, 이λ₯Ό 톡해 μƒˆλ‘œμš΄ 방법을 읡힐 수 μžˆμ—ˆλ˜ 쒋은 κ²½ν—˜μ΄μ—ˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€κ³  ν”„λ‘ νŠΈλ₯Ό 깊이 νŒŒλ³΄λ©΄μ„œ μ˜ˆμ „ ν”„λ‘œμ νŠΈλ³΄λ‹€ ν”„λ‘ νŠΈμ— μ’€ 더 μ΅μˆ™ν•΄μ‘Œκ³  μ—¬λŸ¬ μ„Έμ„Έν•œ κΈ°λŠ₯듀을 κ΅¬ν˜„ν•˜λŠ” 것에 재미λ₯Ό λŠλΌκΈ°λ„ ν–ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ₯΄λŠ” 것을 더 λ°°μ›Œκ°€κ³  이λ₯Ό 직접 λ°”λ‘œλ°”λ‘œ μ μš©ν•΄μ„œ 눈으둜 확인할 수 μžˆλ‹€λŠ” κ²ƒμ˜ μž₯점을 λŠλΌκΈ°λ„ ν–ˆμŠ΅λ‹ˆλ‹€.

λ°±μ—”λ“œμ™€μ˜ 연결은 이전 κ²½ν—˜ 덕뢄에 μˆ˜μ›”ν–ˆμ§€λ§Œ, 맀일 ν’€μ–΄μ•Ό ν•˜λŠ” ν€΄μ¦ˆ 데이터λ₯Ό ν•œκΊΌλ²ˆμ— λΆˆλŸ¬μ˜€λŠ” 방식이 ν€΄μ¦ˆ μˆ˜κ°€ λ§Žμ•„μ§ˆ 경우 λ‘œλ”© μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 것 κ°™μ•„ κ°œμ„ μ΄ ν•„μš”ν•˜λ‹€λŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€. ν€΄μ¦ˆ 데이터λ₯Ό ν•˜λ‚˜μ”© λΆˆλŸ¬μ˜€λŠ” μ‹μœΌλ‘œ κ΅¬ν˜„ν•˜κ³  ν”„λ‘ νŠΈμ—μ„œλ„ ν€΄μ¦ˆλ₯Ό ν•˜λ‚˜μ”© ν’€ λ•Œλ§ˆλ‹€ λ°”λ‘œ λ‹€μŒ 문제λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλŠ” μ‹μœΌλ‘œ κ°œμ„ ν•˜λ €κ³  ν•©λ‹ˆλ‹€. 이런 μ‹μœΌλ‘œ μƒκ°ν•œ κΈ°λŠ₯듀이 많이 κ΅¬ν˜„λ˜μ—ˆμ§€λ§Œ 더 κ΅¬ν˜„ν•΄λ³΄κ³  싢은 κΈ°λŠ₯듀이 λ‚¨μ•„μžˆκ³ , μ§€κΈˆ μžˆλŠ” 것듀도 μΆ©λΆ„νžˆ 더 λ°œμ „μ‹œν‚€κ³  고도화λ₯Ό μ‹œν‚¬ 수 μžˆλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— κ³„μ†ν•΄μ„œ 이 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ 이 λΆ€λΆ„ λ˜ν•œ κ°œμ„ μ„ ν•  κ³„νšμž…λ‹ˆλ‹€. λ˜ν•œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ•±μœΌλ‘œμ˜ λ°œμ „ κ°€λŠ₯성을 μƒκ°ν•΄λ³΄κ²Œ λ˜μ—ˆκ³ , μ‹œμ—° μ‹œ λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 문제λ₯Ό ν’€κ³  λ‚œ ν›„ λ“±μˆ˜ 확인을 μ¦κ±°μ›Œν•˜λŠ” λͺ¨μŠ΅μ„ 보고 λž­ν‚Ήμ΄λ‚˜ 리그와 κ΄€λ ¨λœ κΈ°λŠ₯ κ΅¬ν˜„μ˜ ν•„μš”μ„±μ„ λŠκΌˆμŠ΅λ‹ˆλ‹€. 무엇보닀 μ‚¬μš©μž μž…μž₯μ—μ„œ κ°€μΉ˜ 있고, κ°„νŽΈν•˜κ²Œ μ΄μš©ν•  수 있으며, μ§€μ†μ μœΌλ‘œ μ‚¬μš©ν•˜κ³  싢은 μ„œλΉ„μŠ€λ₯Ό λ§Œλ“œλŠ” 것이 μ€‘μš”ν•˜λ‹€λŠ” 점을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.

νŒ€μ›λ“€κ³Ό ν•¨κ»˜ 아이디어λ₯Ό κ΅¬ν˜„ν•΄λ‚˜κ°€λŠ” 과정이 즐거웠고, μ„œλ‘œμ˜ μ˜κ²¬μ„ μ‘΄μ€‘ν•˜λ©° ν˜‘μ—…ν•˜λŠ” κ²½ν—˜μ„ 톡해 λ§Žμ€ 것을 배울 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•˜κ³  싢은 것이 생기면 λ°”λ‘œλ°”λ‘œ μ˜κ²¬μ„ κ³΅μœ ν•˜κ³  ν”Όλ“œλ°±μ„ μ„œλ‘œ ν–ˆκ³ , μ„œλ‘œ μ–΄λ–€ 뢀뢄을 맑고 μžˆλŠ”μ§€ μˆ˜μ‹œλ‘œ κ³΅μœ ν–ˆκΈ° λ•Œλ¬Έμ— 크게 λ§‰νžˆλŠ” 일 없이 진행될 수 μžˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€. 개인적으둜 ν…ŒμŠ€νŠΈν•  λ•ŒλŠ” 보이지 μ•Šμ•˜λ˜ 뢀뢄듀이 λ‹€λ₯Έ νŒ€λ“€κ³Ό μ„œλΉ„μŠ€λ₯Ό κ³΅μœ ν•˜λ©΄μ„œ λ°œκ²¬λ˜κΈ°λ„ ν–ˆκ³ , 이λ₯Ό 톡해 μ„œλΉ„μŠ€λ₯Ό λ”μš± λ°œμ „μ‹œν‚¬ 수 μžˆλŠ” 아이디어λ₯Ό 얻을 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μƒκ°ν–ˆλ˜ λ°”λ₯Ό μ‹€μ œλ‘œ κ΅¬ν˜„ν•˜κ³  λ™μž‘ν•˜λŠ” 것을 λ³΄λŠ” 것이 μ‹ κΈ°ν•˜κ³  λΏŒλ“―ν•œ κ²½ν—˜μ΄μ—ˆμœΌλ©°, μ•žμœΌλ‘œλ„ νŒ€μ›λ“€κ³Ό 적극적으둜 μ†Œν†΅ν•˜λ©΄μ„œ μ‚¬μš©μž μ€‘μ‹¬μ˜ κ°€μΉ˜ μžˆλŠ” μ„œλΉ„μŠ€λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

πŸ˜Άβ€πŸŒ«οΈ κΉ€κ·œλ¦°

이 ν”„λ‘œμ νŠΈλ₯Ό λ§ˆλ¬΄λ¦¬ν•˜λ©΄μ„œ, ν”„λ‘œμ νŠΈ 과정을 λŒμ•„λ³΄λ‹ˆ κΈ°νšν•˜κ³  κ°œλ°œν•˜λŠ” 과정이 μ‹ μ„ ν•˜κ³  즐거웠닀. 아이디어가 λ§Žμ€ νŒ€μ›λ“€κ³Ό λŒ€ν™”ν•˜λ©΄μ„œ λ‚΄κ°€ μƒκ°ν•˜μ§€ λͺ»ν–ˆλ˜ 것듀을 μ•Œμ•„κ°ˆ 수 μžˆλŠ” μ‹œκ°„λ“€μ΄μ–΄μ„œ μœ μ΅ν–ˆλ‹€. μ΄μ „μ—λŠ” 해보지 μ•Šμ•˜λ˜ μƒˆλ‘œμš΄ 도전듀도 μ‹œλ„ν•˜λ©΄μ„œ λ‚˜μ—κ² λ§Žμ€ 정보듀을 ν‘μˆ˜ν•  수 μžˆλŠ” κ³Όμ •λ“€μ΄μ—ˆλ‹€.
이 ν”„λ‘œμ νŠΈλ₯Ό ν•˜κΈ° μ „κΉŒμ§€λŠ” 동적 크둀링인 selenium만 μ‚¬μš©ν–ˆμ—ˆμ§€λ§Œ, μ΄λ²ˆμ— 정적 크둀링인 trafilatura와 beautiful soup을 μ‚¬μš©ν•˜λ©΄μ„œ μ½”λ“œλ₯Ό μ§œλŠ” 즐거움을 느꼈고, 특히 trafilaturaλΌλŠ” μƒˆλ‘œμš΄ 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©΄μ„œ μ½”λ“œμ˜ 직관적이고 간단함에 감탄을 느꼈던 μˆœκ°„μ΄μ—ˆλ‹€. 그리고 크둀링 ν•œ 데이터λ₯Ό μ–΄λ–»κ²Œ ν•˜λ©΄ GPT μ„œλ²„λ‘œ λ„˜κΈΈ 수 μžˆμ„κΉŒμ— λŒ€ν•œ 고민도 ν–ˆμ—ˆλ˜ 것 κ°™λ‹€. μ›Ήν›… μ„œλ²„ 자체λ₯Ό μžλ™ν™” ν•΄μ„œ λ‰΄μŠ€ 크둀링을 ν•΄μ„œ GPT μ„œλ²„λ‘œ μ΄λ™ν•˜λŠ” 방법을 μ‚¬μš©ν• κΉŒ, μ•„λ‹ˆλ©΄ 크둀링 μ„œλ²„λ₯Ό μžλ™ν™”ν•΄μ„œ GPT μ„œλ²„λ‘œ μ΄λ™ν•˜λŠ” 방법을 μ‚¬μš©ν• κΉŒ 고민을 ν•˜λŠ” κ³Όμ •μ—μ„œ 두 가지 방법을 λͺ¨λ‘ μ‹œλ„ν•΄λ³΄μ•˜κ³  μ²˜μŒλΆ€ν„° μ‰½κ²Œ νƒ€νŒŒλ˜λŠ” 법은 μ—†μ—ˆμ§€λ§Œ, ν•œ λ²ˆλ„ κ²½ν—˜ν•˜μ§€ λͺ»ν•œ μˆœκ°„λ“€μ„ μ–»κ²Œ 된 것 κ°™μ•˜λ‹€.
쑰금 μ•„μ‰¬μ› λ˜ 점은 처음 μ‚¬μš©ν•΄λ³΄λŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ™€ jupyter μ΄ˆκΈ°μ„€μ • λ“±μœΌλ‘œ 인해 λ‚΄κ°€ ν•˜λŠ” μ—­ν• μ—λ§Œ λͺ°μž…ν•˜λ‹€λ³΄λ‹ˆ, λ‹€λ₯Έ νŒ€μ›λ“€μ˜ 역할에 λŒ€ν•΄μ„œ λ§Žμ€ 관심을 가지지 λͺ»ν–ˆλ˜ 것 κ°™λ‹€. ν”„λ‘œμ νŠΈ μ§„ν–‰ν•˜λ©΄μ„œ νŒ€μ›λ“€κ³Όμ˜ μ†Œν†΅ 및 진행상황도λ₯Ό μˆ˜μ‹œλ‘œ 체크해야 ν•œλ‹€λŠ” 것을 λͺ…μ‹¬ν•˜κ³  λ‹€μŒ ν”„λ‘œμ νŠΈ 진행할 λ•ŒλŠ” 보완할 점을 μƒκ°ν•˜λ©΄μ„œ ν•΄μ•Ό κ² λ‹€. λ˜ν•œ μΆ”ν›„ 고도화 ν•˜λ©΄μ„œ 크둀링 ν•œ λͺ¨λ“  데이터가 GPTμ„œλ²„λ‘œ λ„˜μ–΄κ°€λŠ” 것이 μ•„λ‹Œ 쑰건을 κ±Έμ–΄μ„œ λ§Žμ€ 데이터가 λ„˜μ–΄κ°€μ§€ μ•Šλ„λ‘ λ””ν…ŒμΌμ„ μ‚΄λ €μ•Ό κ² λ‹€λŠ” 생각을 ν–ˆλ‹€.

🎸 이기연

'Newsnippet' μ„œλΉ„μŠ€μ— λŒ€ν•œ 기획 κ³Όμ •λΆ€ν„° μ΅œμ’… μ„œλΉ„μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ”λ°κΉŒμ§€ λ‹€μ–‘ν•œ 기술적인 μ‹œλ„λ₯Ό ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 데이터 μˆ˜μ§‘μ„ μœ„ν•œ 크둀링, μ„œλΉ„μŠ€ 개발 및 μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•΄ μ μš©ν•œ CI/CD, Open AI APIλ₯Ό ν™œμš©ν•œ 데이터 가곡 λ“± 각 κ²½ν—˜λ“€μ„ 톡해 μ•žμœΌλ‘œ μƒˆλ‘œμš΄ κΈ°μˆ λ“€μ„ λ°°μš°κ³ μžν•˜λŠ” 마음으둜 λ‚˜μ•„κ°€μ•Όκ² λ‹€λŠ” 생각을 ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이번 ν”„λ‘œμ νŠΈλŠ” κΈ°λŠ₯κ³Ό κ΅¬ν˜„ν•΄μ•Ό ν•  ν•­λͺ©μ„ λͺ…ν™•ν•˜κ²Œ ν•˜κΈ°μœ„ν•΄ μš”κ΅¬μ‚¬ν•­μ„ λ¨Όμ € μ •λ¦¬ν•˜κ³  μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이λ₯Όν†΅ν•΄ 체계적인 ν”„λ‘œμ νŠΈλ₯Ό 진행할 수 μžˆμ—ˆκ³ , νŒ€μ›λ“€μ΄ μ„œλΉ„μŠ€μ— λŒ€ν•΄ μˆ˜μ›”ν•˜κ²Œ 이해할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¨Όμ € λ°©ν–₯성을 작고 기쀀점을 μ •ν•˜λŠ” 것이 과업을 진행할 λ•Œ μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€ λ‹€μ‹œ λŠλ‚„ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

개인적으둜 ν”„λ‘œμ νŠΈμ—μ„œ κ°€μž₯ 크게 κΈ°μ—¬ν•œ 뢀뢄은 CI/CDμž…λ‹ˆλ‹€. Github Action을 톡해 TDD 기반 κ°œλ°œμ„ ν•  수 μžˆμ—ˆμœΌλ©° 이전에 κ²½ν—˜ν–ˆλ˜ ν”„λ‘œμ νŠΈμ™€ λΉ„κ΅ν–ˆμ„λ•Œ, 원격 Repositoryλ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이 보닀 μˆ˜μ›”ν•¨μ„ λŠκΌˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ Jenkins의 Pipeline을 톡해 Docker에 μžλ™ λ°°ν¬ν•˜λŠ” 것을 κ΅¬μΆ•ν•˜λŠ” κ³Όμ •μ—μ„œ 이슈 좔적을 μœ„ν•΄ ν•΄λ‹Ή μž‘μ—…μ΄ ν•„μš”ν•˜κ² λ‹€λŠ” 생각을 ν•˜κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ²˜μŒμ— μ„€μ •ν•˜λŠ” 것듀이 λ§Žμ•„ κΉŒλ‹€λ‘œμ› μ§€λ§Œ μΆ”ν›„ μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•˜κ³  μœ μ§€λ³΄μˆ˜ν•˜λŠ” κ³Όμ •μ—μ„œ ν•΄λ‹Ήμž‘μ—…μ„ ν•˜κΈΈ μž˜ν–ˆλ‹€λŠ” 생각을 ν•  것 κ°™μ•˜μŠ΅λ‹ˆλ‹€.

μ „λ°˜μ μΈ ν”„λ‘œμ νŠΈ 관리와 CI/CD, λ°±μ—”λ“œ κ°œλ°œμ„ μ§„ν–‰ν•˜λ©΄μ„œ μ•Œκ³ λ¦¬μ¦˜μ μœΌλ‘œ 효율적인 μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 방법에 λŒ€ν•΄ 깊이 있게 생각해보지 λͺ»ν•œ 뢀뢄이 μ•„μ‰¬μ› μŠ΅λ‹ˆλ‹€. 효율적인 μ½”λ“œλ₯Ό μ—°κ΅¬ν•˜μ—¬ λ‹€μŒμ— κ²½ν—˜ν•  ν”„λ‘œμ νŠΈμ— μ μš©ν•  수 μžˆλ„λ‘ 개인적인 μ—­λŸ‰μ„ ν‚€μ›Œμ•Όκ² λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

😺 μž„μ›μž¬

이번 ν”„λ‘œμ νŠΈλ₯Ό 톡해 ν…ŒμŠ€νŠΈμ½”λ“œμ˜ 고도화와 μ„Έμ„Έν•œ QA 리슀트 μ€€λΉ„ 및 ν…ŒμŠ€νŠΈ κ³Όμ •μ˜ ν•„μš”μ„±μ„ μ ˆμ‹€νžˆ λŠκΌˆλ‹€. 각자의 μ½”λ“œμ— λŒ€ν•œ ν…ŒμŠ€νŠΈκ°€ 이루어진 μƒνƒœλ‘œ ν”„λ‘œμ νŠΈκ°€ μ§„ν–‰λ˜μ—ˆμ§€λ§Œ, λ‹€λ“€ κΈ°λŠ₯ ν•˜λ‚˜λΌλ„ μΆ”κ°€μ μœΌλ‘œ κ΅¬ν˜„ν•˜κ³  μ‹Άλ‹€λ³΄λ‹ˆ μ •μž‘ 톡합 QAλ₯Ό μ œλŒ€λ‘œ 해보진 λͺ»ν–ˆλ‹€. κ·Έ μƒνƒœλ‘œ μ‹œμ—°μ„ ν•˜λ‹€λ³΄λ‹ˆ 일뢀 버그가 λ°œμƒν•˜λŠ” κ²½μš°κ°€ μžˆμ—ˆκ³ , 라이브 도쀑 κΈ‰ν•˜κ²Œ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κ²Œ λ˜μ—ˆλ‹€. μΆ”ν›„ 개발 μ‹œμ—λŠ” ν…ŒμŠ€νŠΈν•  λͺ©λ‘μ„ μ’€ 더 μ„Έμ„Ένžˆ μ •λ¦¬ν•˜κ³ , QA 기간을 μ§„ν–‰ν•˜λ„λ‘ ν•  것이닀. 이 λ•Œ Jenkins, Docker, GithubAction, λ“± μ΄λ²ˆμ— μ‚¬μš©ν–ˆλ˜ CI/CD Tool 듀을 μ’€ 더 곡뢀해보고 잘 μ μš©ν•  수 μžˆλ„λ‘ ν•  것이닀.

이번 ν”„λ‘œμ νŠΈλŠ” 정말 해보고 싢은 것듀을 정말 많이 κ΅¬ν˜„ν•΄λ³Έ ν”„λ‘œμ νŠΈμ˜€λ‹€. λ‰΄μŠ€ 기사λ₯Ό μ „μ²˜λ¦¬ν•˜μ—¬ μ μ ˆν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό λ§Œλ“€μ–΄ OpenAI API에 보내고, κ²°κ³Όλ₯Ό λ‹€μ‹œ μ μ ˆν•˜κ²Œ μ „μ²˜λ¦¬ν•˜μ—¬ DB에 μ €μž₯ν•˜λŠ” κ³Όμ •, SpringSecurityλ₯Ό μ΄μš©ν•΄ UserRoleκΉŒμ§€ κ΅¬ν˜„ν•˜μ—¬, κΆŒν•œμ— 따라 ν”„λ‘ νŠΈμ™€ λ°±μ—μ„œ κ΄€λ¦¬μž νŽ˜μ΄μ§€μ— λŒ€ν•œ 접근을 ν•„ν„°λ§ν•˜λŠ” κ³Όμ •, AWS의 RDS와 EC2λ₯Ό μ΄μš©ν•œ μ„œλ²„μ™€ DBμ„œλ²„ ꡬ좕, μΈλ°”μš΄λ“œ κ·œμΉ™ μ„€μ • λ“±, 인프라λ₯Ό κ΅¬μΆ•ν•΄λ³΄λŠ” κ³Όμ •, 등을 κ΅¬ν˜„, κ΅¬μΆ•ν–ˆλ‹€. 해보지 μ•Šμ•˜λ˜ 것듀, μ΅μˆ™μΉ˜ μ•Šμ•˜λ˜ 것듀을 찾아보며 κ΅¬ν˜„ν•˜λŠ” 과정이 λ„ˆλ¬΄ 즐겁고 ν–‰λ³΅ν•œ μ‹œκ°„μ΄μ—ˆλ‹€. λ¬Όλ‘  μ΄λ”°κΈˆ 잘 λ™μž‘ν•˜μ§€ μ•Šκ±°λ‚˜, 방법을 찾을 λ•Œ 머리λ₯Ό 싸맀며 νž˜λ“€ λ•Œλ„ μžˆμ—ˆμ§€λ§Œ 그만큼 κ²°κ΅­ ν•΄λƒˆμ„ λ•Œ, λ”μš± 즐거움을 얻을 수 μžˆμ—ˆλ‹€. μ•žμœΌλ‘œλ„ 고이지 μ•Šκ³  계속해 λ°œμ „ν•  수 μžˆμ„ κ±°λΌλŠ” μžμ‹ κ°μ„ 얻을 수 μžˆλŠ” ν”„λ‘œμ νŠΈμ˜€λ‹€.

🐰 ν•œμ†Œν˜œ

이번 ν”„λ‘œμ νŠΈλŠ” μ§€λ‚œ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° κ²½ν—˜ν–ˆλ˜ 것을 ν† λŒ€λ‘œ λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈ λͺ¨λ‘λ₯Ό κ΅¬ν˜„ν•΄ λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 처음 주제λ₯Ό ν™•μ •ν•˜λŠ” μ‹œκ°„μ΄ 였래 κ±Έλ Έμ§€λ§Œ, 많이 κ³ λ―Όν–ˆλ˜ 만큼 λͺ¨λ‘μ—κ²Œ ν•„μš”ν•˜κ³  도움이 될 μ„œλΉ„μŠ€λ₯Ό 주제둜 진행할 수 μžˆμ–΄μ„œ 의미 μžˆμ—ˆλ˜ ν”„λ‘œμ νŠΈμ˜€λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이번 ν”„λ‘œμ νŠΈμ—μ„œλŠ” λͺ¨λ‘ jpaλ₯Ό μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— N+1 λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠκΈ° μœ„ν•΄ λ°±μ—”λ“œ μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ κ³ λ―Όν–ˆλ˜ μ‹œκ°„μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 또 μ›ν•˜λŠ” 문제λ₯Ό insert ν•  λ•Œ mapper 문제둜 id κ°’κΉŒμ§€ ν•¨κ»˜ ν• λ‹Ήλ˜μ–΄ 이전에 좜제된 λ¬Έμ œκ°€ update λ˜λŠ” 문제, ν€΄μ¦ˆμ˜ 정닡을 확인할 λ•Œ μ‚¬μš©μžμ˜ 닡을 μ €μž₯ν•˜μ§€ μ•Šκ³  λ¨Όμ € μ‘°νšŒν•΄ null값이 쑰회 λ˜λŠ” 상황 λ“±μ˜ μ—¬λŸ¬ 이슈λ₯Ό ν•΄κ²°ν•˜λ©° λ¬Έμ œκ°€ λ°œμƒν–ˆμ„ λ•Œ 이λ₯Ό ν•΄κ²°ν•œ 방법 λ˜ν•œ 기둝으둜 남겨 λ†“λŠ” 것이 μ’‹κ² λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. μ‹œμ—°νšŒ λ•Œ λ‹€μ–‘ν•œ μ΄μŠˆλ“€μ΄ μƒˆλ‘­κ²Œ λ°œμƒν•˜λ©΄μ„œ 미리 ν…ŒμŠ€νŠΈν•˜κ³  ν™•μΈν•΄λ³΄λŠ” 것, λΉ„μŠ·ν•œ μ΄μŠˆκ°€ λ°œμƒν–ˆμ„ λ•Œ 이λ₯Ό μ°Έκ³ ν•  수 μžˆλŠ” 상황이 λ§Žμ„ 수 μžˆλ‹€λŠ” 것을 느꼈기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

CI/CD μ μš©μ„ μœ„ν•΄ ν…ŒμŠ€νŠΈ μ½”λ“œλ„ ν•¨κ»˜ μž‘μ„±ν•˜λ©° μ§„ν–‰ν•˜κ²Œ λ˜μ—ˆλŠ”λ°, μ—¬λŸ¬ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 것도 μ€‘μš”ν•˜μ§€λ§Œ κ΅¬ν˜„ν•œ κΈ°λŠ₯을 ν…ŒμŠ€νŠΈν•¨μœΌλ‘œμ¨ μ œλŒ€λ‘œ 된 κΈ°λŠ₯을 μ„œλΉ„μŠ€ν•˜λŠ” 것도 ꡉμž₯히 μ€‘μš”ν•œ 뢀뢄이라고 느끼게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이번 ν”„λ‘œμ νŠΈ λ•ŒλŠ” CI/CD 뢀뢄을 μ œλŒ€λ‘œ κ²½ν—˜ν•΄ 보지 λͺ»ν•΄μ„œ μ•„μ‰¬μ› μ§€λ§Œ λ‹€μŒ ν”„λ‘œμ νŠΈ λ•ŒλŠ” κ΄€λ ¨ λ‚΄μš©μ„ 더 κ³΅λΆ€ν•΄μ„œ ν•΄λ‹Ή 뢀뢄을 μ œλŒ€λ‘œ κ²½ν—˜ν•΄ 보고 μ‹ΆμŠ΅λ‹ˆλ‹€. 짧은 κΈ°κ°„μ΄μ—ˆμ§€λ§Œ νŒ€μ›λ“€κ³Όμ˜ μ†Œν†΅ 과정을 λ°°μ›Œκ°ˆ 수 μžˆμ—ˆκ³ , ν”Όλ“œλ°±μ„ 톡해 μ„œλ‘œ λ°œμ „ν•  수 μžˆλŠ” μ‹œκ°„μ΄λΌ μ’‹μ•˜μŠ΅λ‹ˆλ‹€. 또 짧은 만큼 ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 크지 μ•Šμ•„ ν•˜κ³  μ‹Άμ—ˆλ˜ κΈ°λŠ₯듀에 λΉ„ν•΄ κ΅¬ν˜„ν•œ κΈ°λŠ₯이 λ§Žμ§€λŠ” μ•Šμ•˜μ§€λ§Œ, λ°˜μ—μ„œ 자체적으둜 μ§„ν–‰ν–ˆλ˜ μ‹œμ—°νšŒλ₯Ό 톡해 λͺ¨λ‘κ°€ 즐겁게 κ²½ν—˜ν•  수 μžˆλŠ” μ„œλΉ„μŠ€λ‘œμ„œμ˜ κ°€λŠ₯성을 보게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ•žμœΌλ‘œ νŒ€μ›λ“€κ³Ό 고도화λ₯Ό 톡해 λ”μš± 의미 있고 μž¬λ°ŒλŠ” μ„œλΉ„μŠ€λ₯Ό λ§Œλ“€ 수 μžˆμ„ 것 κ°™μ•„ κΈ°λŒ€λ©λ‹ˆλ‹€.

About

😎 곽윀경 πŸ˜Άβ€πŸŒ«οΈ κΉ€κ·œλ¦° 🎸 이기연 😺 μž„μ›μž¬ 🐰 ν•œμ†Œν˜œ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published