λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“ 회고/βœ… 22λ…„ 회고

[일일 회고] 22.04.18 - "ν˜‘μ—…ν•˜κΈ°, 상황에 λ§žλŠ” μ•„ν‚€ν…μ²˜μ™€ FE/BE 배포, DB λͺ¨λΈλ§"

by kukim 2022. 4. 18.

πŸ“š λ°°μš΄ 것

μ‡Όν•‘λͺ° μ›Ή ν˜‘μ—… ν”„λ‘œμ νŠΈ μ‹œμž‘ with FE & BE

μ΄λ²ˆμ—λŠ” ν”„λ‘ νŠΈμ—”λ“œμ™€ λ°±μ—”λ“œ, 총 4λͺ…이 λͺ¨μ—¬ λ°˜μ°¬κ°€κ²Œ μ‡Όν•‘λͺ° μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œμ νŠΈλ₯Ό μ‹œμž‘ν–ˆλ‹€.

μ–΄μƒ‰ν•œ λΆ„μœ„κΈ°λ₯Ό νƒˆν”Όν•˜κ³ μž 웃고 λ– λ“€κ³  힘이 λ‚˜λŠ” 말을 μ˜λ„μ μœΌλ‘œ ν–ˆλ‹€. ν˜‘업을 μœ„ν•΄ κ·ΈλΌμš΄λ“œ 룰을 μ •ν–ˆλ‹€. 이젠 ν•¨κ»˜ λ£° μ •ν•˜λŠ” 것이 μ΅μˆ™ν•΄μ‘Œλ‹€. μ €λ²ˆ ν”„λ‘œμ νŠΈμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ κ°œλ°œμžκ°€ View κ°œλ°œμ— 뢀담을 λŠλ‚€λ‹€κ³  ν–ˆλ‹€. View 개발 집쀑을 도와주기 μœ„ν•΄ 곡톡 업무λ₯Ό λ°±μ—”λ“œμ—μ„œ 주둜 λ§‘μ•˜μ—ˆλ‹€. 이번 ν΄λΌμ΄μ–ΈνŠΈ κ°œλ°œμžλŠ” μ—¬μœ κ°€ μžˆμ–΄ λ³΄μ˜€λ‹€. μ΄λ²ˆμ—” λͺ¨λ‘κ°€ 즐겁고 μ˜κ²¬μ„ 말할 수 μžˆλŠ” λΆ„μœ„κΈ°λ₯Ό λ§Œλ“€ 수 μžˆκ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 혼자 ν•˜λ©΄ 10뢄이면 ν•  수 μžˆλŠ” 일을 ꡳ이(?) μž‘은 일둜 λ‚˜λˆ„μ—ˆλ‹€. ν”„λ‘œμ νŠΈμ— ν•¨κ»˜ ν•œλ‹€λŠ” μœ λŒ€κ΄€κ³„λ₯Ό μŒ“λŠ”κ²Œ κ°€μž₯ μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν–ˆλ‹€. λ˜ν•œ νŒ€μ›μ΄ μ˜κ²¬μ„ λ‚Ό 수 있게 기닀리렀 ν–ˆλ‹€. (많이 κΈ°λ‹€λ ΈλŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ ..γ…Ž) νŒ€μ€ 혼자 ν•˜λŠ” 것이 ν•¨κ»˜ ν•΄λ‚΄λŠ” κ²ƒμž„μ„ μžŠμ§€ 말아야겠닀. Github μ €μž₯μ†Œ : Side Dish Project Repo , Ground Rule 


상황에 λ§žλŠ”(?) κ°„λ‹¨ν•œ μ•„ν‚€ν…μ²˜μ™€ FE/BE 배포

λ°°ν¬ν•˜λŠ” 데 ν”„λ‘œμ νŠΈ μ œμ•½μ‚¬ν•­μ΄ μžˆμ—ˆκ³  λ‹€μŒκ³Ό 같이 κ²°μ •ν–ˆλ‹€.

 

μ„œλ²„ λΉ„μš© 0원

μ„œλ²„ λΉ„μš© 없이 배포해야 ν•œλ‹€. 짧은 μ‹œκ°„ μš΄μ˜ν•œλ‹€. -> AWS 프리티어 ec2λ₯Ό ν™œμš©ν•˜μž (κ΅¬λ‘μ‡ λ‘œ ν•œ λŒ€λ§Œ μ‚¬μš©...? 쿨럭)

 

ν”„λ‘ νŠΈ(React), λ°±μ—”λ“œ λͺ¨λ‘ λ°±μ—”λ“œκ°€ λ°°ν¬ν•œλ‹€. CI/CD λ“± 배포 툴 μ‚¬μš©ν•˜μ§€ 말 것

μ†ŒμŠ€μ½”λ“œκ°€ ν•œ μ €μž₯μ†Œμ— FE / BE λ””λ ‰ν† λ¦¬λ‘œ κ΅¬λΆ„λ˜μ–΄ μžˆλ‹€.

-> μžλ™ν™” 배포 슀크립트λ₯Ό λ§Œλ“€μ–΄μ•Όκ² λ‹€.

-> 디렉토리 λ³„λ‘œ λΉŒλ“œν•œ λ’€, scpλ₯Ό ν™œμš©ν•΄ aws둜 전솑해야겠닀. μ™œ? ν”„λ¦¬ν‹°μ–΄λŠ” μ»΄ν“¨νŒ… νŒŒμ›Œκ°€ λΆ€μ‘±ν•΄μ„œ mysql 돌리고 μžˆλŠ” μƒνƒœμ—μ„œ spring λΉŒλ“œλ„ μ•ˆ λ˜λŠ” 문제 λ°œμƒν•œλ‹€.

-> gradle으둜 spring λΉŒλ“œ 슀크립트 μž‘μ„±

-> ν”„λ‘ νŠΈ λ°°ν¬λŠ” μ–΄λ–»κ²Œ ν•˜μ§€?  -> React Build(npm run build)λ₯Ό ν•˜μ—¬ 정적 파일둜 λ§Œλ“  λ‹€μŒ λ°°ν¬ν•˜λ©΄ λœλ‹€.

-> λ¬Έμ œλŠ” ec2 보낸 λΉŒλ“œ νŒŒμΌμ„ μ‹€ν–‰ν•  μŠ€ν¬λ¦½νŠΈκ°€ λ³„λ„λ‘œ ν•„μš”ν•˜λ‹€...

 

ν”„λ‘ νŠΈ μ½”λ“œλŠ” μŠ€ν”„λ§ staticμ—μ„œ 정적 μ „μ†‘ν•˜μ§€ 말 것

-> Nginx둜 μ„œλ²„λ₯Ό λ§Œλ“€κ³  build ν•œ react ν”„λ‘œμ νŠΈλ₯Ό μ „μ†‘ν•˜μž.

-> μ΄λ•Œ λ°±μ—”λ“œ μ„œλ²„μ™€ ν”„λ‘ νŠΈ μ„œλ²„ κ°„μ˜ CORS λ¬Έμ œκ°€ λ°œμƒν•˜λ‹ˆ λ°±μ—”λ“œμ—μ„œ CORS 섀정이 ν•„μš”ν•˜λ‹€. (λ‚˜λ΄„μ˜ cors, SOPλ₯Ό λͺ¨λ₯΄κ³ μ„ ...)

 

둜그인 Oauth2.0(Github)을 μœ„ν•œ Spring security μ‚¬μš©ν•˜μ§€ 말 것

-> 직접 μ„Έμ…˜ ν•˜μž

 

μ•„μ£Ό κ°„λž΅ν•œ μ•„ν‚€ν…μ²˜κ°€ κ·Έλ €μ‘Œλ‹€. 프리티어 EC2 ν•˜λ‚˜μ— μŠ€ν”„λ§, nginx, mysql λ„μš°λŠ” 게 말이 μ•ˆ λ˜μ§€λ§Œ...


λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λΈλ§κ³Ό ERD - 개인적인 생각 + ν˜Έλˆ…μŠ€ λ§ˆμŠ€ν„° 클래슀 

개인적 생각

μ˜ˆλ‘œλΆ€ν„°(?) κ²¬κ³ ν•œ λ°±μ—”λ“œ 섀계λ₯Ό μœ„ν•΄μ„  DB λͺ¨λΈλ§μ΄ ν•„μš”ν•˜λ‹€. (DataBaseκ°€ 먼저인가 도메인이 λ¨Όμ €μΈκ°€λŠ” μž μ‹œ 잊고(사싀 잘 λͺ¨λ₯΄κ² λ‹€))

데이터 뢄석을 ν•˜λ©΄μ„œλ„ ERDλ₯Ό νŒŒμ•…ν•˜λŠ” 것은 맀우 μ€‘μš”ν–ˆλ‹€. ν”„λ‘œλ•νŠΈμ˜ 전체 Data ꡬ쑰λ₯Ό νŒŒμ•…ν•΄μ•Ό μ›ν•˜λŠ” 데이터λ₯Ό μ°Ύκ³ , 뢄석할 수 있기 λ•Œλ¬Έμ΄λ‹€. λ°±μ—”λ“œ κ°œλ°œμ„ μ‹œμž‘ν•˜λ©΄μ„œλ„ λ§ˆμ°¬κ°€μ§€λ‹€. μ§„ν–‰ 쀑인 ν”„λ‘œμ νŠΈκ°€ μžˆλ‹€λ©΄ ERD νŒŒμ•…μ΄ μš°μ„ μˆœμœ„κ°€ λ˜μ–΄μ•Ό ν•œλ‹€. ERD 파일이 λœλ‹€λŠ” 것은 ν•΄λ‹Ή λ„λ©”μΈμ˜ 전체 흐름을 μ•Œ 수 μžˆλ‹€λŠ” λœ»μ΄λ‹€. λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ΄ν•΄ν•œλ‹€λ©΄ κ°œλ°œν•˜λŠ”λ° 어렀움이 없을 것이닀.

μ•„μ˜ˆ μƒˆλ‘œμš΄ κ°œλ°œμ„ μ‹œμž‘ν•΄λ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€. 

 

ν˜Έλˆ…μŠ€ λ§ˆμŠ€ν„° 클래슀 

데이터 베이슀 λͺ¨λΈλ§ 과정은 λ‹€μŒκ³Ό κ°™λ‹€.

1. μš”κ΅¬μ‚¬ν•­ 뢄석 -> μš”κ΅¬μ‚¬ν•­ λΆ„μ„μ„œ

2. κ°œλ…μ  섀계 -> ERD

3. 논리적 섀계 - κ΄€κ³„ν˜• λͺ¨λΈ

4. 물리적 섀계 - SQL

 

3λ²ˆμ„ κΈ°μ€€μœΌλ‘œ 1,2λ²ˆμ€ DBMS에 독립적이고 4λ²ˆμ€ DBMS에 쒅속적인 μž‘μ—…μ΄λ‹€.

 

1. μš”κ΅¬μ‚¬ν•­ 뢄석

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš”κ΅¬μ‚¬ν•­μ„ 데이터 κ΄€μ μ—μ„œ λ°”λΌλ³΄λŠ” 것이닀. μ‚¬μš©μž / 앱이 DB에 μš”κ΅¬ν•˜λŠ” 것은 무엇인지, μ–΄λ–»κ²Œ μ €μž₯ν•  것인가 이닀.

 

2. κ°œλ…μ  섀계 : ERD

- 개체 (Entity) : μ‹€μ œ ν˜„μ‹€μ—μ„œ λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” μ–΄λ–€ 것이닀. μ§μ‚¬κ°ν˜•μœΌλ‘œ ν‘œν˜„λœλ‹€.

- 속성 (Attribute) : 개체λ₯Ό μ„€λͺ…ν•˜λŠ” νŠΉμ„±μ΄λ‹€. νƒ€μ›μœΌλ‘œ ν‘œν˜„λœλ‹€. ν‚€ 속성은 κ°œμ²΄λ§ˆλ‹€ κ³ μœ ν•œ 값을 κ°€μ§€λŠ” 속성이닀. ν‚€ 속성을 λ°‘μ€„λ‘œ ν‘œν˜„ν•˜λ©΄ ν•˜λ‚˜ 이상 쑴재 κ°€λŠ₯ν•˜λ‹€. (μ—¬κΈ°μ„œ λ§ν•˜λŠ” ν‚€ 속성은 PKμ™€λŠ” 쑰금 λ‹€λ₯΄λ‹€.)

- 관계 (Relationship) : κ°œμ²΄κ°€ 개체λ₯Ό μ—°κ²°ν•˜λŠ” 정보이닀. 관계도 속성을 κ°€μ§ˆ 수 μžˆλ‹€. 1:1, 1:N, N:M의 μ„Έ κ°€μ§€ 관계가 μ‘΄μž¬ν•œλ‹€. λ°˜λ“œμ‹œ ν•„μš”ν•œ κ΄€κ³„λŠ” κ²Ήμ€„λ‘œ ν‘œν˜„ν•œλ‹€.

- μ•½κ°œμ²΄μ™€ 식별 관계 : ν‚€κ°€ μ—†λŠ” 개체λ₯Ό 약객체(weak entity)라고 ν•œλ‹€. μ•½κ°œμ²΄μ™€ λΆ€λͺ¨ κ°μ²΄μ™€μ˜ 관계λ₯Ό 식별 관계(identifying relationship)이라고 ν•œλ‹€.

 

좜처 : ERD of a company database — From Fundamentals of Database Systems by Ramez Elmasri, Lecture Slides


πŸ‘ Keep

  • νŒ€μ›κ³Ό 일 λ‚˜λˆ„κΈ°
  • 긍정적인 λ§ν•˜κΈ° e.g. 였~ λ§μ”€ν•˜μ‹  브랜치 μ „λž΅μ΄ μ•„μ£Ό νž™ν•œλ°μš”?

πŸ”₯Problem

  • μ•ˆμ‰¬κ³  계속 μžλ¦¬μ— μ•‰μ•„μžˆμŒ (ν—ˆλ¦¬κ°€ λ„ˆλ¬΄ μ•„ν”„λ‹€)

πŸš’ Try

  • 적어도 ν•œ μ‹œκ°„ λ§ˆλ‹€ μžλ¦¬μ— μΌμ–΄λ‚˜ 슀트레칭 ν•„μˆ˜

λŒ“κΈ€0