- Published on
๐ ์ปฌ๋ฌ๋ฆฌ์คํธ ํ๋ก์ ํธ #18 ์ค๊ฐ ์ ๊ฒ
- ๊ธ์ด์ด
๐
- ์ค๊ฐ ์๊ฐ
- ํ ์ผ๊ณผ ํ ์ผ
- ์ด์ ๊น์ง์ ์ด๋ ค์
- ์์ผ๋ก์ ๋ฐฉํฅ
1. ์ค๊ฐ ์๊ฐ
์๊ฐ๋ณด๋ค ์ค๊ฐ์ค๊ฐ ๋ง์ด ๋ชปํ๊ธฐ๋ ํ๊ณ ์ด๋ ค์ด ๋ถ๋ถ๋ค์ด ๋ง์์ ์์๋ณด๋ค ์์ฑ์ด ๋ฆ์ถฐ์ง๊ณ ์๋ค.
๋ ์ด๋ฒ์ด ๋์ ์ฒซ ํ๋ก ํธ์๋ ํ๋ก์ ํธ์ด์ ์ฒ์ ๋ง๋ค์ด๋ณด๋ ๊ธฐ๋ฅ๋ค์ด ๋ง์ ์ ํํ ์์
์๊ฐ์ ์์ํ๊ธฐ๊ฐ ์ด๋ ต๊ธฐ๋ ํ๋ค.
์ฌ๋ฌ๊ฐ์ง CSS
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณด๊ณ , ํ๋ ํธ์ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํด๋ณด๋ฉฐ ์ด๋ ค์์ ๋ง์ด ๊ฒช์์ง๋ง ๊ทธ๋งํผ ์ง๊ธ๊น์ง ๋ง๋ค์ด๋์
๊ฒ๋ค์ ๋ฟ๋ฏํจ์ ๋๋ผ๊ธฐ๋ ํ๋ค.
2. ํ ์ผ๊ณผ ํ ์ผ
์ํ์ง
ํ๋ฐํธ
- S3 ๊ฐ์ ๊ณณ์์ ๋ฌธ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์จ๋ค~ -> ์์ง S3 ๋ฏธ์ฌ์ฉ
- ๋ฌธ์ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๊ณ , ํด๋ฆญ! ํ๋ฉด ํด๋น ๋ฌธ์ ํ์ด์ง๋ก ์ด๋
- ๋๋ค ์ ํ ๋ฒํผ์ ํด๋ฆญ! ํ๋ฉด ํด๋น ํ์ด์ง๋ก ์ด๋
๋ฐฑ์๋
- ํ ์ผ์ด ์๋ค
๋ฌธ์ ํ์ด
ํ๋ฐํธ
- ์๋ํฐ๋ฅผ ๊น๋๋ค โ ํ๋ ํธ ๋งค์ฐ ํ๋ค์์โฆ
- ํ๋ ํธ๋ฅผ ์ ํํ ์ ์๊ฒ ํด์ค๋ค
- ๋ฌธ์ ๋ ํ๋ ํธ๋ฅผ S3์์ ๋ค๊ณ ์จ๋ค
- ์ ์ฅํ ๊ฑธ submit์ ํ๋ฉด
๋ฐฑ์๋
- ์ต์ข ์ ์ฅ, ๊ณต์ ํ๋ค
ํ์๊ฐ์
ํ๋ฐํธ
- ํ์๊ฐ์ form์ ๋ง๋ ๋ค
- api ์๋ฒ์๊ฒ ๊ฐ์ ์์ฒญ์ ํ๋ค
๋ฐฑ์๋
- email ์ ์ ํ์ธ์ ํ๊ฑฐ๋, Oauth๋ก ๊ถํ์ ์ป๋๋ค
- ๊ธฐ์กด์ ๊ฐ์ ํ ์ ์ ์ธ์ง ํ์ธํ๊ณ
- DB์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๋ค
๋ก๊ทธ์ธ, ๋ก๊ทธ์์
ํ๋ฐํธ
- ๋ก๊ทธ์ธ form์ ๋ง๋ ๋ค
- api ์๋ฒ์๊ฒ ๋ก๊ทธ์ธ ์์ฒญ์ ํ๋ค
- ํ ํฐ์ ๋ฐ์์, ์ํ์ ์ฌ๋ ค๋๊ณ , api ์์ฒญํ ๋๋ง๋ค ๋ณด๋ธ๋ค
- ๋ก๊ทธ์์
- ๋ด๊ฐ ๋ฐ๊ธ ๋ฐ์ ํ ํฐ์ ์ง์ด๋ค
๋ฐฑ์๋
- ๋ก๊ทธ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์, DB์ ์๋ ์ฌ์ฉ์ ์ ๋ณด์ ๋์กฐํ๊ณ
- ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฒ์ฌํ๊ฑฐ๋(argon2) vs Passport ๊ฐ์ ๊ฑธ๋ก OAuth
- jwtํ ํฐ์ ๋ฐ๊ธํ๊ธฐ (json web token)
๋ง์ดํ์ด์ง
ํ๋ฐํธ
- ์๋ฒ์๊ฒ ์ฌ์ฉ์์ ํผ ๋ฌธ์ , ํ๋ ๋ฌธ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ค
- ํ๋ฐํธ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ , pdf๋ก ๋ณํํด์ ์ถ๋ ฅํ ์ ์๋ค
๋ฐฑ์๋
- ํด๋น ์ฌ์ฉ์๋ฅผ ๋จผ์ ์ฐพ๊ณ
- ๊ทธ ์ฌ์ฉ์๊ฐ ํผ ๋ฌธ์ ์, ํ๋ ๋ฌธ์ ๋ชฉ๋ก์ joinํด์
- ๋ณด๋ด์ค๋ค~
- pagination
- offset
- page
- maxCount
- ์ฌ์ฉ์ ๋ง๋ค ํด๋น๋๋ ๋ง์ดํ์ด์ง, ๋ฌธ์ ํ์ด์ง ๋ถ๋ฌ์ฌ ์ ์๊ฒ ์ฌ์ฉ์ ์ ๋ณด ํ์ธ
๋ฐฐํฌ
๋ฐฑ์๋
- node.js ์๋ฒ๋ฅผ docker container ๋ก ๋น๋ํด์ ECS์ ์ฌ๋ฆฌ๊ธฐ
- IAM์ผ๋ก ๊ถํ ๊ทธ๋ฃน์ ๋ง๋ค๊ณ ๊ทธ ์์ ๊ณ์ ๋ง๋ค๊ธฐ
- Access Management
1์ฐจ ๋ฐฐํฌ ์ดํ ์ถ๊ฐ ๊ธฐ๋ฅ
์ฆ๊ฒจ์ฐพ๊ธฐ๋ ๊ฒ์์ด ์๋ค
ํ๋ฐํธ
- ์ฆ๊ฒจ์ฐพ๊ธฐ ์ถ๊ฐ, ์ญ์ ์์ฒญ์ ๋ณด๋ธ๋ค
- ํ๊ทธ๋ฅผ ๋ฌ๊ณ , ์ญ์ ์์ฒญ์ ๋ณด๋ธ๋ค
- ํํฐ๋ฅผ ํ๋ค~
- 2020๋ ๋ ์ดํ์ ์ถ์ ๋ ๋ฌธ์ ๋ง ๋ณด๊ธฐ~
๋ฐฑ์๋
- ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๊ณ
- ํ๊ทธ๋ก ์ฐพ๊ธฐ
์๋ ์ ์ฅ
ํ๋ฐํธ
- ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ฑฐ๋
- ์ ๊ธฐ์ ์ผ๋ก ์๋ฒ์๊ฒ ๋ณด๋ธ๋ค
๋ฐฑ์๋
- ์๋ ์ ์ฅ์ด ์ค๋ ๊ฑธ ๊ฐ๋จํ๊ณ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ฅ์ ํด์ค๋ค
- ์์ฑ๋ ๊ฑฐ vs ์์ฑ ์ค์ธ ๊ฑฐ
- table์๋ค๊ฐ flag๋ฅผ ๋ง๋ค์ด์
- isCompleted => ์๋ฃ๋๋์ง ์ฌ๋ถ๋ฅผ boolean์ผ๋ก ์ ์ฅ
- ์์ฑ์ด ๋๋ ์๊ฐ์~ => ํ์ !
๊ด๋ฆฌ์! version2
- Role Based Authorization => ์ญํ ๊ธฐ๋ฐ ๊ถํ ๊ด๋ฆฌ
- ๊ด๋ฆฌ์ ์ฉ API !
- ๋ชจ๋ ํผ ๋ฌธ์ ๋ค์ ๋ณผ ์ ์๋ค
- filter(1๋ฒ ๋ฌธ์ ํผ ๊ฒ๋ค๋ง ๋ชจ์ ๋ณด๊ณ ์ถ๋ค๋ ์ง)
3. ์ด์ ๊น์ง์ ์ด๋ ค์
-
์ผ์ ๊ด๋ฆฌ ๋๋ฆ๋๋ก ๋ ธ์ ์๋ ๊ธฐ๋กํ๊ณ , ํ ์ผ์ ๊ธฐ๋ฅ๋ณ๋ก ๋ฆฌ์คํธ ์์ฑํด ์ฐฉ์คํ๊ฒ ์งํํ๋ ค๊ณ ํ์ง๋ง ์ค๊ฐ ์ค๊ฐ ๋ค๋ฅธ ์ผ์ ์ด ์๊ธฐ๊ฑฐ๋ ๊ธฐ๋ฅ์ ๋ง๋ค๋ฉฐ ์ด๋ ค์์ ๊ฒช์ ๋ ์๋๊ณ ์ฌ๊ธฐ๋ ํ๋ค.
-
ํ๋ ํธ ๋ฐ ์ ํ์นธ ๊ธฐ๋ฅ ๊ตฌํ ํ๋ ํธ์ ์ ํ์นธ ๊ธฐ๋ฅ์ ๋ณด๊ธฐ์ ๋จ์ํด๋ณด์ฌ๋ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ด ํ์ํ๋ค. ์ค์ ๋ก ๋ง๋ค๋ฉด์ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ๋ณต์กํ ๋ก์ง๋๋ฌธ์ ์๋๋ฅผ ๋ด์ง ๋ชปํ๋ค. ๋ ํ ๋ฒ ๋ง๋ค์ด๋์ ๊ธฐ๋ฅ์ ๋ค์ ์๋๊ธฐ๊ฐ ์ด๋ ค์ ์์ ํ๋ ๋ฐ์๋ ์ฝ๊ฐ ๊ฒ์ด ๋๊ธฐ๋ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์ฌ์ดํธ์์ ๋ง์ด ๋ณธ ๊ธฐ๋ฅ์ด ์๋๋ค ๋ณด๋ ๊ฒ์์ ํ๋๋ฐ์๋ ์ด๋ ค์์ด ์์ด์ ์ฝ์นญ์์ ๋ง์ ๋์์ ๋ฐ์๋๋ฐ, ๋์ ๋ถ์กฑํ ๊ฒ์ ๊ธฐ๋ฅ๊ณผ ๊ตฌํ ๋ฅ๋ ฅ์ด ์์ฌ์ ๋ค.
-
๊ณ์๋๋ ๊ธฐ๋ฅ ์ถ๊ฐ ์์ฌ ์ฌ์ดํธ๋ฅผ ๋ง๋ค๋ค๋ณด๋ฉด ๊ณ์ํด์ ๋ํ ์ผ์ ์ถ๊ฐํ๊ณ ์ถ์ด์ง๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ฉด ํ๋์ ๊ธฐ๋ฅ์ ๋ง๋ค๋ค๊ฐ๋ ๊ณ๋ค๋ฆฌ๋ก ์ด๋ฐ ์ ๋ฐ ์ต์ ์ ๋ถ์ด๊ณ ์ถ์ด์ ธ์ ๋ก์ง์ด ๋ณต์กํด์ง๊ฑฐ๋ ์๊ฐ์ด ๋ง์ด ๋ค์ด๊ฐ๊ณ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ผ์ ์ด ๋ค๋ก ๋ฏธ๋ค์ง๊ธฐ๋ ํ๋ค. ๊ทธ๋์ ์ค๊ฐ ์ค๊ฐ ๋ฐฑ์๋ ํ์๊ณผ ์ฝ์น ํ ๋ผ๋๊ณผ ์ด์ผ๊ธฐ๋ฅผ ๋๋๊ณ 1์ฐจ ๋ฐฐํฌ๊น์ง์ ๊ตฌํ ๋ชฉํ๋ฅผ ๋ค์ ์ ๋ฆฌํ๋๋ฐ, ๊ทธ๋ ๊ฒ ํ๋ฉด์ ๋จธ๋ฆฌ๋ ์ ๋ฆฌ๋๊ณ ํ๋ฒ์ฉ ๋ฆฌํ๋ ์ฑ ๋์ด ์ข์๋ค. ์ถ๊ฐํ๊ณ ์ถ์ ๊ธฐ๋ฅ์ ์ผ๋จ ๋ชฉ๋ก์ ์จ๋๊ณ ์์ผ๋ก ํ๋์ฉ ์ถ๊ฐํด๋๊ฐ ์์ ์ด๋ค.
4. ์์ผ๋ก์ ๋ฐฉํฅ
1์ฐจ ๋ชฉํ๋
- ํ์๊ฐ์ , ํ์ ์์ , ๋ฉ์ธ ํ์ด์ง ๋ฑ ๋จ์ ํ์ด์ง๋ค์ ์์ฐจ์ ์ผ๋ก ๋ง๋ค๊ณ
- ๋ฐฑ์๋ ์ฐ๊ฒฐํ๊ธฐ
- css ์์
- ๋ฐฐํฌ
- ํ๊ณ ๋ฐ ๋ฆฌ๋๋ฏธ ์์ฑ
2์ฐจ ๋ชฉํ๋ ๋ฐฐํฌ ํ
- ์ฆ๊ฒจ์ฐพ๊ธฐ, ํํฐ๋ง, ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ฝ๋ ๋ฆฌํฉํ ๋ง
- css ์์