Server-dev

Kafka와 MongoDB, Kubernetes둜 μœ μ—°ν•˜κ³  ν™•μž₯ κ°€λŠ₯ν•œ LINE μ‡Όν•‘ ν”Œλž«νΌ κ΅¬μΆ•ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš”. LINE Commerce Platformμ—μ„œ LINE μ‡Όν•‘(https://ec.line.me) κ°œλ°œμ„ λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” μœ μž¬κ· μž…λ‹ˆλ‹€. LINE 쇼핑에선 μ—¬λŸ¬ νŒλ§€μžλ‘œλΆ€ν„° 전달 받은 μƒν’ˆ 정보λ₯Ό ν•œκ³³μ— λͺ¨μ•„μ„œ μΌμ •ν•œ 기쀀에 따라 λΆ„λ₯˜ν•˜κ³ , κ·Έλ£Ήν™”ν•œ λ’€, μ •λ ¬ν•˜μ—¬ μ‚¬μš©μžλ“€μ΄ μƒν’ˆ 정보λ₯Ό μ‰½κ²Œ 얻을 수 μžˆλ„λ‘ μ œκ³΅ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 넀이버 μ‡Όν•‘μ΄λ‚˜ λ‹€λ‚˜μ™€ 등이 LINE μ‡Όν•‘κ³Ό λ™μΌν•œ λͺ¨λΈμ΄λΌκ³  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

LINE μ‡Όν•‘μ˜ νŒλ§€μžλŠ” κ²½μš°μ— 따라 μˆ˜μ‹­μ—μ„œ 수천만 개 μ΄μƒμ˜ μƒν’ˆ 정보λ₯Ό λ³΄μœ ν•˜κ³  μžˆλŠ”λ°μš”. 이런 νŒλ§€μžλ“€μ˜ μƒν’ˆμ„ ν•œκ³³μ— λͺ¨μ•„μ„œ μ„œλΉ„μŠ€ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν”Œλž«νΌμ„ ꡬ좕해야 ν• κΉŒμš”? 이번 글에선 저희 νŒ€μ΄ 이 μ–΄λ €μš΄ 과제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ ν”Œλž«νΌμ„ κ΅¬μΆ•ν–ˆλŠ”μ§€ μ†Œκ°œν•˜λ €κ³  ν•©λ‹ˆλ‹€.

LINE Timeline의 μƒˆλ‘œμš΄ 도전 2편 – Discover λ”œλ¦¬λ²„λ¦¬ μ‹œμŠ€ν…œ μ†Œκ°œ

μ§€λ‚œ 1편, LINE Timeline의 μƒˆλ‘œμš΄ 도전 1편 – μΆ”μ²œ μ½˜ν…μΈ  탐색을 μœ„ν•œ Discover와 μƒˆλ‘œμš΄ ꡬ독 λͺ¨λΈ Follow에 μ΄μ–΄μ„œ μ΄λ²ˆμ—λŠ” Discover λ”œλ¦¬λ²„λ¦¬ μ‹œμŠ€ν…œμ„ μ’€ 더 μžμ„Έν•˜κ²Œ μ†Œκ°œν•˜λ €κ³  ν•©λ‹ˆλ‹€. Discover λ”œλ¦¬λ²„λ¦¬ μ‹œμŠ€ν…œμ€ 크게 Discover Feed와 Discover μ—μ΄μ „νŠΈ, Discover ML(Machine Learning) μ„œλ²„λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” Discover Feed와 Discover μ—μ΄μ „νŠΈλ₯Ό μ€‘μ μ μœΌλ‘œ μ‚΄νŽ΄λ³΄κ³ , λ‹€μŒ κΈ€μ—μ„œ Discover ML μ„œλ²„λ₯Ό λ‹€λ£¨κ² μŠ΅λ‹ˆλ‹€.

μ„œλ²„ μ‚¬μ΄λ“œ ν…ŒμŠ€νŠΈ μžλ™ν™” μ—¬μ • – 5. μ„±λŠ₯ ν…ŒμŠ€νŠΈ 리포트 생성 및 μžλ™ν™” μ‹œμŠ€ν…œ 업무 적용 κ²°κ³Ό

μ•ˆλ…•ν•˜μ„Έμš”. LINE λ―Έλ””μ–΄ ν”Œλž«νΌ 개발과 운영 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” ν•˜νƒœν˜Έμž…λ‹ˆλ‹€. μ§€λ‚œ κΈ€(4편)에선 μ•žμ„œ λΈ”λ‘œκ·Έ(μ„œλ²„ μ‚¬μ΄λ“œ ν…ŒμŠ€νŠΈ μžλ™ν™” μ—¬μ • 1편, 2편, 3편)λ₯Ό 톡해 μ†Œκ°œν–ˆλ˜ μžλ™ν™” μ‹œμŠ€ν…œμ— μ΄μ–΄μ„œ μ„±λŠ₯ ν…ŒμŠ€νŠΈλ₯Ό μžλ™ν™”ν•˜κ²Œ 된 계기와 λͺ©ν‘œ, κ΅¬μ„±ν•œ ν™˜κ²½μ— λŒ€ν•΄ μ†Œκ°œν–ˆλŠ”λ°μš”. 이번 글에선 μžλ™ν™”λœ μ„±λŠ₯ ν…ŒμŠ€νŠΈμ˜ 리포트λ₯Ό μƒμ„±ν•œ 방법과 μžλ™ν™”λœ μ„±λŠ₯ ν…ŒμŠ€νŠΈλ₯Ό μ‹€μ œλ‘œ μ μš©ν•˜λ©΄μ„œ κ²ͺμ—ˆλ˜ 일을 κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ„œλ²„ μ‚¬μ΄λ“œ ν…ŒμŠ€νŠΈ μžλ™ν™” μ—¬μ • – 4. μ„±λŠ₯ ν…ŒμŠ€νŠΈ μžλ™ν™” λͺ©ν‘œ μ„€μ • 및 ν…ŒμŠ€νŠΈ ν™˜κ²½ ꡬ성

μ•ˆλ…•ν•˜μ„Έμš”. LINE λ―Έλ””μ–΄ ν”Œλž«νΌ 개발과 운영 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” ν•˜νƒœν˜Έμž…λ‹ˆλ‹€. LINE λ‚΄ μˆ˜λ§Žμ€ μ„œλΉ„μŠ€κ°€ μ‚¬μš©ν•˜λŠ” λ―Έλ””μ–΄ ν”Œλž«νΌμ€ μ•žμ„œ λΈ”λ‘œκ·Έ(μ„œλ²„ μ‚¬μ΄λ“œ ν…ŒμŠ€νŠΈ μžλ™ν™” μ—¬μ • 1편, 2편, 3편)λ₯Ό 톡해 μ†Œκ°œν–ˆλ˜ μžλ™ν™” μ‹œμŠ€ν…œμ„ μ΄μš©ν•΄ μ§€μ†μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ°œλ°œμžλ“€μ€ μžλ™ν™” μ‹œμŠ€ν…œμ— 계속 μΆ”κ°€λ˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 덕뢄에 λ‹¨μˆœν•œ API 호좜과 κ΄€λ ¨λœ 문제만 ν™•μΈν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œ APIλ₯Ό ν˜ΈμΆœν•˜λŠ” 흐름 쀑에 λ°œμƒν•˜λŠ” λ¬Έμ œλ„ μ½”λ“œ 리뷰 μ‹œμž‘ μ „λΆ€ν„° ν™•μΈν•˜λŠ” λ“± λ§Žμ€ 도움을 λ°›κ³  μžˆλŠ”λ°μš”. 이번 κΈ€μ—μ„œλŠ” 더 λ‚˜μ•„κ°€ μ„±λŠ₯ ν…ŒμŠ€νŠΈλ₯Ό μžλ™ν™”ν•˜λ©° κ²ͺ은 일듀을 κ³΅μœ ν•˜κ³ μž ν•©λ‹ˆλ‹€.

Armeria의 μ„œν‚· 브레이컀 μ‚¬μš©ν•΄ 보기

μ•ˆλ…•ν•˜μ„Έμš”. LINEμ—μ„œ OpenChat μ„œλΉ„μŠ€μ˜ λ°±μ—”λ“œλ₯Ό κ°œλ°œν•˜κ³  μžˆλŠ” μ£ΌμŠΉν™˜μž…λ‹ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” κ°„λ‹¨ν•œ μ½”λ“œ μ˜ˆμ œμ™€ ν•¨κ»˜ Armeria의 μ„œν‚· 브레이컀 κΈ°λŠ₯을 μ‚¬μš©ν•΄ 보며 μ •λ¦¬ν•œ λ‚΄μš©μ„ κ³΅μœ ν•˜κ³ μž ν•©λ‹ˆλ‹€.

LINE νŠΈλžœμŠ€μ½”λ”© μ„œλ²„ μ•„ν‚€ν…μ²˜ κ°œμ„ κΈ° – 2

μ•ˆλ…•ν•˜μ„Έμš”. LINEμ—μ„œ νŠΈλžœμŠ€μ½”λ”©(Transcoding) μ„œλ²„ 개발과 운영 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” λ°±μŠΉν›ˆμž…λ‹ˆλ‹€. 1νŽΈμ—μ„œ LINE의 νŠΈλžœμŠ€μ½”λ”© μ„œλ²„μΈ ‘리코더(Licoder, LIne TransCODER)’λ₯Ό μ†Œκ°œν•˜κ³  κ·Έ κΈ°λŠ₯κ³Ό μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄ λ§μ”€λ“œλ ΈλŠ”λ°μš”. 이번 κΈ€μ—μ„œλŠ” λ¦¬μ½”λ”μ˜ 초기 μ•„ν‚€ν…μ²˜λ₯Ό μ„€λͺ…ν•˜κ³  이 μ•„ν‚€ν…μ²˜κ°€ LINE의 κΈ‰κ²©ν•œ μ„±μž₯에 따라 μ–΄λ–»κ²Œ λ³€ν™”ν–ˆλŠ”μ§€ κ³΅μœ ν•˜κ² μŠ΅λ‹ˆλ‹€.

LINE νŠΈλžœμŠ€μ½”λ”© μ„œλ²„ μ•„ν‚€ν…μ²˜ κ°œμ„ κΈ° – 1

μ•ˆλ…•ν•˜μ„Έμš”. LINEμ—μ„œ νŠΈλžœμŠ€μ½”λ”©(transcoding) μ„œλ²„ 개발과 운영 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” λ°±μŠΉν›ˆμž…λ‹ˆλ‹€. μš°λ¦¬λŠ” μƒν™œ μ†μ—μ„œ λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λ™μ˜μƒμ„ μƒμ‚°ν•˜κ³  μ†ŒλΉ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μžμ‹ μ˜ 슀마트폰으둜 직접 λ™μ˜μƒμ„ μ΄¬μ˜ν•˜κΈ°λ„ ν•˜κ³ , λˆ„κ΅°κ°€κ°€ λ©”μ‹ μ €λ‘œ κ³΅μœ ν•΄ μ€€ λ™μ˜μƒμ„ κ°μƒν•˜κΈ°λ„ ν•˜κ³ , 인터넷에 곡개된 λ™μ˜μƒμ„ λ‹€μš΄λ‘œλ“œν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. 그런데 μ΄λ ‡κ²Œ λ‹€μ–‘ν•œ κ³³μ—μ„œ λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ 얻은 λ™μ˜μƒμ΄ κ°„ν˜Ή μž¬μƒλ˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. μž¬μƒν•  수 μ—†λŠ” μ΄μœ μ—λŠ” μ—¬λŸ¬ 가지가 μžˆμ„ 수 μžˆμ§€λ§Œ, λŒ€λΆ€λΆ„ 슀마트폰의 μ½”λ±μ΄λ‚˜ μ„±λŠ₯의 μ œμ•½μ΄ λ¬Έμ œκ°€ λ©λ‹ˆλ‹€. LINEμ—μ„œλŠ” 이런 문제λ₯Ό μ–΄λ–»κ²Œ ν•΄κ²°ν•˜κ³  μžˆμ„κΉŒμš”?
이번 κΈ€μ—μ„œλŠ” μ „ μ„Έκ³„μ˜ LINE μ‚¬μš©μžκ°€ λ°œμƒμ‹œν‚¨ λ™μ˜μƒ νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•˜κ³  μžˆλŠ” LINE νŠΈλžœμŠ€μ½”λ”© μ„œλ²„μ˜ μ•„ν‚€ν…μ²˜μ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ² μŠ΅λ‹ˆλ‹€.

LINE Timeline의 μƒˆλ‘œμš΄ 도전 1편 – μΆ”μ²œ 컨텐츠 탐색을 μœ„ν•œ Discover와 μƒˆλ‘œμš΄ ꡬ독 λͺ¨λΈ Follow

LINE νƒ€μž„λΌμΈ μ„œλΉ„μŠ€μ— ‘Discover’와 μƒˆλ‘œμš΄ ꡬ독 λͺ¨λΈμΈ ‘Follow’ κΈ°λŠ₯이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©μžμ—κ²ŒλŠ” 많이 낯섀지 μ•Šμ€ κΈ°λŠ₯일 κ²ƒμ΄λ‚˜, κ·Έ μ†μ—μ„œ μš°λ¦¬κ°€ κ³ λ―Όν•˜κ³  λ…Έλ ₯ν–ˆλ˜ 뢀뢄듀이 무엇인지 κ³΅μœ ν•˜κ³  μ‹Άμ–΄ 이 글을 μž‘μ„±ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이번 μ†Œκ°œ 글을 μ‹œμž‘μœΌλ‘œ 쑰금 더 μžμ„Έν•œ λ‚΄μš©κΉŒμ§€ μ „ν•΄ λ“œλ¦¬κ³ μž 총 3λΆ€μž‘μœΌλ‘œ κΈ°νšν–ˆμŠ΅λ‹ˆλ‹€.

  • LINE Timeline의 μƒˆλ‘œμš΄ 도전 1편 – μΆ”μ²œ 컨텐츠 탐색을 μœ„ν•œ Discover와 μƒˆλ‘œμš΄ ꡬ독 λͺ¨λΈ Follow
  • LINE Timeline의 μƒˆλ‘œμš΄ 도전 2편 – Discover Delivery System μ†Œκ°œ
  • LINE Timeline의 μƒˆλ‘œμš΄ 도전 3편 – Discover μΆ”μ²œ λͺ¨λΈ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κΈ°

Kubernetes둜 ν΄λŸ¬μŠ€ν„° μ™ΈλΆ€ μžμ› κ΄€λ¦¬ν•˜κΈ°

μ•ˆλ…•ν•˜μ„Έμš”. μ €λŠ” LINEμ—μ„œ LINE 개발자λ₯Ό μœ„ν•œ μ„œλΉ„μŠ€, Pipeline을 κ°œλ°œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. Pipeline은 ν…ŒμŠ€νŠΈλΆ€ν„° μ„œλΉ„μŠ€ λ°°ν¬κΉŒμ§€ κ°€λŠ₯ν•œ, Kubernetes 기반 μ›Œν¬ν”Œλ‘œ(workflow) μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ½”λ“œλ₯Ό κ²€μ¦ν•˜κΈ° μœ„ν•œ ν…ŒμŠ€νŠΈλ‚˜ μ½”λ“œλ₯Ό λ°°ν¬ν•˜κΈ° μœ„ν•œ λΉŒλ“œ λ˜λŠ” 주기적으둜 μž‘μ—…μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ 크둠(cron) μž‘μ—…κ³Ό 같이 μ‹€ν–‰ν•˜κ³  싢은 μž‘μ—…μ„ μ›Œν¬ν”Œλ‘œ ν˜•νƒœλ‘œ Pipeline에 μ •μ˜ν•˜λ©΄, Pipeline이 μ‚¬μš©μžκ°€ μ •μ˜ν•œ λŒ€λ‘œ μž‘μ—…μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€. μž‘μ—…μ˜ κ²°κ³ΌλŠ” λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚˜λŠ”λ°μš”. 파일이 μ‚°μΆœλ˜κΈ°λ„ ν•˜κ³  μ„œλΉ„μŠ€κ°€ μ‹€ν–‰λ˜κΈ°λ„ ν•©λ‹ˆλ‹€.

이번 κΈ€μ—μ„œλŠ” μ™ΈλΆ€μ—μ„œ λ°œμƒν•œ νŠΈλž˜ν”½μ„ Kubernetes ν΄λŸ¬μŠ€ν„°μ—μ„œ μ‹€ν–‰λ˜λŠ” μ„œλΉ„μŠ€λ‘œ μ „λ‹¬ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ Pipeline μ»΄ν¬λ„ŒνŠΈλ₯Ό 직접 κ°œλ°œν•œ κ²½ν—˜μ„ λ‚˜λˆ„κ³ μž ν•©λ‹ˆλ‹€.

LINE λ©”μ‹œμ§• μ„œλ²„κ°€ μƒˆν•΄ νŠΈλž˜ν”½μ„ λŒ€λΉ„ν•˜λŠ” κ³Όμ •

LINE의 νŠΈλž˜ν”½μ€ λ©”μ‹ μ € 특유의 λ…νŠΉν•œ νŒ¨ν„΄μ„ κ°–κ³  μžˆμŠ΅λ‹ˆλ‹€. μƒˆν•΄ 0μ‹œκ°€ λ˜λŠ” μˆœκ°„, μ‚¬μš©μžλ“€μ΄ λ©”μ‹ μ €λ‘œ μƒˆν•΄ 인사λ₯Ό μ£Όκ³ λ°›μœΌλ©΄μ„œ ν‰μ†Œ λŒ€λΉ„ λ©”μ‹œμ§€ λ°œμ†‘ κ±΄μˆ˜κ°€ λŒ€ν­ μ¦κ°€ν•˜λŠ”λ°μš”. μ΄λ•Œ μ„œλΉ„μŠ€ ꡭ가별 μ‹œμ°¨μ™€ 문화에 λ”°λΌμ„œ λ‹€μ–‘ν•œ νŠΈλž˜ν”½ 증가 νŒ¨ν„΄μ΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. LINE에선 이런 μˆœκ°„μ μΈ νŠΈλž˜ν”½ 증가λ₯Ό λ¬Έμ œμ—†μ΄ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 맀년 λ‹€μ–‘ν•œ μ€€λΉ„λ₯Ό ν•˜κ³  μžˆλŠ”λ°μš”. 이λ₯Ό ‘μ‹ λ…„ λŒ€μ‘’이라고 λΆ€λ₯΄κ³  μžˆμŠ΅λ‹ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” 2020λ…„ μ‹ λ…„ λŒ€μ‘μ—μ„œ 저희가 λ…Έλ ₯ν–ˆλ˜ 일듀과 κ·Έ 결과에 λŒ€ν•΄μ„œ μ†Œκ°œν•˜λ €κ³  ν•©λ‹ˆλ‹€.