Skip to content

🐰 박상미 🧢 λ°•μ„Έμ—° ⚽ μ•ˆκ·œν˜Έ πŸ€ͺ 였승재 🐒 유승호 πŸ‰ μ²œνƒœν›ˆ

Notifications You must be signed in to change notification settings

beyond-sw-camp/be12-1st-Matfia-Eatzzy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


🍽️ Eatzzy

eatzzy logo

3νŒ€ - Team Matfia


πŸ•΅οΈ νŒ€μ› μ†Œκ°œ

🐰 박상미
@miyad927
🧢 λ°•μ„Έμ—°
@yeon7485
⚽ μ•ˆκ·œν˜Έ
@Ahngyuho
πŸ€ͺ 였승재
@dhtmdwo
🐒 유승호
@seungho99
πŸ‰ μ²œνƒœν›ˆ
@taehoon0518

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

졜근 μ†ŒλΉ„μžλ“€μ€ κ³ λ¬Όκ°€ μ‹œλŒ€μ—λ„ λΆˆκ΅¬ν•˜κ³  유λͺ… μŠ€νƒ€ 셰프듀이 μš΄μ˜ν•˜λŠ” 맛집을 기꺼이 μ°Ύμ•„κ°€κ³  μžˆλ‹€. μ΄λŠ” 미식에 λŒ€ν•œ 관심이 높아지고, νŠΉλ³„ν•œ κ²½ν—˜μ„ μœ„ν•΄ λΉ„μš©μ„ 아끼지 μ•ŠμœΌλ €λŠ” μ†ŒλΉ„ μ„±ν–₯을 λ°˜μ˜ν•œ 결과이닀.

특히 방솑 ν”„λ‘œκ·Έλž¨ '흑백 μš”λ¦¬μ‚¬β€™μ˜ 인기가 μ΄λŸ¬ν•œ νŠΈλ Œλ“œμ— λ”μš± λΆˆμ„ 지피며, 유λͺ… 맛집에 λŒ€ν•œ μˆ˜μš”λ₯Ό ν•œμΈ΅ 높이고 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŸ¬ν•œ λ§›μ§‘μ˜ μˆ˜κ°€ μ œν•œμ μ΄κΈ° λ•Œλ¬Έμ— μ˜ˆμ•½ 경쟁이 μΉ˜μ—΄ν•œ 상황이닀.

Eatzzy은 μ£Όλ³€ 유λͺ… 맛집과 μŒμ‹μ μ„ μ˜ˆμ•½ν•  수 μžˆλŠ” μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λ©°, μ˜ˆμ•½μ— μ‹€νŒ¨ν•œ 고객듀을 μœ„ν•΄ ν•΄λ‹Ή λ§›μ§‘μ˜ λ…Έν•˜μš°κ°€ λ‹΄κΈ΄ λ°€ν‚€νŠΈλ₯Ό μ§‘μœΌλ‘œ λ°°λ‹¬ν•˜λŠ” μ„œλΉ„μŠ€λ₯Ό μΆ”κ°€λ‘œ μ œκ³΅ν•œλ‹€.

λ˜ν•œ, μ§‘μ—μ„œ νŽΈμ•ˆν•˜κ²Œ 맛집 μŒμ‹μ„ 즐기고 싢은 κ³ κ°μ΄λ‚˜ 거리가 λ©€μ–΄ 직접 방문이 μ–΄λ €μš΄ 고객듀은 λ°€ν‚€νŠΈ ꡬ맀λ₯Ό 톡해 식당 λ°©λ¬Έ 여뢀와 관계없이 λ§›μ§‘μ˜ μš”λ¦¬ κ²½ν—˜μ„ κ°„νŽΈν•˜κ²Œ μ§‘μ—μ„œλ„ λŠλ‚„ 수 μžˆλ‹€.


πŸ” 기술 μŠ€νƒ

VMWare Ubuntu

MariaDB

Prometheus Grafana

Git GitHub Discord


🌭 ν”„λ‘œμ νŠΈ κΈ°νšμ•ˆ

ν”„λ‘œμ νŠΈ κΈ°νšμ•ˆ


🍣 μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ

μš”κ΅¬μ‚¬ν•­ μ •μ˜μ„œ


πŸ₯ ERD

ERD λ‹€μ΄μ–΄κ·Έλž¨

ERD


🍑 μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜


🍩 μž¬ν•΄ 볡ꡬ (DR)

ν΄λŸ¬μŠ€ν„° 방식을 μ‚¬μš©ν•œ 이유

βœ”οΈ 데이터 일관성 μœ μ§€

ν΄λŸ¬μŠ€ν„°λŠ” λ…Έλ“œ κ°„ 데이터 동기화λ₯Ό 톡해 항상 μΌκ΄€λœ 데이터λ₯Ό μœ μ§€ν•œλ‹€.
이둜 인해 νŠΉμ • μ„œλ²„κ°€ μž₯μ• λ‘œ 인해 λ‹€μš΄λ˜λ”λΌλ„, λ‚˜λ¨Έμ§€ λ…Έλ“œλ“€μ΄ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λ©° μ„œλΉ„μŠ€μ˜ 연속성을 보μž₯ν•˜κ³ , 데이터 μ†μ‹€μ΄λ‚˜ 뢈일치 문제λ₯Ό μ΅œμ†Œν™”ν•œλ‹€.


βœ”οΈ λΆ€ν•˜ λΆ„μ‚°

유λͺ… 맛집 μ˜ˆμ•½ λ“± μ‹€μ‹œκ°„ νŠΈλž˜ν”½μ΄ κΈ‰μ¦ν•˜λŠ” 상황에도 μ—¬λŸ¬ λ…Έλ“œλ‘œ λΆ„μ‚° μ²˜λ¦¬ν•˜μ—¬ μ„±λŠ₯이 μ €ν•˜ν•˜λŠ” 것을 λ°©μ§€ν•˜κ³ , μ•ˆμ •μ μΈ 응닡 속도λ₯Ό μœ μ§€ν•  수 μžˆλ‹€.


βœ”οΈ μ“°κΈ° μž‘μ—…μ— κ°•ν•œ ꡬ쑰

μ„œλΉ„μŠ€ νŠΉμ„± 상 식당 μ˜ˆμ•½, μƒν’ˆ ꡬ맀, 리뷰 μž‘μ„± λ“± 데이터 μ“°κΈ° μž‘μ—…μ΄ λ§Žμ€ ν™˜κ²½μ΄κΈ° λ•Œλ¬Έμ—, λ‹€μˆ˜μ˜ λ…Έλ“œκ°€ λ³‘λ ¬λ‘œ μž‘μ—…μ„ μ²˜λ¦¬ν•˜λ―€λ‘œ 높은 μ“°κΈ° μ„±λŠ₯을 μ œκ³΅ν•œλ‹€.


βœ”οΈ κ³ κ°€μš©μ„±

νŠΉμ • λ…Έλ“œμ— μž₯μ• κ°€ λ°œμƒν•˜λ”λΌλ„, HAProxyκ°€ 정상적인 λ…Έλ“œλ‘œ νŠΈλž˜ν”½μ„ λΆ„λ°°ν•˜μ—¬ μ„œλΉ„μŠ€ 쀑단 없이 μ‹œμŠ€ν…œμ„ μ§€μ†μ μœΌλ‘œ λ™μž‘ν•  수 μžˆλ‹€.
μ‹€μ‹œκ°„ μ˜ˆμ•½μ΄λ‚˜ μƒν’ˆ ꡬ맀 같은 μ€‘μš”ν•œ μ„œλΉ„μŠ€μ—λ„ μ•ˆμ •μ μΈ 운영이 κ°€λŠ₯ν•˜λ‹€.


βœ”οΈ ν™•μž₯μ„±

ν΄λŸ¬μŠ€ν„°μ— μƒˆλ‘œμš΄ λ…Έλ“œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ‰½κ²Œ ν™•μž₯ν•  수 μžˆμ–΄, νŠΈλž˜ν”½μ΄ 증가할 λ•Œ μœ μ—°ν•˜κ²Œ λŒ€μ²˜κ°€ κ°€λŠ₯ν•˜λ‹€.


μž₯μ•  볡ꡬ μ‹œλ‚˜λ¦¬μ˜€

βœ”οΈ 1λŒ€ μž₯μ•  λ°œμƒ μ‹œ

  • HAProxyκ°€ μž₯μ•  λ…Έλ“œλ₯Ό κ°μ§€ν•˜κ³  ν•΄λ‹Ή λ…Έλ“œλ‘œμ˜ νŠΈλž˜ν”½μ„ μžλ™μœΌλ‘œ 차단
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” λ‚˜λ¨Έμ§€ 두 λŒ€μ˜ λ…Έλ“œλ₯Ό 톡해 정상적인 μ„œλΉ„μŠ€ 이용 κ°€λŠ₯
  • μž₯μ• κ°€ ν•΄κ²°λ˜λ©΄ DB μ„œλ²„λ₯Ό μž¬μ‹œμž‘ν•˜κ³  ν΄λŸ¬μŠ€ν„°λ‘œ λ‹€μ‹œ μ—°κ²°
  • ν΄λŸ¬μŠ€ν„° λ‚΄ λ‹€λ₯Έ λ…Έλ“œμ—μ„œ μž₯μ•  λ…Έλ“œλ‘œ 데이터λ₯Ό μžλ™ λ™κΈ°ν™”ν•˜μ—¬ μ΅œμ‹  μƒνƒœλ‘œ 볡ꡬ
  • 볡ꡬ μ™„λ£Œ ν›„ HAProxyκ°€ νŠΈλž˜ν”½μ„ λ‹€μ‹œ λΆ„λ°°ν•˜λ„λ‘ μ„€μ •

βœ”οΈ 2λŒ€ μž₯μ•  λ°œμƒ μ‹œ

  • HAProxyκ°€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜λŠ” 1λŒ€μ˜ λ…Έλ“œλ‘œ νŠΈλž˜ν”½ 집쀑
  • μž₯μ• κ°€ ν•΄κ²°λ˜λ©΄ 1λŒ€μ”© μ„œλ²„λ₯Ό μž¬μ‹œμž‘ν•˜κ³  ν΄λŸ¬μŠ€ν„°λ‘œ λ‹€μ‹œ μ—°κ²°
  • 볡ꡬ된 λ…Έλ“œλ₯Ό ν΄λŸ¬μŠ€ν„°λ‘œ λ‹€μ‹œ μ—°κ²°ν•˜μ—¬ 데이터λ₯Ό 동기화

βœ”οΈ 3λŒ€ μž₯μ•  예방

  • μ •κΈ°μ μœΌλ‘œ 데이터 λ°±μ—…
  • 보쑰 DB ν΄λŸ¬μŠ€ν„°λ₯Ό κ΅¬μΆ•ν•˜μ—¬ 데이터 손싀에 λŒ€λΉ„
    • μž¬ν•΄ λ°œμƒ μ‹œ 보쑰 ν΄λŸ¬μŠ€ν„°λ₯Ό μ¦‰μ‹œ ν™œμ„±ν™”ν•˜μ—¬ μ„œλΉ„μŠ€ 쀑단 방지


πŸ₯¨ SQL

βœ… DDL

DDL SQL 파일

βœ… DML

DML SQL 파일


μ‚¬μš©μž

νšŒμ›κ°€μž…

둜그인 성곡
둜그인 성곡


둜그인 μ‹€νŒ¨
둜그인 μ‹€νŒ¨




식당

식당 전체 쑰회 (μ’‹μ•„μš”μˆœ μ •λ ¬)
식당 전체 쑰회


식당 상세 쑰회
식당 상세 쑰회

식당 메뉴 쑰회
식당 메뉴 쑰회


식당 검색
식당검색


μΉ΄ν…Œκ³ λ¦¬ κΈ°μ€€ 필터링
식당 μΉ΄ν…Œκ³ λ¦¬ 필터링


지역 κΈ°μ€€ 필터링
식당 지역 필터링


고객이 μ’‹μ•„μš” ν•œ 식당 쑰회
고객이 μ’‹μ•„μš” ν•œ 식당 쑰회


점주 식당 등둝
점주 식당 등둝


점주 식당 μ˜ˆμ•½ 쑰회
점주 식당 μ˜ˆμ•½ 쑰회


점주의 식당 쑰회
점주 식당 쑰회


식당 등둝 μš”μ²­ 거절
식당 등둝 μš”μ²­ 거절


식당 등둝 μš”μ²­ 수락
식당 등둝 μš”μ²­ 수락


식당 μΉ΄ν…Œκ³ λ¦¬ 등둝
식당 μΉ΄ν…Œκ³ λ¦¬ 등둝



μƒν’ˆ

전체 μƒν’ˆ 쑰회
전체 μƒν’ˆ 쑰회


μƒν’ˆ 상세 쑰회
μƒν’ˆ 상세 쑰회


μƒν’ˆ 리뷰 확인
μƒν’ˆ 리뷰 확인


μƒν’ˆ 리뷰 등둝
μƒν’ˆ 리뷰 등둝


μƒν’ˆ 리뷰 μˆ˜μ •
μƒν’ˆ 리뷰 μˆ˜μ •


μƒν’ˆ 리뷰 μ‚­μ œ
μƒν’ˆ 리뷰 μ‚­μ œ


μƒν’ˆ λ°”λ‘œ ꡬ맀
μƒν’ˆ λ°”λ‘œ ꡬ맀


μƒν’ˆ μΉ΄ν…Œκ³ λ¦¬ 등둝
μƒν’ˆ μΉ΄ν…Œκ³ λ¦¬ 등둝



μž₯λ°”κ΅¬λ‹ˆ

μž₯λ°”κ΅¬λ‹ˆ λ‹΄κΈ°
μž₯λ°”κ΅¬λ‹ˆ λ‹΄κΈ°


μž₯λ°”κ΅¬λ‹ˆ 쑰회
μž₯λ°”κ΅¬λ‹ˆ 쑰회


μž₯λ°”κ΅¬λ‹ˆ λ¬Όν’ˆ μ£Όλ¬Έ
μž₯λ°”κ΅¬λ‹ˆ λ¬Όν’ˆ μ£Όλ¬Έ



μ£Όλ¬Έ

전체 μ£Όλ¬Έ λ‚΄μ—­ 쑰회
전체 μ£Όλ¬Έ λ‚΄μ—­ 쑰회


μ£Όλ¬Έ 상세 λ‚΄μ—­ 쑰회
μ£Όλ¬Έ 상세 λ‚΄μ—­ 쑰회


μ£Όλ¬Έ ν˜„ν™© 확인
μ£Όλ¬Έ ν˜„ν™© 확인



배솑

배솑 등둝
배솑 등둝


배솑 쑰회
배솑 쑰회



결제

결제 μˆ˜λ‹¨ 선택
결제 μˆ˜λ‹¨ 선택


μΉ΄λ“œ 등둝
μΉ΄λ“œ 등둝



SQL μ„±λŠ₯ κ°œμ„ 

κΈ°μ‘΄ sql은 인기 μžˆλŠ” κ°€κ²Œμ˜ 정보λ₯Ό 빼였기 μœ„ν•΄μ„œλŠ” λ‹€μ„― 개의 ν…Œμ΄λΈ”μ„ JOIN ν•΄μ•Όν–ˆλ‹€.

ν•˜μ§€λ§Œ κ·Έλž¬μ„ λ•Œ μ„±λŠ₯적인 λΆ€λΆ„μ—μ„œ 결함이 λ§Žμ•˜κ³  ν•΄λ‹Ή 정보λ₯Ό λΉ λ₯΄κ²Œ λ°›μ•„μ˜€κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ„ ν•˜λ‚˜ μΆ”κ°€ν•΄ 정보λ₯Ό μ €μž₯ν–ˆλ‹€.


μˆ˜μ • μ „ 쿼리
SELECT stores.idx, store_images.image_path, stores.name, stores_category.name,
        ROUND(AVG(store_reviews.star_point), 1) AS average_star_point,
        COUNT(store_reviews.idx) AS count_reviews,
        stores.address, COUNT(likes.idx) AS count_likes
  FROM stores
  JOIN stores_category ON stores_category.idx = stores.category_id
  JOIN store_images ON store_images.store_id = stores.idx
  JOIN store_reviews ON store_reviews.store_id = stores.idx
  JOIN likes ON stores.idx = likes.store_id
  GROUP BY stores.idx
  ORDER BY count_likes DESC
  LIMIT 10;

μˆ˜μ • ν›„ 쿼리
SELECT
    store_id, image_path, store_name,
    category_name, average_star_point,
    count_reviews, count_likes, 
    address, allowed
FROM stores_summary
WHERE allowed = 'Yes'
ORDER BY count_likes DESC
LIMIT 10;

μƒˆλ‘œ λ„μž…ν•œ ν…Œμ΄λΈ”
CREATE TABLE stores_summary (
    store_id INT PRIMARY KEY,
    image_path VARCHAR(255),
    store_name VARCHAR(255),
    category_name VARCHAR(255),
    average_star_point DECIMAL(3, 1),
    count_reviews INT,
    count_likes INT,
    address VARCHAR(255),
    allowed ENUM ('Yes', 'No', 'Waiting')
);

βœ… μˆ˜μ • μ „ CPU μ‚¬μš©λŸ‰


βœ… μˆ˜μ • ν›„ CPU μ‚¬μš©λŸ‰


βœ… μˆ˜μ • μ „ μž‘λ™ μ‹œκ°„


βœ… μˆ˜μ • ν›„ μž‘λ™ μ‹œκ°„

About

🐰 박상미 🧢 λ°•μ„Έμ—° ⚽ μ•ˆκ·œν˜Έ πŸ€ͺ 였승재 🐒 유승호 πŸ‰ μ²œνƒœν›ˆ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •