μλ΄μ¬μκ² νμν μλ΄κΈ°λ₯μ΄ λ΄κΈ΄ μλ΄
μ§μ μλ΄μ¬μ ν λ‘ μ ν΅ν΄ ꡬννμ΅λλ€.
BE μνκ· | BE κΉλΉλ리 | BE κΉμν | BE κΉλ―Έν | FE μ μ¬ν | FE ν©νΈμ |
- νλ‘μ νΈλͺ : κ·Έλ£Ή λΉλμ€ μλ΄ μλΉμ€(μλ΄)
- μλΉμ€ νΉμ§: μΉμ ν΅ν μλ΄κ³Ό μΌμ μ‘°μ λμ°λ―Έ μλΉμ€
- μ£Όμ κΈ°λ₯
- νμ κ΄λ¦¬
- νμ λ―Έν λ£Έ
- μλ΄μ¬ μΌμ κ΄λ¦¬
- STTλ₯Ό ν΅ν μλ΄λ΄μ© νμ€νΈ νμΌλ‘ μμ±
- μ£Όμ κΈ°μ
- WebRTC
- WebSocket
- JWT Authentication
- REST API
- JPA
- STT
- SSE
- μ°Έμ‘° 리μμ€
- Vuetify 3: λμμΈ μ λ° μ μ©
- Vue Argon Design System: λμμΈ μ λ° μ μ©
- Color Hunt : μ΄λ―Έμ§ μ λ°μ μκΉ μ μ©
- FullCalendar: μΊλ¦°λ μ»΄ν¬λνΈ μ¬μ©
- google stt: ꡬκΈμμ μ 곡νλ stt μ§μ λΌμ΄λΈλ¬λ¦¬. μ΄λ―Έμ§ μΈμ λ° μ€λ²λ μ΄ μμμ νμ©
- λ°°ν¬ νκ²½
- URL: // μΉ μλΉμ€, λλ© νμ΄μ§, νλ‘μ νΈ μκ° λ±μ λ°°ν¬ URL κΈ°μ
- nginx proxy manager: // nginxλ₯Ό κ΄λ¦¬νκ³ μλ°©ν₯ νλ‘μ κ΅¬μ± λ° sslμΈμ¦μ κ°λ΅ν
- docker network : // networkλ₯Ό ν΅ν λ΄λΆλ§ ꡬμ±
- swagger :// urlμ ν΅ν ν΄λΉ κ°μ λΆμνκ³ νλ‘ νΈμ λ°±μλ κ° νμ
- ν©νΈμ : νμ₯, νλ‘ νΈμλ κ°λ°
- μ μ¬ν: νλ‘ νΈμλ κ°λ°
- μνκ·: Web RTC, CI/CD
- κΉμν: λ°±μλ κ°λ°
- κΉλ―Έν: λ°±μλ κ°λ°
- κΉλΉλ리 : λ°±μλ κ°λ°
- Master(main) : μ ν μΆμν μ μλ λΈλμΉ
- Develop : λ€μ λ²μ κ°λ° λΈλμΉ
- {Feature} : κΈ°λ₯μ κ°λ°νλ λΈλμΉ
- Release : λ°°ν¬ λΈλμΉ
JVM(openjdk11)
Node(16.19.0)
Python(3.9)
Vue 3
Spring Boot
DB : MySQL
22 : ssh
80 : nginx(HTTP)
443 : nginx(HTTPS)
3306 β mysql
5000 β backend(+ tomcat)
6379 β radis
8180 β frontend
8280 β stt
9000 β portainer
- PR μ μ©μ λ λ¦° μ¬λμ΄ λ°λ‘ ν μ μλλ‘ μ€μ νμ (μ΅μ 리뷰 1κ° μ΄μ λ¬λ¦¬λ©΄ λ¨Έμ§!)
- λ΄κ° μ§ μ½λλ₯Ό λ€λ₯Έ μ¬λμ΄ μ½κ² μ΄ν΄ν μ μμ΄μΌ νλ€
- νμ΄ μ§ μ½λλ λͺ¨λ νμμ΄ λ€ μ΄ν΄νκ³ μ€λͺ ν μ μμ΄μΌ νλ€
- λ΄κ° μ§ μ½λμ λν΄ νμλ€μ΄ μ§λ¬ΈνλλΌλ λΆννμ§ μκ³ λλ΅ν΄μ£ΌκΈ°
- λ€λ₯Έ μ¬λμ΄ μ§ μ½λλ₯Ό μμ ν΄μΌ ν μΌμ΄ μμ κ²½μ° λ―Έλ¦¬ μ리기
- λ μ νμ§ μ€ νλλ₯Ό μ νν΄μΌ νλ κ²½μ°μλ μ νν μ΄μ λ₯Ό PRμ΄λ Commit μ΄λ νμΈν μ μλ κ³³μ λ°λμ λͺ μνκΈ°
- λͺ¨λ μ견μ κΈμ μ μΈ λ°μ λ¨Όμ νκΈ° (νΈμν΄μ£ΌκΈ°)
- κ°μΈ μΌμ μ΄ μμ λ, ν μ 체μκ² μ΅μ 3μκ° μ μ 곡μ νκΈ°
- μλ¦Όμ λ°μ νμλ μ½μ νμ νκΈ°
- μ± μμ μλμκ² λκΈ°μ§ λ§μ
μλ΄μ¬μ λ΄λ΄μλ νμ λ³κ²½νμ¬ κ°κ° λ‘κ·ΈμΈν μ μμ΅λλ€.
μλ΄μ¬μ λ΄λ΄μλ κ°μ μ λ°λ μ λ ₯ μ λ³΄κ° λ€λ¦ λλ€.
λͺ¨λ κ°μ μ λ ₯ν΄μΌ λ€μμΌλ‘ λμ΄κ° μ μμ΅λλ€.
μλ΄μ¬μ νμ, μ격μ¦, κ²½λ ₯ μ 보λ₯Ό μ λ ₯λ°κ³ , μΈμ¦ μ¬μ§μ ν΅ν΄ κ΄λ¦¬μκ° κ²μ¦ν©λλ€.
μλ΄μ¬μ λ΄λ΄μλ‘ νμ΄μ§κ° ꡬλΆλκΈ° λλ¬Έμ κ°κ° λλμ΄ μ€λͺ νκ² μ΅λλ€.
λ΄λ΄μλ‘ λ‘κ·ΈμΈ νμ λ λνλλ λ©μΈ νμ΄μ§μ λλ€. μ°μΈ‘ μλ¨μ λ²νΌμ ν΄λ¦νλ©΄ μ¬λ¬ νμ΄μ§ λͺ©λ‘μ΄ λνλ©λλ€.
μλλ‘ μ€ν¬λ‘€μ λ΄λ¦¬λ©΄ κ²μλ°μ μλ΄μ¬ 리μ€νΈλ₯Ό λ³Ό μ μμ΅λλ€. μ¬μ§ μλ‘ λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ μλ΄μ¬μ λν κ°λ¨ν μ 보λ₯Ό λ³Ό μ μμ΅λλ€.
μλ΄μ¬ μμΈνμ΄μ§μμλ μλ΄μ¬μ μμΈν μ 보λ₯Ό νμΈν μ μμ΅λλ€. κ²½λ ₯, μκ²©μ¦ λ° μ€μ μλ΄μ λ°μλ λ΄λ΄μμ νκΈ°λ₯Ό ν΅ν΄ μλΉ λ΄λ΄μλΆμ μ νμ λμΈ μ μμ΅λλ€.
μΌμ κ΄λ¦¬, κ³ κ° κ΄λ¦¬ νμ΄ μλ΄μ¬ νμ΄μ§μ μΆκ°λμ΄ μμ΅λλ€.
λ¬Έμ μ
- νμ€ν μμ¬κ²°μ κ³Ό μ 리 λ΄μ© 곡μ κ° λΆμ‘±νλ€.
- μ§νμν©μ νμ€νκ² κ³΅μ ν μ μλ λ¬Έμλ νν μνκ° μ 리λ μλ£κ° νμνμ§ μμλ.
- λ°°ν¬μν©μ κ³ λ €νμ§ λͺ»ν λΌμ΄λΈλ¬λ¦¬λ κΈ°μ μ€νμ μ νμΌλ‘ μΈν΄ νμ€ν κΈ°μ μ΄λ νκ²½μ μΈ λΆλΆμ λͺ νν λ¬Έμ νμ μκΈ°κ° λ¦μ΄μ§ κ² κ°λ€.
- μλ‘μ΄ κΈ°μ νμ΅μ μν μΌμ λ¦μΆ°μ§
- μΌμ κ΄λ¦¬κ° μ μλμλ€.(μ§λΌλ₯Ό ν΅ν΄ κ΄λ¦¬νκΈ°)
- μμ¬μν΅μ΄ μ μλ λΆλΆμ΄ μμλ€.(μ 무 곡μ λ₯Ό μ§λΌλ₯Ό ν΅ν΄μ νμΈν΄μΌνλλ° μ§λΌ κ΄λ¦¬κ° μ μλ λΆλΆμ΄ μμλ€.)
- μ½λ 곡μ μ λ¬Έμλ₯Ό ν΅ν΄ μ§νμν©μ νμΈν μ μμλ€. (μ€μ κ°λ°κ³Ό λ¬Έμμ μ°¨μ΄κ° λ무 λ§μ μ€μ§μ μΌλ‘ κ°λ°μμ λ¬Έμ μ°Έμ‘°νμ§ μμ.)
- μΌμ νμ νλΌλ―Έν° λͺ ννκ² νκΈ°
- api νλΌλ―Έν° νμκ° μ΅μ κ° λ± apiλ₯Ό λͺ ννκ² μ΄ν΄ν μ μλ
- μ€μν κΈ°λ₯μ μ°μ μμλ₯Ό μ ν΄μ ꡬν νμ§ λͺ»ν¨. β μΌμ μ΄ μ 리λμ§ μμμ νμκΈ°λ₯ ꡬν κΈ°λ₯μ΄ νλ‘μ νΈ λ§λ°μ§κΉμ§ λ―Έλ€μ§λ€
- μ΄λ €μ΄ κ²λ€μ λ§μ΄ μ νν λλ. (νμ¬ νμλ€μ κΈ°μ μ€νκ³Ό νλ‘μ νΈ μ§ν κΈ°κ°μ κ³ λ €νμ§ λͺ»ν κΈ°μ μ ν)
- ν΅μ¬ κΈ°λ₯ μμ£Όλ‘ μ°μ κ°λ°ν΄μΌ ν κ².
- ν΄λ ꡬ쑰 λͺ ννκ³ μΈμΈνκ².
- μ΄λ¦ 컨벀μ
κ°μ ν μ
- κΈ°μ μ μ°μ μμ νμ€νκ² μ ν΄μ κ°λ°ν κ².
- μ»€λ° λ¨μ μΈμΈνκ² νκΈ°(κ·Έλ¦¬κ³ μμ£ΌνκΈ°! β μμ²λ μΆ©λμ μμΈμ΄ λ μμλ€.)
- λ³ΈμΈ λ΄λΉ μν (ex. jira) μ λν΄μλ κ°μ μ μΌλ‘ νμλ€μκ² νΈμνκΈ°
- νλ² λ Όμλ μ£Όμ λ λ¬Έμ μ λν΄μλ λͺ ννκ² κ²°λ‘ μ§κ³ 곡μ νκΈ°.
- μ΅μνμ μμ¬μν΅μ μν apiλ¬Έμ λͺ ννκ² μμ±νκΈ°(νμ νλΌλ―Έν°, μ΅μ νλΌλ―Έν° λͺ ννκ² νκΈ°νκΈ°, μ΄λ€ λ°μ΄ν° λ΄λ €μ£Όλ apiμΈμ§ λ¬Έμλ§ λ³΄κ³ νμ ν μ μλλ‘)
- κΈ°μ μ νμ€ν μκ³ μ¬μ©νκΈ°(β μ€λ₯ λ°μ μ μμΈμ νμ ν μ μμ γ γ )
- entity, response, requestκ°μ²΄ λͺ ννκ²
λ°°μ΄μ
- νλ‘μ νΈλ λ°°μ΄μ μ λν λ΄μ©μ κΎΈμ€νκ² κΈ°λ‘νκ³ μ 리νμλ λΆλΆ