Design Hotel Reservation System
์๊ตฌ์ฌํญ
๋๊ธ์ ์์ฝ์ ์ง๋ถ
์น/์ฑ์์๋ง ์์ฝ ๊ฐ๋ฅ
์์ฝ ์ทจ์ ๊ฐ๋ฅ
์์ฝ ์ทจ์๋ฅผ ์์ํ์ฌ ์ด๊ณผ ์์ฝ ๊ฐ๋ฅ
์ ๋์ ์ธ ๊ฐ์ค ๊ฐ๊ฒฉ
5000๊ฐ์ ํธํ / 100๋ง ๊ฐ ๊ฐ์ค / ํ๊ท ์ ์ผ๋ก 70% ์์ฝ / ํ๊ท ํฌ์ ๊ธฐ๊ฐ 3์ผ์ด๋ผ๊ณ ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ์ ํ ์ ์๋ค.
์ผ์ผ ์์ ์์ฝ ๊ฑด์: 100๋ง * 0.7 / 3์ผ = 233,333
์ด๋น ์์ฝ ๊ฑด์: 233,333 / 86400 = 2.7
์ด๋น ์์ฝ ํธ๋์ญ์ ์๊ฐ ๋์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์์ฝํ๊ธฐ๊น์ง ํธํ ์ ๋ณด ์กฐํ, ์์ฝ ์์ธ ์ ๋ณด ์กฐํ, ๊ฐ์ค ์์ฝ ํ์ด์ง ์ธ ๋จ๊ณ๋ก ๋๋ ์ ์๋ค.
ํธํ /๊ฐ์ค ์์ธ ํ์ด์ง: ์ฌ์ฉ์๊ฐ ํธํ /๊ฐ์ค ์ ๋ณด ์กฐํ
์์ฝ ์์ธ ์ ๋ณด ํ์ด์ง: ์ฌ์ฉ์๊ฐ ๋ ์ง / ํฌ์ ์ธ์ / ๊ฒฐ์ ๋ฐฉ๋ฒ ๋ฑ ์์ธ ์ ๋ณด ์กฐํ
๊ฐ์ค ์์ฝ ํ์ด์ง: ์์ฝ ํธ๋์ญ์ ๋ฐ์
๋๋ต 10%์ ์ฌ์ฉ์๊ฐ ๋ค์ ๋จ๊ณ๋ก ์งํํ๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ด๋น ์กฐํ ํธ๋์ญ์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ถ์ ํ ์ ์๋ค.
์์ฝ ์์ธ ํ์ด์ง ์กฐํ: 2.7 * 10 = 27
๊ฐ์ค ์์ฝ ํ์ด์ง ์กฐํ: 27 * 10 = 270
API ์ค๊ณ
์์ฝ ์์คํ ์ ํ์ํ ํ์์ ์ธ API๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌํด ๋ณผ ์ ์๋ค.
ํธํ ๊ด๋ จ API
ํธํ ์์ธ ์ ๋ณด ๋ฐํ
์ ๊ท ํธํ ์ถ๊ฐ
ํธํ ์ ๋ณด ๊ฐฑ์
ํธํ ์ ๋ณด ์ญ์
๊ฐ์ค ๊ด๋ จ API
๊ฐ์ค ์์ธ ์ ๋ณด ๋ฐํ
์ ๊ท ๊ฐ์ค ์ถ๊ฐ
๊ฐ์ค ์ ๋ณด ๊ฐฑ์
๊ฐ์ค ์ ๋ณด ์ญ์
์์ฝ ๊ด๋ จ API
์ฌ์ฉ์ ์์ฝ ์ด๋ ฅ ๋ฐํ
ํน์ ์์ฝ ์์ธ ์ ๋ณด ๋ฐํ
์ ๊ท ์์ฝ
์์ฝ ์ทจ์
๋ฐ์ดํฐ ๋ชจ๋ธ
์์ฝ ์์คํ ์์๋ ๋ค์ ์ง์๋ฅผ ์ง์ํด์ผ ํ๋ค.
ํธํ ์์ธ ์ ๋ณด ํ์ธ
์ง์ ๋ ๋ ์ง ๋ฒ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ค ํ์ธ
์์ฝ ์ ๋ณด ๊ธฐ๋ก
์์ฝ ๋ด์ญ ๋๋ ๊ณผ๊ฑฐ ์์ฝ ์ด๋ ฅ ์ ๋ณด ์กฐํ
์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํ์ ๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ ์ ์๋๋ฐ, ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฝ๊ธฐ ๋น๋๊ฐ ์ฐ๊ธฐ ์ฐ์ฐ์ ๋นํด ๋์ ์์ ํ๋ฆ ์ง์
ACID ์์ฑ์ ์ง์ํ์ฌ ์ด์ค ์์ฝ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฐฉ์ง
๋น์ฆ๋์ค ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ํํ ๊ฐ๋ฅํ๋ฉด์ ๋ฐ์ดํฐ ์ฝ๊ฒ ๋ชจ๋ธ๋ง ๊ฐ๋ฅ
๊ด๊ณํ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์คํค๋ง๋ ๋จ์ํ๊ฒ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์๋ค.
์ฌ๊ธฐ์ ์์ฝ ํ
์ด๋ธ์ roomId
๊ฐ ์๋ roomTypeId
๋ฅผ ์ฌ์ฉํ ์ด์ ๋ ํธํ
์์ฝ ํน์ฑ ์ ํน์ ๊ฐ์ค์ด ์๋ ํน์ ํ ๊ฐ์ค ์ ํ์ ์์ฝํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋์์ฑ ๋ฌธ์
์์ฝ ์์คํ ์์ ๋์์ฑ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ํ ์ ์๋ค.
๊ฐ์ ์ฌ์ฉ์๊ฐ ํ๋์ ๊ฐ์ค์ ์ฌ๋ฌ ๋ฒ ์์ฝํ๋ ๊ฒฝ์ฐ(์ฌ๋ฌ ๋ฒ ๋๋ฅด๋ ๊ฒฝ์ฐ)
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ ๊ฐ์ค์ ์์ฝํ๋ ๊ฒฝ์ฐ
๋ฉฑ๋ฑ API
๊ทธ ์ค ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฐฉ์งํ ์ ์์ง๋ง ์์ ์ ์ธ ๋ฐฉ๋ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ฉฑ๋ฑ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๋ฉฑ๋ฑ์ฑ์ ๋ณด์ฅํ๋ API๋ ๋์ผํ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋๋ผ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ API๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ฉฑ๋ฑ ํค๋ฅผ ํฌํจํ API ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ด ์ํํ๊ฒ ๋๋ค.
๊ณ ๊ฐ์ด ์์ฝ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๋ ฅํ์ฌ ์์ฝ ์ฃผ๋ฌธ์ ์์ฑ
์์ฑ๋ ์ฃผ๋ฌธ์๋ฅผ ๊ฒํ ํ ์ ์๋๋ก ์์ฝ ์ฃผ๋ฌธ์๋ฅผ ๋ฐํ
์ด ๋ ๋ฐํ ๊ฒฐ๊ณผ์ ๋ฉฑ๋ฑํค ์ญํ ์ ํ๋
reservation_key
๋ฅผ ํฌํจํ์ฌ ๋ฐํ
๊ฒํ ๊ฐ ๋๋ ๋ค
reservation_key
๋ฅผ ํฌํจํ ์์ฝ ์์ฒญ ์ ๋ณด ์ ์กํ๋ฉด ์๋ฒ๋ ํด๋นreservation_key
๋ฅผ ์ฌ์ฉํ์ฌ ์์ฝ์ ์ํ๋ค์ ํ ๋ฒ ๊ฐ์
reservation_key
๋ฅผ ์ฌ์ฉํ์ฌ ์์ฝ ์์ฒญ์ ์ ์กํ๋๋ผ๋ ๋์ผํ ์์ฝ์ด ์ํ๋์ง ์์
๋์์ฑ ์ ์ด
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ ๊ฐ์ค์ ์์ฝํ๋ฉด ํ๋์ ์ฌ๊ณ ๊ฐ ๋จ์ ์ํ์์๋ ์ฌ๋ฌ ์์ฝ์ด ์ํ๋ ์ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฝ์ ํ์ฉํด๋ณผ ์ ์์ผ๋ฉฐ, ์ฅ๋จ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋น๊ด์ ๋ฝ
๊ตฌํ์ด ์ฝ๊ณ ๋ชจ๋ ๊ฐฑ์ ์ฐ์ฐ์ ์ง๋ ฌํํ์ฌ ์ถฉ๋ ๋ฐฉ์ง
์ฌ๋ฌ ๋ ์ฝ๋์ ๋ฝ์ ๊ฑธ๋ฉด ๊ต์ฐฉ ์ํ ๋ฐ์ ๋ฐ ์ฑ๋ฅ ์ ํ๊ฐ ์๊ธฐ๋ฉฐ ํ์ฅ์ฑ์ด ๋จ์ด์ง
๋๊ด์ ๋ฝ
๋ฝ์ ๊ฑธ์ง ์๊ธฐ ๋๋ฌธ์ ํ์ฅ์ฑ์ด ์ข๊ณ ์ฑ๋ฅ์ด ๋์
์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋กค๋ฐฑ์ด๋ ์ฌ์๋๊ฐ ํ์ํ๋ฉฐ, ๊ฒฝ์์ด ์น์ดํ ์ํฉ์์ ์ฑ๋ฅ ์ ํ๊ฐ ์ปค์ง
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ ์กฐ๊ฑด
๊ตฌํ์ด ์ฌ์ฐ๋ฉฐ, ๊ฒฝ์์ด ์ฌํ์ง ์์ ๋ ์ ์์ ์ผ๋ก ๋์
๊ฒฝ์์ด ์ฌํ ์ํฉ์์๋ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ ๋์ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฒ์ ํต์ ๊ฐ ์ด๋ ค์
์์คํ
๊ท๋ชจ ํ์ฅ
ํธํ ์์ฝ ์์คํ ์ ํ๊ท ์ ์ธ QPS๋ ๋์ง ์์ผ๋, ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ธ๋ถ ์์ฝ ์น์ฌ์ดํธ์ ์ฐ๋๋๋ฉด ๊ธ๊ฒฉํ ์ฆ๊ฐํ ์ ์๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ๋ฌด์ํ ์๋น์ค๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์๋ฒ ์ถ๊ฐ๋ก ํด๊ฒฐํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋จ์ํ ๋๋ฆฌ๋ ๊ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์, ์ค๋ฉ์ ์ ์ฉํ์ฌ ํด๊ฒฐํด๋ณผ ์ ์๋ค.
๋๋ถ๋ถ์ ์ง์๋ hotel_id
๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ hotel_id
์ ๋ํด ์ค๋ฉ ์กฐ๊ฑด์ผ๋ก ์ฐ๋ฉด ๋๋ค.
์บ์
ํธํ ์์ฌ ๊ฐ์ค ๋ฐ์ดํฐ๋ ํน์ฑ์ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ณด๋ค๋ ํ์ฌ ํน์ ๋ฏธ๋์ ๋ฐ์ดํฐ๊ฐ ์ค์ํ๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ ๋๋ ๋ก์ ๋ฐ์ดํฐ๋ ์๋์ ์ผ๋ก ์๋ฉธ๋๋๋กํ๋ TTL์ ์ค์ ํ๋ฉด ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ง์ํ ์ ์๋ค.
์บ์ ๋ฐ์ดํฐ: ์์ฌ ๊ฐ์ค ํ์ธ ๋ฐ ๊ฐ์ค ์์ฝ ๋ก์ง์์ ์ฌ์ฉ
์์ฌ ๊ฐ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค: ์ต์ข ํ์ธ ๋ฐ ๊ณผ๊ฑฐ ์์ฝ ์ด๋ ฅ ์กฐํ ๋ก์ง์์ ์ฌ์ฉ
์ค์ ๋ก ์์ฝ์ ์ํํ๊ฒ ๋๋ฉด, ๊ฐ ์ปดํฌ๋ํธ๋ ๋ค์๊ณผ ๊ฐ์ด ์ํํ๊ฒ ๋๋ค.
์์ฝ ์๋น์ค
์์ฌ ๊ฐ์ค ์บ์์ ์ง์ ๋ ํธํ / ๊ฐ์ค ์ ํ / ์ฃผ์ด์ง ๋ ์ง ๋ฒ์์ ์ด์ฉ ๊ฐ๋ฅํ ๊ฐ์ค ์ ์ง์
๊ฐ์ค์ ์์ฝํ๊ณ ์์ฌ ๊ฐ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฝ ์ ๋ณด ์ ์ฅ(์์ฝ ์ทจ์ ์์๋ ๊ฐฑ์ )
์์ฌ ๊ฐ์ค ์บ์
hotelId_roomTypeId_{date}
-์์ฌ ๊ฐ์ค ์
๋ก ๊ตฌ์ฑ๋ ํค-๊ฐ ์ ์ ์ฅ
์์ฌ ๊ฐ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค
์์ฌ ๊ฐ์ค ์์ ๋ํ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ๋ณด๊ด
์บ์ ๋ฐ์ดํฐ ๋น๋๊ธฐ์ ์ผ๋ก ๊ฐฑ์
์บ์ ๊ณ์ธต์ ์ถ๊ฐํ๊ฒ ๋๋ฉด ์์คํ ํ์ฅ์ฑ๊ณผ ์ฒ๋ฆฌ๋์ด ์ฆ๊ฐํ๊ธฐ ๋์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์บ์ ๊ฐ์ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ธ์ ํ ๋ฒ ํ์ธํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์๋น์ค ๊ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ
์๋น์ค ๋ณ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๊ฒ ๋๋ฉด ํ๋์ ํธ๋์ญ์ ์ผ๋ก ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ์ ๊ณ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
2๋จ๊ณ ์ปค๋ฐ(2-phase commit): ์ฌ๋ฌ ๋ ธ๋์ ๊ฑธ์น ์์์ ํธ๋์ญ์ ์คํ์ ๋ณด์ฆํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ ์ฝ
์ฌ๊ฐ(Saga): ๊ฐ ๋ ธ๋์ ๋ฐ์ํ๋ ํธ๋์ญ์ ์ ํ๋๋ก ์ฎ์ ๊ฒ
๊ฐ๊ฐ์ ํธ๋์ญ์ ์ด ์๋ฃ๋๋ฉด ๋ค์ ํธ๋์ญ์ ์ ์์ํ๋ ๋ฉ์์ง ์ ์ก
๊ทธ ์ค ํ๋์ ํธ๋์ญ์ ์ด๋ผ๋ ์คํจํ๋ฉด ๊ทธ ์ด์ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๋กค ๋๋๋ฆฌ๋ ํธ๋์ญ์ ๋ค์ ์์ฐจ์ ์ผ๋ก ์คํ
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?