๊ด๊ณ ์๋ ์๋งน์ด๋ก ๊ฐ๋ ์ฐฌ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ์ถ์ผ์๋ค๋ฉด ์ ์ ๋ค์ด ๋ด ๋์ผ๋ก ์ฌํํ๊ณ ์ธ์ฆํ๋ ๋ด๋๋ด์ฌ๋ฅผ ์จ๋ณด์ธ์!
๊ด๊ณ ์๋ ์ฌํ ํ๊ธฐ ๋ด๋๋ด์ฌ๋ก ๋ ๋๊ธฐ โ๏ธ
Back-End Github ๐
Front-End Github ๐
๐ง๐ป๐ป๐ฉ๐ป๐ป ํ์ ์๊ฐ
์๋น์ค ๊ฐ์
๋ด ๋๋ด๊ณ ๋ด๊ฐ ์ฌํํ๋, ์ง์ ์ฑ์๋ ๊ตญ๋ด ๋จ๊ธฐ ์ฌํ ์ ๋ณด ๊ณต์ ํ๋ซํผ ์๋น์ค
์๋น์ค ์ํคํ ์ณ
Front-end
node.js, ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ๋ฅธ ๊ฐ๊ธฐ ๋ค๋ฅธ ์น์ฌ์ดํธ๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ก ๋์ ์น ํธ์คํ ์ด ๊ฐ๋ฅํ EC2์, ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก์์ ์ญํ ์ ํ๋ฉฐ ์๋ฒ๊ฐ SSL ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ฐ ๋๋ ๋น์ฉ์ด ์๋ nginx๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ ๋ณด์์ ์ํด https ํ๊ฒฝ์ผ๋ก ๋๊น์๋ ์๋น์ค๋ฅผ ์ ๊ณต ํ ์ ์๊ณ ๋ง์ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ์ง PM2๋ฅผ ํตํ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ํ์๊ณ , ๋ฆฌ์กํธ ์ํ๋ฅผ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์ด ํธ๋ฆฌํ Redux-toolkit์ ์ฌ์ฉํ์์ต๋๋ค. ๋ํ ํด๋ผ์ด์ธํธ ๋จ์์ ์ง์ ์ด๋ฏธ์ง ์ ์ฅ์ ์ํด S3๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์๋ฒ์๋ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ด ๋๊ณ ์๋ฌ ์ฐพ๊ธฐ์ ์ฉ์ดํ Axios๋ก ๋น๋๊ธฐ ํต์ ์ ํ์๊ณ ์ฌ์ฉ์ ์๋ฆผ ์๋น์ค๋ฅผ ์ํด Server-sent-events๋ฅผ ํตํด ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
Back-end
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ AWS RDS์ My SQL์ ์ฌ์ฉํ์๊ณ , ์ด๋ฏธ์ง ๋ฐ ๋์์์ S3์ ์ ์ฅ๋ฉ๋๋ค. JWT๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์ ์ธ์ฆ์ ํ๊ณ , ํ๋ก ํธ์ ๋ฐฑ์๋์ ๊ฐ๋ฐ ์๋ ํฅ์๊ณผ ์๋ฒ ์ค๋จ์ผ๋ก ์ฌ์ฉ์๊ฐ ์๋น์ค ์ด์ฉ์ ํ ์ ์๋ ์ํฉ์ ๋ง๊ณ ์ ๊นํ๋ธ ์ก์ ์ผ๋ก ๋น๋๋ฅผ ์งํํ๊ณ ๋น๋ ๋ ํ์ผ์ S3์ ์ ๋ก๋ ํ ํ, ์ฝ๋๋ํ๋ก์ด์์ ์ฌ์ ์ ์์ฑ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก EC2 ์๋ ๋ฐฐํฌ๋ฅผ ํ ์ ์๋๋ก ๊ตฌํํ์์ต๋๋ค.
+ ์คํ๋ง๋ถํธ ์ค๋ช
+ Server-sent-event ์ค๋ช
๋ง๋ถ์ด๊ธฐ
์์
๋ก๊ทธ์ธ ๊ตฌํ์ ์ํด ๋ค์ด๋ฒ์ ์นด์นด์ค ํก ์คํ API๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๐ ์ปดํฌ๋ํธ ๊ตฌ์กฐ
๐ ์ฃผ์ ๊ธฐ๋ฅ
๐๐ป ๊ด์ฌ์ฌ ์ ํ & ์ถ์ฒ ํ์ด์ง
- ํ์ ๊ฐ์ ํ ์ฌ์ฉ์๋ ์ฌํ ๊ด์ฌ์ฌ๋ฅผ ์ธ ๊ฐ๊น์ง ์ ํ ํ ์ ์๊ณ , ๊ทธ ๋ค์์ผ๋ก ์ด๋ํ๋ ์ถ์ฒ ํ์ด์ง์์ ์ฌ์ฉ์๊ฐ ์ ํํ ์ฌํ ๊ด์ฌ์ฌ ํ๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ถ์ฒ ๋ ๊ฒ์๋ฌผ์ ๋ณผ ์ ์์ต๋๋ค.
๐ ๋ธ๋ก๊ทธ ํ์์ ๊ฒ์๋ฌผ ๋ฑ๋ก ํ์ด์ง
- ํ์์ ๊ตฌ์ ๋ฐ์ง ์๋ ์์ ๋ก์ด ํํ์ ์ฌํ ํ๊ธฐ๋ฅผ ๊ณต์ ํ ์ ์๋๋ก TOAST UI Editor๋ฅผ ์ด์ฉํด ๋ธ๋ก๊ทธ ํ์์ผ๋ก ๊ฒ์๋ฌผ์ ๋ฑ๋ก ํ ์ ์๋๋ก ํ์ด์ง ๊ตฌ์ฑ์ ํ์์ต๋๋ค.
๐บ๏ธ ์ฌํ ๊ฒฝ๋ก (Kakao map API)
- ์นด์นด์ค API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ฐฉ๋ฌธํ๋ ์ฅ์์ ๋ง์ปค๋ฅผ ์ฐ์ด ์ถ๋ฐ์ง-๋์ฐฉ์ง์ ํด๋ฆฌ๋ผ์ธ์ ์ด์ฉํ ์ฌํ๊ฒฝ๋ก๋ฅผ ๊ฒ์๊ธ ๋ด์ ์ฌํ์ฝ์ค๋ก ์ ์ฅ
๐ป ๋์ ์ผ์
- ์ฌํ ์ ๋๋ง์ ์ฌํ ์ผ์ ์ ์์ฑ ํ๊ณ , ์ผ์ ์๋ฃ์ ์ทจ์ ๋ฒํผ์ผ๋ก ์งํ ์ค์ธ ์ผ์ ๊ณผ ์๋ฃ๋ ์ผ์ ์ผ๋ก ๋๋์ด ๊ด๋ฆฌ ํ๋ฉฐ ํ์ ์ ์ญ์ ํ ์ ์์ต๋๋ค.
๐ฅ ์คํ ๋ฆฌ ๊ธฐ๋ฅ
- ๋๋ง ๋ณด๊ธฐ ์๊น์ด ์ฌํ์ ์ถ์ต๋ค์ ์์ ๊ณต์ ๋ฅผ ํตํด ๋ด๋๋ด์ฌ ํ์๋ค๊ณผ ํจ๊ป ๋๋ ์ ์์ต๋๋ค. User ๋ณธ์ธ์ด ์์ ์ญ์ ๊ฐ๋ฅํ๋ฉฐ, ๋งค์ผ ํน์ ์๊ฐ์ ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ญ์ ๋๋๋ก ๊ตฌํํ์ต๋๋ค.
๐ ์๋ฆผ ๊ธฐ๋ฅ
- Server Sent Events ๊ธฐ์ ์ ์ด์ฉํด ์ฌ์ฉ์์ ๊ฒ์๊ธ์ ๋๊ธ์ด ์์ฑ ๋์์ ๋, ‘์ข์์’๊ฐ ๋๋ ธ์ ๋, ๊ทธ๋ฆฌ๊ณ ๋์ ์ผ์ ์ด ์๋ฐ ํ์์ ๋ ๋ฆฌ๋ง์ธ๋ ์๋ฆผ์ ์๋น์คํ๊ณ , ์ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์๋ฆผ์ ์ด๋ํ๊ณ ๊ด๋ฆฌ ํ ์ ์์ต๋๋ค.
๐ฎ์ ๊ณ ๊ธฐ๋ฅ
- ๊ด๊ณ ์ฑ์ด ๋ฐฐ์ ๋ ์ง์ง ์ฌํ ํ๊ธฐ๋ฅผ ์งํฅํ๋ ๋ด๋๋ด์ฌ ์๋น์ค์ ๊ฐ์น๊ด๊ณผ ๋ถํฉํ์ง ์๋ ๊ฒ์๋ฌผ๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ์ฌ ์ฌ์ฉ์๋ค์ด ๊ฒ์๋ฌผ์ ํด๋น ์ฌ์ ์ ๋ฐ๋ผ ์ง์ ์ ๊ณ ํ ์ ์๋๋ก ์ ๊ณ ๊ธฐ๋ฅ์ ๋ง๋ค์์ต๋๋ค. ๋์ ์ ๊ณ 50๊ฐ ์ด์์ด๋ฉด ๊ฒ์๊ธ์ด ์๋ ์ญ์ ๋๋๋ก ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
Truble-Shooting : Front-end
1. S3 Client-side Image ์ ๋ก๋
๋ฌธ์ ์ํฉ
AWS S3๋ฅผ ์ด์ฉํด client side ์์ image๋ฅผ ์ ๋ก๋ํ๋ ์์ค ๋ฒํท์๋ ๊ฐ์ฒด๊ฐ ์ ๋ก๋ ๋๋ Image URL๋ก ํด๋ผ์ด์ธํธ ๋จ์ ๋ฐํ ๋ ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฏธ์ง๊ฐ ๋จ์ง ์๋ ํ์์ด ์์์.
๋ฌธ์ ์์ธ
ํด๋ผ์ด์ธํธ๋ก ๋ฐํ๋ Image-URL๊ณผ ๋ฒํท์ ์ ์ฅ๋ Image-URL์ด ๋ฌ๋ผ ์ด๋ฏธ์ง๊ฐ ๋ณด์ด์ง ์์๋ค.
ํด๊ฒฐ ๊ณผ์
- ๋ฒํท์ ์ ๋ก๋ ์ ์ด๋ฏธ์ง์ ํ์ผ ์ด๋ฆ์ด ์ค๋ณต๋์ง ์๋๋ก new Date ํจ์๋ฅผ ์ด์ฉํด ์ด๋ฆ์ ๋ง๋๋ ๊ณผ ์ ์์ ํ์ผ ์ด๋ฆ์ ํน์๋ฌธ์์ธ ‘+ ์ : ‘ ๊ฐ ๋ค์ด๊ฐ๋ค. ์ด ์ด๋ฆ์ผ๋ก ๋ง๋ค์ด์ง URL์ด ๋ฒํท์์ ํด๋ผ์ด์ธํธ๋ก ๋์ค๋ฉด์ %๋ก ์นํ ๋์๋ค.
- ํ์ผ ์ด๋ฆ์์ ํน์๋ฌธ์๊ฐ ๋ค์ด๊ฐ์ง ์๋๋ก ์ ๊ท ํํ์์ ์ด์ฉํด ํ์ผ ์ด๋ฆ์ ํ๊ฐ๊ณต ํด์ฃผ์๋ค.
2. ์ฑ๋ฅ ๊ฐ์
๋ฌธ์ ์ํฉ
๋ฐ์ดํฐ ์์ด ๋ง์์ง๋ฉด์ ํ์ด์ง ๋ก๋ฉ ์๋๊ฐ ๋๋ ค์ก๋ค.
๋ฌธ์ ์์ธ
ํ๋ฒ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ฉฐ, ๋ง์ ์์ ์ฌ์ง๊ณผ ๋์์ ๋ฑ์ผ๋ก ๋ก๋ฉ์๊ฐ์ด ์ง์ฐ๋์๋ค.
๋ฌธ์ ํด๊ฒฐ
- ์ด๋ฏธ์ง์ loading = "lazy" ์์ฑ์ ์ถ๊ฐํด์ ์ฌ์ฉ์๊ฐ ๋ณด๊ณ ์์ง ์์ ๋ถ๋ถ์์ ๋ฐ์ดํฐ๊ฐ ๋ก๋ฉ๋๋ ๋ญ๋น๋ฅผ ์ค์.
- Lazy-load๊ธฐ๋ฒ์ ์ด์ฉํ 'intersection-observerAPI' ๋ฅผ ์ด์ฉํด ๋ฌดํ์คํฌ๋กค์ ๊ตฌํํ์ฌ ํ์ํ ๋ฐ์ดํฐ ๋งํผ๋ง ๋ถ๋ฌ์ค๋๋ก ํ์๋ค.
- ์ด๋ฏธ์ง๋ฅผ S3์๋ฒ๋ก ๋ณด๋ผ ๋ ์ด๋ฏธ์ง ์ฉ๋์ ์์ถํ๋ browser-image-compression ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด ์ด๋ฏธ์ง ์ฉ๋์ ์ต์ํ ํ์๋ค.
- ํฐํธ๊ฐ ํจ์น ๋๊ธฐ ์ ์ ํ ์คํธ๋ฅผ ํ๋ฉด์ ํ์ํ๋ font-display๋ฅผ swap์ผ๋ก ์ค์ ํด ์ฃผ์๋ค.
3. Kakao map ๋ฒ์ ์ฌ์ค์
๋ฌธ์ ์ํฉ
๊ฒ์๊ธ ์์ธ ์กฐํ ์ ์ฌ์ฉ์๊ฐ ์ ์ฅํ ์ง๋ ์ ๋ณด๋ฅผ ๋ฐ๋ก ๋ถ๋ฌ์ค์ง ๋ชปํจ.
๋ฌธ์ ์์ธ
์นด์นด์ค ๋งต์์ ์ ๊ณตํ๋ API ๋งต ์ค์ฌ์ ๊ณ ์ ๋์ด์๋ค.
๋ฌธ์ ํด๊ฒฐ
์ ์ ๊ฐ ๋งต์ ์ฌ์ฉ ํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ ํด ์ ์ฉํ์ผ๋ ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด์ก๋ค.
์นด์นด์ค ๋งต์์ ์ ๊ณตํ๋ ์ง๋ ๋ฒ์ ์ฌ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ฉํด ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋์.
useEffect๋ฅผ ํ์ฉํด ์์กด์ฑ ๋ฐฐ์ด์ GET ์์ฒญ ํจ์๋ฅผ ์ถ๊ฐ, ํจ์์ ๊ฒฐ๊ณผ ๊ฐ์ด ๋ฐ๋ ๋ ๋ง๋ค ๋ฒ์ ์ฌ ์ค์ ์ ์คํํ๋ค.
ํ์ง๋ง ๊ฐํ์ ์ผ๋ก ์ง๋๊ฐ ๋ก๋ฉ ๋๋ ์๋๋ณด๋ค ๋ฐ์ดํฐ ๋ก๋ฉ ์๋๊ฐ ๋นจ๋ผ ๋ฒ์ ์ฌ ์ค์ ์ด ๋์ง ์๋ ํ์์ด ๋ฐ์ํ๋ค.
setTimeout์ ์ด์ฉํด 50ms ํ ์ง๋ ๋ฒ์ ์ฌ์ค์ ์ด ์ผ์ด๋ ์ ์๋๋ก ํด ์ฃผ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฉ ์ ๋งต ๋ ๋๋ง ๋ถ๋ถ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฉ ํ ๋งต ๋ ๋๋ง ๋ถ๋ถ
useEffect, setTimeout ํ์ฉํด ์ง๋ ์ค์ฌ ๋ณ๊ฒฝํ๊ธฐ
์ง๋ ์ฌํ๊ฒฝ๋ก ๋ฐ๋ก ๋ณด์ด๊ฒ ๊ตฌํ
4. Access token ์ฌ๋ฐ๊ธ
๋ฌธ์ ์ํฉ
Access token์ด ๋ง๋ฃ ๋์์ ๋ ์ฌ์ฉ์๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ด์ฉ์ ๋ก๊ทธ์ธ์ด ํ์ํ ์ด์ฉ์ ์ ํ์ด ์์.
๋ฌธ์ ์์ธ
Access token์ ์ ํจ์๊ฐ์ด 30๋ถ์ ๋ถ๊ณผํ๊ธฐ ๋๋ฌธ
ํด๊ฒฐ ๊ณผ์
- Access token์ ์ ํจ์๊ฐ์ ๋๋ ค์ผ ํ๋ ๊ฒ์ธ์ง ์๋์ง์ ๋ํ ์๊ฒฌ์ด ์์์ผ๋ ๊ถ๊ทน์ ์ธ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ๋ ํ๋จ ํ์ refresh token์ ์๋ฒ๋ก ๋ณด๋ด access token์ ์ฌ๋ฐ๊ธ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฒฐ์ .
- Cookie์ ์ ์ฅ๋์ด์๋ Access token์ด ๋ก๊ทธ์ธ 30๋ถ ํ ๋ง๋ฃ ๋๋ฏ๋ก ํด๋ผ์ด์ธํธ ๋จ์์๋ 29๋ถ์ดํ์ ์ญ์ ๋๋๋ก ์ธํ ํ์๋ค. ๋ฐ๋ผ์ ์ ํจํ์ง ์์ ํ ํฐ์ ์ฌ์ฉ์๊ฐ ๋ค๊ณ ์์ ์๊ฐ์ ์๊ฒ ๋ง๋ค์ด ์๋น์ค ์ด์ฉ์ ๋ฌธ์ ๊ฐ ์๋๋ก ํด์ฃผ์๋ค.
- 29๋ถ ํ cookie๊ฐ ์ญ์ ๋๋ฉด useEffect ์์ ์๋ setInterval ํจ์๊ฐ ์ฟ ํค๊ฐ ์๋์ง ์๋์ง ๊ฐ์ํ๋ ์กฐ๊ฑด๋ฌธ์ ๋ฃ์ด ์ฟ ํค๊ฐ ์๋ค๋ฉด ํ ํฐ ์ฌ๋ฐ๊ธ ํจ์๋ฅผ ํธ์ถํ๋ ๋ก์ง์ผ๋ก ๋ณ๊ฒฝ ํด ์ฃผ์๋ค.
์ฟ ํค ์ ํจ์๊ฐ์ 29๋ถ์ผ๋ก ์ธํ ํ๊ธฐ
๋ก๊ทธ์ธ ์ํ์ผ ๋, ์ฟ ํค๊ฐ ์์ผ๋ฉด(๋ก๊ทธ์ธ 29๋ถ ๋ค) reToken ํจ์๋ฅผ ์คํ
ํ ํฐ ์์ฒญ์ด ์ ๊ฐ๋์ง ํ ์คํธํ๊ธฐ ์ํด retoken ํจ์ ์คํ์ alert ์ฐฝ ๋์์ค
ํํ ๋ฆฌ์ผ ํ์ด์ง
๊ฐ์ ํ ๊ฒ & ๋ณด์ํ๊ณ ์ถ์ ๊ฒ
์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง
AWS CLOUDFRONT + LAMBDA@EDGE๋ฅผ ํ์ฉํ IMAGE RESIZING
lighthouse ์งํ์ ์ฑ๋ฅ์ ๋ณด๋ฉด browser-image-compression ๋ง์ผ๋ก๋ ์ฑ๋ฅ ๊ฐ์ ์ด ๋ง์กฑํ ๋ง ํ๋ค๊ณ ๋๊ปด์ง์ง ์์
CloudFront ์ Lambda@EDGE๋ฅผ ํ์ฉํ Image resizing ์ ์๋ํด๋ณด๋ ค ํฉ๋๋ค.
๋ชจ๋ฐ์ผ ํ๊ฒฝ ์ต์ ํ
๊ฒ์๊ธ ์์ฑ ๋ถ๋ถ์์ ์ง๋๊ฐ ์๋ํฐ๋ฅผ ๊ฐ๋ ค์ ๊ธ ์์ฑ์ด ๋ถํธํ๋ ์ ์ ๋ฐ์ํ์ผ๋ก ์ต๋ํ ์์ ํ์ฌ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ์ ๋ง๊ฒ ๊ตฌํํ๊ณ ์ถ์ต๋๋ค.
๊ธฐ์ ์ ์์ฌ ๊ฒฐ์
์ฌ์ฉ๊ธฐ์ |
๊ธฐ์ ์ค๋ช
|
CI/CD
|
GitAction/CodeDeploy๋ฅผ ์ฌ์ฉ, ๊ฐ๋ฐ ๋จ๊ณ๋ฅผ ์๋ํ ํ์ฌ FE์ BE์ ๋น ๋ฅธ ํ์
์ผ๋ก ๊ฐ๋ฐ ์๋ ํฅ์์ ์๋ํ์ฌ ์๋ฒ ์ค๋จ ์, ๊ณ ๊ฐ์ด ์๋น์ค ์ด์ฉ์ ์ฐจ์ง์ด ์๋๋ก ์๋ ๋ฐฐํฌ ๊ธฐ๋ฅ์ ๊ตฌํ ํ์ต๋๋ค.
|
NGINX
|
๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ์ด์ฉํ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ถ์ฐํ๊ธฐ ์ํด ๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋งค๋ฒ ๋์ผํ ์ฝํ
์ธ ๋ฅผ ํ๋ก์ ์๋ฒ์ ์ฐ๊ฒฐํ ํ์ ์์ด ํด๋ผ์ด์ธํธ์ ์๋ตํ๋ ์บ์, ํธ๋ฆฌํ ๋ฌด์ค๋จ ๋ฐฐํฌ, Let's encrypt๋ฅผ ์ด์ฉํ ๋ฌด๋ฃ,์ฌ์ด ๋ฐ๊ธ์ ์ด์ ์ด ์๋ Https๋ฅผ ์ ์ฉ ํ์ต๋๋ค.
|
SSE
|
๋จ๋ฐฉํฅ ํต์ ์ธ ์๋ ๊ธฐ๋ฅ ์ฌ์ฉ์ ์์ด ์น์์ผ๋ณด๋ค ํธ๋ ์
ฐ์ดํฌ ๋ฐ์๋์ด ์ ์ด ํฉ๋ฆฌ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ UX์ ์ธก๋ฉด์์ ์์ ์ ๊ฒ์๊ธ์ ๋ค๋ฅธ ์ ์ ์ ์ํธ์์ฉ ๋ฐ์ ์, ๋์ ์ผ์ ์ด ๋ค๊ฐ์ฌ ๋ ์ค์๊ฐ ํธ์ ์๋ฆผ์ ๋ณด๋ด์ฃผ์ด ํ๋ฐํ ์ฌ์ดํธ ์ด์ฉ์ ์ ๋ํ์ต๋๋ค.
|
Flyway
|
๋ฐฐํฌ ํ ์ ์ ํผ๋๋ฐฑ์ ๋ฐํ์ผ๋ก DB๋ฅผ ์์ ํด์ผ ํ ๋ ๊ธฐ์กด mysql DB๋ฅผ dropํ์ง ์๊ณ , ์คํค๋ง ๊ตฌ์กฐ๋ฅผ ์ถ๊ฐ, ๋ณ๊ฒฝ ํ ์ ์๊ธฐ์ ์ ์ฉํ์ต๋๋ค.
|
react-intersection-observer
|
์ปจํ
์ธ ๊ฐ ํ์ํ ๋ ๋ง๋ค ๋ถ๋ฌ์์ ํ์ ํด์ฃผ์ด ๋ฐ์ดํฐ๊ฐ ๋ง์์ก์ ๋ ์ปจํ
์ธ ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์ ์ ์ฒด ๊ฒ์๊ธ ์กฐํ์ ๋ฌดํ์คํฌ๋กค์ ์ ์ฉ ํ์ต๋๋ค.
|
Redux-toolkit
|
์์ธก ๊ฐ๋ฅํ ๋ฐ์ดํฐ ํ๋ก์ฐ๋ฅผ ๊ทธ๋ฆด ์ ์๋ค๋ ์ฅ์ ์ด ์๊ณ , ์ ์ญ์ผ๋ก ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์์ผ๋ฉฐ, Redux๋ณด๋ค ์ฝ๋๋์ ์ค์ผ ์ ์๊ณ ์ฌ์ฉ์ด ํธ๋ฆฌํฉ๋๋ค.
|
SCSS
|
ํ๋ก์ ํธ๊ฐ ์ปค์ก์ ๋ CSS๋ณด๋ค ๊ฐ๋
์ฑ๊ณผ ์ ์ง ๋ณด์ ์ธก๋ฉด์์ ๋ฐ์ด๋ฉ๋๋ค.
|
Axios
|
response timeout (fetch์๋ ์๋ ๊ธฐ๋ฅ) ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ฉฐ Promise ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ํธํ์ด fetch๋ณด๋ค ๋ฐ์ด๋๊ธฐ ๋๋ฌธ์ ์น ์ฑ์ ์ผ๋ํ ๋ด๋๋ด์ฌ ์๋น์ค์ ์ ํฉํ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
|
EC2
|
ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ณด๋ฅผ ์์ฒญํ์ ๊ฒฝ์ฐ ์๋ก ๋ค๋ฅธ ํ๋ฉด์ ๋ณด๋ ๋์ ํ์ด์ง ๊ตฌํ์ ์ํ์ฌ ๋์ ์น ํธ์คํ
์ด ๊ฐ๋ฅํ EC2๋ก Front-end ๋ฐฐํฌ๋ฅผ ์งํํ์์ต๋๋ค.
|
browser-image-compression
|
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด์ ํด๋ผ์ด์ธํธ๋จ ์๋ฒ๋ก ์ ์ฅ๋๋ ์ด๋ฏธ์ง์ ์ฉ๋์ ์ค์ด๊ธฐ ์ํ์ฌ ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์
๋๋ค.
|
Nginx ์ฌ์ฉ ๋ก๋๋งต
ํด๋ผ์ด์ธํธ์ ๋ฐฑ์๋ ์๋ฒ ์ฌ์ด์ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ๋ฅผ ๋๊ณ ํด๋ผ์ด์ธํธ๋ ๋ฆฌ๋ฒ์คํ๋ก์ ์๋ฒ์ ์์ฒญ์ํ๊ณ , ๋ฐฑ์๋ ์๋ฒ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก๋ถํฐ ์ฌ์ฉ์์ ์์ฒญ์ ๋์ ๋ฐ์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ ๋ท๋จ์ ๋ฐฑ์๋ ์๋ฒ์ ์กด์ฌ๋ฅผ ์์ง ๋ชปํด ๋ณด์์ด ํ์ธต ๊ฐํ๋ฉ๋๋ค. ์ด๋, ๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ์ SSL์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด HTTPS๋ฅผ ์ ์ฉํ๊ฒ๋ฉ๋๋ค. WAS์๋ฒ๊ฐ ์ฌ๋ฌ๋๋ก ๋์ด๋๋ SSL ์ธ์ฆ์ ๋ฐ๊ธ์ ์ถ๊ฐ๋ก ํ์ง ์์๋ ๋์ด ํ์ฅ์ฑ์ด ์ข๊ณ ์๋ฒ๊ฐ SSL ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ฐ ๋๋ ๋น์ฉ๋ ๋ค์ง ์์ต๋๋ค.
๋ฆฌ๋ฒ์ค ํ๋ก์ ์๋ฒ๋ Nginx๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ๋จํ SSL ์ธ์ฆ์ ๋ฐ๊ธ, Nginx ํ๊ฒฝ ์ค์ ์ ์ํด Certbot์ ์ฌ์ฉํฉ๋๋ค.
HTTPS๋ฅผ ์ฌ์ฉํ๋ ์ด์ : ๋ณด์์ฑ์ด HTTP๋ณด๋ค ๋์ ์ฌ์ฉ์๊ฐ ์์ฌํ๊ณ ์๋น์ค๋ฅผ ์ฌ์ฉ ํ ์ ์์ต๋๋ค.
์ธํฐ๋ท์์ ๋ ์ฐธ์ฌ์ ๊ฐ์ ํต์ ์ ๋ณดํธํ๊ณ , ์ ๋ณด๊ฐ ๋ณ์กฐ๋์ง ์๊ณ ๋ชฉ์ ์ง๊น์ง ๋๋ฌํ๊ฒ ํ๋ฉฐ ์น์ฌ์ดํธ์ ์ง์ ์ฌ๋ถ๋ฅผ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
SSE
UX์ ์ธก๋ฉด์์ ์์ ์ ๊ฒ์๊ธ์ ๋ค๋ฅธ ์ ์ ์์ ์ํธ ์์ฉ ๋ฐ์ ์, ๋์ ์ผ์ ์ด ๋ค๊ฐ์ฌ ๋ ์๋ฆผ์ ๋ณด๋ด์ฃผ์ด ํ๋ฐํ ์ฌ์ดํธ ์ด์ฉ์ ์ ๋ํ์ต๋๋ค. websocket๊ณผ SSE๋ ์๋ฐฉํฅ ํต์ ๊ณผ ๋จ๋ฐฉํฅ ํต์ ์ด๋ผ๋ ์ฐจ์ด์ ์ด ์๋๋ฐ ์ด ๋๋ฌธ์ ์ฌ์ฉ๋๋ ๊ณณ์ด ์กฐ๊ธ ๋ค๋ฆ ๋๋ค.
websocket์ ๋ฆฌ์ผํ์์ด ํ์ํ ์ฑํ , ์ฃผ์ ํธ๋ ์ด๋ฉ ๋ฑ์์ ์ฐ์ด๊ณ SSE๋ ๋น๊ต์ ์ค์๊ฐ์ผ ํ์ ์๋ ์๋์ ์ค ๋ ๋ง์ด ์ด์ฉ ๋ฉ๋๋ค.
intersection Observer API , ๋ฌดํ ์คํฌ๋กค
Intersection Observer๋ Web API์ค ํ๋๋ก ์ง์ฐ๋ก๋ฉ(lazy-loading), ๊ด๊ณ ์์ต์ ์ํ ๊ด๊ณ ๊ฐ์์ฑ ์ฐธ๊ณ , ํน์ ์์น์์ ์ ๋๋ฉ์ด์ ๋์ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ ๋ฌดํ์คํฌ๋กค์์๋ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ์ค๋ ๋์ ์ํฅ์ ๋ฏธ์น์ง ์์ onScroll์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ณ ์น์์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ํค๋ ์ฃผ๋ฒ์ธ ๋ฆฌํ๋ก์ฐ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค๋ ์ฅ์ ๋ ์์ต๋๋ค. ๊ด์ฐฐํ ์ปดํฌ๋ํธ๋ฅผ ์ ํํ๊ณ ๊ฐ์งํ๋ ์ญํ ์ ํด์ ์คํฌ๋กค์ ํด๋ ๊ณ์ ์ด๋ฒคํธ๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ตฌ๊ธ๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ์์ง์ ๊ฒฝ์ฐ์ ํ์ด์ง๋ค์ด์
์ ์ ํํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ ๊ทธ ์ด์ ๋ ํค์๋๋ฅผ ๊ฒ์ํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ ๋ถ๋งํฌ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ฉ์ดํ๋ฉฐ, ๋ํ ๋จ์ ์ปจํ
์ธ ์ ์์ด ์ผ๋ง๋ ๋๋์ง ์ถ๋ก ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๋ ์ ๋ณด์ ๋ํ ํต์ ๊ถ์ ๋ฌดํ์คํฌ๋กค ๋ณด๋ค ๋ ํฌ๊ฒ ๋๋ ์ ์์ต๋๋ค. ๋ด๋๋ด์ฌ์ ๊ฒฝ์ฐ, ํ๊ทธ๋ก ์ฐพ๊ณ ์ ํ๋ ์ ๋ณด์ ํํฐ๋ง์ด ๊ฐ๋ฅํ๊ณ ๊ฒ์ ๊ธฐ๋ฅ ๋ํ ์กด์ฌ ํฉ๋๋ค. ๋ํ ํ
์คํธ๋ก ์ด๋ฃจ์ด์ง ์ ๋ณด ์ ๋ฌ๊ณผ ๋๋ถ์ด ์ฌํ์ง์์์ ์ฌ์ง, ์ฌํ ๊ฒฝ๋ก ๋ฑ ์๊ฐ์ ์๋ฃ๋ฅผ ๋ง์ด ๊ณต์ ํ ์ ์๋ ํน์ฑ ๋๋ฌธ์ ๋ฌดํ ์คํฌ๋กค์ ํตํ ์๊ฐ์ ์ธ ์ดํ์ ํ๋ ๊ฒ๋ ์ ์ ๋ฅผ ๋์ด๋ค์ผ ์ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋ ์ผ ๊ฒ ๊ฐ์ ์ ์ฉํ๊ฒ ๋์์ต๋๋ค. ๋ํ ์ปจํ
์ธ ๊ฐ ํ์ํ ๋ ๋ง๋ค ๋ถ๋ฌ ์์ ํ์ ํด์ฃผ์ด ๋ฐ์ดํฐ๊ฐ ๋ง์์ก์ ๋ ์ปจํ
์ธ ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ณด์ฌ ์ค ์ ์์ต๋๋ค.
Redux-toolkit
์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๊ณ ์๋ ๋ฆฌ๋์ค๋ ๋ณต์กํ ๋ฆฌ๋์ค ์คํ ์ด๋ฅผ ๊ตฌ์ฑ, ํจํค์ง๋ค์ ์ถ๊ฐ๋ก ์ค์นํด์ผ ํ๋ ์ , ๋ง์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์๊ตฌํ๋ ์ ์ ๋จ์ ๋ค์ด ์๊ณ , ์ด ๋จ์ ๋ค์ ํด๊ฒฐํ ๊ฒ์ด ๋ฆฌ๋์ค ํดํท์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ฆฌ๋์ค๋ฅผ ํจ์ฌ ์ฝ๊ณ ๊ฐํธํ๊ฒ ์ ์ญ์ผ๋ก ์ํ ๊ด๋ฆฌ๋ฅผ ํ๋ฉฐ ์ฌ์ฉํ ์ ์๋ค.
์นดํ ๊ณ ๋ฆฌ vs ํ๊ทธ
์นดํ ๊ณ ๋ฆฌ๋ ๊ฒ์๊ธ์ ์น์ ๋ณ๋ก ๋๋์ด ๋ฒ์๋ฅผ ์ก๊ณ ํ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ๊ฒ์๊ธ์ ๋๋๋ ์ญํ ์ ํ์ง๋ง ํ๊ทธ๋ ์นดํ ๊ณ ๋ฆฌ์ ์๊ด์์ด ๊ธ์ ์ฐพ๊ธฐ ์ฝ๊ฒ ํด์ฃผ๋ ํ์์ ๋๋ค. ๋ค์ค ์ ํ์ ํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด์๋ ์นดํ ๊ณ ๋ฆฌ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ์ ํํด์ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฌผ์ ๋ณผ ์ ์๋ ํ๊ทธ๋ฅผ ์ ํํ๋๊ฒ ์ํ๋ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ฐพ์ ์ ์์ ๊ฑฐ๋ผ ์๊ฐํด ํ๊ทธ๋ฅผ ์ ์ฉ ํด ๋ณด์์ต๋๋ค.
EC2
ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ณด๋ฅผ ์์ฒญ ํ์ ๊ฒฝ์ฐ์ ์๋ก ๋ค๋ฅธ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ๋์ ํ์ด์ง ๊ตฌํ์ ์ํด ๋์ ์น ํธ์คํ ์ ํ ์ ์๋ EC2 ๋ก ๋ฐฐํฌ๋ฅผ ์งํํ์์ต๋๋ค.
CloudFront ์ Lambda@Edge๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง
๊ฒ์๊ธ ์ ๋ก๋ ๋ถ๋ถ์ ๋งก์ผ๋ฉด์ ํด๋์ ํ๋ก ์ฐ์ ์ฌ์ง์ ์ง์ ์ ๋ก๋ ํ ๋์ ์จ๋ผ์ธ์์ ์์งํ ์ด๋ฏธ์ง๋ค์ ์ ๋ก๋ ํ ๋ ์ฉ๋ ์ฐจ์ด๋ฅผ ๋น๊ต ํด ๋ณด๋, ๊ฐ์ ์ฌ์ด์ฆ์ ์ด๋ฏธ์ง์ฌ๋ ๊ทธ ์ฐจ์ด๊ฐ 10๋ฐฐ 20๋ฐฐ ๋ง๊ฒ๋ 100๋ฐฐ๊น์ง๋ ๋ ๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง์ ๊ฑฐ์น์ง ์์ ํด๋ํฐ ์จ๋ฒ์ ์ ์ฅ๋ ์ฌ์ง๋ค์ ์ด๋ฏธ์ง ์ปดํ๋ ์ ๊ณผ๋ ๋ณ๊ฐ๋ก ๋ฆฌ์ฌ์ด์ง์ ํด ์ค ํ์๊ฐ ์๋ค๊ณ ๋๊ผ์ต๋๋ค. ๋ํ ์ฌ๋ฌ ๋๋ฐ์ด์ค์์ ์๊ตฌํ๋ ํด์๋๊ฐ ๊ฐ๊ธฐ ๋ฌ๋ผ ์ด๋ฐ ์ผ์ด์ค๋ง๋ค ๋ฆฌ์ฌ์ด์ง ํด์ฃผ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง Lambda@Edge ์ ์ฐ๊ฒฐํ๋ ์บ์ ์๋ฒ CloudFront ๋ฅผ ์ด์ฉํ๋ฉด ์๋น์ค ์ต์ ํ์ ๋ง์ ๋์์ด ๋ ๊ฒ ์ด๋ผ ์๊ฐ ํฉ๋๋ค.
SCSS ์ ํ ๋ฐฐ๊ฒฝ
๋ค๋ฅธ ํ๋ก์ ํธ๋ค์ ํ๋ฉด์ css, styled-components๋ฅผ ์ฌ์ฉํด ์ปดํฌ๋ํธ๋ฅผ ์คํ์ผ๋ง ํด ์์ต๋๋ค. css๋ ํ์ผ์ด ๋ฐ๋ก ๋ถ๋ฆฌ๋์ด์๊ณ , ์ ํ์๊ฐ ๋ง์์ ธ ์ ์ง ๋ณด์๋ฅผ ํ ๋ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค๋ ๋จ์ ์ด ์์๊ณ styled-components๋ class-name์ด ์์ด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด ์ง๊ณ props๋ก ๋ฐ์ ์ ์๋ ์ด์ ์ด ์์ง๋ง ๊ฐ์ธ์ ์ผ๋ก๋ ์ปดํฌ๋ํธ์ styled-components์์ ๊ตฌ๋ถ์ด ํ๋ค์๊ณ , ์ด๋ค styled-components๊ฐ ์ด๋ค ํ๊ทธ ์์ฑ์ ๊ฐ๊ณ ์๋์ง ๋ฐ๋ก ์ฐพ๊ธฐ๊ฐ ํ๋ค์์ต๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํ๋ก์ ํธ์์ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์คํ์ผ๋ง ํ ์ง ๋ฆฌ์์น ํ๋ ์ค SCSS๊ฐ CSS์ ํธํ์ด ๊ฐ๋ฅํ๋ฉด์ ํ๋ก์ ํธ๊ฐ ํด ์๋ก ๊ฐ๋
์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ฃผ์ด ์ ์ง๋ณด์๊ฐ ์ฝ๊ณ , ๋ง์ ๋ ํผ๋ฐ์ค๋ค์ ์ฐพ์ ์ ์์ด์ ํ์๋ค๊ณผ ๋
ผ์ ๋์ ์ฌ์ฉ ํด ๋ณด๊ธฐ๋ก ํ์ต๋๋ค.
ํนํ ์ฝ๋๋ฅผ ์ค์ฒฉ์์ผ์ ์ฌ์ฉ ๊ฐ๋ฅ ํ๋ค๋์ ์ด ์ด์ฉํ๋ฉด์ SCSS๊ฐ ๊ฐ๋
์ฑ์ด ๋ฐ์ด๋๋ค๊ณ ๋๊ผ์ต๋๋ค.
PM2
์๋ฒ๋ฅผ ๋ฐฐํฌํ์ ๋ ์๋น์ค ์ ๊ณต ๋์ค ๊ฐ์๊ธฐ ์๋ฒ๊ฐ ์ค์ง ๋์ด ์ฌ์ฉ์๊ฐ ๋ถํธ๊ฐ์ ๋๋ผ์ง ์๋๋ก ๋ฌด์ค๋จ ์๋น์ค๋ฅผ ์ ๊ณต ํ ์ ์๋๋ก ํด์ฃผ๋ Node.js์ ํ๋ก์ธ์ค ๋งค๋์ ์ ๋๋ค. ๋ง์ ๋ ํผ๋ฐ์ค๋ค์ด ์๊ณ ์ฌ์ฉ์ด ๊ฐํธํ๋ฉฐ ํนํ ๊ฐ์ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Strong-PM๊ณผ ๋น๊ตํด GitHub star์๊ฐ ์๋ฑํ ๋์์ ์ ํํ์์ต๋๋ค.
Node.js
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ด๊ณ Dom์ ์กฐ์ํ ์ ์๋ Front-end ํ๋ ์์ํฌ์ธ React๋ฅผ ๋ ์ฐ๊ธฐ ํธํ๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ์คํ ์์ค์
๋๋ค.
font-display: swap
swap ์ต์ ์ FOUT์ ๋์ผํ๊ฒ ์๋ํ๋ ์ต์ ์ ๋๋ค. ์ฐ์ ํด๋ฐฑ ํฐํธ๋ก ๊ธ์๋ฅผ ๋ ๋๋งํ๊ณ , ์น ํฐํธ ๋ก๋ฉ์ด ์๋ฃ๋๋ฉด ์น ํฐํธ๋ฅผ ์ ์ฉํ๋ค. ์น ํฐํธ ๋ก๋ฉ ์ฌ๋ถ์ ๊ด๊ณ์์ด ํญ์ ํ ์คํธ๊ฐ ๋ณด์ ๋๋ค.
'์ด๋ ธ๋ฒ ์ด์ ์บ ํ > ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1์ฃผ์ฐจ ๋ฏธ๋ํ๋ก์ ํธ 12์กฐ MBTItube (0) | 2022.08.06 |
---|