๊ตญ๋ด ๋ํ์์ ์ํ ํตํฉ์๊ฐํ ์ ๊ณต์๋น์ค
| ์ฐ๊ณ์ธํฐํ์ด์ค ์ค๊ณ ๋ฐ ์ฐ๊ณ์ํ๊ฒฐ๊ณผ์ |
|---|
2022.5.10
๊ฐ์ฒ๋ํ๊ต ์ปดํจํฐ๊ณตํ๊ณผ
๋ฏผ์ ํ(201735951)
์ค์ ๋ฏผ(201735991)
**
**
๋ชฉ ์ฐจ
1.1 ํตํฉ ์๊ฐํ ์๋น์ค์ ๊ตฌ์ฑ
1.3 A๋ํ(์ก์ ์์คํ )์ ๋ฐ์ดํฐ ๊ตฌ์ฑ(ERD, ํ ์ด๋ธ๋ช ์ธ์)
1.4 B๋ํ(์ก์ ์์คํ )์ ๋ฐ์ดํฐ ๊ตฌ์ฑ(ERD, ํ ์ด๋ธ๋ช ์ธ์)
1.5 C๋ํ(์ก์ ์์คํ )์ ๋ฐ์ดํฐ ๊ตฌ์ฑ(ERD, ํ ์ด๋ธ๋ช ์ธ์)
1.6 ๊ฐ์ฒ์ ๋ณด(์์ ์์คํ )์ ๋ฐ์ดํฐ ๊ตฌ์ฑ(ERD, ํ ์ด๋ธ๋ช ์ธ์)
2. ์ฐ๊ณ ๋ฐ์ดํฐ ๊ตฌ์ฑํ๊ธฐ
2.2 ์ฐ๊ณ์ฝ๋ ๋งคํํ ์ด๋ธ
2.3 ํ์คํํ ์ฝ๋ํ ์ด๋ธ ์ ์
2.4 ์ฐ๊ณ์ธํฐํ์ด์ค์ ์ ์ ๋ฐ ๋ช ์ธ
3.1 ์ฐ๊ณ ๋ฉ์นด๋์ฆ ์ ์
3.2 ์ธํฐํ์ด์ค ํ์ผ(ํ ์ด๋ธ)์ ์
3.3 ์ ์กAPI ์ ์(REST API)
3.4 ์ค๋ฅ์ฝ๋์ ๋ก๊ทธ์ ๋ณด์ ์ ์
3.5 ์ฐ๊ณ ๋ฐ์ดํฐ ๋ณด์์ ์ฉ
4. ๋ด์ธ๋ถ ์ฐ๊ณ๋ชจ๋ ๊ตฌํ
4.3 ๋ฌด๊ฒฐ์ฑ ์นจํด์ ๋์๋ฐฉ์ ์ค๊ณ
4.4 ์ฐ๊ณ ์ฃผ์์์ค์ฝ๋ ๋ฐ ์ค๋ช
4.5 ์ก์์ ํํฉ ๋ชจ๋ํฐ๋งํ๋ฉด ์บก์ณ
5.5 ์ฐ๊ณํ ์คํธ ์ํ๊ฒฐ๊ณผ ๊ฒ์ฆ
ใ๊ฐ์ฒ์ ๋ณด๋ ๋ํ์๋ค์๊ฒ ์๊ฐํ๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ธฐ๋ก ํ์์ผ๋ฉฐ, ํ์ฌ 3๊ฐ๋ํ(A, B, C)๊ณผ ๊ณ์ฝ์ ๋งบ์ด, ๊ฐ ๋ํ์ ํ์ฌDB์ ์ผ๋ถ๋ด์ฉ์ ์ ๊ณตํ๊ธฐ๋ก ํฉ์ํ์๋ค. ํฅํ์ ์ถ๊ฐ๋ก ํตํฉ๋ ๋ํ๋ค์ ์ด ๋ฌธ์(์ธํฐํ์ด์ค ์ค๊ณ์)์ ๊ธฐ์ ๋ ์ฐ๊ณ๋ฐฉ์์ผ๋ก ๊ทธ๋๋ก ๋ฐ๋ฅผ ๊ฒฝ์ฐ์ ์ฐ๊ณ๊ณผ์ ์์์ ๋น์ฉ๊ณผ ๋ ธ๋ ฅ์ ์ค์ผ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ฐ๊ณ๊ณผ์ ์์ ๊ฐ์ธ์ ๋ณด์ ๋ํํ์ ์ ๋ณด๋ฑ ๋ณด์์ ๋ฏผ๊ฐํ ์ ๋ณด๋ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ์ค๋ก์ง ์๊ฐํ์์ฑ์๋ง ํ์ํ ์ต์์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ก ์ค๊ณํ๋ค. ์ด์ ๊ฐ์ ์๊ฐํ ์ ๊ณต์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ ค๋ฉด, 3๊ฐ๋ํ์ ๋ฐ์ดํฐ๊ตฌ์กฐ์ ์์คํ ๊ตฌ์ฑ์ ๋จผ์ ์ดํด๋ณด์
[๊ทธ๋ฆผ 1-1] ์์คํ ๊ตฌ์ฑ๋
์๊ตฌ์ฌํญ1) ๊ฐ ๋ํ์ ์ฌํ์๋ค์๊ฒ๋ง (์ฐ์ธก๊ทธ๋ฆผ์ฒ๋ผ) ์๊ฐํ UI๋ฅผ ์ ๊ณตํ๋ค.
์๊ตฌ์ฌํญ2) ๋ชจ๋ ์ฌ์ฉ์(ํ์)๊ฐ ์์ ์ ์๊ฐํ๋ฅผ ๋ณด๋ ค๋ฉด ๋ฐ๋์ ๋ก๊ทธ์ธํ์ฌ์ผ ํ๋ฉฐ, ์์ด๋์ ์ํธ๋ก ์ธ์ฆํ๋ค.
์๊ตฌ์ฌํญ3) ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ๋ฉด, ๋ํ๋ช ,ํ๊ณผ๋ช ,ํ์๋ช ์ด ์๋์ผ๋ก ์ถ๋ ฅ๋๋๋ก ํ๋ค.
[๊ทธ๋ฆผ 1-2] ํตํฉ์๊ฐํ(ํ์view)
์๊ตฌ์ฌํญ4) ๊ทธ๋ฆผ1-2 ํตํฉ์๊ฐํ UI์์๋ ํด๋น์์ผ/๊ต์์ ํด๋น๊ณผ๋ชฉ๋ช , ๋ด๋น๊ต์๋ช , ๊ฐ์์คํธ์๊ฐ ํ๊ธฐ๋์ด์ผ ํ๋ค.
์๊ตฌ์ฌํญ5) ์๊ฐ์ ์ฒญ๊ธฐ๊ฐ์ด ์ข ๋ฃ๋ ์งํ์ ์ ์ ๊ธฐ๊ฐ์ด ์ข ๋ฃ๋ํ์๋ง ์ค๊ณ์์คํ ๋ชจ๋ํฐ๋ง์ด์์๊ฐ ์ฐ๊ณ๋ชจ๋ํฐ๋ง์๋ฒ๋ฅผ ์ํํ๋ฉด ์ฐ๊ณ๊ฐ ์คํ๋๋๋ก ํ๋ค.
์๊ตฌ์ฌํญ6) ์ฐ๊ณ๊ฐ ์คํ๋ ๋๋ ๋ฐ๋์ ์ฐ๊ณ๊ด๋ฆฌ์ ๋ณด๊ฐ DB์ ์ ์ฅ๋๊ณ ๊ด๋ฆฌ๋์ด์ ธ์ผ ํ๋ค.
์๊ตฌ์ฌํญ7) ๊ฐ ๋ํ ํ์ฌ์๋ฒ์์๋ ๊ฐ์ธ์ ๋ณด(์, ์ด๋ฆ, ์ฃผ๋ฏผ๋ฒํธ, ํ๋ฒ, ์ฌ๋ฒ, ์ํธ)๊ฐ ์ํธํ๋์ด ์์ผ๋ฉฐ, ใ๊ฐ์ฒ์ ๋ณด์ DB์์๋ ํด๋น ๊ฐ์ธ์ ๋ณด๋ค์ ์ํธํํ์ฌ์ผ ํ๋ค.
์๊ตฌ์ฌํญ8) ๋ชจ๋ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ AES192 ๋ก ํต์ผํ์ฌ ์ฌ์ฉํ๋ค.
์๊ตฌ์ฌํญ9) ํ ๊ฐ์ ๋ํ์ด๋ผ๋ ์ฝ๋ํ๊ฐ ๋์ด ์๋ ํญ๋ชฉ์ ์์ ์์คํ ์์๋ ์ฝ๋ํ๊ฐ ๋์ด์ผ ํ๋ค.
์๊ตฌ์ฌํญ10) ์๊ฐํ์๋น์ค๋ฅผ ํ๋๋ฐ ์์ด์ ๊ผญ ํ์ํ ์ ๋ณด๋ง ์ฐ๊ณํ๊ณ ๊ทธ ์ด์ธ์ ์ ๋ณด๋ ๋ณด์์ ์ฐ๊ณํ์ง ์๋๋ค.
์๊ตฌ์ฌํญ11) ์ค๋ฌธ์ง๋ก ํ๋ ์ค๋ฌธ์กฐ์ฌ๋ ์๋ค.
์๊ตฌ์ฌํญ12) ๊ฐ ๋ํ์์๋ ๊ฐ ๋ํDB์ ์ด๋ค ํญ๋ชฉ๋ ์ ๋๋ก ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ์ง ์๋๋ค.
์๊ตฌ์ฌํญ13) ์ฐ๊ณํ์ผํ์์ JSON ํฌ๋งท์ผ๋ก ํ๋ฉฐ, REST API๋ฐฉ์์ผ๋ก ์ฐ๊ณํ๋ค
์๊ตฌ์ฌํญ14) ์ ์ํ 3๊ฐ ๋ํ(A, B, C)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ท๊ฒฉ๊ณผ ๋ด์ฉ์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
์๊ตฌ์ฌํญ15) A๋ํ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ๋ก ๋ก๊ทธ์ ๋ณด์ ์ค๋ฅ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ณ ์์ผ๋ฉฐ, B๋ํ๊ณผ C๋ํ์์๋ ํ์ผํํ๋ก ๋ก๊ทธ์ ๋ณด์ ์ค๋ฅ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋๋ก ํ์ฌ์ผ ํ๋ค.
์๊ตฌ์ฌํญ16) ์ค๊ณ์์คํ ์์์ ์ฐ๊ณ๋ชจ๋ํฐ๋ง ์๋ฒ๋ ๋ก๊ทธ์ ๋ณด์ ์ค๋ฅ์ ๋ณด๋ฅผ ๊ฐ๊ฐ ํ์ผ๋ก ๊ธฐ๋กํ๋ค
์๊ตฌ์ฌํญ17) A๋ํ, B๋ํ, C๋ํ์ ๋ฐ์ดํฐ์ ๋ณด๋ ๊ฐ๊ฐ ๊ทธ๋ฆผ1-3, ๊ทธ๋ฆผ1-4, ๊ทธ๋ฆผ1-5์ ๋์ ์๋ค.
์๊ตฌ์ฌํญ18) ๋ณธ ์์์คํ์ผ์ ์ ๋๋ก ๊นจํธ๋ฆฌ๋ฉด ์๋๋ฉฐ, ๊ทธ์ธ์ ํ์ํ ๊ฒฝ์ฐ ์๊ตฌ์ฌํญ์ ๊ฐ์ ์ ์ํ ์ ์๋ค.
[๊ทธ๋ฆผ 1-3] A๋ํ DB์ ๋ณด
[๊ทธ๋ฆผ 1-4] B๋ํ DB์ ๋ณด
[๊ทธ๋ฆผ 1-5] C๋ํ DB์ ๋ณด
ERD
[๊ทธ๋ฆผ 2-1] A๋ํ ์ด์DB์ ERD
ํ ์ด๋ธ๋ช ์ธ์ ๋ฐ ์ฝ๋์ ์
<A๋ํ ํ ์ด๋ธ ๋ช ์ธ์>
โป Student ํ ์ด๋ธ์ social_security_num ๊ฐ์ ๊ฒฝ์ฐ๋ crypto๋ชจ๋์ ์ฌ์ฉํด hexํํ๋ก ์ ์ฅํ๊ธฐ์ Char(40)์ผ๋ก ๋๋ ธ๋ค.
ERD
[๊ทธ๋ฆผ 2-2] B๋ํ ์ด์DB์ ERD
ํ ์ด๋ธ๋ช ์ธ์ ๋ฐ ์ฝ๋์ ์
<B๋ํ ํ ์ด๋ธ ๋ช ์ธ์>
โป Student ํ ์ด๋ธ์ SS_number๊ฐ์ ๊ฒฝ์ฐ๋ crypto๋ชจ๋์ ์ฌ์ฉํด hexํํ๋ก ์ ์ฅํ๊ธฐ์ Char(40)์ผ๋ก ๋๋ ธ๋ค.
ERD
[๊ทธ๋ฆผ 2-2] C๋ํ ์ด์DB์ ERD
ํ ์ด๋ธ๋ช ์ธ์ ๋ฐ ์ฝ๋์ ์
โป Student ํ ์ด๋ธ์ SS_number๊ฐ์ ๊ฒฝ์ฐ๋ crypto๋ชจ๋์ ์ฌ์ฉํด hexํํ๋ก ์ ์ฅํ๊ธฐ์ Char(40)์ผ๋ก ๋๋ ธ๋ค.
[๊ทธ๋ฆผ 2-4] ๊ฐ์ฒ์ ๋ณด ์ด์DB์ ERD
ํ ์ด๋ธ๋ช ์ธ์ ๋ฐ ์ฝ๋์ ์
<์ฐ๊ณ ๋งคํ ์ฝ๋ ํ์ ๋ฐ์ดํฐ>
<๊ณผ๋ชฉ์ฝ๋ ๋งคํ ํ ์ด๋ธ>
<๊ฐ์์ค ์ฝ๋ ๋งคํ ํ ์ด๋ธ>
<ํ๊ณผ์ฝ๋ ๋งคํ ํ ์ด๋ธ>
<๊ณผ๋ชฉ์ฝ๋ ๋งคํ ํ ์ด๋ธ>
<๊ฐ์์ค ์ฝ๋ ๋งคํ ํ ์ด๋ธ>
<ํ๊ณผ์ฝ๋ ๋งคํ ํ ์ด๋ธ>
<์ฐ๊ณ ์ธํฐํ์ด์ค ์ ์์>
<์ฐ๊ณ ์ธํฐํ์ด์ค ๋ช ์ธ์>
[๊ทธ๋ฆผ 3-1] ์ฐ๊ณ ๋ฉ์ปค๋์ฆ ๊ตฌ์ฑ๋
.
<์ธํฐํ์ด์ค ํ์ผ ์ ์(JSON)>
<ํ์ผ๋ก ๋ก๊ทธ ๊ธฐ๋ก ์ ๊ฒฐ์ ์ฌํญ>
ํ์ผ๋ก๊ทธ ๊ธฐ๋ก์ ์์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์์ฑํ๋ค.
<์ก์ ์์คํ ์ธํฐํ์ด์ค ํ ์ด๋ธ(ํ์ผ) ๋จ์ ๋ก๊ทธ(Log) ํ ์ด๋ธ(ํ์ผ) ๋ ์ด์์(Layout)>
ํ์ผ ๋ก๊ทธ์๋ ๋ค์๊ณผ ๊ฐ์ ํ์ ์์์ผ๋ก ์์ฑํ๋ค.
<๊ฐ ๋ํ API Docs>
<๊ฐ์ฒ์ ๋ณด API Docs>
<์๋ฌ ์ฝ๋ ๊ธฐ์ค ํ ์ด๋ธ>
Npm์ ํตํด crypto๋ชจ๋์ 128bit ์ํธํ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ.
AES192 ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ํค ์์ ์ํด developcrypto Seed๊ฐ๊ณผ salt ํด์ฑ ๊ฐ๊ณผ IV ๋๋ค Seed๊ฐ์ ํตํด ํค๋ฅผ ์์ฑํ ํ 128bit ๋ธ๋ก๋จ์๋ก ์ํธํ๋ฅผ ์คํํ๋ค. ํค ๊ฐ์ .env์ MYPASSWD๊ฐ์ผ๋ก ์ ์ฅํ์ฌ ๊ด๋ฆฌํ๋ค.
์ดํ ์ํธํ๋ ์ ๋ณด๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅ๋๋ค.
๊ฐ์ฒ์ ๋ณด ์ค๊ณ ์์คํ ์์ ๊ฐ์ธ์ ๋ณด ์์ฒญ ์ ๊ฐ ๋ํ์์๋ AES192 ์ํธํ ๋ ๊ฐ์ธ์ ๋ณด๋ฅผ .envํ์ผ๊ณผ
ํจ๊ป ๋ณด๋ด์ค๋ค.
Server : Node.js โ Express (Web Framework)
DB : Server โ Mysql
IDE : VScode-Server (SSH remote)
<winston.js>
Winston ๋ชจ๋์ ์ด์ฉํ ๋ก๊ทธ ๊ธฐ๋ก/๊ด๋ฆฌ
Winston ๋ชจ๋์ ์ด์ฉํ์ฌ ์์์ ์ ์ํ ๋ก๊ทธ ํ์ผ์ ์ ์ ํ๋๋ก info ํ์ผ๊ณผ error ํ์ผ์ .log ํ์ฅ์ ํํ์ ๋ก๊ทธํ์ผ์ ์ ์ฅํ๋ค.
Error ๋ก ์ง์ ๋ ๋ก๊ทธ์ธ ๊ฒฝ์ฐ info ํ์ผ๊ณผ error ํ์ผ์ ๋๋ค ์ ์ฅ๋๋ฉฐ errorํ์ผ์์ ๋ฐ๋ก ๋ณผ ์ ์๋ค.
๋ก๊ทธํ์ผ์ 30์ผ ๋์ ์ ์ฅ์ด ๋๋ฉฐ ๊ทธ ์ดํ์๋ ์๋ก ์ ์ฅ๋๋ค.
<๋ก๊ทธ ํ์ผ ๋๋ ํ ๋ฆฌ>
<๋ก๊ทธํ์ผ ์์>
<crypto.js ํ์ผ>
Crypto ์์ ์ฌ์ฉํ๋ KEY ๊ฐ์ ๊ฒฝ์ฐ .envํ์ผ์ ๋ฐ๋ก ์ ์ฅํ์ฌ ๊ด๋ฆฌํ๋ค.
<ํ์๊ฐ์ ์ ์ฌ์ฉ๋ crypto ๋ชจ๋ ์์>
<๋ก๊ทธ์ธ ์ ์ฌ์ฉ๋ crypto ๋ชจ๋ ์์>
<๊ฐ์ฒ์ ๋ณด ์๋ฒ ์ฝ๋>
๊ฐ์ฒ์ ๋ณด ์๋ฒ์ ์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ์ํธ๋ณ๊ฒฝ, ๋ก๊ทธ์ถ๋ ฅ์ด ์๋ค.
๊ฐ ๋ํ๋ณ ์ฃผ์ ๊ธฐ๋ฅ์ผ๋ก๋ ์ฐ๊ณ๋ฐ์ดํฐ ์ ์กํ๋ Send์ ๊ฐ์ฒ์ ๋ณด์์ ํ์๊ฐ์ ์ ๋ํ์ธ์ฆ์ ํ๋ identify, ๊ทธ๋ฆฌ๊ณ ๋ํ๋ด ์ฝ๋ ๋งคํํ๋ Mapping์ด ์๋ค.
- ํ์๊ฐ์
<ํ์๊ฐ์ ํ๋ฉด>
<์ ๋ ฅ๋ ๋ฏธ์ ๋ ฅ์>
์ ๋ ฅ๋ ๋ฏธ์ ๋ ฅ์ Javascript๋ก ๋ฐ์ดํฐ ์ ์ก์ด ๋ถ๊ฐํ๊ฒ ํ์์ผ๋ฉฐ ํน์ ๋์ ์ ๋ ฅํ๋ผ๊ณ ๊ฒฝ๊ณ ๋ฌธ์ ๋์ด๋ค ํด๋น ์นธ์ด focus๋๋ค.
<๋น๋ฐ๋ฒํธ ์ฒดํฌ๋ ์ค๋ฅ ์>
๋ํ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ์ ์ก์ด ๋ถ๊ฐํ๋ฉฐ ๋น๋ฐ๋ฒํธ ์ฒดํฌ๋์ focus๋๋ค.
<ํ์๊ฐ์ ๊ณผ์ >
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์์ด๋์ @๋ฅผ splitํ์ฌ ๊ฐ ๋ํ์ identify๋ฅผ ์์ฒญํ๋ค. ์์ฒญ๋ฐ์ ๋ํ์ ํ์์ฌ๋ถ๋ฅผ ํ๋จ ํ ํ์์ ๊ธฐ๋ณธ ์ ๋ณด(ํ๋ฒ, ์ด๋ฆ, ํ๊ณผ)๋ฅผ ๊ฐ์ฒ์ ๋ณด ์๋ฒ๋ก ๋ณด๋ด์ค๋ค.
<๋ํ์ identify ์ฝ๋>
๋ํ์ผ๋ก๋ถํฐ ๋ฐ์ ํ์์ ๊ธฐ๋ณธ์ ๋ณด(ํ๋ฒ, ์ด๋ฆ, ํ๊ณผ)๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ ํ ํ์๊ฐ์ ์ ์๋ฃํ๋ค.
- ๋ก๊ทธ์ธ
<๋ก๊ทธ์ธ ํ๋ฉด>
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ ์ ์ธ์ ์ ์์ด๋ ์ ๋ณด์ ํ์์ ํ๋ฒ์ ์ธ์ ์ ์ ์ฅํ๋ค.
๋ํ ์ฌ์ฉ์์ ๋ํ์ ์๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณํ์ฌ ๋ฉ์ธ ํ๋ฉด์ ๋์ด๋ค.
- ๋ฉ์ธ
<๋ฉ์ธํ๋ฉด>
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ๋ฉ์ธํ๋ฉด์๋ ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋ํ, ํ๊ณผ ์ ๋ณด๊ฐ ํ์๋๊ณ , ํด๋น ์ฌ์ฉ์์ ์๊ฐํ๋ฅผ ๋ณด์ฌ์ค๋ค. ์๊ฐํ๋ Javascript๋ก randomColor๋ผ๋ ํจ์๋ฅผ ๋ง๋ค์ด ์๊ฐ์ ์ธ ๋ณํ๋ฅผ ๋ณผ ์ ์๊ฒ ์์ฑํ์๋ค.
<ํน์ ๊ด๋ฆฌ์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ>
ํน์ ๊ด๋ฆฌ์ ํ์์ด ๋ก๊ทธ์ธ ์ ์ธ์ ๊ตฌ๋ถ์ ํตํด ํ๋ฉด ์๋จ์ navbar์ ๊ธฐ์กด์ฌ์ฉ์์๋ ์๋ ์ฐ๊ณ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง ๋ฉ๋ด๊ฐ ์์ฑ๋๋ฉฐ ์ฐ๊ณ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง, ๋ํ ๋ฐ์ดํฐ ์ฐ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ํ ๋ฐ์ดํฐ ์ฐ๋
<๋ํ ๋ฐ์ดํฐ ์ฐ๋ ํ์ด์ง>
๊ฐ ๋ํ ๋ฐ์ดํฐ ์ฐ๋ ๋ฒํผ์ ๋๋ฅด๊ฒ ๋๋ฉด ๊ฐ ๋ํ์ ๋ณ๊ฒฝ๋ ์๊ฐํ ์ ๋ณด๋ฅผ ๋ฐ์์์ ์ ์ฅํ๋ค.
์๊ฐํ์ ๊ฒฝ์ฐ ๊ฐ์ฒ์ ๋ณด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ ๊ฒ์ฆ์ ์งํํ๋๋ฐ ๊ธฐ์กด์ ์๊ฐํ ๋ฐ์ดํฐ์ ์ฐ๊ณ๋ฐ์ดํฐ์ ๋น๊ตํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ ํ๊ฑฐ๋ ๊ทธ๋๋ก ๋์ด์ ๋ฆฌ์์ค ๊ฐ์ ์ค์ธ๋ค.
<์๊ฐํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ชจ๋ scheduleValidation>
<์๊ฐํ ๋ฐ์ดํฐ ๊ฒ์ฆ ํจ์์ฌ์ฉ ๋ฐ ์ธ์ ์์>
๋ชจ๋ ์ฌ์ฉ์ ํด๋น ํจ์์ ์ฝ๋ฐฑ์ด ๋ฆ์ด์ง๊ธฐ ๋๋ฌธ์ ํจ์๋ฅผ Promise ํจํด์ ์ ์ฉํ์ฌ ๋น๋๊ธฐ๋ฅผ ์ ์งํ์๊ณ ํจ์ ์ฌ์ฉ์ ์์ด async ๊ณผ await๋ฅผ ์ฌ์ฉํด์ ํด๋น ์ฝ๋๊ฐ ๋น๋๊ธฐ๋ฅผ ์ ์งํ๋ฉด์ ๋๊ธฐ์ ์ธ ๋ชจ์ต์ ์ฝ๋์คํ์ผ์ ์ ์ฉํ ์ ์๊ฒ ํ์๋ค.
- ๋ก๊ทธ์์
๋ก๊ทธ์์์ navbar์ ๋ก๊ทธ์์ ๋ฒํผ์ ํตํด์ Session Destroy ๊ธฐ๋ฅ์ ํตํด ์์ฝ๊ฒ ๋ก๊ทธ์์ ํ ์ ์๊ฒ ๋ง๋ค์๋ค.
<๋ก๊ทธ์์ ์ฝ๋>
<์ฐ๊ณ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง ํ๋ฉด>
ํน์ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ ์ฐ๊ณ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
์ฐ๊ณ ๋ฐ์ดํฐ ๋ชจ๋ํฐ๋ง ์์คํ ์ winston ๋ชจ๋๋ก ์์คํ ์ ๋ก๊ทธ๋ฅผ .log ํํ์ ํ์ผ๋ก ์ ์ฅํ ํ์ผ์ ์ฝ์ด์ ํ์ด์ง์ ๋ณด์ฌ์ค๋ค.
๋ ์ง ๋ฐ ์๊ฐ, ์ํ, I/F๋ช , ์ฒ๋ฆฌ์ฝ๋, ์ฒ๋ฆฌ๊ฑด์, ์ฑ๊ณต๊ฑด์, ์คํจ๊ฑด์๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ JQuery๋ฅผ ์ด์ฉํ์ฌ ์๊ฐ, ์ํ, I/F๋ช , ์ฒ๋ฆฌ์ฝ๋๋ฅผ ๊ฒ์ํ ์ ์๊ฒ ํ์๋ค.
๋ํ Log List๋ฅผ ๋๋ฅด๋ฉด ํ์ฌ ์กด์ฌํ๋ ๋ก๊ทธํ์ผ์ ์ฐพ์๋ณผ ์ ์์ผ๋ฉฐ, ํด๋น ๋ก๊ทธ๋ฅผ ์ ํํ๋ฉด ํด๋น ๋ด์ฉ์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค.
<์ฒ๋ฆฌ์ฝ๋ ๊ฒ์ํ ๊ฒฐ๊ณผ>
<Log ๋ชฉ๋ก ๋ฒํผ>
<์ฐ๊ณ ๋ฐ์ดํฐ ์ก์์ ํํฉ ์๋ฌ ๋ชจ๋ํฐ๋ง ํ์ด์ง>
์ฐ๊ณ ๋ฐ์ดํฐ ์๋ฌ ๋ชจ๋ํฐ๋ง ํ์ด์ง ๋ํ ์์ ๋ชจ๋ํฐ๋ง ํ์ด์ง์ ๊ธฐ๋ฅ์ ๊ฐ์ผ๋ฉฐ, ์ฐ๊ณ ๋ฐ์ดํฐ ์๋ฌ ๋ชจ๋ํฐ๋ง ํ์ด์ง๋ ๋ ์ง ๋ฐ ์๊ฐ, ์ํ, I/F๋ช , ์ฒ๋ฆฌ์ฝ๋, ์๋ฌ์ฝ๋, ์๋ฌ ์์น๋ฅผ ๋ณผ ์ ์๋ค.
<๋จ๊ณ๋ณ ํ ์คํธ์ ํ ์คํธ ๊ตฌ๊ฐ ๋ฐ ๋ฒ์>
๋จ์ ํ ์คํธ ๊ตฌ๊ฐ์ผ๋ก A๋ํ, B๋ํ, C๋ํ, ๊ฐ์ฒ์ ๋ณด๋ฅผ ๊ฐ ์๋ฒ ๋ณ ์ฐ๊ณ ๋ฐ์ดํฐ ๋ก๋ ๋ฐ ๋ฐ์ดํฐ ์ก์์ ํ ์คํธ๋ฅผ ์งํํ๋ค.
- A๋ํ ๋จ์ ํ ์คํธ ๋ฒ์
- Identify (A๋ํ ํ์ ํ๋ณ) [์ฐ๊ณ ํ ์คํธ]
- Send aunivdata (A๋ํ ํ์ ์ ๋ณด ์ก์ ) [์ฐ๊ณ ํ ์คํธ]
- Mapping (์ก์ ๋ฐ์ดํฐ ๋งคํ)
- B๋ํ ๋จ์ ํ ์คํธ ๋ฒ์
- Identify (B๋ํ ํ์ ํ๋ณ) [์ฐ๊ณ ํ ์คํธ]
- Send bunivdata (B๋ํ ํ์ ์ ๋ณด ์ก์ ) [์ฐ๊ณ ํ ์คํธ]
- Mapping (์ก์ ๋ฐ์ดํฐ ๋งคํ)
- C๋ํ ๋จ์ ํ ์คํธ ๋ฒ์
- Identify (C๋ํ ํ์ ํ๋ณ) [์ฐ๊ณ ํ ์คํธ]
- Send cunivdata (C๋ํ ํ์ ์ ๋ณด ์ก์ ) [์ฐ๊ณ ํ ์คํธ]
- Mapping (์ก์ ๋ฐ์ดํฐ ๋งคํ)
- ๊ฐ์ฒ์ ๋ณด ๋จ์ ํ ์คํธ ๋ฒ์
- Signin (๋ก๊ทธ์ธ) [์ฐ๊ณ ํ ์คํธ]
- Signup (ํ์๊ฐ์ ) [์ฐ๊ณ ํ ์คํธ]
- Pw_change (์ํธ ๋ณ๊ฒฝ)
- Crypto (์ํธํ / ๋ณตํธํ)
- Logsearch (๋ก๊ทธ ๊ธฐ๋ก ๊ด๋ฆฌ)
- Schedule (ํ์ ์๊ฐํ ๊ด๋ฆฌ) [์ฐ๊ณ ํ ์คํธ]
<A๋ํ ๋จ์ํ ์คํธ>
A๋ํ์ ์ ์๋ ์ฝ๋๋ฅผ ๋ฐํ์ผ๋ก ์ค๊ณ์๋ฒ์์ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋งคํํ๋ค.
์ฌ์ฉ๋ Mapping์ผ๋ก MapDepartment_code, MapSubject_code, MapClassroom, MapSubject_Professor, MapProfessor_code๋ก 5๊ฐ์ง๋ฅผ ์ฌ์ฉํ์๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
<B๋ํ ๋จ์ํ ์คํธ>
B๋ํ์ ์ ์๋ ์ฝ๋๋ฅผ ๋ฐํ์ผ๋ก ์ค๊ณ์๋ฒ์์ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋งคํํ๋ค.
์ฌ์ฉ๋ Mapping์ผ๋ก MapSubject_code 1๊ฐ๋ฅผ ์ฌ์ฉํ์๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
<C๋ํ ๋จ์ํ ์คํธ>
C๋ํ์ ์ ์๋ ์ฝ๋๋ฅผ ๋ฐํ์ผ๋ก ์ค๊ณ์๋ฒ์์ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋งคํํ๋ค.
์ฌ์ฉ๋ Mapping์ผ๋ก MapSubejct_code, MapDepartment_code 2๊ฐ๋ฅผ ์ฌ์ฉํ์๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
<๊ฐ์ฒ์ ๋ณด ๋จ์ ํ ์คํธ>
๊ฐ์ฒ ์ ๋ณด์์ ํ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ ๋ crypto.js๋ฅผ ์ด์ฉํ์ฌ ๋ณตํธํ ํ๋ค์์ ์๋ก์ด ๋น๋ฐ๋ฒํธ๋ก ์ํธํํ์ฌ ์ ์ฅํ๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
์ฐ๊ณ ํ ์คํธ ๋ฒ์
- A๋ํ -> ๊ฐ์ฒ์ ๋ณด ์ค๊ณ์๋ฒ
- B๋ํ -> ๊ฐ์ฒ์ ๋ณด ์ค๊ณ์๋ฒ
- C๋ํ -> ๊ฐ์ฒ์ ๋ณด ์ค๊ณ์๋ฒ
- ๊ฐ์ฒ์ ๋ณด ์ค๊ณ์๋ฒ -> ๊ฐ์ฒ์ ๋ณด ํด๋ผ์ด์ธํธ
<A๋ํ ์ฐ๊ณ ํ ์คํธ>
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
<B๋ํ ์ฐ๊ณ ํ ์คํธ>
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
<C๋ํ ์ฐ๊ณ ํ ์คํธ>
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
<๊ฐ์ฒ ์ ๋ณด ์ฐ๊ณ ํ ์คํธ>
ํ ์คํธ ๊ฒฐ๊ณผ = ํฉ๊ฒฉ
ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ถ์ ์ํ์ฌ ๋งจ์ฒ์์ผ๋ก ์ฐ๊ณ๋ฅผ ์ํด Adapter ์ค์น ๋ฐ ์ค์ ํ๊ณ ์ก์์ ์์คํ ๊ณผ ์ฐ๊ณ ์ฌ์ฉํ IP ๋ฐ ํฌํธ ํ์ฉ, ๋ฐ ์ธ๋ถ ๋ชจ๋ ์ค์น ๋ฐ ๊ฒฝ๋ก ๋๋ ํ ๋ฆฌ ์ค์ ์ ํ๋ค.
๊ทธ ๋ค์์ผ๋ก๋ ์์ ๊ธฐ๊ด๊ณผ ์ฐ๊ณํ IP๋ฐ ํฌํธ ํ์ฉ ์ ์ฒญ ๋ฐ Mapping ์ฝ๋ ๋ฐ์ดํฐ ์ค์ ์ ํด์๊ณ ์ด์ํ ๋ ํ์ํ DB ๊ตฌ์ถ์ํ๋ค.
๊ตฌ์ถํ DB๋ฅผ ํ ๋๋ก ํ์์ ๋ณด, ํ์ ์๊ฐํ, ๊ณผ๋ชฉ ๊ฐ์์ค, ํ๊ต ๊ต์, ํ๊ต ๊ณผ๋ชฉ ์ ๋ณด ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ถํ์๊ณ ์ค๊ณ ์๋ฒ์ ์ฐ๊ณ ์ ์๋ก ๋ค๋ฅธ ์ฝ๋๋ค์ Mapping ํ์ฌ ์ฝ๋๋ค์ ๋ง์ถ์๋ค.
๊ทธ๋ ๊ฒ ์ค๋น๋ ๋ฐ์ดํฐ์ ์ฝ๋๋ค์ ์ด์ฉํ์ฌ ์ค๊ณ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ ์๋๋ก ๊ฐ ๋ํ๋ค๊ณผ ์ค๊ณ ์ชฝ ์ฝ๋ ๊ตฌํ์ ํ๋ค.
๋ค์์ผ๋ก๋ ๊ฐ ๋ํ๋ค๊ณผ ์ฐ๊ณํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์ค๊ณ์๋ฒ์ ์์ง ์ค์น ๋ฐ ์์คํ ์ค์ ๋ฐ ๋ฐ์ดํฐ ์ก์์ ์ ๋จ๋ ๋ก๊ทธ๋ค์ ์ ์ฅ ํ ์ ์๋ ๋ก๊ทธ ๊ธฐ๋ก์ฉ ํด๋ ์์ฑ ๋ฐ ๊ถํ์ ๋ถ์ฌํ๊ณ ejs ์์ง ์ค์น ๋ฐ ๊ฒฝ๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ํ๋ค.
๋ค์์ผ๋ก๋ ๋ฐ์ดํฐ์ ์ก์์ ์ ๋ก๊ทธ ํ์ผ ๋ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋๋ก ํ๊ณ ์ค๋ฅ ๋ก๊ทธ ํ์ผ์ ์ค์ ํ์ฌ ์๋ฌ ๋ฐ์์ ์๋ฌ ๋ก๊ทธ๋ฅผ ๋ง๋ค์ด ์ ์ฅํ๊ณ ์๋ฌ ์์น๋ฅผ ์ ์ ์๋๋ก ํ๋ค.
๋ง์ง๋ง์ผ๋ก ์ฐ๊ณํ์ฌ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ค์ ์ด์ฉํ์ฌ ๋ฏธ๋ฆฌ ์ค์นํด ๋์ ejs ์์ง์ผ๋ก ์น ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๊ณ ์๊ฐํ ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์๊ฐํ๋ฅผ ํ๋์ ๋ณผ ์ ์๋๋ก ํ๋ค.
์ฐ๊ณ ํ ์คํธ ์ผ์ด์ค์ ์ํ ํญ๋ชฉ ๋ฐ ์ฒ๋ฆฌ ์ ์ฐจ ์์์ ๋ฐ๋ผ
ํ ์คํธ๋ฅผ ์งํํ๋ฉด์ ์ํํ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ์์ํ ์ ์์ ์ธ ๊ฒฐ๊ณผ์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ๊ฒ์ฆ์ ์ํํ์๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์์ ํ์ ๊ฐ์ด ์ด์ DB ํ ์ด๋ธ์์ ๋ฐ์ดํฐ ์ถ์ถ ๊ฑด์๋ฅผ ํ์ธ, ์ฝ๋ ๋งคํ ๋ฐ ๋ณํ , ์ฐ๊ณ ํ ์ด๋ธ ์์ฑ๊ณผ ์ก์ ์ฌ๋ถ ๋ฐ ์์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ์์ ์ผ๋ก๋ ์ ํจํ ๋ฐ์ดํฐ ํ์ , ๊ธธ์ด ๋ฐ ์ด์ DB์ ํ ์ด๋ธ์ ๋ฐ์ ๊ฑด์๋ฅผ ํตํด์ ๊ฒ์ฆํ๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ ํ ์คํธ ์์ํ ๊ฐ๊ณผ ๊ฐ์ด ๋์ ํ ์คํธ์ ํต๊ณผํ์๋ค.
























































































