Skip to content

๐Ÿซ ํ•™์ƒ๊ณผ ํ•™๋ถ€๋ชจ, ๋ด‰์‚ฌ์ž ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋น„๋Œ€๋ฉด ๋ฐฉ๊ณผํ›„ ์›น ์„œ๋น„์Šค | ์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ(SSAFY) ๊ณตํ†ต ํ”„๋กœ์ ํŠธ

Notifications You must be signed in to change notification settings

LeeHwayeon/Bangwawo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


๋ฐฉ๊ณผ์›Œ : Banggwawo

๐Ÿ† ์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ 2ํ•™๊ธฐ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ ๋Œ€์ „ 2๋ฐ˜ ์šฐ์ˆ˜์ƒ

๐Ÿ’ก ๊ฐœ์š”

  • ๋ฐฉ๊ณผํ›„์— ํ˜ผ์ž ์žˆ๋Š” ํ•™์ƒ๋“ค์˜ ๊ณ์„ ์ง€์ผœ์ค„ ๋น„๋Œ€๋ฉด ๋ฐฉ๊ณผํ›„ ํ™œ๋™ ์„œ๋น„์Šค
  • ์„œ๋น„์Šค ๋ช… : ๋ฐฉ๊ณผ์›Œ

๐Ÿ’ญ Background

์ฝ”๋กœ๋‚˜19๋กœ ์ธํ•ด ๋น„๋Œ€๋ฉด ์ˆ˜์—…์œผ๋กœ ์ „ํ™˜๋˜๋ฉด์„œ ๋ฐฉ๊ณผํ›„ ์ˆ˜์—… ์šด์˜์ด ์–ด๋ ค์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋Œ€๋ฉด์œผ๋กœ ์ „ํ™˜๋œ ํ˜„์žฌ์—๋„ ์—ฌ์ „ํžˆ ๋ฐฉ๊ณผํ›„ ์ˆ˜์—…์„ ์šด์˜ํ•˜์ง€ ์•Š๋Š” ํ•™๊ต๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์•„์ด๋“ค์€ ๋ฐฉ๊ณผํ›„์— ํ˜ผ์ž ์ง‘์— ์žˆ๋Š” ์‹œ๊ฐ„์ด ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค.

๋งž๋ฒŒ์ด ๋ถ€๋ถ€๋Š” ์•„์ด์˜ ๋ฐฉ๊ณผํ›„ ์‹œ๊ฐ„์„ ์‚ฌ๊ต์œก์œผ๋กœ๋งŒ ๊ด€๋ฆฌํ•˜๊ธฐ์— ๋ถ€๋‹ด์ด ์ปค ๋ฐฉ๊ณผํ›„ ์ˆ˜์—…์„ ์„ ํ˜ธํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ฐฉ๊ณผํ›„ ์ˆ˜์—… ์šด์˜์ด ์–ด๋ ค์›Œ์ง€๋ฉด์„œ ๋งž๋ฒŒ์ด ๋ถ€๋ถ€๊ฐ€ ๋ถ€๋‹ดํ•  ๋Œ๋ด„ ๊ณต๋ฐฑ์ด ์ปค์ง„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฝ”๋กœ๋‚˜19๋กœ ๋Œ€๋ฉด๋ด‰์‚ฌ์˜ ๊ธฐํšŒ๊ฐ€ ์ค„์–ด ๋น„๋Œ€๋ฉด ๋ด‰์‚ฌ๋ฅผ ํฌ๋งํ•˜๋Š” ๋ด‰์‚ฌ์ž๋“ค์ด ๋งŽ์•„์ง€๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ €ํฌ๋Š” ํ•™์ƒ, ํ•™๋ถ€๋ชจ, ๋ด‰์‚ฌ์ž๋ฅผ ์—ฐ๊ฒฐํ•ด์ค„ ๋น„๋Œ€๋ฉด ๋ฐฉ๊ณผํ›„ ํ”Œ๋žซํผ ๋ฐฉ๊ณผ์›Œ๋ฅผ ์ œ์ž‘ํ•˜๊ฒŒ ๋์Šต๋‹ˆ๋‹ค.

๐ŸŽฏ Target

  • ์•„์ด๊ฐ€ ์žˆ๋Š” ๋งž๋ฒŒ์ด ๋ฐ ์ €์†Œ๋“์ธต ๊ฐ€๊ตฌ
  • ์žฌ๋Šฅ๊ธฐ๋ถ€ ๋ฐ ๋ด‰์‚ฌํ™œ๋™์„ ์›ํ•˜๋Š” ์ž์›๋ด‰์‚ฌ์ž

๐Ÿ”‘ Key benefits

  1. ํ•™์ƒ ํ˜ผ์ž ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

  2. ๋ฐฉ๊ณผํ›„ ํ™œ๋™์˜ ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ

    โ†’ ํ™œ๋™์ด ๋๋‚˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ•™๋ถ€๋ชจ์—๊ฒŒ ์ „์†กํ•ด ์ˆ˜์—…์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ ๊ฐ€๋Šฅ

  3. ๋ด‰์‚ฌ์ž์—๊ฒŒ ์žฌ๋Šฅ๊ธฐ๋ถ€ ๋ฐ ๋ด‰์‚ฌํ™œ๋™ ๊ธฐํšŒ ์ œ๊ณต

  4. ์ž์›๋ด‰์‚ฌํฌํ„ธ๊ณผ ์—ฐ๊ณ„๋ฅผ ํ†ตํ•ด ๋ด‰์‚ฌ์‹œ๊ฐ„ ์ง€๊ธ‰์„ ํ†ตํ•œ ๋ด‰์‚ฌ์ž ํ™•๋ณด ๊ฐ€๋Šฅ

  5. ๋ด‰์‚ฌ์˜ ์„ ์ˆœํ™˜

    โ†’ ๋„์›€์„ ๋ฐ›์€ ํ•™์ƒ๋“ค์ด ์žฌ๋Šฅ๋‚˜๋ˆ”์„ ํ†ตํ•ด ์‚ฌํšŒ์— ํ™˜์›ํ•˜๋Š” ๋‚˜๋ˆ”์˜ ์„ ์ˆœํ™˜ ์œ ๋„ ๊ฐ€๋Šฅ

  6. ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์˜ ์ œ์•ฝ์„ ์—†์•  ๋ด‰์‚ฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ

II. ๊ธฐ์ˆ  ์Šคํƒ

๐Ÿ“‹Management Tool

  • ํ˜•์ƒ ๊ด€๋ฆฌ : Gitlab
  • ์ด์Šˆ ๊ด€๋ฆฌ : Jira
  • ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ : Mattermost, Webex, Notion
  • ๋””์ž์ธ : Figma, Adobe Illustrator, Adobe Photoshop, Adobe After Effect, 3D Maya

๐ŸฆŠ Front End

  • lang: HTML5, CSS3, JAVASCRIPT, Node.js 16.16.0
  • framework: Vue.js (Vue3)
  • style : Sass
  • http: axios
  • formatter : eslint + prettier
  • router : vue-router
  • state management tool : Vuex4
  • Library
    "@kyvg/vue3-notification": "^2.3.6",
    "@tensorflow/tfjs-node": "^3.19.0",
    "@vue/cli-plugin-router": "^5.0.8",
    "@vue/cli-plugin-vuex": "^5.0.8",
    "@vueuse/core": "^9.1.0",
    "aos": "^3.0.0-beta.6",
    "axios": "^0.27.2",
    "canvas": "^2.9.3",
    "chart.js": "^3.9.1",
    "core-js": "^3.8.3",
    "eslint-config-prettier": "^8.5.0",
    "eslint-plugin-prettier": "^4.2.1",
    "face-api.js": "^0.22.2",
    "jwt-decode": "^3.1.2",
    "moment": "^2.29.4",
    "openvidu-browser": "^2.22.0",
    "sass-loader": "^13.0.2",
    "socket.io-client": "^4.5.1",
    "sockjs-client": "^1.6.1",
    "swiper": "^8.3.1",
    "three": "^0.143.0",
    "v-calendar": "^3.0.0-alpha.8",
    "vue": "^3.2.13",
    "vue-accessible-color-picker": "^4.0.3",
    "vue-awesome-swiper": "^5.0.1",
    "vue-calendar-3": "^1.3.52",
    "vue-carousel": "^0.18.0",
    "vue-chartjs": "^4.1.1",
    "vue-router": "^4.0.13",
    "[vue-socket.io](http://vue-socket.io/)": "^3.0.10",
    "vuex": "^4.0.2",
    "vuex-persistedstate": "^4.1.0",
    "webstomp-client": "^1.2.6"
    "eslint": "^7.32.0",
    "eslint-plugin-vue": "^8.0.3",
    "node-sass": "^7.0.1"
  • API

๐Ÿณ Back End

  • Java open-JDK zulu 8.33.0.1
  • SpringBoot
  • Gradle 7.5
  • Lombok 1.18.24
  • JPA 1.0
  • Hibernate (ORMํ”„๋ ˆ์ž„์›Œํฌ)
  • Swagger

๐Ÿ—‚๏ธ DB

  • MySQL 8.0.29

๐ŸŒ Server

  • https (TLS 1.0)
  • Ubuntu 20.0.4
  • Nginx 1.18.0
  • PuTTY 0.77
  • Docker 20.10.17

๐Ÿ”จ IDE

  • IntelliJ 2022.1.3
  • MySQL Workbench 8.0.29
  • VSCode 1.69.2

๊ธฐ์ˆ  ์†Œ๊ฐœ

1. WebRTC

image

WebRTC

WebRTC(Web Real-Time Communication)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์— ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๋„์›€ ์—†์ด ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ API์ด๋‹ค.
W3C์—์„œ ์ œ์‹œ๋œ ์ดˆ์•ˆ์ด๋ฉฐ, ์Œ์„ฑ ํ†ตํ™”, ์˜์ƒ ํ†ตํ™”, P2P ํŒŒ์ผ ๊ณต์œ  ๋“ฑ์œผ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

image

Openvidu

WebRTC๋ฅผ ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ˜ธํ™˜์„ฑ์ด ๋†’์€ openvidu๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

2.Web Socket

image

์›น์†Œ์ผ“(WebSocket)

์›น์†Œ์ผ“์€ ํ•˜๋‚˜์˜ TCP ์ ‘์†์— ์ „์ด์ค‘ ํ†ต์‹  ์ฑ„๋„์„ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ์€ 2011๋…„ IETF์— ์˜ํ•ด RFC 6455๋กœ ํ‘œ์ค€ํ™”๋˜์—ˆ์œผ๋ฉฐ ์›น IDL์˜ ์›น์†Œ์ผ“ API๋Š” W3C์— ์˜ํ•ด ํ‘œ์ค€ํ™”๋˜๊ณ  ์žˆ๋‹ค. (์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : http://www.secmem.org/blog/2019/08/17/websocket-socketio/)

์ผ๋ฐ˜์ ์ธ Ajax ํ†ต์‹ ๊ณผ ๋‹ค๋ฅด๊ฒŒ, ํŠน์ • end point๋ฅผ ๊ตฌ๋…ํ•˜๋ฉด ์ข…๋‹จ์ง€์ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ํ†ต์‹ ์„ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ค์‹œ๊ฐ„ ์†Œํ†ต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…๋“ฑ์— ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

stomp.js

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด WebSocket์„ ํ†ตํ•ด STOMP ๋ธŒ๋กœ์ปค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“  ํ˜„์žฌ ํ”„๋กœํ† ์ฝœ ๋ณ€ํ˜•์„ ํฌํ•จํ•˜์—ฌ ์™„์ „ํ•œ STOMP ์‚ฌ์–‘์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฉ”์‹œ์ง• ๋ธŒ๋กœ์ปค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ WebSocket์„ ํ†ตํ•ด STOMP ๋ฐ STOMP๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

3. face API

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

image

4. Web Speech API

์›น ์Œ์„ฑ API๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์Œ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Web Speech API๋Š” SpeechSynthesis(ํ…์ŠคํŠธ ์Œ์„ฑ ๋ณ€ํ™˜) ๋ฐ SpeechRecognition(๋น„๋™๊ธฐ ์Œ์„ฑ ์ธ์‹ )์˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ ๋ฉ๋‹ˆ๋‹ค.

5. three.js

3์ฐจ์› ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•œ js library์ž…๋‹ˆ๋‹ค.
https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene

III. ์ฃผ์š” ์„œ๋น„์Šค ํ™”๋ฉด

  • ์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€ ์˜จ๋ณด๋”ฉ

  • ์ˆ˜์—…

Untitled

  • ๋น„๋ฐ€์นœ๊ตฌ (์ƒ๋‹ด)

Untitled

  • ๋งˆ์ดํŽ˜์ด์ง€

๋งˆ์ดํŽ˜์ด์ง€์บก ๋งˆ์ดํŽ˜์ด์ง€์บก์ณ

์ž์„ธํ•œ ์„œ๋น„์Šค ํ™”๋ฉด์€ ์—ฌ๊ธฐ๋กœ!

IV. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰

ํ”„๋กœ์ ํŠธ๋Š” ์˜จ+์˜คํ”„๋ผ์ธ ๋ณ‘ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๋ฐฉ์‹์€ agail ์ด๊ณ  jira๋ฅผ ์ด์šฉํ•˜์—ฌ ์Šคํ”„๋ฆฐํŠธ ๊ด€๋ฆฌ, Notion์„ ์ด์šฉํ•˜์—ฌ ์ž๋ฃŒ ๊ณต์œ  ๋ฐ ์•„์นด์ด๋ธŒ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Git Flow

Untitled 3

Jira

Notion

Untitled 9

V. ๋ฐฐํฌ

์„œ๋ฒ„๋Š” AWS EC2 ubuntu๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1. docker

  • openvidu ์„œ๋ฒ„ : 8443
  • ์„œ๋น„์Šค ํฌํŠธ ๋ฒˆํ˜ธ : 443
  • ๋ฐฑ์—”๋“œ ํฌํŠธ ๋ฒˆํ˜ธ : 8081

2. How to

  1. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ํ›„ ์„œ๋ฒ„์— ์ด๋™
  2. ์‹คํ–‰
    1. (๋ฐฑ์—”๋“œ) DockerํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ docker buildํ›„ start
    2. (ํ”„๋ก ํŠธ) distํŒŒ์ผ์„ ๊ฒฝ๋กœ (/var/www)์— ์ด๋™ ํ›„ nginx restart

์„œ๋ฒ„๋Š” letsencrypt๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ssl ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

VI. UI/UX

figma๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋น„์Šค์˜ ์ดˆ์•ˆ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์ธ ๋งŒํผ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๊ฒŒ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋””์ž์ธํ–ˆ์œผ๋ฉฐ ๋ฐฉ๊ณผ์›Œ ๋งˆ์Šค์ฝ”ํŠธ ์บ๋ฆญํ„ฐ ์˜น๋• ๋„ ๊ทธ๋ ธ์Šต๋‹ˆ๋‹ค.

VII. ์†Œ๊ฐ ๋ฐ ๋ฐฐ์šด์ 

  • ํŒ€ ์†Œ๊ฐœ
ํ•œ์œค์„ ๊น€์ˆ˜๋นˆ ์ดํ™”์—ฐ ์œก๋‹ค๋นˆ ๊น€์ง„ํ˜ธ ์ •์ˆ˜๋นˆ
Leader & Frontend Frontend Frontend Backend Backend Backend
ํ”ผ๋“œ๋ฐฑ ๋น„๋ฐ€์นœ๊ตฌ ํ™”์ƒ์ˆ˜์—… User ๊ฒŒ์‹œ๋ฌผ ์ˆ˜์—…
  • ๊น€์ˆ˜๋นˆ

๋ง‰์—ฐํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๋“ค์ด ์‹ค์ œ๋กœ ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ ์–ด๋–ค ์ฃผ์ œ๋ฅผ ํ•ด๋„ ์ž˜ํ–ˆ์„๊ฒƒ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ๋ถ€์กฑํ•œ ์ €๋ฅผ ์ด๋Œ์–ด์ฃผ๋Š” ํŒ€์›๋“ค์ด ์žˆ์–ด์„œ ํ•ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ถ€์กฑํ•œ์ ์ด ๋งŽ์•˜๋Š”๋ฐ ํŒ€์›๋“คํ•œํ…Œ ์ •๋ง ๋งŽ์ด ๋ฐฐ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŠนํ™”๋•Œ๋„ ์ž˜ํ•ด๋ด…์‹œ๋‹น~

  • ๊น€์ง„ํ˜ธ

์ฒ˜์Œ์œผ๋กœ ๋งŽ์€ ์นœ๊ตฌ๋“ค๊ณผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์šฐ๋ฆฌ๋งŒ์˜ ์ƒ๊ฐ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋Š”๊ฒŒ ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 7์ฃผ๋ผ๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด๋‚˜ ์งง์•„ ์ €์Šค์Šค๋กœ๊ฐ€ ์•„์ง๊นŒ์ง€ ๋ฐฐ์šธ์ ์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๋Š”์ ์„ ๋Š๊ฒผ๊ณ  ๋‚˜์ค‘์— ๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ์ง€๊ธˆ ํŒ€์›๋“ค๊ฐ€ ๋‹ค์‹œํ•œ๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ์œก๋‹ค๋นˆ

๋งŽ์€ ์‚ฌ๋žŒ๋“ค๊ณผ ์—ญํ• ์„ ๋‚˜๋ˆ  ์ œ๋Œ€๋กœ ํ•ด๋ณธ ์ฒซ ํ”„๋กœ์ ํŠธ๋ผ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ๊ฒŒ ๋งŽ์•˜๊ณ  ์žฌ๋ฐŒ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ € ๊ด€๋ จ ๋กœ์ง์„ ๋งก์•˜๋Š”๋ฐ security ๊ด€๋ จํ•ด์„œ ๋” ๊ผผ๊ผผํ•˜๊ฒŒ ๊ณต๋ถ€ํ•ด์„œ ๋‹ค์Œํ”„๋กœ์ ํŠธ ๋ณด์™„ํ•ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. 7์ฃผ ์‚ฌ์ด์— ์–ป์–ด๊ฐ„ ๊ฒƒ์ด ๋งŽ์•„ ์ข‹์•˜๊ณ  ๋‹ค๋“ค ๊ณ ์ƒ ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค ํŠนํ™”๋•Œ๋„ ํ™”์ดํŒ… !

  • ์ดํ™”์—ฐ

์ฒ˜์Œ ์‹œ์ž‘ํ• ๋•Œ๋Š” 7์ฃผ์•ˆ์— ๊ณผ์—ฐ ๋‹ค ์™„์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ ์‹ถ์—ˆ๋Š”๋ฐ ํŒ€์›๋“ค๊ณผ ๊ฐ™์ด ๋„์™€๊ฐ€๋ฉฐ ๊ฐœ๋ฐœํ•ด์„œ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊นƒ ํ”Œ๋กœ์šฐ, ์ง€๋ผ ๋“ฑ ํ˜‘์—…ํˆด ์‚ฌ์šฉ์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์—ˆ๊ณ  ํŒ€์›๋“ค์—๊ฒŒ ๋งŽ์ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค! ํŠนํ™”๋•Œ๋„ ์—ด์‹ฌํžˆ ํ•˜์ž ๐Ÿ’ช

  • ์ •์ˆ˜๋นˆ

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

  • ํ•œ์œค์„

์ข‹์€ ํŒ€์›๋“ค๊ณผ ์ข‹์€ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์„œ ๋œป ๊นŠ์€ 7์ฃผ์˜€์Šต๋‹ˆ๋‹ค. ํŒ€์žฅ์œผ๋กœ์จ ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์•˜์ง€๋งŒ ์ž˜ ๋”ฐ๋ผ์™€์ค˜์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋Š๋‚Œ ๊ทธ๋Œ€๋กœ ํŠนํ™” ํ”„๋กœ์ ํŠธ๋•Œ๋„ ๊ฐ™์ด ํž˜๋‚ด๋ณด์ž

About

๐Ÿซ ํ•™์ƒ๊ณผ ํ•™๋ถ€๋ชจ, ๋ด‰์‚ฌ์ž ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋น„๋Œ€๋ฉด ๋ฐฉ๊ณผํ›„ ์›น ์„œ๋น„์Šค | ์‚ผ์„ฑ ์ฒญ๋…„ SW ์•„์นด๋ฐ๋ฏธ(SSAFY) ๊ณตํ†ต ํ”„๋กœ์ ํŠธ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published