Skip to content

πŸΏμ˜ν™”μ˜ˆλ§€ μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•˜λŠ” ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€!

Notifications You must be signed in to change notification settings

hun0613/cinema-system

Repository files navigation

🍿 μ˜ν™”μ˜ˆλ§€μ‹œμŠ€ν…œ

α„‹α…§α†Όα„’α…ͺ예ᄆᅒ사스템 목ᄋα…₯α†Έ

πŸ“Œ ν”„λ‘œμ νŠΈ μ†Œκ°œ

ν”„λ‘ νŠΈμ—”λ“œ μΈ‘λ©΄μ—μ„œ μ‚¬μš©μžμ™€μ˜ μΈν„°λ ‰μ…˜μ΄ 많이 λ°œμƒλ˜κ³ , λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ°€μ§€κ³  μžˆλŠ” μ‹œμŠ€ν…œ κ°œλ°œμ— 도전해보고 μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€.
μ˜ν™”μ˜ˆλ§€μ‚¬μ΄νŠΈλŠ” μ˜ν™” 정보λ₯Ό μ œκ³΅ν•΄μ£ΌκΈ°λ„ ν•˜μ§€λ§Œ κ·Ήμž₯선택, λ‚ μ§œ, μƒμ˜κ΄€, μ’Œμ„ 선택 λ“± μ‚¬μš©μžκ°€ μ§μ ‘μ μœΌλ‘œ μ„ νƒν•΄μ•Όν•˜λŠ” 정보듀이 많고, 이λ₯Ό μœ„ν•œ μ»΄ν¬λ„ŒνŠΈλ“€μ€ λ§Žμ€ 생각을 ν•˜λ©° κ°œλ°œν•΄μ•Όλ˜λŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ΄λΌ μƒκ°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μœ„μ™€ 같은 이유둜 μ˜ν™”μ˜ˆλ§€μ‚¬μ΄νŠΈλ₯Ό κ°œλ°œν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

πŸ“Œ 릴리즈 정보

  • 2024.03.11 - v1.0.0 (1μ°¨μ™„μ„±)
  • 2024.04.25 - v.2.0.0 (μ „μ—­μƒνƒœ 라이브러리 λ„μž…)
  • 2025.02.06 - v.3.0.0 (μ•„ν‚€ν…μ²˜ λ¦¬νŒ©ν† λ§)
  • 2025.04.05 - v.3.1.0 (둜그인 κΈ°λŠ₯ μΆ”κ°€)

πŸ“Œ κΈ°λŠ₯ μ†Œκ°œ

μš°μ„ , next.js의 layout μ»΄ν¬λ„ŒνŠΈλ₯Ό ν™œμš©ν•˜μ—¬, λͺ¨λ“  νŽ˜μ΄μ§€μ˜ 상단에 동일 헀더가 λžœλ”λ§λ˜λ„λ‘ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

1️⃣ ν˜„μž¬ μƒμ˜μž‘ μΊλŸ¬μ…€ μ»΄ν¬λ„ŒνŠΈ

ᄏᅒᄅα…₯셀

첫 νŽ˜μ΄μ§€μ˜ μƒλ‹¨μ—λŠ” ν˜„μž¬ μƒμ˜μ€‘μΈ μ˜ν™”μ˜ μŠ€ν‹Έμƒ·κ³Ό ν¬μŠ€ν„°, 그리고 μ˜ν™” λ‚΄μš©μ΄ 10초의 κ°„κ²©μœΌλ‘œ μ „ν™˜λ˜λ©° λ³΄μ—¬μ€λ‹ˆλ‹€.
ν•˜λ‹¨μ˜ λ™κ·Έλž€ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ ν•΄λ‹Ή μˆœμ„œμ˜ μ˜ν™” 정보λ₯Ό λžœλ”λ§ μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
μ˜ˆλ§€ν•˜κΈ° λ²„νŠΌμ„ 톡해 μ˜ˆλ§€νŽ˜μ΄μ§€λ‘œ 이동할 수 μžˆμŠ΅λ‹ˆλ‹€.

동적인 μ›€μ§μž„μ„ μ£ΌκΈ°μœ„ν•΄ 컨텐츠가 λ³€κ²½ λ λ•Œλ§ˆλ‹€ μŠ€ν‹Έμ»·μ€ 쀌 아웃이 λ˜λ„λ‘, μ˜ν™” 정보와 ν¬μŠ€ν„°λŠ” μœ„λ‘œ λ– μ˜€λ₯΄λ“― transform, scale, transition 속성을 ν™œμš©ν•˜μ—¬ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

2️⃣ ν˜„μž¬μƒμ˜μž‘, μƒμ˜μ’…λ£Œμž‘, κ°œλ΄‰μ˜ˆμ •μž‘ 별 μ˜ν™” 쑰회 및 검색

contentArea

μ˜ν™” λ°μ΄ν„°λŠ” ν˜„μž¬ μƒμ˜μž‘, μƒμ˜ μ’…λ£Œμž‘, κ°œλ΄‰ μ˜ˆμ •μž‘μœΌλ‘œ λΆ„λ₯˜λ˜λ©° ν˜„μž¬ μƒμ˜μž₯일 경우 평점과 예맀율이, μƒμ˜ μ’…λ£Œμž‘μΌ 경우 평점과 μƒμ˜μ’…λ£Œ ν…μŠ€νŠΈκ°€, κ°œλ΄‰ μ˜ˆμ •μž‘μ€ 평점과 κ°œλ΄‰κΉŒμ§€ 남은 디데이가 ν‘œμ‹œλ©λ‹ˆλ‹€.
각 μ˜ν™”λ°μ΄ν„°λŠ” mysql database에 μ €μž₯λ˜μ–΄ 있으며,

 export interface movieType {
   id: number; // id
   title: string; // 제λͺ©
   summary: string; // 쀄거리
   rating: number; // 평점
   reservation_rate: number; // 예맀율
   release_date: string; // κ°œλ΄‰μΌμ‹œ
   classification: number; // μƒμ˜μ—¬λΆ€ (1: ν˜„μž¬μƒμ˜μž‘, 2: μƒμ˜μ’…λ£Œμž‘, 3: κ°œλ΄‰μ˜ˆμ •μž‘)
   background_img: string; // 배경이미지 url
   poster_img: string; // ν¬μŠ€ν„°μ΄λ―Έμ§€ url
 }

ν˜•μ‹μœΌλ‘œ λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜•μ„ κ³ λ €ν•˜μ—¬ κ΅¬ν˜„ν•˜μ˜€κΈ°λ•Œλ¬Έμ—, ν™”λ©΄ μ‚¬μ΄μ¦ˆκ°€ 쀄어듀면 컨텐츠가 κ°€λ‘œ 4κ°œμ”© μ •λ ¬λ˜λ˜ 것이 2개둜 쀄어듀고, μ˜ν™”λΆ„λ₯˜ λ„€λΉ„κ²Œμ΄μ…˜λ„ κΈ°μ‘΄ λ²„νŠΌμ‹μ—μ„œ 선택 λΆ„λ₯˜λ§Œ ν‘œμ‹œλ˜κ³ , λ‚˜λ¨Έμ§€λŠ” 클릭 μ‹œ λ‚΄λ €μ˜€λŠ” λͺ¨λ‹¬μ„ 톡해 μ„ νƒν•˜λ„λ‘ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

각 μΉ΄λ“œ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν˜Έλ²„ μ‹œ 이미지가 살짝 ν™•λŒ€λ˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜κ³Ό ν•¨κ»˜ 상세보기, μ˜ˆλ§€ν•˜κΈ° λ²„νŠΌμ΄ λžœλ”λ§λ˜κ³ , 상세보기 클릭 μ‹œ μ˜ν™” 정보가 λ‹΄κ²¨μžˆλŠ” λͺ¨λ‹¬μ΄ λžœλ”λ§λ©λ‹ˆλ‹€.

3️⃣ μ˜ˆλ§€ν•˜κΈ° νŽ˜μ΄μ§€ - μ˜ν™”κ΄€ 선택

α„€α…³α†¨α„Œα…‘α†Ό

μ˜ˆλ§€ν•˜κΈ° λ²„νŠΌμ„ 톡해 예맀 νŽ˜μ΄μ§€λ‘œ λΌμš°νŒ…λ˜λ©΄, 일단 상단에 ν¬μŠ€ν„°μ™€ μ˜ν™” 평점, 예맀율 정보가 ν‘œμ‹œλ©λ‹ˆλ‹€.

예맀 첫번째 λ‹¨κ³„λŠ” κ·Ήμž₯선택이고 μ’ŒμΈ‘μ—λŠ” κ·Ήμž₯리슀트, μš°μΈ‘μ—λŠ” ν•΄λ‹Ή μ˜ν™”κ΄€ μœ„μΉ˜λ₯Ό ν‘œμ‹œν•΄ 쀄 카카였 맡이 λžœλ”λ§λ©λ‹ˆλ‹€.
λ°˜μ‘ν˜•μ„ κ³ λ €ν•˜μ—¬, λͺ¨λ°”μΌμ˜ κ²½μš°μ—λŠ” κ·Ήμž₯λ¦¬μŠ€νŠΈκ°€ μƒλ‹¨μœΌλ‘œ, μ§€λ„λŠ” ν•˜λ‹¨μœΌλ‘œ λ°°μΉ˜λ˜μ–΄ λ ˆμ΄μ•„μ›ƒ 깨짐을 λ°©μ§€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

카카였맡 apiλ₯Ό μ‚¬μš©ν–ˆκ³ , μ˜ν™”κ΄€ 리슀트의 각 μ˜ν™”κ΄€μ˜ μœ„λ„μ™€ μ’Œν‘œλ₯Ό db둜 κ΄€λ¦¬ν•˜μ—¬, μΉ΄μΉ΄μ˜€λ§΅μ— κ³ μ •ν•€μœΌλ‘œ ν‘œμ‹œν•΄λ‘μ—ˆμŠ΅λ‹ˆλ‹€.
μ˜ν™”κ΄€μ„ μ„ νƒν•˜λ©΄ μΉ΄μΉ΄μ˜€λ§΅μ€ μ„ νƒν•œ μ˜ν™”κ΄€μ˜ μœ„μΉ˜λ‘œ μ΄λ™ν•˜κ²Œ λ©λ‹ˆλ‹€.

4️⃣ λ‚ μ§œ 선택 및 μƒμ˜κ΄€, μƒμ˜μ‹œκ°„ 선택

ᄂᅑᆯᄍᅑ

예맀 λ‘λ²ˆμ§Έ λ‹¨κ³„λŠ” λ‚ μ§œ 선택 및 μƒμ˜κ΄€, μƒμ˜μ‹œκ°„ μ„ νƒμž…λ‹ˆλ‹€.
λ§ˆμ°¬κ°€μ§€λ‘œ λ°μŠ€ν¬νƒ‘μΌ κ²½μš°μ—λŠ” μ’ŒμΈ‘μ— λ‚ μ§œ 리슀트, μš°μΈ‘μ— μƒμ˜μ‹œκ°„ν‘œκ°€ λžœλ”λ§λ˜κ³ , λͺ¨λ°”μΌμ˜ 경우 상단에 λ‚ μ§œ 리슀트, ν•˜λ‹¨μ— μƒμ˜μ‹œκ°„ν‘œκ°€ λžœλ”λ§ λ©λ‹ˆλ‹€.

λ‚ μ§œλ¦¬μŠ€νŠΈλŠ” ν˜„μž¬λ‚ μ§œλ₯Ό κΈ°μ€€μœΌλ‘œ 2μ£Όλ’€ λ‚ μ§œκΉŒμ§€ dbμ—μ„œ κ°€μ Έμ˜€κ²Œ λ˜λŠ”λ°, dbλŠ”

 export interface DateType {
   date: string; // λ‚ μ§œ (YYYYMMDD);
   week: string; // μš”μΌ (μ›” ~ 일);
   holiday_yn: string; // 곡휴일 μ—¬λΆ€ (Y/N);
 }

μœ„μ™€ 같은 ν˜•νƒœλ‘œ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
μš”μΌμ— 따라 ν† , 일은 색깔을 λ‹€λ₯΄κ²Œ λžœλ”λ§λ˜λ©°, 곡휴일 여뢀에 λŒ€ν•œ 정보λ₯Ό 톡해 곡휴일일 경우 빨간색 처리λ₯Ό ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

λ‚ μ§œλ₯Ό μ„ νƒν•˜λ©΄, ν•΄λ‹Ή λ‚ μ§œμ™€ μ„ νƒν•œ μ˜ν™”, μ„ νƒν•œ μ˜ν™”κ΄€ idλ₯Ό νŒŒλΌλ―Έν„°λ‘œ 보내 그에 ν•΄λ‹Ήν•˜λŠ” μƒμ˜μ‹œκ°„ν‘œλ₯Ό κ°€μ Έμ˜€κ²Œλ©λ‹ˆλ‹€.

5️⃣ κ΄€λžŒμΈμ› 수 선택 및 μ’Œμ„ 선택

α„Œα…ͺᄉα…₯ᆨ

예맀 λ§ˆμ§€λ§‰ λ‹¨κ³„λŠ” κ΄€λžŒμΈμ› 수 및 μ’Œμ„ μ„ νƒμž…λ‹ˆλ‹€.
μš°μ„ , μ„ νƒν•œ μƒμ˜κ΄€κ³Ό μƒμ˜μ‹œκ°„μ— λ”°λ₯Έ μ’Œμ„ 정보λ₯Ό dbμ—μ„œ κ°€μ Έμ˜€κ²Œ 되고, μ„ νƒν•œ μƒμ˜κ΄€ id와 μΌμΉ˜ν•˜λŠ” μƒμ˜κ΄€ ꡬ쑰 정보λ₯Ό μƒμ˜κ΄€ 곡톡 μ»΄ν¬λ„ŒνŠΈμ˜ props둜 μ „λ‹¬ν•˜μ—¬ μƒμ˜κ΄€μ„ λžœλ”λ§ μ‹œν‚΅λ‹ˆλ‹€.

κ΄€λžŒμΈμ›μ„ μ„ νƒν•˜κ²Œ 되면, μ’Œμ„ 정보에 λ”°λ₯Έ μ˜ˆμ•½μ™„λ£Œ 석과 μ˜ˆλ§€κ°€λŠ₯ 석을 ν‘œμ‹œν•΄μ£Όκ³ , κ΄€λžŒμΈμ›μ— 맞게 μ’Œμ„μ„ μ„ νƒν•˜κ²Œλ©λ‹ˆλ‹€.

μ’Œμ„μ„ νƒμ€ λ‹€μŒκ³Ό 같은 μš”κ΅¬μ‚¬ν•­μ„ λ”°λ¦…λ‹ˆλ‹€.

  1. 인원 μˆ˜κ°€ 2λͺ… 이상일 경우, ν•œλ²ˆμ— 2μžλ¦¬μ”© μ„ νƒν•œλ‹€.
  2. μ’Œμ„ 선택이 μ§„ν–‰λ˜κ³  μž”μ—¬ 선택 석이 1개라면 λ‹€μ‹œ 1자리만 μ„ νƒλœλ‹€.
  3. 2자리 μ”© 선택할 λ•Œ, μ„ νƒν•œ μ’Œμ„ μš°μΈ‘μ’Œμ„μ΄ ν•¨κ»˜ μ„ νƒλœλ‹€.
  4. λ§Œμ•½, 우츑 μ’Œμ„μ΄ 예맀된 μžλ¦¬κ±°λ‚˜ μ—†λŠ” 자리 μΌλ•ŒλŠ” 쒌츑 μ’Œμ„μ΄ μ„ νƒλœλ‹€.
  5. λ§Œμ•½, 쒌츑 μ’Œμ„λ„ 예맀된 μžλ¦¬κ±°λ‚˜ μ—†λŠ” 자리 일 κ²½μš°μ—λŠ” ν•œμžλ¦¬λ§Œ μ„ νƒλœλ‹€.
  6. μ„ νƒν•œ μ’Œμ„μ„ ν΄λ¦­ν•˜λ©΄ 선택 μ·¨μ†Œλœλ‹€.
  7. 선택 μ·¨μ†Œν•  경우 ν•œμžλ¦¬ μ”© μ·¨μ†Œλœλ‹€.
  8. μ’Œμ„μ΄ μ„ νƒλœ μƒνƒœμ—μ„œ μΈμ›μˆ˜λ₯Ό λ³€κ²½ν•˜λ©΄, μ„ νƒλœ μ’Œμ„μ€ λͺ¨λ‘ μ΄ˆκΈ°ν™” λœλ‹€.

λ°˜μ‘ν˜•μ„ κ³ λ €ν•˜μ—¬ λͺ¨λ°”일 μ‚¬μ΄μ¦ˆλ‘œ 쀄어듀 μ‹œ 폰트 μ‚¬μ΄μ¦ˆμ™€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μ΄μ¦ˆκ°€ 일뢀 μž‘μ•„μ§€μ§€λ§Œ, μƒμ˜κ΄€ μ»΄ν¬λ„ŒνŠΈλŠ” overflow-autoλ₯Ό μ μš©ν•˜μ—¬ μ›λž˜ μ‚¬μ΄μ¦ˆλ₯Ό μœ μ§€ν•œ 채, 보이지 μ•ŠλŠ” μ˜μ—­μ€ 슀크둀둜 μ΄λ™ν•˜λ„λ‘ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

6️⃣ 예맀 μ™„λ£Œ

예약

λͺ¨λ“  예맀 절차λ₯Ό μ™„λ£Œν•˜λ©΄ μ•„λž˜ μ˜ˆλ§€ν•˜κΈ° λ²„νŠΌμ΄ ν™œμ„±ν™”λ˜κ³ , μ˜ˆλ§€ν•˜κΈ° λ²„νŠΌ 클릭 μ‹œ μ„ νƒν•œ μ’Œμ„μ •λ³΄λŠ” db에 반영되게 λ©λ‹ˆλ‹€.
그리고 Ticket λͺ¨λ‹¬μ΄ λžœλ”λ§λ˜λ©΄μ„œ λͺ¨λ“  예맀 μ ˆμ°¨κ°€ μ™„λ£Œλ˜κ²Œ λ©λ‹ˆλ‹€.


πŸ“Œ 적용 기술 μŠ€νƒ

πŸ“Ž Next.js (v.14.1.0)

μ˜ν™”μ˜ˆλ§€μ‹œμŠ€ν…œμ€ μ‚¬μš©μžλ“€μ—κ²Œ 많이 λ…ΈμΆœλ˜μ–΄μ•Όν•˜λŠ” μ‹œμŠ€ν…œμž…λ‹ˆλ‹€.
κ·Έλ ‡κΈ°λ•Œλ¬Έμ—, SEOλ₯Ό μš°μ„ μ μœΌλ‘œ κ³ λ €ν•΄μ•Όν–ˆκ³ , ν΄λΌμ΄μ–ΈνŠΈμ— 빈 html을 보내주고 순차적으둜 javascript μ½”λ“œλ₯Ό λ³΄λ‚΄μ£ΌλŠ” React보단, μ„œλ²„ λ‹¨μ—μ„œ html을 μ™„μ„±μ‹œμΌœ ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³΄λ‚΄μ£ΌλŠ” Next.jsκ°€ μ μ ˆν•˜λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ, Next.js의 Image νƒœκ·ΈλŠ” μžλ™μœΌλ‘œ 이미지 μ΅œμ ν™”λ₯Ό μ‹œμΌœμ€λ‹ˆλ‹€.
μ˜ν™” ν¬μŠ€ν„°, μŠ€ν‹Έμ»· λ“± λ§Žμ€ 이미지가 λžœλ”λ§λ˜μ–΄μ•Όν•˜λŠ” μ„œλΉ„μŠ€μ΄κΈ° λ•Œλ¬Έμ—, Next.js의 Image νƒœκ·Έλ₯Ό 톡해 이미지 μ΅œμ ν™”λ₯Ό μ μš©μ‹œν‚€λŠ” 것이 μ μ ˆν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ“Ž TypeScript

사싀, 이전 νšŒμ‚¬μ—μ„œ javascript둜 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•  λ•Œ, λŸ°νƒ€μž„μ—λŸ¬μ— λŒ€ν•œ 이슈λ₯Ό 많이 κ²½ν—˜ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€.
mapμ΄λ‚˜ filter같은 javascript λ‚΄μž₯ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ, 데이터 fetching에 λŒ€ν•œ 타이밍 λ•Œλ¬Έμ— μ˜ˆκΈ°μΉ˜μ•Šμ€ nullκ°’μ΄λ‚˜ undefined λ•Œλ¬Έμ— λŸ°νƒ€μž„μ—λŸ¬κ°€ λ°œμƒν•œ 일이 λ§Žμ•˜μ—ˆμ£ .
νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄, λͺ¨λ“  propsλ‚˜ λ³€μˆ˜μ— λŒ€ν•΄ μ μ ˆν•œ νƒ€μž…μ„ μ„€μ •ν•˜κΈ° λ•Œλ¬Έμ—, μ˜ˆκΈ°μΉ˜μ•Šμ€ λ‹€λ₯Έ νƒ€μž…μ΄ 듀어와도 μ½”λ”©κ³Όμ •μ—μ„œ 잘λͺ»λ¨μ„ μΈμ§€ν•˜κ³  μˆ˜μ •ν•  수 μžˆλ‹€λŠ” μž₯점이 있기 λ•Œλ¬Έμ— μΆ”ν›„, 버그λ₯Ό 쀄이고 μ•ˆμ •μ„±μ„ 확보할 수 μžˆκ² λ‹€κ³  μƒκ°ν•˜μ—¬ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°œλ°œν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ“Ž Tailwind CSS (v.3.3.0)

λ°˜μ‘ν˜• μ•± κ΅¬ν˜„μ΄ λͺ©ν‘œμ˜€κΈ° λ•Œλ¬Έμ—, λ³„λ„μ˜ media queryλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³ λ„, tailwind config νŒŒμΌμ— 각 λ””λ°”μ΄μŠ€ 별 슀크린 μ‚¬μ΄μ¦ˆλ₯Ό μ§€μ •ν•΄μ€ŒμœΌλ‘œμ¨ κ°„νŽΈν•˜κ³  λΉ λ₯΄κ²Œ λ°˜μ‘ν˜•μ„ κ΅¬ν˜„ν•  수 μžˆλ‹€λŠ” μž₯점이 이번 ν”„λ‘œμ νŠΈμ™€ κ°€μž₯ μ μ ˆν•˜λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ“Ž Next.js Route Handlers

next.js κ³΅μ‹λ¬Έμ„œλ₯Ό 읽어보닀가 next.jsλ₯Ό ν’€μŠ€νƒ ν”„λ ˆμž„μ›Œν¬μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
λ³„λ„μ˜ λ°±μ—”λ“œ μ„œλ²„λ₯Ό κ΅¬μΆ•ν•˜μ§€ μ•Šμ•„λ„ 자체적으둜 apiλ₯Ό ν•Έλ“€λ§ν•˜λ„λ‘ κ΅¬ν˜„ν•  수 μžˆλ‹€λŠ” 것이 κ°€μž₯ 큰 μž₯점으둜 λ‹€κ°€μ™”μŠ΅λ‹ˆλ‹€.
그리고, api μš”μ²­μ— λŒ€ν•œ api μ£Όμ†Œλ„ next.js direct routing처럼 폴더λͺ…μœΌλ‘œ μ§€μ •ν•  수 있고, node.js처럼 javascript 문법을 기반으둜 λ°±μ—”λ“œλ₯Ό ꡬ좕할 수 μžˆλ‹€λŠ” 점이 κ°€μž₯ 큰 λ§€λ ₯점으둜 λŠκ»΄μ‘ŒμŠ΅λ‹ˆλ‹€.

πŸ“Ž MySQL (v.8.1.0)

μ²˜μŒμ—λŠ” μ‚¬μ΄λ“œ ν”„λ‘œμ νŠΈμ΄κΈ° λ•Œλ¬Έμ—, dummy dataλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•˜κ³ μž ν–ˆμ§€λ§Œ, μƒμ˜μ‹œκ°„ν‘œμ˜ 경우 ꡉμž₯히 λ§Žμ€ rowκ°€ λ°œμƒκ°€κ²Œ 되고 이것을 ν•˜λ‚˜ν•˜λ‚˜ 더미 λ°μ΄ν„°λ‘œ λ§Œλ“€κΈ°μ—λŠ” λ§Žμ€ ν•œκ³„κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
μ „ νšŒμ‚¬μ—μ„œ ν’€μŠ€νƒ 개발자둜 μΌν–ˆκΈ° λ•Œλ¬Έμ— sql문법에 λŒ€ν•΄μ„œλŠ” μ–΄λŠμ •λ„ μ΅μˆ™ν•΄μ§„ μƒν™©μ΄μ—ˆκΈ° λ•Œλ¬Έμ— MySQL dbλ₯Ό μ‚¬μš©ν•˜λŠ”λ° 큰 λ¬Έμ œλŠ” μ—†λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.
그리고, 데이터가 κ³ μ •λ˜μ–΄μžˆλŠ” 것이 μ•„λ‹ˆλΌ μ‹œκ°„μ΄ 경과됨에 따라 μƒμ˜μ‹œκ°„ν‘œλ₯Ό 계속 μ—…λ°μ΄νŠΈλ₯Ό μ‹œμΌœμ€˜μ•Ό ν–ˆκΈ°λ•Œλ¬Έμ— dbλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 λ§žλ‹€κ³  μƒκ°ν•΄μ„œ MySQL을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ“Ž AWS RDS

Next.js Route Handlerλ₯Ό μ‚¬μš©ν•΄μ„œ λ³„λ„μ˜ λ°±μ—”λ“œ μΈμŠ€ν„΄μŠ€λ₯Ό κ΅¬μΆ•ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— DBλ₯Ό AWS의 RDSλ₯Ό 톡해 λ°°ν¬ν•˜μ—¬ μ‚¬μš©ν•  ν•„μš”κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. AWS의 프리티어λ₯Ό μ μš©ν•˜λ©΄ 무료둜 1λ…„κ°„ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ— RDSλ₯Ό μ‚¬μš©ν•˜μ—¬ DBλ₯Ό λ°°ν¬ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€.

πŸ“Ž Vercel

Vercel은 Next.js의 μ œμ‘°μ‚¬μΈ 만큼, Next.js ν”„λ‘œμ νŠΈμ˜ 배포가 정말 κ°„νŽΈν•˜λ‹€λŠ” μž₯점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
λ˜ν•œ, μžλ™μœΌλ‘œ repository에 pushκ°€ λ°œμƒν•˜λ©΄ μžλ™ λ°°ν¬λ˜λŠ” ci/cd도 μ œκ³΅ν•΄μ£ΌκΈ° λ•Œλ¬Έμ—, μΆ”ν›„ 2μ°¨ 개발 λ˜λŠ” λ²„κ·Έμ΄μŠˆκ°€ λ°œμƒν–ˆμ„ λ•Œ, λΉ λ₯΄κ²Œ λŒ€μ‘ν•  수 μžˆλ‹€λŠ” 점이 κ°€μž₯ 큰 μž₯점으둜 λ‹€κ°€μ™”μŠ΅λ‹ˆλ‹€.
그리고 λΉŒλ“œκ³Όμ •μ—μ„œμ™€ λŸ°νƒ€μž„ μƒν™©μ—μ„œμ˜ 둜그λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μ œκ³΅ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— κ·Έ 점도, μ‹œμŠ€ν…œμ„ μœ μ§€λ³΄μˆ˜ ν•΄λ‚˜κ°€λŠ”λ° λ˜λŠ” λ²„κ·Έμ˜ 원인을 뢄석할 λ•Œ 정말 κ°„νŽΈν•œ 점이고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

About

πŸΏμ˜ν™”μ˜ˆλ§€ μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•˜λŠ” ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published