Skip to content
@kakao-bookcamp-large-scale-challenge

kakao-bookcamp-large-scale-challenge

KakaoTech Bootcamp : λŒ€κ·œλͺ¨ λΆ€ν•˜ ν…ŒμŠ€νŠΈ λŒ€νšŒ

νŒ€μ› ꡬ성 및 μ—­ν• 

이름 직무 μ—­ν• 
kellyn.lee(이가은) AI - νŒ€μž₯
- 프라이머리-세컨더리 λ ˆν”Œλ¦¬μΉ΄ μ…‹ λͺ½κ³ λ””λΉ„ 기반 μ„œλΉ„μŠ€ 개발
πŸ™‡β€β™‚ noah.kim(κΉ€μ§€ν˜Έ) ν’€μŠ€νƒ / ν”„λ‘ νŠΈμ—”λ“œ - artillery Β· playwright 기반 e2e ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±
- artillery.io λͺ¨λ‹ˆν„°λ§ μ„œλΉ„μŠ€ ꡬ좕 및 λΆ€ν•˜ ν…ŒμŠ€νŠΈ μ§„ν–‰ 및 평가
- νšŒμ›μ •λ³΄ λ³€κ²½ API 개발
- 버그 ν”½μŠ€
huni.kwon(κΆŒμƒν›ˆ) ν’€μŠ€νƒ / ν”„λ‘ νŠΈμ—”λ“œ - AWS S3 기반 이미지 μ—…λ‘œλ“œ 방식 개발
- 버그 ν”½μŠ€
wren.kim(κΉ€μ‹œμ€) ν’€μŠ€νƒ / λ°±μ—”λ“œ - λ§ˆμŠ€ν„° 슬레이브 기반 Redis κΈ°λŠ₯ 개발
- RabbmitMQ 기반 λ©”μ„Έμ§• κΈ°λŠ₯ 개발
izzy.lee(이주미) ν΄λΌμš°λ“œ (Devops) - 아킀텍쳐 기반 λ ˆν”Œλ¦¬μΉ΄ μ…‹ λͺ½κ³ λ””λΉ„
- λ ˆλ””μŠ€ ν΄λŸ¬μŠ€ν„° ν™˜κ²½ ꡬ좕
- Prometeous Β· Grafana λͺ¨λ‹ˆν„°λ§ ν™˜κ²½ ꡬ좕
andrea.jeon(μ „μ°¬ν˜Έ) ν΄λΌμš°λ“œ (Devops) - 30개 μΈμŠ€ν„΄μŠ€μ˜ 아킀텍쳐 섀계
- Prometeous Β· Grafana λͺ¨λ‹ˆν„°λ§ ν™˜κ²½ ꡬ좕
- Docker + Github Actions 기반 CI/CD 개발
mac.lee(μ΄μ›ν˜Έ) AI - μ±„νŒ… μ‚­μ œ κΈ°λŠ₯ 개발

λͺ©μ°¨


λŒ€νšŒ μ„€λͺ…

μ£Όμ–΄μ§„ μ‹œκ°„ λ™μ•ˆ, λ™μΌν•œ μ„œλΉ„μŠ€λ₯Ό λŒ€μƒμœΌλ‘œ μ‹€μ‹œκ°„ λŒ€κ·œλͺ¨ νŠΈλž˜ν”½μ„ κ²¬λ”œ 수 μžˆλŠ” μ„œλΉ„μŠ€ 및 아킀텍쳐 섀계 및 개발

1. 곡톡 μ„œλΉ„μŠ€ μ†Œκ°œ

μš΄μ˜μ§„μ—μ„œ 사전 μ œμž‘ν•œ μ±„νŒ… μ„œλΉ„μŠ€

λ°”μ΄λΈŒ 코딩을 ν† λŒ€λ‘œ μ œμž‘ν•œ μ„œλΉ„μŠ€λ‘œ, μ„œλΉ„μŠ€λ₯Ό μ‹€ν–‰ν•  μˆ˜λŠ” μžˆμ§€λ§Œ μ—λŸ¬κ°€ λ§Žμ€ μƒνƒœ

  • μŠ€νƒ : Next.js, Express.js, MongoDB, socket.io, Redis
image

2. λŒ€νšŒ κ·œμΉ™

  1. AWS 기반 μ„œλΉ„μŠ€λ‘œ μ œν•œ
    • ⭐️ EC2 : t3 small μΈμŠ€ν„΄μŠ€ 30개 μ‚¬μš© κ°€λŠ₯ ⭐️
    • Elastic Load Balancing
    • Auto Scaling
    • Route 53
    • ACM
    • S3
    • CloudFront
    • CloudWatch
  2. λͺ¨λ‹ˆν„°λ§ μ„œλΉ„μŠ€λŠ” μ œν•œ 없이 μ‚¬μš© κ°€λŠ₯
  3. Redis Elastic Cache μ‚¬μš© λΆˆκ°€λŠ₯
  4. MongoDB β†’ RDBMS λ³€κ²½ λΆˆκ°€λŠ₯
  5. μ£Όμ–΄μ§„ 도메인 λ³€κ²½ λΆˆκ°€λŠ₯
  6. AWS μ‚¬μš© λΉ„μš© $300 μ΄λ‚΄λ‘œ μ œν•œ (μ΄ˆκ³Όμ‹œ 싀격)
image

3. μ§„ν–‰ κΈ°κ°„

25.07.23. (수) ~ 25.07.25 (금) - 총 3일


4. λΆ€ν•˜ν…ŒμŠ€νŠΈ μ§„ν–‰ 방식

[채점 κ·œμΉ™]

  • 1:1 ν† λ„ˆλ¨ΌνŠΈ ν˜•μ‹μœΌλ‘œ, λ™μΌν•œ λΆ€ν•˜λ₯Ό ν† λŒ€λ‘œ μ„œλΉ„μŠ€ κ°€μš©μ„±μ΄ μš°μˆ˜ν•œ νŒ€μ΄ 승리
    • λ¨Όμ € 접속 λΆˆκ°€ν•΄μ§„ νŒ€μ΄ 패배
  • 30초 이내 λ™μ‹œ 접속 λΆˆκ°€ μ‹œ λ¬΄μŠΉλΆ€, E2E κ²°κ³Ό 레포트둜 채점
    • 성곡 / μ‹€νŒ¨ 개수
    • response_time
    • session_length

[λΆ€ν•˜ 전솑 방법]

  • 초기 500λͺ…μ—μ„œ μ‹œμž‘ν•˜μ—¬ 30μ΄ˆλ§ˆλ‹€ 500λͺ…μ”© 증가
  • μ΅œλŒ€ 100,000λͺ…κΉŒμ§€ 순차적 증가 λͺ©ν‘œ
  • 각 μ‚¬μš©μžλ‹Ή μ΅œμ†Œ 1개 μ΄μƒμ˜ μ›Ή μ†ŒμΌ“ μ—°κ²° μœ μ§€

아킀텍쳐 및 κ΅¬ν˜„ λ‚΄μš©

image

μ΅œμ’… μΈμŠ€ν„΄μŠ€ ꡬ성

  • FE (Next.js) : 9개
  • BE (Node.js, Express.js) : 10개
  • DB (MongoDB) : 5개
  • Cache (Redis) : 6개

아킀텍쳐 섀계 상세 λ‚΄μ—­

  • 인 λ©”λͺ¨λ¦¬ 이미지 μ—…λ‘œλ“œ β†’ AWS S3 이미지 μ—…λ‘œλ“œ
    • 파일이 μ•± μ„œλ²„μ™€ λ¬΄κ΄€ν•˜μ—¬ 배포 μ‹œ 무리 μ—†μŒ
    • κΈ€λ‘œλ²„ CDN 연동을 ν†΅ν•œ μ ‘κ·Ό 속도 ν–₯상
    • fileData μ „μ†‘μœΌλ‘œ μΈν•œ μ„œλ²„ I/O κ°μ†Œ
  • Redis β†’ Redis λ§ˆμŠ€ν„° 슬레이브 ꡬ쑰
    • μŠ¬λ ˆμ΄λΈŒμ—μ„œ 읽기 처리λ₯Ό λΆ„μ‚°ν•˜μ—¬ μ„±λŠ₯ ν–₯상
    • λ§ˆμŠ€ν„° μž₯μ•  μ‹œ 슬레이브둜 λΉ λ₯΄κ²Œ νŽ˜μΌμ˜€λ²„ κ°€λŠ₯ν•˜λ„λ‘ 섀계
  • MongoDB β†’ 프라이머리-세컨더비 λ ˆν”Œλ¦¬μΉ΄ μ…‹ ꡬ쑰
    • 프라이머리 μž₯μ•  μ‹œ μžλ™μœΌλ‘œ 세컨더리가 μŠΉκ²©λ˜μ–΄ μ„œλΉ„μŠ€ 지속
    • μ—¬λŸ¬ λ…Έλ“œμ— 데이터가 λ³΅μ œλ˜μ–΄ 데이터 μ•ˆμ •μ„± 확보
  • Redis + RabbitMQλ₯Ό ν†΅ν•œ 읽음 μƒνƒœ 처리
    • Redisμ—μ„œ 읽음 μƒνƒœ μ‹€μ‹œκ°„ μΊμ‹±μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ λΉ λ₯Έ 응닡 제곡
    • 읽음 μƒνƒœ κΈ°λŠ₯을 λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬ν•˜μ—¬ DB λΆ€λ‹΄ κ°μ†Œ

λͺ¨λ‹ˆν„°λ§ 방법

  • artillery.ioλ₯Ό ν™œμš©ν•˜μ—¬ λΆ€ν•˜ ν…ŒμŠ€νŠΈ 성곡/μ‹€νŒ¨ 뢄석

    image
  • Prometeous + Grafanaλ₯Ό μ΄μš©ν•œ μ‹€μ‹œκ°„ λΆ€ν•˜ 뢄석

    image

기타 κΈ°λŠ₯ μΆ”κ°€ 및 버그 ν”½μŠ€ λ‚΄μ—­

  • (feat) μ±„νŒ… μ‚­μ œν•˜κΈ°
  • (feat) λΉ„λ°€λ°© λΉ„λ°€λ²ˆν˜Έ μž…λ ₯ κΈ°λŠ₯ μΆ”κ°€
  • (feat) λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ API μΆ”κ°€
  • (fix) μžμ‹ μ„ μ œμ™Έν•œ 읽음 ν‘œμ‹œ 처리
  • (fix) μ‘°ν•©ν˜• μ–Έμ–΄ 2번 전달 였λ₯˜
  • (fix) μ±„νŒ… 링크 ν΄λ¦­μ‹œ 2개 μž…λ ₯ 였λ₯˜
  • (fix) λΈ”λ¦Ώ 포인트, 숫자 리슀트 λ Œλ”λ§ 였λ₯˜
  • (fix) ν”„λ‘œν•„ λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ μ—”λ“œν¬μΈνŠΈ λ³€κ²½
  • (fix) 파일 λ Œλ”λ§ μ‹œ μ•„μ΄μ½˜ ν‘œμ‹œ 였λ₯˜
  • (fix) λ””ν΄νŠΈ 이미지λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬μš©μžμ˜ ν”„λ‘œν•„ 이미지 톡일

πŸ₯‡Β κ²°κ³Ό

λŒ€μƒ μˆ˜μƒ πŸŽ‰πŸŽ‰

[κ²°κ³Ό]

  • 5,000λͺ… λΆ€ν•˜ν…ŒμŠ€ μ§„ν–‰μ‹œ
    • μƒλŒ€νŒ€ : 6520 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μ‹€νŒ¨
    • μš°λ¦¬νŒ€ (λ…Έμ•„μ»Ήμ»ΉνŒ€) : 1821 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ μ‹€νŒ¨
  • πŸ”₯ λ™μ‹œ 접속 10,000λͺ… λΆ€ν•˜μ—λ„ μ„œλΉ„μŠ€κ°€ κ°€μš©ν•˜λ„λ‘ μœ μ§€λ¨ (μΉ΄μΉ΄μ˜€ν…Œν¬ λΆ€νŠΈμΊ ν”„ 사상 졜초)
image

λœ¨κ±°μ› λ˜ κ²°μŠΉμ „ ν˜„μž₯ μ˜μƒ λ³΄λŸ¬κ°€κΈ° (링크)


✏️ 회고

μ§€κΈˆκΉŒμ§€λŠ” μ„œλΉ„μŠ€λ₯Ό λ§Œλ“œλŠ” λ°μ—λ§Œ μ§‘μ€‘ν•˜λ©° κ°œλ°œμ„ μ§„ν–‰ν•΄μ™”μŠ΅λ‹ˆλ‹€.

특히, μ‚¬μš©μžμ—κ²Œ 더 λ‚˜μ€ μ‚¬μš© κ²½ν—˜μ„ μ œκ³΅ν•˜κ² λ‹€λŠ” λͺ…λΆ„ μ•„λž˜, ν”„λ‘ νŠΈμ—”λ“œ μ΅œμ ν™” μž‘μ—…μ— λͺ°λ‘ν•΄μ™”μŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 이번 λΆ€ν•˜ ν…ŒμŠ€νŠΈλ₯Ό κ³„κΈ°λ‘œ, ν”„λ‘ νŠΈμ—”λ“œμ— κ΅­ν•œλœ 개발이 μ•„λ‹Œ 전체 μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ™€ ꡬ쑰에 λŒ€ν•œ 이해가 μ–Όλ§ˆλ‚˜ μ€‘μš”ν•œμ§€λ₯Ό κΉ¨λ‹«κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ„œλΉ„μŠ€λ₯Ό μ„±μž₯μ‹œν‚€κΈ° μœ„ν•΄μ„œλŠ” λ‹€μ–‘ν•œ κΈ°μˆ μ— λŒ€ν•œ 이해와 관심이 ν•„μˆ˜μ μž„μ„ μ²΄κ°ν–ˆμŠ΅λ‹ˆλ‹€. μΉ΄μΉ΄μ˜€ν…Œν¬ λΆ€νŠΈμΊ ν”„μ—μ„œμ˜ λ©˜ν† λ§κ³Ό ν˜„μ—…μžμ˜ 쑰언을 톡해, μ‹€λ¬΄μ—μ„œλŠ” β€œλ‚΄ λΆ„μ•Όβ€λΌλŠ” 경계가 μ—†μœΌλ©°, νšŒμ‚¬μ˜ 상황과 ν•„μš”μ— 따라 λ‹€μ–‘ν•œ 역할을 μœ μ—°ν•˜κ²Œ μˆ˜ν–‰ν•˜λŠ” κ°œλ°œμžκ°€ λ˜μ–΄μ•Ό 함을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 κ²½ν—˜μ„ ν†΅ν•΄μ„œλ„ μ•žμœΌλ‘œλŠ” 기술과 뢄야에 μ œν•œμ„ 두지 μ•Šκ³  더 μ—΄λ¦° μžμ„Έλ‘œ μž„ν•˜λŠ” κ°œλ°œμžκ°€ λ˜μ–΄μ•Όκ² λ‹€λŠ” 닀짐을 ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μ„œλΉ„μŠ€μ˜ κ°€μš©μ„±μ— λŒ€ν•΄ 깊이 κ³ λ―Όν•˜λ©΄μ„œ, μ§€κΈˆκΉŒμ§€ μ ‘ν•˜μ§€ λͺ»ν–ˆλ˜ κ°œλ…λ“€μ„ μƒˆλ‘­κ²Œ λ°°μš°λŠ” 계기가 λ˜μ—ˆκ³ , μ΄λŠ” κ°œλ°œμžλ‘œμ„œ ν•œ 단계 더 μ„±μž₯ν•  수 μžˆλŠ” 쒋은 κΈ°νšŒμ˜€μŠ΅λ‹ˆλ‹€.

μ§€λ‚œ 해컀톀과 λ§ˆμ°¬κ°€μ§€λ‘œ, μ²˜μŒμ—” λ‹¨μˆœν•œ 단기 ν”„λ‘œμ νŠΈλΌκ³  μƒκ°ν–ˆλ˜ κ²½ν—˜μ΄ μ‹€μ œλ‘œλŠ” μ €λ₯Ό λ”μš± λ‹¨λ‹¨ν•œ 개발자둜 μ„±μž₯μ‹œν‚€κ³  μžˆμŒμ„ λ‹€μ‹œκΈˆ κΉ¨λ‹«κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Popular repositories Loading

  1. frontend frontend Public

    λΆ€ν•˜ν…ŒμŠ€νŠΈ frontend λ ˆν¬μ§€ν† λ¦¬

    JavaScript

  2. backend backend Public

    λΆ€ν•˜ν…ŒμŠ€νŠΈ λ°±μ—”λ“œ 레포

    JavaScript

  3. e2e e2e Public

    JavaScript

  4. .github .github Public

Repositories

Showing 4 of 4 repositories

Top languages

Loading…

Most used topics

Loading…