Giter Site home page Giter Site logo

pettodoctor's Introduction

README

๐Ÿถ๐Ÿฑ ํŽซํˆฌ๋‹ฅํ„ฐ

Untitled

๋ฐ˜๋ ค๋™๋ฌผ๊ฐ€๊ตฌ 700๋งŒ ์‹œ๋Œ€! ์—ฌ๋Ÿฌ๋ถ„๋“ค์˜ ์†Œ์ค‘ํ•œ ๋ฐ˜๋ ค๋™๋ฌผ์„ ์ง€ํ‚ฌ์ˆ˜ ์žˆ๋Š” ๋ณ‘์› ์„ ํƒ์€ ์–ด๋–ป๊ฒŒ ํ•˜๊ณ  ๊ณ„์‹ ๊ฐ€์š”? ํŽซํˆฌ๋‹ฅํ„ฐ๋Š” ๋ฐ˜๋ ค๋™๋ฌผ์ด ์ด์ƒ ์ฆ์ƒ์„ ๋ณด์ผ ๋•Œ, ์ง„๋ฃŒ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์ธ์ง€ ํŒ๋‹จํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ณ‘์› ๋ฐฉ๋ฌธ์œผ๋กœ ์ธํ•œ ๋ˆ๊ณผ ์‹œ๊ฐ„์˜ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ ค๋™๋ฌผ ๋น„๋Œ€๋ฉด ์›๊ฒฉ์ง„๋ฃŒ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

  • ๋ณ‘์› ์ฐพ๊ธฐ ๋ฐ์ดํ„ฐ๋Š” https://www.data.go.kr/index.do(๊ณต๊ณต๋ฐ์ดํ„ฐ)๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๊ธฐ๋„ ์ง€์—ญ๊ถŒ์˜ ๋ณ‘์›๋งŒ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‡ ํŽซํˆฌ๋‹ฅํ„ฐ ์†Œ๊ฐœ ๋ฐ ์‹œ์—ฐ ์˜์ƒ ๐Ÿ‘‡

ํŽซํˆฌ๋‹ฅํ„ฐ UCC : https://youtu.be/TdUwbNEi2O8

โœจํŽซํˆฌ๋‹ฅํ„ฐ์˜ ๊ธฐํš์˜๋„

  • ์ฒœ์ฐจ๋งŒ๋ณ„์ธ ๋™๋ฌผ๋ณ‘์› ์ง„๋ฃŒ๋น„๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ณต๊ฐœํ•˜์—ฌ ๋ณ‘์›์„ ์„ ํƒํ•  ๋•Œ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์ค€ ๋งˆ๋ จ
  • ์‹œ๊ฐ„๊ณผ ์ง€๋ฆฌ์  ์ œ์•ฝ์กฐ๊ฑด์— ๋ฒ—์–ด๋‚˜์„œ ์ง„๋ฃŒ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  • ๋ถˆํ•„์š”ํ•œ ์ง„๋ฃŒ๋ฅผ ์ค„์—ฌ ๋ˆ๊ณผ ์‹œ๊ฐ„์˜ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋„๋ก ํ•จ

๐Ÿ™ ํŽซํˆฌ๋‹ฅํ„ฐ ํƒ€๊ฒŸ์ธต

  • ํ‰์†Œ ์ง€๋ณ‘์ด ์žˆ๊ฑฐ๋‚˜ ์‚ฌ์ •์ด ์žˆ์–ด ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐ™์€ ์•ฝ์„ ์ฒ˜๋ฐฉ์„ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๋ฐ˜๋ ค๋™๋ฌผ์˜ ๋ณดํ˜ธ์ž
  • ํฌ๊ท€๋™๋ฌผ๊ณผ ํ•จ๊ป˜ํ•˜๊ณ  ์žˆ์–ด ๊ทผ์ฒ˜ ์ง„๋ฃŒํ•˜๋Š” ๋ณ‘์›์ด ๋งŽ์ง€ ์•Š์•„ ๋ฐฉ๋ฌธ์ด ์–ด๋ ค์šด ๋ณดํ˜ธ์ž
  • ์—ฌ๋Ÿฌ ๋™๋ฌผ๋ณ‘์›์„ ํ•œ๋ˆˆ์— ๋น„๊ตํ•˜๊ณ  ์ฒดํ—˜ํ•˜์—ฌ ํ•ฉ๋ฆฌ์ ์ธ ์„ ํƒ์„ ํ•˜๊ณ ์‹ถ์€ ๋ณดํ˜ธ์ž
  • ์™ธ์ง„๊ณณ์— ์žˆ์–ด ๋ณ‘์›ํ™๋ณด๊ฐ€ ์–ด๋ ต๊ฑฐ๋‚˜ ์˜๋ฃŒ๋ณด๋ณต์ด ๋‘๋ ค์šด ์ˆ˜์˜์‚ฌ

๐Ÿ’ปํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ - [2022.01.10 ~ 2022.02.18]

๐Ÿ‘€ํŽซํˆฌ๋‹ฅํ„ฐ ์„œ๋น„์Šค ํ™”๋ฉด

- ๋ณ‘์› ์˜ˆ์•ฝ ๋ฐ ๊ฒฐ์ œ

Untitled

- ์˜ˆ์•ฝ ์Šน์ธ

Untitled

- ํ™”์ƒ ์ง„๋ฃŒ

Untitled

- ์ง„๋ฃŒ ์™„๋ฃŒ ํ›„ ๋ฆฌ๋ทฐ ์ž‘์„ฑ

Untitled

- ์ฒ˜๋ฐฉ์ „ ์ž‘์„ฑ

Untitled

- ์•ฝ๊ฐ’ ๊ฒฐ์ œ

Untitled

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ํšŒ์›๊ฐ€์ž…์‹œ ์ด๋ฉ”์ผ ์ธ์ฆ
  • ์นด์นด์˜ค ์†Œ์…œ๋กœ๊ทธ์ธ
  • ๋ณ‘์›์ด๋ฆ„, ๋™์ด๋ฆ„์œผ๋กœ ๋™๋ฌผ๋ณ‘์› ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
  • WebRTC๋ฅผ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ํ™”์ƒ์ง„๋ฃŒ/์ƒ๋‹ด
  • ์˜ˆ์•ฝ ์‹œ์Šคํ…œ ๋ฐ ๊ฒฐ์ œ ์‹œ์Šคํ…œ(์นด์นด์˜ค ๊ฐ„ํŽธ๊ฒฐ์ œ)
    • ์˜ˆ์•ฝ ๋ฐ ๊ฒฐ์ œ ์‹ ์ฒญ ํ›„ 3๋ถ„ ์ด๋‚ด ๋ฏธ๊ฒฐ์ œ์‹œ ์ž๋™์ทจ์†Œ
  • ์˜ˆ์•ฝ, ๊ฒฐ์ œ ๊ด€๋ จ ์•Œ๋ฆผ

๐Ÿ–ฅ๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

๐Ÿ–ฑBackend

  • IntelliJ
  • Spring Boot 2.6.3
  • Spring Boot JPA
  • Spring Security
  • MySQL 8.0.26
  • Tomcat 9.0.50
  • JWT(Json Web Token)
  • NodeJS

๐Ÿ–ฑFrontend

  • Create-React-App
  • React 17.02
  • Redux 7.2.6
  • Material-UI 5.x.x
  • React-Dom-Router 6.21
  • Axios 0.25.0

๐Ÿ–ฑ ๊ธฐํƒ€

  • WebRTC
  • Socket IO
  • Docker-Compose
  • KakaoOauth API
  • KakaoPay API
  • KakaoMap API
  • Iamport API
  • JavaMail
  • Daum ์ฃผ์†Œ API

๐Ÿ’ซ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

Untitled

  • NGINX๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ์ด์œ  : WebRTC P2P๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„์™€ ํ”„๋ก ํŠธ ์„œ๋ฒ„๋ฅผ ๊ฐ™์€ ํฌํŠธ ์‚ฌ์šฉ(๋ธŒ๋ผ์šฐ์ € https ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ณธ ํฌํŠธ๊ฐ€ 443 ์ด๊ธฐ ๋•Œ๋ฌธ.)

โœจSSL ์ธ์ฆ์„œ ์ ์šฉ ๋ฐ Dockerize Project

  • Certbot๋ฅผ ์ด์šฉํ•ด ์ธ์ฆ์„œ ํŒŒ์ผ ์ƒ์„ฑ
    • certbot ****์€ Letโ€™s Encrypt ์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๋ฐœ๊ธ‰ ๋ฐ ๊ฐฑ์‹ ์„ ํ•ด์ฃผ๋Š” ๋ด‡ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
    • certbot ๋‹ค์šด๋กœ๋“œ
    • certbot certonly --standalone [-d]
      • domain name๊ณผ email ๋“ฑ๋ก
    • VM ๋‚ด /etc/letsencrypt/live/{domain name}/ ๊ฒฝ๋กœ์— ์ธ์ฆ์„œ ํŒŒ์ผ ์ƒ์„ฑ
  • Dockerize Project
    • docker, docker-compose ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ํŽธ๋ฆฌํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • Dockerfile, docker-compose.yml ์ž‘์„ฑ (๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ‘‰๊ถ๊ธˆํ•˜๋ฉด ์—ฌ๊ธฐ๋ด๐Ÿ‘ˆ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ)

โœจ๊ธฐ์ˆ  ํŠน์ด์ 

  • WebRTC ( ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„ ๊ตฌํ˜„)
    • ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์ƒ ํ™”์ƒ ํ™”๋ฉด๋งŒ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— NodeJS๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์˜ˆ์•ฝ ID๋ฅผ ์ฒดํฌํ•˜์—ฌ ํ•ด๋‹น ์˜์‚ฌ์™€ ๊ณ ๊ฐ๊ณผ์˜ ์—ฐ๊ฒฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ
    • Docker, Nginx๋กœ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๋ฅผ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•˜์˜€๊ณ , ํ”„๋ก ํŠธ์™€ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๋Š” Nginx์™€ ํ•จ๊ป˜ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ํšŒ์›๊ฐ€์ž… ์‹œ ์ธ์ฆ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด javax mail์„ ํ†ตํ•ด ๋ฉ”์ผ ์†ก์‹ ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋น„์Šค ํŠน์„ฑ ์ƒ ๋งค์ผ db๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ๊ธฐ์— java scheduler๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋งค์ผ 00์‹œ์— DB๋ฅผ ํ™•์ธ, ๊ฐฑ์‹ ํ•˜๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ๋กœ ์ง„๋ฃŒ ์˜ˆ์•ฝ์ด ์ง„ํ–‰๋˜์ง€ ์•Š๋Š” ์˜ˆ์•ฝ์— ๋Œ€ํ•ด์„  ์ž๋™ ์ทจ์†Œ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง ํ˜‘์—… ํˆด

  • Gitlab
  • Jira
  • Notion
  • Mattermost
  • Webex

๐Ÿ’ญ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜์„œ

Untitled

๐ŸŽจ ํ™”๋ฉด ์„ค๊ณ„์„œ

Untitled

โœจ์ฝ”๋“œ ์ปจ๋ฒค์…˜

Backend
- ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์š”

- ๋ณ€์ˆ˜๋ช…, ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์นด๋ฉœ์ผ€์ด์Šค

- ๋ณ€์ˆ˜๋ช…์€ ์ง๊ด€์ ์œผ๋กœ ๋‚ด์šฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ•์•ฝ์„ ์ง€์–‘ํ•ด์š”
Frontend
- ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์š”

- ๋ณ€์ˆ˜๋ช…, ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ ์นด๋ฉœ์ผ€์ด์Šค

- ๋ณ€์ˆ˜๋ช…์€ ์ง๊ด€์ ์œผ๋กœ ๋‚ด์šฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ•์•ฝ์„ ์ง€์–‘ํ•ด์š”

โœจGit ์ปจ๋ฒค์…˜

feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ปค๋ฐ‹
modify : ๊ธฐ์กด ๊ธฐ๋Šฅ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
fix : ๋ฒ„๊ทธ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
build : ๋นŒ๋“œ ๊ด€๋ จ ํŒŒ์ผ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
chore : ์ฝ”๋“œ ์˜๋ฏธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ (ํฌ๋งท, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ๊ณต๋ฐฑ ๋“ฑ)
ci : CI ๊ด€๋ จ ์„ค์ • ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
docs : ๋ฌธ์„œ ์ˆ˜์ •์— ๋Œ€ํ•œ ์ปค๋ฐ‹
style : ์ฝ”๋“œ ์Šคํƒ€์ผ ํ˜น์€ ํฌ๋งท ๋“ฑ์— ๊ด€ํ•œ ์ปค๋ฐ‹
design : ํ™”๋ฉด ๋””์ž์ธ์— ๊ด€ํ•œ ์ปค๋ฐ‹
refactor : ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•œ ์ปค๋ฐ‹
test : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ปค๋ฐ‹

ex )
Feat: ๊ด€์‹ฌ์ง€์—ญ ์•Œ๋ฆผ ON/OFF ๊ธฐ๋Šฅ ์ถ”๊ฐ€(#123)

์‹œ๊ตฐ๊ตฌ์˜ ์•Œ๋ฆผ์„ ๊ฐ๊ฐ ON/OFF ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ
- opnion0055: ๊ตฌ๋ถ„ ์ฝ”๋“œ

ํ•ด๊ฒฐ: close #123

๐Ÿ’กGit Flow ๋ธŒ๋žœ์น˜ ์ „๋žต

Git Flow model์„ ์‚ฌ์šฉํ•˜๊ณ , Git ๊ธฐ๋ณธ ๋ช…๋ น์–ด ์‚ฌ์šฉํ•œ๋‹ค.

Git Flow ์‚ฌ์šฉ ๋ธŒ๋žœ์น˜

main: ๋ฐฐํฌ
develop: ๊ฐœ๋ฐœ
feat: ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ
modify : ๊ธฐ์กด ๊ธฐ๋Šฅ ์ˆ˜์ •
fix: ๊ธ‰ํ•œ ์—๋Ÿฌ ์ˆ˜์ •

feature ๋ธŒ๋žœ์น˜๊ฐ€ ์™„์„ฑ๋˜๋ฉด develop ๋ธŒ๋žœ์น˜๋กœ merge request๋ฅผ ํ†ตํ•ด mergeํ•œ๋‹ค.

โ‡’ merge request๊ฐ€ ์š”์ฒญ๋˜๋ฉด, ๋ชจ๋“  ํŒ€์›๋“ค์ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ mergeํ•œ๋‹ค.

feature ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ช…๋ช… ๊ทœ์น™

feature/[๊ธฐ๋Šฅ ์ด๋ฆ„]/[frontend or backend]

ex) feature/webrtc/backend

ex) feature/login/frontend

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Jira

์ง€๋ผ๋ฅผ ํ†ตํ•ด ์ผ์ •๋ฐ ์—…๋ฌด ๊ด€๋ฆฌ์™€ ํ˜‘์—…์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ์ฃผ์ผ ๋‹จ์œ„๋กœ ์ง„ํ–‰ํ•˜๋ฉฐ, ์ผ์ฃผ์ผ์˜ ์‹œ์ž‘์ธ ์›”์š”์ผ์— ๊ทธ ์ฃผ์— ์ง„ํ–‰๋˜์–ด์•ผ ํ•  ๋ฒ”์œ„๋ฅผ ์ •ํ•˜๊ณ  ๊ณ„ํš์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

Untitled

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Notion

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ํšŒ์˜, ๊ณต์ง€, ์ผ์ • ๋“ฑ์„ ์›ํŽ˜์ด์ง€ ํ˜‘์—… ํˆด์ธ ๋…ธ์…˜์„ ํ†ตํ•ด ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ปจ๋ฒค์…˜ ๊ทœ์น™, ๋ธŒ๋žœ์น˜ ํ™œ์šฉ ๊ทœ์น™ ๋“ฑ์„ ๋…ธ์…˜์— ๋ช…์‹œํ•ด๋‘์—ˆ๊ณ , ํŒ€ ๋ฏธํŒ…์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ๊ณผ ์งˆ๋ฌธ์„ ๊ธฐ๋กํ•ด ๋‘์–ด ์–ธ์ œ๋“  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Untitled

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Scrum

๋งค์ผ ์•„์นจ 10์‹œ์— ํŒ€ ๋‹จ์œ„๋กœ ํ•  ์ผ์„ 20๋ถ„ ์ •๋„ ๊ณต์œ ํ•˜๊ณ  ๊ฐ์ž ํŒ€์œผ๋กœ ๊ฐ€์„œ ์ง€๋ผ์— ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ์œ ์—ฐํ•œ ๋ถ„์œ„๊ธฐ์—์„œ ์Šคํฌ๋Ÿผ์„ ํ†ตํ•ด์„œ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋Š” ํŒ€ ๋ถ„์œ„๊ธฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

โœจ ER Diagram

Untitled

โœจ EC2 ํฌํŠธ ์ •๋ฆฌ

443 nginx Container( โ€˜/petodoctorโ€™ - ๋ฉ”์ธํŽ˜์ด์ง€, โ€˜/signalingโ€™ - ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„)
8080 8080 โ†’ 8443 - redirect
8443 Tomcat Container
7777 MySQL Container

๐Ÿž ํž˜๋“ค์—ˆ๋˜ ์  ( / ๋ฌธ์ œ / ๋ฒ„๊ทธ )

FE

  • API ํ†ต์‹  ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ : ์ฒ˜์Œ ์—ฌ๋Ÿฌ ๋ฒˆ API ํ†ต์‹ ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝœ๋ฐฑ ์ง€์˜ฅ์„ ๊ฒช๋Š” ์™€์ค‘ async await ๋ฅผ ๋ฐฐ์šฐ๊ฒŒ ๋˜์–ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • React๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ด๋””๊นŒ์ง€ ๋‚˜๋ˆ ์•ผ ํ•˜๋Š”์ง€ ๊ธฐ์ค€์„ ์ œ๋Œ€๋กœ ์žก๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.
  • ๋””์ž์ธ์„ ํ•˜๋Š”๋ฐ MUI๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด ํž˜๋“  ์ ์ด ์žˆ์—ˆ์ง€๋งŒ ํŒ€์›๋“ค ๊ฐ„์˜ ๊ณต์œ ๋ฅผ ํ†ตํ•ด ์™„์„ฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • React๋Š” Vue์™€ ๋‹ฌ๋ฆฌ ์ƒ๊ฐ๋ณด๋‹ค ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์žˆ์—ˆ๊ณ  ์ƒํƒœ(State)๊ด€๋ฆฌ์™€ ๋žœ๋”๋ง ์‚ฌ์ดํด์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.
  • UX๋ฅผ ์œ„ํ•ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” validation, alert ๋“ฑ์ด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์•˜๊ณ  ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด ๋งŽ์•„ ์•„์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

BE

  • ์ง„๋ฃŒ ์ž๋™ ์ทจ์†Œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ : ExecuterService๋กœ async task ์ฒ˜๋ฆฌ ํ•  ๋•Œ,
    • ๊ฐ์ฒดA(implements Runnable)๋ฅผ ๋งŒ๋“ค์–ด execute๋กœ ์‹คํ–‰ํ•˜์˜€์ง€๋งŒ Task๋กœ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๊ธฐ ์œ„ํ•ด ๊ฐ์ฒดB(implements Callable)๋ฅผ ๋งŒ๋“ค์–ด submit์œผ๋กœ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Spring Core๋กœ๋ถ€ํ„ฐ Service ๊ฐ์ฒด๋ฅผ Dependency Injection ๋ฐ›์•„์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— new ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ ์ƒ์„ฑ์ž๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š” CheckTask(implements Callable) ๊ฐ์ฒด๋ฅผ inner class๋กœ ๊ฐ–๋Š” CheckTaskUtil ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋˜ํ•œ ๊ธฐ์กด TreatmentService ๊ฐ์ฒด๋ฅผ ์ฃผ์ž… ๋ฐ›์„ ๊ฒฝ์šฐ circular injection์ด ๋ฐœ์ƒํ•ด์„œ ์ƒˆ๋กœ์šด PaymentService ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • DB์— ์ฟผ๋ฆฌ๋ฌธ์„ ๋‚ ๋ฆด ๋•Œ N+1 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด fetch JOIN์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋‘ ๊ฐœ ์ด์ƒ์˜ 1 : N ๊ด€๊ณ„์˜ ์ž์‹ ํ…Œ์ด๋ธ” ๋‚ด์šฉ์„ fetch JOINํ•  ๋•Œ MultipleBagFetchException ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ๋ฒˆ์˜ fetch JOIN์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ๋’ค ๋‹ค์‹œ ๋‹ค๋ฅธ ์ž์‹ ํ…Œ์ด๋ธ”์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‘๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฌธ์„ ํ™œ์šฉํ•ด ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

๐Ÿ˜ƒ ํŒ€์› ์—ญํ• 

FE : ๊ณฝ๋ช…ํ•„ (JIRA) / ๊น€์ •๋นˆ (UCC/๋””์ž์ธ) / ๋ฐ•๋‹ค์› (ํŒ€์žฅ)

BE : ๊น€๋‘ํšŒ (๋ฐฐํฌ) / ์ •์ง€์šฑ (๋ฐฐํฌ) / ์ด์ค€ํ˜• (๋ฐฐํฌ)

โ‰ํŽซํˆฌ๋‹ฅํ„ฐ์˜ ๊ฐœ๋ฐœ ๊ณผ์ •์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?!

> ํŽซํˆฌ๋‹ฅํ„ฐ ๋…ธ์…˜์—์„œ ์ž์„ธํžˆ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๐ŸฃํŽซํˆฌ๋‹ฅํ„ฐ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋‚œ ํ›„์˜ ๋Š๋‚€์ 

  • 4์ฃผ ์ฐจ์—๋Š” ์™„์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ๋ผ๋Š” ๊ฑฑ์ •์ด ์žˆ์—ˆ๋Š”๋ฐ ๋ชจ๋“  ํŒ€์›๋“ค์ด ์ƒˆ๋ฒฝ๊นŒ์ง€ ํ•  ์ผ์„ ๋‹ค ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๋ฌผ์„ ๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒ˜์Œ ํ•ด๋ณด๋Š” ๋ฐฐํฌ์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋ญ๊ฐ€ ์ž˜๋ชป๋œ ์ง€ ์ฐพ๋Š”๋ฐ๋„ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค์—ˆ์ง€๋งŒ ํ•ด๊ฒฐ์„ ํ–ˆ์„ ๋•Œ ์„ฑ์ทจ๊ฐ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„์ด ๋งŽ์ด ๋ถ€์กฑํ–ˆ๊ณ  ๊ธฐํš ๋‹จ๊ณ„์—์„œ ๊ผผ๊ผผํžˆ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ˆ˜์ •์ด ๋งŽ์•„์ ธ์„œ ๊ธฐํš์˜ ์ค‘์š”์„ฑ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๋Š” ํ˜ผ์ž ๋™๋™ ์•“์ง€ ๋ง๊ณ , ํŒ€์›๊ณผ ์ ๊ทน ์ƒ์˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์ดˆ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์“ฐ๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์จ์•ผ ์ถ”ํ›„์— ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•  ์ผ์ด ์ƒ๊ฒผ์„ ๋•Œ ๋น ๋ฅด๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Œ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
  • ์•ž์œผ๋กœ ์ฝ”๋“œ ์ปจ๋ฒค์…˜์„ ์ƒ์„ธํžˆ ํ•œ๋‹ค๋ฉด ๋ฐฐํฌ ์‹œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๋ฅผ ์‚ฌ์ „์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€์› ๊ฐ„์˜ ์†Œํ†ต๊ณผ ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. erd ๊ตฌ์กฐ๋ฅผ ์งค ๋•Œ ํ”„๋ก ํŠธ๋ถ„๋“ค๊ณผ ์ถฉ๋ถ„ํžˆ ์ƒ์˜๋ฅผ ๊ฑฐ์ณค๋‹ค๋ฉด ์—ฐ๊ฒฐ ๊ณผ์ •์—์„œ ์“ด ์‹œ๊ฐ„์„ ์•„๋‚„ ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ํ•˜์ด๊ณ  ํž˜๋“ค๋‹ค~

pettodoctor's People

Contributors

dawonpark avatar jjw0716 avatar junaem avatar mpcbpro avatar dh73111 avatar maltepoo avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.