본문으둜 κ±΄λ„ˆλ›°κΈ°

🌱 25λ…„ 10μ›” 회고

μ•½ 13λΆ„
Ju young Lee
A contribution-driven developer

듀어가며​

img alt="autumn"

μ˜€ν”ˆλ‹₯ν„°μ—μ„œμ˜ '첫 3κ°œμ›”' 수슡 기간을 κ³΅μ‹μ μœΌλ‘œ λ§ˆλ¬΄λ¦¬ν•˜κ³  λ‹€μŒ 단계λ₯Ό μ€€λΉ„ν•˜λŠ” 의미 μžˆλŠ” ν•œ λ‹¬μ΄μ—ˆλ‹€. 3κ°œμ›”κ°„μ˜ 수슡 기간을 마치고 POλ‹˜, 그리고 κ°œλ°œνŒ€ λ™λ£Œλ“€κ³Ό ν•¨κ»˜ 'CSS (Continue, Stop, Start)' λ°©μ‹μ˜ 회고λ₯Ό μ§„ν–‰ν–ˆλ‹€.

각 개인 μ„±μž₯을 μœ„ν•΄ μ΄λ ‡κ²Œ ν•¨κ»˜ μ‹œκ°„μ„ λ‚΄μ–΄ κ³ λ―Όν•΄μ€€λ‹€λŠ” 것 μžμ²΄λ§ŒμœΌλ‘œλ„ 정말 κ°μ‚¬ν•œ κ²½ν—˜μ΄μ—ˆλ‹€. 이 ν”Όλ“œλ°±μ„ 톡해 μ§€λ‚œ 3κ°œμ›”κ°„μ˜ λ‚΄ λͺ¨μŠ΅μ„ κ°κ΄€μ μœΌλ‘œ λŒμ•„λ³΄κ³ , μ•žμœΌλ‘œ λ‚˜μ•„κ°ˆ λ°©ν–₯을 μ„€μ •ν•  수 있게 λ˜μ—ˆλ‹€.

10μ›” μ•‘μ…˜ 포인트λ₯Ό λŒμ•„λ³΄λ©° 10μ›” 회고λ₯Ό μž‘μ„±ν•΄λ³΄λ €κ³  ν•œλ‹€.

  • 10μ›”μ˜ μ•‘μ…˜ 포인트

  • κΈ°μ‘΄ 사내 μ½”λ“œ SSR μ „ν™˜μ„ μœ„ν•΄ Next.js ν•™μŠ΅ (2μ£Ό 집쀑 ν•™μŠ΅)

  • 기본적인 SQLλ¬Έ ν•™μŠ΅

  • μ˜€ν”ˆ λ‹₯ν„° μ›Ή/μ•± λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ μœ„ν•΄ Flutter-web κ³΅λΆ€ν•˜κΈ°

μ§€λ‚œ νšŒκ³ μ—μ„œ μœ„μ˜ 3κ°€μ§€μ˜ μ•‘μ…˜ 포인트λ₯Ό μž‘μ„±ν–ˆλŠ”λ°, 이렇닀할 κ²°κ³Όκ°€ μ—†μ–΄ μ²΄λŠ”ν¬ ν•˜μ§€ λͺ»ν–ˆλ‹€. 보닀 λͺ…ν™•ν•œ μ›”κ°„ νšŒκ³ λ³„ μ•‘μ…˜ 포인트λ₯Ό μž‘μ„±ν•˜λ„λ‘ λ…Έλ ₯ν•΄μ•Όκ² λ‹€. 10μ›” 회고λ₯Ό 11μ›”μ˜ μ•‘μ…˜ ν¬μΈνŠΈλŠ” 보닀 ꡬ체적이고 μš°μ„ μˆœμœ„κ°€ 높은 것듀을 μ„ λ³„ν•΄μ„œ μž‘μ„±ν•΄λ³΄λ €κ³  ν•œλ‹€.

3κ°œμ›” 수슡 톡과 ν›„, PO와 κ°œλ°œνŒ€κ³Ό ν•¨κ»˜ νšŒκ³ β€‹

CSS νšŒκ³ λŠ”

  • Continue (계속 μž˜ν•˜κ³  μžˆλŠ” 점)
  • Stop (κ°œμ„ μ΄ ν•„μš”ν•œ 점)
  • Start (μƒˆλ‘­κ²Œ μ‹œλ„ν•˜λ©΄ 쒋을 점)

μˆœμ„œλ‘œ μ§„ν–‰λ˜μ—ˆλ‹€. λ™λ£ŒλΆ„λ“€μ˜ 이름을 가리고 κ³΅μœ ν•΄μ£Όμ‹  ν”Όλ“œλ°±μ„ μ΄λ―Έμ§€λ‘œ 첨뢀해본닀.

img alt="work-3" img alt="work-3" img alt="work-3" img alt="work-3"

ν”Όλ“œλ°±μ„ μ •λ¦¬ν•˜λ©° νŒŒμ•…ν•œ λ‚˜μ˜ λͺ¨μŠ΅μ€ λ‹€μŒκ³Ό κ°™μ•˜λ‹€.

λ°œμ „μ‹œν‚€λ©΄ 쒋을 λ‚˜μ˜ 강점

  • λ¬Έμ„œ 기반의 μ†Œν†΅: νžˆμŠ€ν† λ¦¬ νŒŒμ•…κ³Ό 곡유λ₯Ό μœ„ν•΄ λ¬Έμ„œλ₯Ό 적극적으둜 ν™œμš©ν•œ 점
  • 적극적인 QA와 μ˜€λ„ˆμ‹­: 맑은 μž‘μ—…μ— λŒ€ν•΄ μ±…μž„κ°μ„ κ°€μ§€κ³  μ£Όλ„μ μœΌλ‘œ QAλ₯Ό μ§„ν–‰ν•œ 점
  • 수용적이고 주도적인 νƒœλ„: ν”Όλ“œλ°±μ„ κΈμ •μ μœΌλ‘œ μˆ˜μš©ν•˜κ³ , 업무λ₯Ό μ£Όλ„μ μœΌλ‘œ μ°Ύμ•„μ„œ ν•˜λ €λŠ” νƒœλ„

ν•¨κ»˜ ν•˜κ³  싢은 λ™λ£Œκ°€ 되기 μœ„ν•œ κ°œμ„ ν•  λΆ€λΆ„

  • 디버깅 μŠ€ν‚¬: 문제 λ°œμƒ μ‹œ 버그 지점을 λΉ λ₯΄κ²Œ νŒŒμ•…ν•˜λŠ” λŠ₯λ ₯을 ν‚€μšΈ ν•„μš”κ°€ 있음
  • 기술 λ¦¬μ„œμΉ˜ μ—­λŸ‰: 기술 μŠ€νƒ μ„ μ •μ΄λ‚˜ λ¦¬μ„œμΉ˜ μ‹œ, κ·Όκ±°λ₯Ό 더 κΌΌκΌΌν•˜κ²Œ μˆ˜μ§‘ν•˜κ³  λͺ…ν™•ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” λ…Έλ ₯
  • μ™„λ²½μ£Όμ˜λ³΄λ‹€ μ™„μˆ˜: 'λ„ˆλ¬΄ μž˜ν•˜λ €λŠ”' νƒœλ„μ—μ„œ 쑰금 νž˜μ„ λΉΌκ³ , '일단 μ™„μˆ˜ν•˜κ³  κ°œμ„ ν•˜λŠ”' 사이클을 λ§Œλ“œλŠ” μ—°μŠ΅

μž₯점은 계속 갈고 닦고 λΆ€μ‘±ν•œ 점은 원인을 νŒŒμ•…ν•΄μ„œ 남은 2κ°œμ›”κ°„ μ§‘μ€‘μ μœΌλ‘œ κ°œμ„ ν•΄λ‚˜κ°ˆ κ³„νšμ΄λ‹€.

기술적인 κ³ λ―Ό, "Vercel 이전, μ§€κΈˆ κΌ­ ν•„μš”ν•œκ°€?"​

10μ›”μ˜ 큰 기술적 κ³ λ―Ό 쀑 ν•˜λ‚˜λŠ” μ˜€ν”ˆλ‹₯ν„° μ›Ή SEO μ΅œμ ν™”λ₯Ό μœ„ν•œ Next.js SSR λ„μž…κ³Ό 배포 ν™˜κ²½μ΄μ—ˆλ‹€.

νŒ€ λ‚΄μ—μ„œλŠ” "SEO μ΅œμ ν™”λ₯Ό μœ„ν•΄ Vercel 이전이 ν•„μˆ˜μ μ΄λ‹€"λΌλŠ” 의견이 μžˆμ—ˆμ§€λ§Œ, AWS Amplify 곡식 λ¬Έμ„œλ₯Ό λ‹€μ‹œ κ²€ν† ν•˜λ©° 이 μ „μ œμ— μ§ˆλ¬Έμ„ λ˜μ§€κ²Œ λ˜μ—ˆλ‹€. "AmplifyλŠ” Next.js의 핡심 κΈ°λŠ₯은 λŒ€λΆ€λΆ„ μ§€μ›ν•˜λŠ”λ°, Vercelμ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” κΈ°λŠ₯이 μ—†λ‹€λ©΄ ν˜„μ‹œμ  우리 λͺ©ν‘œμΈ SEO μ΅œμ ν™”μ— 치λͺ…적인 λ¬Έμ œκ°€ μžˆμ„κΉŒ μ‹Άμ—ˆλ‹€.

κ·Έλž˜μ„œ μš°μ„  각 밴더가 지원 μ—¬λΆ€ 및 λΉ„μš©μ„ 찾아보고 λ™λ£Œλ“€μ—κ²Œ κ³΅μœ ν–ˆλ‹€.

Amplify의 지원 ν˜„ν™© (λ˜λŠ” 것 vs μ•ˆ λ˜λŠ” 것)

AmplifyλŠ” Next.js의 핡심 κΈ°λŠ₯을 λŒ€λΆ€λΆ„ μ§€μ›ν•œλ‹€.

  • λ˜λŠ” 것: SSR, SSG, μ‹œκ°„ 기반 ISR, 이미지 μ΅œμ ν™”.
  • μ•ˆ λ˜λŠ” 것:
    • On-demand ISR (μ£Όλ¬Έν˜• κ°±μ‹ ): 이벀트 기반 μ¦‰μ‹œ 갱신이 λΆˆκ°€λŠ₯ν•˜κ³  μ‹œκ°„ κΈ°λ°˜κ°±μ‹ λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.
    • Next.js Streaming: UI λΌˆλŒ€λ₯Ό λ¨Όμ € λ³΄μ—¬μ£ΌλŠ” μŠ€νŠΈλ¦¬λ°μ„ μ§€μ›ν•˜μ§€ μ•Šμ•„, Core Web Vitals 의 LCP κ°œμ„ μ— Vercel 보닀 λΆˆλ¦¬ν•  수 μžˆλ‹€.
    • 미듀웨어 μ„±λŠ₯: κΈ°λŠ₯은 λ™μž‘ν•˜μ§€λ§Œ, AWS의 lambda μ—£μ§€ 기반이라 Vercel의 Edge μ„±λŠ₯ λŒ€λΉ„ μ‹¬κ°ν•œ μ½œλ“œ μŠ€νƒ€νŠΈ μœ„ν—˜μ΄ μžˆλ‹€.

Vercel μ΄μ „μ˜ λΉ„μš©κ³Ό 리슀크

λ‹¨μˆœνžˆ κΈ°λŠ₯만 보고 Vercel둜 μ΄μ „ν•˜κΈ°μ—λŠ” λͺ…ν™•ν•œ λΉ„μš©μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.

  1. 기술적 쒅속성: Vercel은 Next.js의 λͺ¨λ“  κΈ°λŠ₯을 μ§€μ›ν•˜μ§€λ§Œ, μ΄λŠ” Next.jsκ°€ Vercel 인프라에 κ°•ν•˜κ²Œ λ¬Άμ—¬μžˆμŒμ„ μ˜λ―Έν•œλ‹€. 반골 기질이 μžˆλŠ”... μš°λ¦¬μ—κ²
  2. 운영 λΉ„μš© 및 λ³΅μž‘μ„± 증가: 인프라 벀더가 λΆ„μ‚°λ˜λ©΄ 관리 ν¬μΈνŠΈμ™€ λΉ„μš©μ΄ μ¦κ°€ν•œλ‹€.

결둠은 λ¨Όμ € Amplifyμ—μ„œ Next.js SSR을 κ΅¬μΆ•ν•˜κ³  μ΅œμ ν™”λ₯Ό μ§„ν–‰ν•˜λŠ” 것

Amplify의 ν•œκ³„κ°€ ν˜„μž¬ 우리 μ„œλΉ„μŠ€μ˜ Core Web Vitals μ μˆ˜μ— 치λͺ…적인 영ν–₯을 μ£ΌλŠ”μ§€ ν˜Ήμ€ On-demand ISR의 μ‹€μ‹œκ°„μ„±μ΄ 우리 λΉ„μ¦ˆλ‹ˆμŠ€μ— ν•„μˆ˜μ μΈμ§€ κ²€ν† ν•œ κ²°κ³Ό, "아직은 μ•„λ‹ˆλ‹€"λΌλŠ” 결둠을 λ‚΄λ Έλ‹€.

λ”°λΌμ„œ λ¨Όμ € Amplify λ‚΄μ—μ„œ SEOλ₯Ό κ·ΉλŒ€ν™”, 예λ₯Ό λ“€μ–΄ 이미지 μ΅œμ ν™” 점검, λΆˆν•„μš”ν•œ 동적 λ Œλ”λ§ μ΅œμ†Œν™”μ™€ 같은 μž‘μ—…μ„ μ‹œλ„ν•˜κ³ , Core Web Vitals μ μˆ˜κ°€ λͺ©ν‘œμΉ˜μ— λ―Έλ‹¬ν•˜κ±°λ‚˜ μ½˜ν…μΈ μ˜ μ‹€μ‹œκ°„μ„±μ΄ μ€‘μš”ν•΄μ§€λŠ” μ‹œμ μ— Vercel 이전을 μž¬κ²€ν† ν•˜λŠ” κ²ƒμœΌλ‘œ μ œμ•ˆν–ˆλ‹€.

λ˜ν•œ amplify ν™˜κ²½μ—μ„  λͺ¨λ…Έλ ˆν¬ λΉŒλ“œ 슀크립트 μž‘μ„±μ— μ• λ₯Ό λ¨ΉλŠ”λ‹€λŠ” μ˜κ²¬λ“€μ΄ λ§Žμ•˜λŠ”λ° ν˜„μž¬ μ˜€ν”ˆλ‹₯ν„°λŠ” λͺ¨λ…Έλ ˆν¬ ꡬ성도 μ•„λ‹ˆκΈ°μ— λ”μš±μ΄ amplifyμ—μ„œ ν•  수 μžˆλŠ” 것듀을 μ§„ν–‰ν•΄λ³΄κΈ°λ‘œ ν–ˆλ‹€.

κ²ͺ어보면 μ•Œκ² μ§€ μ‹Άμ—ˆλ‹€... 미래의 우리 νŒŒμ΄νŒ…

OPN λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕 μ‹œμž‘β€‹

μž…μ‚¬ 3κ°œμ›” μ°¨κ°€ λ˜λ©΄μ„œ, λ‹Ήμž₯의 κΈ°λŠ₯ 개발 외에 μž₯기적으둜 κΈ°μ—¬ν•  먹거리듀이 보이기 μ‹œμž‘ν–ˆλ‹€. PO이자 λ””μžμ΄λ„ˆμ΄μ‹  μ„±μš±λ‹˜μ΄ ν”Όκ·Έλ§ˆμ— OPN λ””μžμΈ μ‹œμŠ€ν…œ νŒŒμΌμ„ λ”°λ‘œ κ΄€λ¦¬ν•˜μ‹œλŠ” 것을 보고 λ“  생각이 μ—ˆλ‹€.

ν•˜μ§€λ§Œ ν•΄μ•Όν•  것듀이 λ§Žμ€ μƒν™©μ—μ„œ,μ€‘μš”ν•˜μ§€λ§Œ κΈ‰ν•˜μ§€ μ•Šμ€ λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕은 μ„ λœ» μ‹œμž‘ν•˜κΈ° μ–΄λ €μš΄ ν”„λ‘œμ νŠΈμ²˜λŸΌ λ³΄μ˜€λ‹€.

κ·Έλž˜μ„œ λ¬΄μž‘μ • 'μ œκ°€ ν• κ²Œμš”!'κ°€ μ•„λ‹Œ 이 ν”„λ‘œμ νŠΈλ₯Ό ν˜„μ‹€μ μœΌλ‘œ μ‹œμž‘ν•  κΈ°λ°˜μ„ λ¨Όμ € λ§ˆλ ¨ν•΄μ•Όκ² λ‹€κ³  μƒκ°ν–ˆλ‹€. κ·Έλž˜μ„œ μŠ€ν”„λ¦°νŠΈ νšŒμ˜μ—μ„œ κ³΅μ‹μ μœΌλ‘œ λ…Όμ˜λ₯Ό μ œμ•ˆν•˜κΈ°μ— μ•žμ„œ, λ‹€μŒκ³Ό 같은 사전 μž‘μ—…μ„ μ§„ν–‰ν•΄λ³΄μ•˜λ‹€.

  1. λ””μžμΈ μ‹œμŠ€ν…œ λ¦¬μ„œμΉ˜: (ν† μŠ€, 라인 λ“± κ΅­λ‚΄μ™Έ λ””μžμΈ μ‹œμŠ€ν…œ 사둀 뢄석)
  2. OPN λ””μžμΈ μ‹œμŠ€ν…œ 뢄석: (λ””μžμ΄λ„ˆκ°€ 섀계 쀑인 ν”Όκ·Έλ§ˆ 파일 뢄석)
  3. λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕 청사진: (μ»΄ν¬λ„ŒνŠΈλ³„ μ˜ˆμƒ 개발 곡수 μΈ‘μ •)
  4. 개발 ν™˜κ²½ ꡬ좕: react 기반 Storybook 초기 μ„ΈνŒ… 및 ν™˜κ²½ ꡬ성

μ΄λŸ¬ν•œ μ€€λΉ„λ₯Ό λ°”νƒ•μœΌλ‘œ μŠ€ν”„λ¦°νŠΈ νšŒμ˜μ—μ„œ 'λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕'을 μ•ˆκ±΄μœΌλ‘œ μ˜¬λ ΈμŠ΅λ‹ˆλ‹€.

img alt="work-3"

λ¬Όλ‘  이 ν”„λ‘œμ νŠΈλŠ” λ‹Ήμž₯의 μš°μ„ μˆœμœ„κ°€ λ†’μ§€ μ•Šμ„ 수 μžˆλ‹€κ³  μƒκ°ν•œλ‹€. κ·Έλž˜μ„œ λ””μžμ΄λ„ˆμ™€ λ…Όμ˜ν•˜μ—¬, κΈ°μ‘΄ μŠ€ν”„λ¦°νŠΈ 업무에 뢀담을 μ£Όμ§€ μ•ŠμœΌλ©΄μ„œλ„ κΎΈμ€€νžˆ μ§„ν–‰ν•  수 μžˆλŠ” 'μ˜λ„μ μΈ ν”„λ‘œμ„ΈμŠ€'λ₯Ό ν•¨κ»˜ μ œμ•ˆν•΄λ³΄μ•˜λ‹€.

우리의 κ²½λŸ‰ ν”„λ‘œμ„ΈμŠ€(일이 λ˜λ„λ‘ λ¨Όμ € μž‘κ²ŒλΌλ„ ν•˜μž)

  • 주기적인 λ””μžμΈ μ‹œμŠ€ν…œ μ»΄ν¬λ„ŒνŠΈ QA λ―ΈνŒ…: λ§€μ£Ό λͺ©μš”일 3μ‹œ, 1μ‹œκ°„ λ™μ•ˆ λ””μžμΈ μ‹œμŠ€ν…œ QA 및 싱크업을 μ§„ν–‰ν•©λ‹ˆλ‹€.
  • μŠ€ν”„λ¦°νŠΈ μ΅œμ†Œ λͺ©ν‘œ μ„€μ •: μŠ€ν”„λ¦°νŠΈλ§ˆλ‹€ μ΅œμ†Œ 2개 μ΄μƒμ˜ μ»΄ν¬λ„ŒνŠΈλ₯Ό κ΅¬ν˜„ν•˜κ³ , 이λ₯Ό Storybook으둜 ν•¨κ»˜ QAν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ μž‘μ€ 사이클을 돌리며 μ‹œμŠ€ν…œμ„ μ μ§„μ μœΌλ‘œ μ™„μ„±ν•΄λ‚˜κ°ˆ κ³„νšμž…λ‹ˆλ‹€.

25λ…„ 10μ›” 말, μ‹œμž‘μ€ μž‘μ§€λ§Œ μ•„λ§ˆ 내년에 νλ­‡ν•˜κ²Œ 바라볼 것 κ°™λ‹€. μ‹œμž‘μ€ ν–ˆλ‹€. μž˜ν–ˆλ‹€!

λ””μžμΈ μ‹œμŠ€ν…œ ꡬ좕해본 κ²½ν—˜μ΄ μžˆλŠ” ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλΆ„μ΄ μžˆλ‹€λ©΄ λŒ“κΈ€ ν˜Ήμ€ λ§ν¬λ“œμΈμœΌλ‘œ μ—°λ½μ£Όμ„Έμš”.. λ„μ™€μ£Όμ„Έμš”.

λ§ˆμΉ˜λ©°β€‹

10월은 μž‘μ€ μ„±κ³΅μ˜ 기쁨과 λ™λ£Œλ“€μ˜ λ”°λœ»ν•œ ν”Όλ“œλ°±μœΌλ‘œ 가득 μ°¬ ν•œ λ‹¬μ΄μ—ˆλ‹€. 3κ°œμ›” μ „μ˜ λ‚˜μ™€ μ§€κΈˆμ˜ λ‚˜λ₯Ό λŒμ•„λ³΄λ©° 이 μ„±μž₯의 동λ ₯을 μ£Όμ‹  λΆ„λ“€κ»˜ λ‹€μ‹œ ν•œλ²ˆ 깊이 κ°μ‚¬ν–ˆλ‹€.

  • 11μ›”μ˜ μ•‘μ…˜ 포인트

  • Next.js 뉴 μ˜€ν”ˆ λ‹₯ν„° POC(Proof of Concept) μ™„λ£Œ 및 곡유

  • μ˜€ν”ˆλ‹₯ν„°μš© 넀이버 지도 API κ°€μ΄λ“œ

    • 핡심 κΈ°λŠ₯ 3~5κ°€μ§€(e.g., 마컀 찍기, 거리 계산)의 μ½”λ“œ μŠ€λ‹ˆνŽ«.
    • μš°λ¦¬κ°€ κ²ͺμ—ˆλ˜(or κ²ͺ을) 'μ£Όμš” λ¬Έμ œμ™€ ν•΄κ²°μ±…' (e.g., μ’Œν‘œκ³„ 였λ₯˜, 마컀 λ‘œλ”© μ΅œμ ν™”).
    • μ‹ κ·œ μž…μ‚¬μžλ₯Ό μœ„ν•œ 초기 μ„ΈνŒ… 방법 및 인증 ν‚€ 관리 λ°©μ•ˆ.
  • μ½”λ“œ 에디터 디버깅 툴 ν•™μŠ΅ 및 싀무에 적용