π μΌμ± μ²λ μννΈμ¨μ΄ μμΉ΄λ°λ―Έ(SSAFY) 6κΈ° κ³΅ν΅ νλ‘μ νΈ μ°μμ
λͺ¨μ¬BARλ μ¨λΌμΈμΌλ‘ λ§μ£Όλ³΄λ©΄μ μν΅νλ©° μ μ μ¦κΈΈ μ μλ μΈννΈ μ μ리 λͺ¨μ μλΉμ€μ λλ€.
μ§μ μ¬λλ€μ λ§λ ν¨κ» μ μ λ§μκΈ° μ΄λ €μ΄ μμ¦, βλμ μ μ리βλ λΉ λ₯΄κ² μ£Όλͺ©λ°κ³ μμ΅λλ€. μ΄λ κ² λμ μ μ리μ λν μ¬λλ€μ λμ¦κ° μ‘΄μ¬νλλ°, λμ€μ½λ, Webexμ κ°μ μλΉμ€λ€μ λμ μ μλ¦¬λ‘ μ¬μ©νκΈ°μλ λΆμ‘±ν λ©΄μ΄ μμ΅λλ€.
κ·Έλμ μ¨λΌμΈμΌλ‘ μν΅νλ©΄μ μμ£Όλ₯Ό μ¦κΈΈ μ μλ μ μ리 λͺ¨μ/μ κ²μ μλΉμ€μΈ λͺ¨μ¬BARλ₯Ό κΈ°ννκ² λμμ΅λλ€.
-
μ€μκ° νμ λͺ¨μ λ° μ±ν π¬
-
λ€μν μ κ²μ λ° κ±΄λ°° κΈ°λ₯ μ 곡
-
곡κ°λ°©, λΉλ°λ°© μ€μ λ° λ°© ν λ§ μ€μ
-
μ λ ¬, κ²μ, νν° κΈ°λ₯μΌλ‘ λ°© λͺ©λ‘ μ‘°ν
-
κ²μ κ²°κ³Ό κΈ°λ° μ€μ½μ΄ μΈ‘μ λ° μ°μΉμ μ μ β¨
-
νν λ¦¬μΌ μλΉμ€ μ 곡(μ 체 μλΉμ€, κ²μ)
-
νμ¬ μ μ μ€μΈ μ μ μ‘°ν κΈ°λ₯
-
νμμ 보μμ ν΅ν΄ νλ‘ν μ¬μ§ λ° μκΈ°μκ° μΆκ°
-
νμλ³ λ°© μ°Έμ¬λ‘κ·Έ λ° κ·Έλν μ 곡
-
κ²μ μ€μ½μ΄ κΈ°λ°μΌλ‘ top 10 λνΉ κΈ°λ₯ μ 곡
MOYOBAR μλ리μ€λΒ [μμ° μλ리μ€] μμ λ μμΈν λ³΄μ€ μ μμ΅λλ€.
- λͺ¨μ¬λ°(MOYOBAR) μλΉμ€μ λ©μΈ νλ©΄μ λλ€. βμ μ₯νκΈ°β λ²νΌμ ν΄λ¦νλ©΄ λ‘κ·ΈμΈ νμ΄μ§λ‘ λμ΄κ°λλ€.
- λͺ¨μ¬λ° μλΉμ€λ§μ μ체 λ‘κ·ΈμΈ λ° νμκ°μ κΈ°λ₯μ μ 곡ν©λλ€.
- κ°νΈνκ³ λΉ λ₯΄κ² μλΉμ€λ₯Ό μ΄μ©ν μ μλλ‘ μμ λ‘κ·ΈμΈ(ꡬκΈ, μΉ΄μΉ΄μ€) κΈ°λ₯λ ν¨κ» μ 곡νκ³ μμ΅λλ€.
- μ΄λ©μΌ, λλ€μ, ν΄λμ ν λ²νΈ, μμΌ λ± κΈ°λ³Έ νμ μ 보λ₯Ό μ λ ₯ν©λλ€.
- μμ μ μμ£Ό/λ§₯μ£Ό/μμ£Ό μ£Όλ μ 보λ μ λ ₯ν©λλ€.
- λν, λͺ¨μ¬λ° μλΉμ€λ μ μ리 λͺ¨μ/μ κ²μ μλΉμ€μ΄λ―λ‘ μ±μΈ μΈμ¦μ΄ νμν©λλ€. μλ μμΌμ μ λ ₯ν νμ κ°λ¨νκ² λ³ΈμΈμ μΆμλ λμ ν΄λΉνλ λ λ₯Ό λ§μΆλ©΄ μ±μΈ μΈμ¦μ΄ μλ£λ©λλ€.
- λ‘κ·ΈμΈμ μ±κ³΅νλ©΄ λ‘λΉ νμ΄μ§λ‘ μ΄λν©λλ€.
- νμ¬ μ μ μ€μΈ μ μ 리μ€νΈμ λ°© λͺ©λ‘μ λ³Ό μ μμ΅λλ€.
- μΌμͺ½ μλ¨μ βλ°© μμ±β λ²νΌμ ν΄λ¦νμ¬ λ°© μμ±μ μλ£ν μ μμ΅λλ€.
- λ°© μ΄λ¦, μ΅λ μΈμμ μ€μ , λ°© μκ°κΈ, λ°© 곡κ°/λΉκ³΅κ° μ¬λΆ, ν λ§μ¬μ§μ μ νν ν βμμ±νκΈ°β λ²νΌμ ν΄λ¦ν©λλ€.
- λ‘λΉ νμ΄μ§μ μ μ 리μ€νΈμμ μμ μ νλ‘νλΏλ§ μλλΌ λ€λ₯Έ μ¬λμ νλ‘νλ μ‘°νν μ μμ΅λλ€.
- νμμ 보 νλ‘ν νλ©΄μμ ν΄λΉ μ μ μ λ°© μ°Έκ° λ΄μμ κ·Έλνλ‘ νμΈν μ μμ΅λλ€.
- νμ μ 보 νλ‘νμμ ν΄λΉ μ μ μ μ κ²μ λνΉ μ 보 λ° κ²μ μ€μ½μ΄λ₯Ό νμΈν μ μμ΅λλ€.
- λ°© μ μ₯ μ, νλ¨μ μΉ΄λ©λΌμ λ§μ΄ν¬ λ²νΌμ ν΄λ¦νμ¬ μΉ΄λ©λΌ-λ§μ΄ν¬ ON/OFFλ₯Ό μ€μ ν μ μμ΅λλ€.
- λ°© μ μ₯ ν, μ€λ₯Έμͺ½ μλ¨μ λ§₯μ£Ό μμ΄μ½ λ²νΌμ ν΄λ¦νμ¬ κ°μ λ°© μ¬λλ€μκ² κ±΄λ°° μ μμ ν μ μμ΅λλ€.
- λ°© μ μ₯ ν, μΌμͺ½ νλ¨μ ? μμ΄μ½μ ν΄λ¦νμ¬ μλΉμ€ νν 리μΌμ νμΈν μ μμ΅λλ€.
- λν, μ κ²μλ³λ‘λ νν 리μΌμ νμΈν μ μμ΅λλ€.
- λΌμ΄μ΄ κ²μμ νΌμλ§ μ μμ΄λ₯Ό λ°μ§ λͺ»ν λΌμ΄μ΄λ₯Ό μ°Ύμλ΄λ κ²μμ λλ€.
- μ£Όμ΄μ§ 180μ΄ λμ νμλ₯Ό κ±°μ³, λΌμ΄μ΄λΌκ³ μκ°νλ μ¬λμκ² ν¬νν©λλ€.
- ν¬νκ° μ’ λ£λλ©΄ ν¬ν κ²°κ³Όμ λΌμ΄μ΄μ μΉν¨μ¬λΆκ° λμΆλ©λλ€.
- μ λ€μ΄ κ²μμ μ«μλ₯Ό μΆμΈ‘νμ¬, μ λ΅ μ«μλ³΄λ€ ν¬λ©΄ μ π, μμΌλ©΄ λ€μ΄πμ λ°μ μ λ΅μ λ§μΆλ κ²μμ λλ€
- μ£Όμ΄μ§ 10μ΄ λμ λ΅μ μ λ ₯νμ§ μμΌλ©΄, μ°¨λ‘λ λ€μ μ¬λμΌλ‘ λμ΄κ°λλ€
- μ΄μ± κ²μμ μ΄μ±μ΄ μ£Όμ΄μ§κ³ ν΄λΉ μ΄μ±μ λ§λ λ¨μ΄λ₯Ό λ§νλ κ²μμ λλ€
- βWeb Speech APIβ λ₯Ό ν΅ν΄ λ§μ΄ν¬μ λ¨μ΄λ₯Ό λ§νλ©΄, μμ± μΈμμ ν©λλ€
- μ λ ₯λ λ¨μ΄λ βμ°λ¦¬λ§ μ APIβ λ₯Ό ν΅ν΄ μ¬μ μ μλ λ¨μ΄μΈμ§ νλ³νμ¬ μ λ΅ μ¬λΆκ° κ°λ €μ§λλ€
- νλ² μ λ ₯ν λ¨μ΄λ₯Ό λ€μ μ λ ₯ν μμλ μ€λ΅μΌλ‘ μΈμ λ©λλ€.
- IDE: VSCode
- Language: HTML5, javascript, CSS3
- Library: React 17.0.2, SCSS, TypeScript, Axios, Redux, stompjs, sockjs
- Open API: Web Speech API
- Framework: Material-UI
- node.js 16.13.x
- IDE: intellij 2021.3.1
- Lanuage: Java 1.8
- openjdk version "1.8.0_192"
- OpenJDK Runtime Environment (Zulu 8.33.0.1-win64) (build 1.8.0_192-b01)
- OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-win64) (build 25.192-b01, mixed mode)
- 8.0.322-zulu
- Library: JWT, spring-boot-jpa, Spring Security, Stomp
- Open API: SNS λ‘κ·ΈμΈ(kakao, google), μ°λ¦¬λ§ μ
- Framework: SpringBoot 2.4.5
πλ°±μλ νμΌ κ΄λ¦¬
- Mysql μ μμ 보λ application.yml νμΌμμ mysql.ymlνμΌμ μ½λ κ²μΌλ‘ κ΄λ¦¬
- mysql.ymlνμΌμ gitignoreμ μΆκ°
- OpenVidu
MySQL 8.0.28
AWS S3 (Image Server)
AWS EC2
- Ubuntu 20.04 LTS
- Jenkins 2.334
- Nginx 1.18.0
- Docker 20.10.12
- Docker-compose 1.28.5
- νμλ‘ : Notion
- μ½λκ΄λ¦¬: GitLab
- μΌμ κ΄λ¦¬: JIRA
- μμ΄μ΄νλ μ, μνμ€ λ€μ΄μ΄κ·Έλ¨: Figma, Google PPT
- λͺ μΈμ μμ±: SpreadSheets
- νμ : Webex, Mattermost, Discord
- λͺ¨λ κ°λ° μ , Jiraμ μ΄μ λ¨Όμ μμ±ν κ².
- merge νκΈ° μ μ΅μ 1λͺ μ΄μμκ² μ½λ리뷰 λ°μ κ².
Git-Flowμ λ°λ₯Έ λΈλμΉλ₯Ό λΆκΈ°ν©λλ€.
- master
- develop
- feature
{branch_type}/{fe_or_be}/{branch_name-user_name}
ex) feature/fe/login-sh
- IDEμμ μμ± μ
[#Jiraμ΄μλ²νΈ] feat : :sparkles: λ‘κ·ΈμΈ κΈ°λ₯ μΆκ°
- λ‘κ·ΈμΈ ui κ°λ°
- λ‘κ·ΈμΈ κΈ°λ₯ κ°λ°
Close #7
μ²μ κ³΅ν΅ νλ‘μ νΈλ₯Ό μμν λ 6μ£ΌλΌλ κΈ΄ κΈ°κ°κ³Ό 6λͺ μ΄λΌλ λ§μ μΈμμ΄ ν¨κ» νμ νλκ² μ²μμ΄λΌ λ§λ§νμμ΅λλ€. νΉν Reactλ₯Ό μ²μ μ¬μ©νλ©΄μ νλ‘μ νΈ μμ 2μ£Όκ°μ κ°λ³ 곡λΆλ§ νμλλ° νλ‘μ νΈκ° λλ μ§κΈ μκ°ν΄λ³΄λ©΄ κΌ νμν μκ°μ΄μλ κ² κ°μ΅λλ€. μ²μ λ§λ νμλ€μ΄λΌ μ΄μνμλλ° λ§μ΄ μΉν΄μ Έμ νλ‘μ νΈ μ§ννλλ° μμνμ΅λλ€. νλ‘μ νΈλ₯Ό ν΅ν΄ μ μ€μ€λ‘λ λ§μ΄ μ±μ₯νκ³ μλ―Έ μλ μκ°μ΄μμ΅λλ€. λ€μμ κΈ°νκ° λλ€λ©΄ λ€μ νλ² D210νκ³Ό ν¨κ» νλ‘μ νΈλ₯Ό ν΄λ³΄κ³ μΆμ΅λλ€. λͺ¨λλ€ μλ ..
μ νμ μμ νμ μ μ€μμνλμ§ κΉ¨λ«κ² λλ κ²½νμ΄μμ΅λλ€. νμλ€κ³Ό μν΅νλ©° ν΄κ²°ν΄κ°λ κ³Όμ μ΄ μ¦κ±°μ μ΅λλ€. μ²μμ μλ¨Ήν΄μ νμ λ λ§μ΄ν¬ μΌκΈ°κ° λλ €μ λλ° μ§κΈμ μ λ₯Ό μλλ‘ λλ €λ κ·Έλ¬λ €λ νκ² λλ κ² μ¬λ°μμ΅λλ€. λν κ°μΈμ μΌλ‘ μ§νν λμλ ꡬνμ λͺ©μ μ λλ©΄ 체κ³κ° μ μ μκ³ , 체κ³λ₯Ό μΈμ°λ €λ€ 보면 ꡬνμ΄ λ¦μ΄μ§λ μ¬μ΄μμ κ· νμ λ§μΆλ μ°μ΅μ ννλ‘μ νΈλ₯Ό μ§ννλ©° νμλ€κ³Ό ν¨κ» ν μ μμ΄ λ§μ λμμ΄ λμμ΅λλ€. λ°±μλ κ°λ°μ νλ©΄μ OAuth, JWT, WebRTC, Socket λ±μ λν΄ κ³΅λΆν μ μκ² λμ΄ μ μ΅ν κ²½νμ΄μμ΅λλ€. κ°μ’ μ€λ₯λ€μ μ§μ ν΄κ²°νλ©΄μ λ°±μλ κ°λ°μ λν κ°λ μ μ’ λ μ΅ν μ μμλ κ³κΈ°κ° λμμ΅λλ€. μ΄μ κ²½νμ΄ νμ¬μ νλ‘μ νΈμ λ§μ λμμ΄ λμλ κ²μ²λΌ MOYOBAR νλ‘μ νΈ κ²½νμ΄ μμΌλ‘μ κ°λ°μ μμ΄ ν° λμμ΄ λ κ² κ°μ΅λλ€. κ·Έλ¦¬κ³ λ°°ν¬λ λ무 μ΄λ ΅μ΅λλ€!
νμ μ²μ ν΄λ³΄λ νλ‘μ νΈμλλ°, νμ λͺ¨λ λ¬΄μ¨ μΌμ΄λ λ³ΈμΈμ΄ νμκ² λ€κ³ νμλ μ κ·Ήμ μΈ λͺ¨μ΅μ ν° μκ·Ήμ΄ λμμ΅λλ€. 짧μ κΈ°κ°μ΄μμ§λ§ λ§μ κ²μ 곡λΆν μ μμμ΅λλ€. νλ‘ νΈμλλ₯Ό 맑μμ§λ§ 리μ‘νΈ, CSS λͺ¨λ μμ§ λ―Έμν΄ κ΅¬μν λλ‘ μμ λ‘κ² κ΅¬νν μ μμ΄μ μμ¬μ κ³ νλ‘μ νΈλ₯Ό κ±°μΉλ©° μ±μ₯ν΄ λκ°μΌ ν κ² κ°μ΅λλ€. λ°±μλ μͺ½μ μμ λ°°κ²½μ§μμ΄ μμ΄ νλ‘ νΈ, λ°± μ λ°μ μμ°λ₯΄λ νμ΅λ λ³νν΄μΌ ν λ―ν©λλ€. 무μλ³΄λ€ κ²°κ³Όλ¬Όμ΄ μμνλ λλ‘ λͺ¨λ ꡬνμ΄ λμ΄ μμΌλ‘μ νλ‘μ νΈμλ ν° μμ κ°μ΄ λ κ² κ°μ΅λλ€.
μλ² λ°°ν¬λ₯Ό ν΄λ³΄λ©΄μ μ λ컀μ μ ν¨μ€κ° μ λ§μ΄ μ°μ΄λμ§ κ·Έλ¦¬κ³ μ€μ λ°°ν¬ μμ μ΄λ€ λ¬Έμ κ° μλμ§μ λν΄ μ§μ κ²½νν΄ λ³Ό μ μμμ΅λλ€. Git, Jira μ¬μ©μΌλ‘ νμλ€κ³Ό νμ μ ν΄λ³΄λ©° κ°λ°νλ‘μΈμ€κ° μ΄λ»κ² λμκ°λμ§ νμ ν΄λ³Ό μ μμμ΅λλ€.
μ΄λ² νλ‘μ νΈλ₯Ό ν΅ν΄ κΉ νλ‘μ°, μ§λΌ λ±μ νμ νμ ν΄μ λ°°μ°κ³ νμ©ν΄λ³Ό μ μμ΄μ μ’μκ³ μ’μ νμλ€κ³Ό νλ‘μ νΈμ λ§λ¬΄λ¦¬ κΈ°κ°κΉμ§ λκΉμ§ ν¨κ» ν μ μμ΄μ ν° μκ΄μ΄μμ΅λλ€. νλ‘μ νΈλ₯Ό μ§ννλ©΄μ κΈ°ν λ¨κ³μμ κ°λ° λ¨κ³κΉμ§ κ³ λ €νμ¬ μ΅λν ꡬ체μ μΌλ‘ κΈ°ννλ κ²μ μ€μμ±μ κΉ¨λ«κ² λμκ³ μ¬μ©μ μ μ₯μμ μκ°νλ©΄μ λ‘μ§μ΄λ UI/UXλ₯Ό ꡬμ±ν΄μΌνλ€λ κ²μ λ°°μΈ μ μμμ΅λλ€. λν, μ΄λ²μ λ°±μλ ν¬μ§μ μ 맑μΌλ©΄μ Spring bootμ JWT, Spring security λ±μ νμ©νλλ° μμ§ λΆμ‘±ν μ μ΄ λ§μ μ¬λ¬ μ°μ¬κ³‘μ μ κ²ͺμκ³ μκ°λ§νΌ λΉ λ₯΄κ² κΈ°μ μ μ΅λνκ³ μ μ©νμ§ λͺ»ν΄μ κ°μΈμ μΌλ‘ μμ¬μμ΄ μμλ κ² κ°μ΅λλ€. μμΌλ‘λ νλ‘μ νΈ μμ μ μ 미리 νλ‘μ νΈμμ μ¬μ©λ κΈ°μ μ€νμ΄λ κ΄λ ¨ μ§μμ μ΅λν΄λμ΄ λ³΄λ€ λΉ λ₯΄κ³ μ ννκ² κ°λ°μ μ°Έμ¬ν μ μλλ‘ νκ³ , λ°±μλ ν¬μ§μ μΌλ‘μ Spring bootμ λν΄ λ μ¬λμκ² κ³΅λΆν΄μΌκ² λ€κ³ μκ°νμ΅λλ€. λν, CI/CDμ λν΄μλ 곡λΆνμ¬ λ€μλΆν°λ μΈνλΌ κ΅¬μΆμλ μ κ·Ήμ μΌλ‘ μ°Έμ¬ν μ μλλ‘ ν΄μΌκ² λ€κ³ μκ°νμ΅λλ€. λ§μ§λ§μΌλ‘, νλ‘μ νΈ κΈ°ν-μ€κ³-κ°λ°-ν μ€ν -λ°°ν¬κΉμ§ μ΄ λ§μ μΌλ€μ ν¨κ» ν΄λλ€λ κ²μ΄ μ λ§ λ―ΏκΈ°μ§ μκ³ νλ‘μ νΈλ₯Ό 무μ¬ν λλ§μΉκ² λμ΄ λΏλ―ν©λλ€!! 6μ£ΌλΌλ 짧μ κΈ°κ°λμμ λ°μ΄λμ νμλ€ λλΆμ μ λ§μ λ§ λ§μ΄ λ°°μ°κ³ μ±μ₯ν μ μλ μ’μ κ²½νμ΄μλ κ² κ°μ΅λλ€. λͺ¨λ λ무 μκ³ λ§μΌμ ¨κ³ λͺ¨μ¬λ° νμ΄ν ~!! π
νμΈ΅ λ μ κ·Έλ μ΄λ νλ‘ νΈμλ κΈ°μ μ€νμ΄ μμμ΅λλ€. Reactμ Typescriptλ₯Ό μ€μ€λ‘ 곡λΆνκ³ λ°λ‘ νλ‘μ νΈμ μ μ©νλ κ³Όμ μ ν΅ν΄ κ°λ°μλ‘μ νμΈ΅ λ μ±μ₯νμμ΅λλ€. λν openVidu λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νμ¬ Web RTC λΆμΌμ νλ‘μ νΈλ₯Ό μννλ©΄μ, μλ‘μ΄ λΆμΌμ νλ‘μ νΈλ₯Ό νλ κ²μ ν₯λ―Έλ₯Ό λκΌμ΅λλ€. κ°λ°μλ‘μ μμΌλ‘ λ§λ λ€μν νλ‘μ νΈμμ μλ‘μ΄ λΆμΌμ ν΄λ³΄μ§ λͺ»ν μμν λΆμΌμλ λμ ν μ μλ μμ κ°μ κΈΈλ μ΅λλ€.
νμ Git Flow λ°©μμ νμ κ³Όμ μ ν΅ν΄ νλ‘μ νΈλ₯Ό κ΄λ¦¬νλ©΄μ, νμ λ₯λ ₯μ΄ νμΈ΅ λ μ±μ₯νμμ΅λλ€. λΏλ§ μλλΌ Jiraλ₯Ό νμ©ν μ€νλ¦°νΈλ₯Ό κ΄λ¦¬νκ³ , κ°μ ν λΏλ§ μλ μ 체 νλ‘μ νΈμ μ§νμν©μ λ³Ό μ μλ μμΌλ₯Ό κΈΈλ μ΅λλ€. μμΌλ‘ μννκ² λ λ€μν νλ‘μ νΈμ κ°μ νμλ€κ³Όμ μμ¬μν΅μ΄ νμΈ΅ λ μννκ² μ§νλ μ μλ€κ³ μμ νκ² λμμ΅λλ€.