๊ธฐํ
-
์ฃผ๋์ด ๊ฐ๋ฐ์๋ค์ด ๊ณตํต์ ์ผ๋ก ๊ฒช๋ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ณด์( ๋ถํธ์บ ํ ์ฐธ์ฌ ์ ๋ฌด, ์ฌ์ ๋ถ์ฌ๋ฑ )
-
๊ฐ์ธ์ ์ผ๋ก ๊นจ๋ฌ์ ์ ์ ๋ณธ์ง์ ์ธ ๋ฌธ์ ๋ ๋ด ์์ ์๊ฒ ์๋ค๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉํฅ์ฑ(๊ฒฝํ ๊ณต์ , ๋๊ธฐ ๋ถ์ฌ)์ ํ์ง์๊ฐ ์ ๊ณตํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ด๋ฅผ ์กฐ๊ธ ๋ ํผ์์ ํ์ผ๋ก ํด๊ฒฐํ ์ ์์ง ์์๊น?
-
๋ถํธ์บ ํ๋ฅผ ๋์๋ค๊ณ ์ทจ์ ํ๋ ๊ฒ๋์๋๋ฉฐ ์ข์ ์ฌ์๊ฐ ์๋ค๊ณ ํด์ ์ข์ ๊ฐ๋ฐ์๊ฐ ๋ ์ ์๋ ๊ฒ์ ์๋๋ค.
-
๋ถํธ์บ ํ์ ์ฐธ์ฌํ ์ ์๋ ์ํฉ, ์ฌ๋ ฅ์ด ์๋๋ ์ฌ๋์๊ฒ๋ ์์ง์ ์ ๋ณด๋ฅผ ์ฐพ์ ์ค ์ ์์ผ๋ฉด ์ข๊ฒ ๋ค.
-
๋ฆฌ๋๊ธ์ ๊ฐ๋ฐ์ ์กฐ์ธ์ ๋ค์ ์ ์๋ ๊ณต๊ฐ์ด ์์ผ๋ฉด ์ข๊ฒ ๋ค.
-
๋์ ํฌ์ ํ์ง์๋๋ผ๋ ๋์ฝ๋ผ์ค์ฒ๋ผ, ์๋ฆฌ์ฒ๋ผ, ํ ์ค์ฒ๋ผ ๋ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ํ๊ณ ์ถ๋ค.
-
์๋ก์๊ฒ ์ ํ ์ํฅ๋ ฅ์ ์ฃผ์ด ๋ํ๋ฏผ๊ตญ ๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ํจ๊ป ์ฑ์ฅํ ์ ์๊ฒ ํด๋ณด์!
๋ชฉํ
-
A - Z ํ๋ก์ ํธ ๊ฐ๋ฐ
-
์ ํ ์ํฅ๋ ฅ์ ์ฃผ๋ ์ฌ๋์ด ๋๊ณ ์ถ๋ค๋ ๊ฐ์ธ์ ๋ฐ๋จ ์ฑ์ทจ
-
์๊ธฐ ์ฃผ๋, ์ฅ์ธ ์ ์ , ๋ฌธ์ ํด๊ฒฐ๋ ฅ์ ๊ฐ์ถ ์ฐธ๋ ๊ฐ๋ฐ์๋ก ๋์ฝ
-
์๋์ด, ์ค๊ธ๊ฐ๋ฐ์๋ค์ ์ฐธ์ฌ๋ฅผ ๋์ฌ ํ๋ฅญํ ๊ฐ๋ฐ ์ฐ์ ๋ฌธํ ์กฐ์ฑ
Svelte
- ์ ์ฒด ์ฝ๋๋ผ์ธ ์ ๊ฐ, index๊ธฐ์ค 22์ค(.vue) -> 4์ค(.svelte)
๊ธฐ์กด์๋ ๊ธฐ์ ์ ๋ฐ๋ผ๊ฐ๊ธฐ๋ง ํ๋๋ฐ ์ด์ ๋ ์์๋๊ฐ๋ ์์น์ ์๊ณ ์ถ์ ์์ฌ.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์ ์๋ก์ด ํธ๋ ๋์ ๋ํ ํฅ๋ถ
๋์ ์ ์ ๊ณผ ๋๋ถ์ด ๋ด๊ฐ ์ข์ํ๋ ๊ตญ/๋ด์ธ ๊ฐ๋ฐ์๋ค์ด ๊ทน์ฐฌํ๋ ์ด์ ๊ฐ ๊ถ๊ธํ๊ณ ๋ชธ์ ์ฒด๊ฐํ๊ธฐ ์ํด
๊ธฐ์กด์ vue2๋ฅผ ์ฌ์ฉํ๋ ๋ด๊ฒ ์ง์
์ฅ๋ฒฝ์ด ์๋นํ ๋ฎ๋ค.
๊ณต์ ๋ฌธ์๊ฐ ์๋นํ ํ๋ฅญํ๋ค.
rich haris์ ๋ง์ธ๋์ ๊ทธ์ ํ๋์ด ๋๋ฌด ์ธ์ ๊น์๋ค.
NestJs
- Authentication & Authorizaion ๊ตฌํ
๊ฒฐ์ฝ ๋ฎ์ง ์์ ๋ฌ๋ ์ปค๋ธ(TypeScript, GraphQL) ์๊ธฐ์ธ์ง์ ๊ฒฐ๋จ ํ์.
์ฒด๊ณํ๋ ๋ฐฑ์๋๊ฐ ๊ตฌ์ถ ๊ฐ๋ฅํ์ง๋ง ํด๋น ์คํ์ด ํ์ฌ ์ํฉ์์ ์ต์ ์ฑ
์ธ์ง ๊ณ ๋ฏผ
NestJs -> firebase vs supabase -> SveltKit
-
LightHouse SEO score 100
-
API ์ค๊ณ(/routes/api)
-
Silent endpoints๋ก load script ์๋ตํ์ฌ server-side ์ฝ๋ ๋ผ์ธ ์ ๊ฐ.
-
action method / Ajax ๊ต์ฐจ ์์ฒญ (์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋ํ์ง ์๋๋ผ๋ form ์์ฒญ๊ฐ๋ฅ)
ํ์ฌ ์ํฉ์์๋ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ๋ง์ ๋น์ฉ์ ๋ค์ด๊ณ ์ถ์ง ์์์.
์ฌ์ค ์ฌ๊ธฐ์๋ ๋ชจ์์ด ์์, ์๊ฐ์ ๋ค์ฌ ์ ์ค๊ณ๋ ํ๋ก๊ทธ๋จ์ ์๊ฐ์ด ์ง๋ ์๋ก ๊ฐ๋ฐ ๋น์ฉ์ด ์ ์ด์ง
ํ์ง๋ง, ๊ฐ์ธ ํ๋ก์ ํธ์ด๋ ๋งํผ ๋ด๊ฐ ์ข์ํ๋ ๊ฒ์ ํด์ผ ๊พธ์คํ ํ ์ ์๊ธฐ์ ๋น์ฅ์ ์ ํ๊ณผ ์ง์ค์ด ํ์
sveltekit route๋ก ์๋ฒ๋ก์ง์ ์ฒ๋ฆฌํจ์ผ๋ก์ ๋ฐฑ์๋ ์ง์๊ณผ SSR, SSG์ ๋ํ ์ฒ๋ฆฌ์ ์ดํด๋๋ฅผ ๋์ด๊ณ ํ๋ ์์ํฌ์ ๋ก์ฐ๋ ๋ฒจ ์ง์์ ์์ ์ ์์.
Gitpod
-
์๊ฐ๊ณผ ์ฅ์์ ์ ์ฝ ์์ด ์ผ๊ด๋ ํ๋ก์ ํธ ์์ ์ด ๊ฐ๋ฅํ๋๋ก ๊ฐ๋ฐ ํ๊ฒฝ ์ ํ
-
ํด๋ผ์ฐ๋ Postgres ์ด๋ฏธ์ง๋ฅผ ํตํด DB ์ฐ๊ฒฐ
๊ฐ์ธ ํ์ฉ๋๊ฐ ์๊ฐ๋ณด๋ค ๋จ์ด์ง, ๋ค๋ฅธ ํ๊ฒฝ์์ ์์
ํ ๊ฒฝ์ฐ๊ฐ ์๊ฐ๋ณด๋ค ์๋ค๋ ์ .
์ ํ๋ ์์
์๊ฐ, ํ๋ฌ 50์๊ฐ
ํน์ํ ๊ฒฝ์ฐ(ํผ์๋ฐฉ์์๋ ์ฝ๋ฉ, ์๊ณจ์ง์์๋ ์ฝ๋ฉ)๊ฐ ์๋๋ผ๋ฉด ๊ตณ์ด Gitpod์ ๋ฉ๋ฆฌํธ๋ ์ง๊ธ ๋น์ฅ ์ฐพ๊ธฐ ์ด๋ ต๋ค.
ํ๋จ์์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณผ ๋๋ ๊ฐ๋ฐ์๋ ๊ฐ๊ฐ์ธ์ด ์ ํธํ๋ ๊ฐ๋ฐํ๊ฒฝ์์ ์์
ํ ๋ ์์ฐ์ ์ธ ์ธก๋ฉด์์๋ ์ข์๋ฐ
๊ตณ์ด ํ๋ก์ ํธ๋จ์ ํ๊ฒฝ์ ํต์ผํ์ฌ ๊ฐ์ ํ ํ์์ฑ์ด ์๋ ๊ฒ์ธ๊ฐํ๋ ์๋ฌธ.
Gitpod -> Docker-compose
- ๋ชจ๋ ๋ก์ปฌ์ postgressDB ํ๊ฒฝ ์ค์ .
Gitpod์ ๊ฒฝํํ ์ด๋๋ก ๋ก์ปฌ ์ปดํจํฐ ์์กด๋, ์ํํธ์จ์ด ์ค์น ๋น์ฉ์ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ฌ
Docker-compose -> Prisma/Railway
-
ํด๋ผ์ฐ๋ DB ํ๊ฒฝ ์ ํ
-
์ฒซ ์ฟผ๋ฆฌ, ์๋ต์๋ 2500ms, ํ๊ท ์๋ต 900ms
-
LightHouse Performance Score 86
๋น ๋ฅด๊ณ ์ฝ๊ฒ ๊ฐ๋ฐ๋ถํฐ ๋ฐฐํฌ๊น์ง ์ผ๊ด๋ DBํ๊ฒฝ์ ์ฌ์ฉํ ์ ์์ด ๋ง์กฑ.
ํ์ง๋ง ๋ฌด๊ฑฐ์ด ์์ฒญ์ด ์๋์๋ ๋ถ๊ตฌํ๊ณ ๋๋ฌด ๋๋ฆผ( railway์ ๋คํธ์ํฌ ์๋ ๋ฌธ์ ์ผ๊ฑฐ๋ผ ์ถ์ธก. )
Prisma/Railway -> Prisma/PlanetScale
- ์ฒซ ์ฟผ๋ฆฌ, ์๋ต์๋ 2500ms -> 900ms, ํ๊ท ์๋ต 900ms -> 200ms ์ฑ๋ฅ ๊ฐ์
SSR ๋ฐ์์๋๊ฐ ์๋นํ ์ข์์ง
๊ทธ๋ ๋คํ ๋ณ๊ฒฝ์ด ์๋์์์๋ Railway ๋์ ํฌ์ด์ ๋๋ ํ(?), ๋ ๋์ ์ฑ๋ฅ์ ์ํ ๊ณ ๋ฏผ์ ๋ ๋ง์ด ํ๊ฒ ๋จ
๋ด ํ๋ก์ ํธ์์๋ ๋ถ๊ตฌํ๊ณ ๋ถํธํจ์ ๋๋ผ๋ฉด, ๊ทธ ๋๊ตฌ๋ ์ฌ์ฉํ์ง ์์ ๊ฒ ๊ฐ๋ค.
Radis
-
๋ฉ๋ชจ๋ฆฌ ์บ์ฑ์ ํตํด ์๋ฒ ์์ ์ ๊ฐ์
-
production, Light house performance score 100
์ฑ๋ฅ์ ์ธ ์ธก๋ฉด์ ๊ณ ๋ คํ๋ค๋ณด๋ ์๋ฌด๋ ์ง ์๊ฒ ์์ฃผ ๋ฐฉ๋ฌธํ๋ ์น์ฌ์ดํธ๋ ๋ฉด๋ฐํ ์ดํผ๊ฒ ๋จ.
์ต๋ํ ํ๋ฆฌํฐ์ด๋ฑ๊ธ์์ ์๊ปด ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ ์ฐพ๋ค ๋ณด๋ ์ด๋ ๊ณง ์๋ฒ์ ๋ถํ๋ฅผ ๋ฎ์ถ๋ ๊ฒฐ๊ณผ๋ก ์ด์ด ์ง ์ ์์์.
์ํฉ ๋๋ ํ์์ฑ์ ๋ฐ๋ผ ์บ์ฌ๋ฅผ ์ ์ ํ๊ฒ ์ฌ์ฉํด์ผํจ. ( ๋ชจ๋ ๋ฐ์ดํฐ ์ฉ๋์ ์ปค๋ฒ ๋ถ๊ฐ )
์๋ชป๋ ๋ฉ๋ชจ๋ฆฌ์ฌ์ฉ์ ๋น์ฉ์ ์ฆ๊ฐ๋ก ์ง ์ ์์ด ๋ฌด์์ ๋ด์์ง ์ ์คํ๊ฒ ์๊ฐํด๋ด์ผ ํ ๊ฒ
๋ฌดํ ์คํฌ๋กค
-
Intersection Observer๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ fetching( Replow, Repaint ์ต์ํ )
-
Skeleton Card(์คํํฑ ์์ด์ดํ๋ ์)๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํธํ ์ ์๋ ๋ก๋ฉ์๊ฐ์ ๋์ฒดํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์