Banana Store
๐ ํ๋ก์ ํธ ํ๊ณ ๋ฌธ์
๐ ํ๋ก์ ํธ Issues
๋ชฉ์ฐจ
๐ ํ๋ก์ ํธ ์๊ฐ
- ์ํ ๊ฒฐ์ ๋ฅผ ์ค์ฌ์ผ๋ก ํ E-Commerce ํ๋ก์ ํธ์
๋๋ค.
โ๏ธ ์ฌ์ฉ๊ธฐ์
Typescript/๊ด๊ณํ DB์ ์ง์์ด ์์ด ์ ํํ๊ฒ ๋์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข
์๋์ง ์๊ณ , Copy&Paste๋ฐฉ์์ผ๋ก ์ปค์คํ
์ด ์ฉ์ดํ์ฌ ์ ํํ์ต๋๋ค.
TSํ์
์ ์์ ์ฑ๊ณผ ์ ํจ์ฑ๊ฒ์ฆ๊ณผ์ ์ ์์ด Yup๋ณด๋ค ๋ ์ ํฉํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
jest๋ณด๋ค ํ
์คํธ์ค์ ์์
์ด ๊ฐ๋จํ์ฌ ์ ํํ์ต๋๋ค.
E2Eํ
์คํธ๋ฅผ ์ํด ๋์
ํ์ต๋๋ค.
๐จ ์ํคํ
์ฒ
๐ฏ ์๋น์ค ๊ธฐ๋ฅ
์๋น์ค์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ์๊ฐ์
/๋ก๊ทธ์ธ(Supabase Auth)
- ์ผ๋ฐ ์ฌ์ฉ์
- ์ํ๊ตฌ๋งค (์์ํฌํธ ์ฐ๋)
- ์ฅ๋ฐ๊ตฌ๋
- ์ํ ํํฐ๊ธฐ๋ฅ (๊ฒ์์ด, ํ๊ทธ, ๊ฐ๊ฒฉ๋ฒ์)
- ๊ตฌ๋งค๋ด์ญ ์กฐํ
- ํ๋งค์
- ํ๋งค์ํ ๋ฑ๋ก
- ์ฃผ๋ฌธ๋ด์ญ ์กฐํ
๐ฏ ์ฃผ์ ๊ธฐ๋ฅ ์๊ฐ
โ
ํต์ฌ๊ธฐ๋ฅ
๐ฅ ํธ๋ฌ๋ธ์ํ
โ๏ธ ์ฑ๋ฅ์ต์ ํ
โ
๐ฅ 1. ์์ํฌํธ ๊ฒฐ์ ๊ธฐ๋ฅ
- ์์ํฌํธ SDK๋ฅผ ํ์ฉํด ๊ฐ์๊ฒฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
- ์ํ ๊ฒฐ์ ๋จ๊ณ ์ง์
์, ์ฌ๊ณ ๋ฅผ ์ฐ์ ๊ฐ์ํ์ฌ ๋์ ๊ตฌ๋งค๋ก ์ธํ ์ฌ๊ณ ๋ถ์กฑ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ๊ฒฐ์ ์ทจ์ ์ ์ฌ๊ณ ๋ฅผ ์์๋ณต๊ตฌํ๊ณ , ๊ฒฐ์ ์๋ฃ ์ ์ฃผ๋ฌธ ์ํ๋ฅผ ์
๋ฐ์ดํธํ๋ ํ๋ก์ธ์ค๋ฅผ ํตํด ์์ ์ ์ธ ์ฌ๊ณ ๊ด๋ฆฌ์ ์ํํ ๊ฒฐ์ ํ๋ฆ์ ๊ตฌํํ์ต๋๋ค.
sequenceDiagram
actor User
participant ์ํ์์ธํ์ด์ง
participant Order/OrderDetail
participant Product
participant Iamport
participant PayHistory
User->>์ํ์์ธํ์ด์ง: ๊ตฌ๋งค๋ฒํผ ํด๋ฆญ
์ํ์์ธํ์ด์ง-->>Order/OrderDetail: ์์ฑ
Order/OrderDetail-->>Product: ์ฌ๊ณ ์๋ ์ฐ์ ๊ฐ์
Iamport->>User: ๊ฒฐ์ ์ฐฝ ๋ถ๋ฌ์ค๊ธฐ
alt ๊ฒฐ์ ์ทจ์
Iamport-->>Product: ์ฌ๊ณ ์๋ ์์๋ณต๊ตฌ
Product-->>Order/OrderDetail: ์ฃผ๋ฌธ ์ญ์
else ๊ฒฐ์ ์๋ฃ
Iamport->>User: ๊ฒฐ์ ์๋ฃ ํ๋ฉด Redirect
User-->>Iamport: paymentId๋ก ๊ฒฐ์ ์กฐํAPI ์์ฒญ
Iamport-->>PayHistory: ๊ฒฐ์ ๋ด์ญ ์ถ๊ฐ
PayHistory-->>Order/OrderDetail: ์ฃผ๋ฌธ์ํ ์
๋ฐ์ดํธ(๊ฒฐ์ ์๋ฃ ํ์ธ)
end
โ๏ธ 2. ์ํ ์ด๋ฏธ์ง ์ต์ ํ(Lazy Loading)
๐ฅโ๏ธ 3. ์ํ ์ด๋ฏธ์ง ์ต์ ํ(Image Resize & Webp), ์ฌ์ด์ฆ 50%๊ฐ์
- ์ํ ์ด๋ฏธ์ง๊ฐ ๋ง์ ์ด์ปค๋จธ์ค ์ฌ์ดํธ ํน์ฑ์ ๊ณ ๋ คํ์ฌ, ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ํ์ฌ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ์ต๋๋ค.
- ์ํ ๋ชฉ๋กํ๋ฉด์ ๊ฒฝ์ฐ, ์ด๋ฏธ์ง thumnail์ ์ ์ฉํด ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ฅผ 50% ๊ฐ์์์ผฐ์ต๋๋ค. (157KB -> 64.3KB)
- ํ๋งค์๊ฐ ์ํ์ ๋ฑ๋กํ ๋, ์ด๋ฏธ์ง๋ฅผ ๋ณํ&Resizingํ์ฌ ์
๋ก๋ํฉ๋๋ค.
- ๐ ์ด๋ฏธ์ง ์ต์ ํ 2. Image Resize
-
๐ฅโ๏ธ 4. React Windowing, ๋ ๋๋ง ์ง์ฐ 98%๊ฐ์
- ๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ์ผ๋ก ์ธํด, ๋ง์ ์ปดํฌ๋ํธ๊ฐ ์์ด๊ฒ ๋๋ค๋ฉด ๋ ๋๋ง์ ์ง์ฐ์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
- ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด, Viewport ์ธ ์ปดํฌ๋ํธ๋ ๋ ๋๋ง๋์ง ์๋๋ก windowing๊ธฐ๋ฒ์ ๋์
ํ์ต๋๋ค.
- 10๋ง๊ฐ์ ๋ฐ์ดํฐ๋ก ํ
์คํธํ์ ๋, ์ด๊ธฐ ๋ ๋๋ง ์๊ฐ์ด 976ms > 16ms๋ก, 98%๊ฐ์๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
- ๐ react-window
-