Issue #2 - f-lab-edu/at_ticket GitHub Wiki
๋น๋๊ธฐ๋ก ๋ฉ์ผ ์๋ฆผ ๋ณด๋ด๊ธฐ
๊ฐ์
๋ฉ์ผ ์๋ฆผ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์ถ์์ต๋๋ค.
์ฌ์ฉ์๋ค์ด ๊ด์ฌ์ด ๊ฐ๋ ๊ณต์ฐ์ ์ฆ๊ฒจ ์ฐพ๊ธฐ๋ฅผ ํด๋์ผ๋ฉด, ํด๋น ๊ณต์ฐ์ ์ผ์ ์ด ๋ฑ๋ก๋์์ ๋
์ํ์ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ๋ฑ๋กํ ์ฌ์ฉ์๋ค์๊ฒ ๋ฉ์ผ๋ก ์๋ฆผ์ ๋ณด๋ด์ฃผ๋ ๊ธฐ๋ฅ์ด์ฃ .
๋ฉ์ผ ์๋ฆผ๊ธฐ๋ฅ์ ๋ง๋ค๋ฉด ๊ทธ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค.
1. ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ๋ฑ๋กํ ์ฌ์ฉ์๋ฅผ DB์์ ์กฐํํ๋ค.
2. ๋ฐ์กํ ์ด๋ฉ์ผ ์ฃผ์์ ๋ฉ์ผ ๋ด์ฉ์ ๋ฉ์ผ ์๋ฒ๋ก ์ ์กํ๋ค.
3. ๋ฉ์ผ ์๋ฒ์์ ์๋ต์ด ์ฌ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
4. ๋ค์ ๋ฐ์กํ ์ด๋ฉ์ผ ์ฃผ์์ ๋ด์ฉ์ ๋ฉ์ผ ์๋ฒ๋ก ์ ์กํ๋ค.
์ฌ์ฉ์๊ฐ ๋ณ๋ก ์์ ๋๋ ์๊ด์ด ์๊ฒ ์ง๋ง, ์ฌ์ฉ์๊ฐ ๋์ด๋๋ฉด ์ฑ๋ฅ์ ์ธ ๋ถ๋ถ์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ๋ณด์
๋๋ค.
๋ฉ์ผ ์๋ฒ๋ก์ ์์ฒญ๊ณผ ์๋ต ์ค์ ์ค๋ ๋์ I/O Blocking์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์
๋๋ค.
ํด๋น ๋ฐฉ์์ ๋ฌธ์ ์ ์ ๋ฉ์ผ ์๋ฒ๊ฐ ๋ฉ์ผ์ ๋ณด๋ด๊ณ , ๋ค์ ์๋ต์ ๋ณด๋ด์ค ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋๋ฐ ์๊ฐ์ด ์์ ๋๋ค๋ ์ ์ ๋๋ค.
๋น๋๊ธฐ ๋ฐฉ์ ์ฌ์ฉ
์ ํฌ๋ ๋น๋๊ธฐ ํต์ ์ ๊ตฌํ ๋ฐฉ๋ฒ ์ค kafka๋ฅผ ์ฌ์ฉํด๋ณด์์ต๋๋ค.
์ค๋ ๋ ์
์ฅ์์๋ ๊ทธ์ kafka์๊ฒ ๋ฉ์ผ์ ๋ฐ์กํ๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ๋ฉ๋๋ค.
kafka๋ ๋ฉ์ผ ๋ฐ์ก ๋ฐ ๋ฉ์ผ ์๋ฒ์์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ญํ ์๊ฒ ๋ฉ์ผ์ ๋ฐ์กํ๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํด์ค ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ฉด ์ค๋ ๋๊ฐ blocking ๋์ง ์์ผ๋ฉด์ ๋ฉ์ผ์ ์ ์กํ๋ ๋์์๋ ๋ค๋ฅธ ์์
์ ์ฒ๋ฆฌํ ์ ์์ ๊ฒ์
๋๋ค.
๋ณ๊ฒฝ ์
์ ํฌ At_ticket ํ๋ก์ ํธ๋ ํ๋์ ํ๋ก์ ํธ์ ๋ชจ๋์ด ์ฌ๋ฌ๊ฐ๋ก ๋๋์ด์ ธ ์๋ ๋ฉํฐ๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๊ฐ๊ฐ์ ๋ชจ๋์ด ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ์ฃ .
์ด๋ฒ์ ๊ณต์ฐ ๋ฑ๋ก ์๋ฆผ์ ๋ด๋นํ ๋ชจ๋์ ์ํ๊ณผ ๊ณต์ฐ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ Product ๋ชจ๋์
๋๋ค.
๊ณผ์ ์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
1. Product๋ชจ๋์์ ๋์ ํ์์ ์กฐํํด์
2. ๋ฉ์ผ ์๋ฒ์ ๋ฉ์ผ ๋ฐ์ก ์์ฒญ์ ๋ณด๋
๋๋ค.
๋ฉ์ผ ์๋ฒ์์ ๋ฉ์ผ์ ๋ฐ์กํ๊ณ Product ๋ชจ๋์ ๋ค์ ์๋ต์ ๋๋ ค์ค ๋๊น์ง,
Product ๋ชจ๋์ ์ค๋ ๋๋ blocking๋ ๊ฒ์
๋๋ค.
๋ณ๊ฒฝ ํ
์ถํ ํ์ฅ์ฑ์ ๊ณ ๋ คํ์ฌ, kafka-app ๋ชจ๋ ์ด๋ผ๋ kafka๋ฅผ ํตํ์ฌ ์ฒ๋ฆฌํ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํด์ค ๋ชจ๋์ ์ถ๊ฐํ์์ต๋๋ค.
kafka-app ๋ชจ๋์์ ๋ฉ์ผ ์๋ฒ๋ก์ ์์ฒญ๊ณผ ๋๊ธฐ๋ฅผ ๋ด๋นํด์ค๋๋ค.
kafka๋ฅผ ์ ์ฉํ์ฌ ๋น๋๊ธฐ ์์ผ๋ก ๋ณ๊ฒฝ ํ ๋ฉ์ผ ์๋ฆผ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. Product๋ชจ๋์์ ๋์ ํ์์ ์กฐํํฉ๋๋ค.
2. Product๋ชจ๋์ kafka์ producer๋ฅผ ํตํ์ฌ kafka์ broker์ ๋ฉ์ธ์ง(๋ฉ์ผ ์ฃผ์, ๋ฉ์ผ ๋ฉ์ธ์ง)๋ฅผ ์ ๋ฌํฉ๋๋ค.
3. kafka-app ๋ชจ๋์ kafka consumer๋ฅผ ํตํด ํด๋น ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌ๋ฐ์ต๋๋ค.
4. kafka-app ๋ชจ๋์ ๋ฉ์ผ ์๋ฒ์ ๋ฉ์ผ ๋ฐ์ก์ ์์ฒญํฉ๋๋ค.
๋ฉ์ผ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๋ ์ญํ ์ kafka-app ๋ชจ๋์ด ๋งก์์ ์ฒ๋ฆฌํ๊ฒ ๋จ์ผ๋ก์จ Product ๋ชจ๋์ ๋ ์ด์ ๋ฉ์ผ ์๋ฒ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์์๋ ๋ฉ๋๋ค.
ํ ์คํธ
๊ทธ๋ฌ๋ฉด, ์ง์ ๋ฉ์ผ ์๋ฆผ์ ๋ณด๋ด๋ ๋ฐฉ์๊ณผ, ์นดํ์นด๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฉ์ผ ์๋ฆผ์ ๋ณด๋ด๋ ๊ฐ๊ฐ์ ๋ฐฉ์์ ํ ์คํธ ํด๋ณด๊ฒ ์ต๋๋ค.
ํ ์คํธ ๋ฐฉ์
* DB์ ํน์ ์ํ์ ์ฆ๊ฒจ์ฐพ๊ธฐ ํ ์ ์ ๋ฅผ ๊ฐ์ ํ์ฌ ๋ฐ์กํ ์ด๋ฉ์ผ ์ฃผ์ ์ ๋ณด๋ฅผ ๋ง์ด(200๊ฐ) ์ค๋นํ๋ค.
* Postman์ผ๋ก ๋ฉ์ผ ์๋ฆผ ๋ฐ์ก api๋ฅผ ํธ์ถํ๋ค.
1. Product ๋ชจ๋์์ ์ง์ ๋ฉ์ผ ์๋ฒ๋ฅผ ํธ์ถํ์ฌ ์ด๋ฉ์ผ์ 200ํต ์ ์กํ๋ค.
2. ์นดํ์นด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ผ ์๋ฒ๋ฅผ ํธ์ถํ์ฌ ์ด๋ฉ์ผ์ 200ํต ์ ์กํ๋ค.
1. Product ๋ชจ๋์์ ์ง์ ๋ฉ์ผ์ ์ ์กํ๊ธฐ
Product ๋ชจ๋์์ ์ง์ ๋ฉ์ผ ์๋ฆผ์ ์ ์กํ๋๋ก ๋ฉ์ผ ์ ์ก ๋ก์ง์ ์์ ํ๊ณ ,
postman์ผ๋ก ๋ฉ์ผ ์๋ฆผ API๋ฅผ ํธ์ถํ์ฌ ๋ณด์์ต๋๋ค.
โฒ Product ๋ชจ๋์์ ์ง์ ๋ฉ์ผ์ ์ ์กํ๋ ์ค
Product ๋ชจ๋์์ ์ง์ ๋ฉ์ผ์ ๋ณด๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ผ ์ ์ก api๋ฅผ ํธ์ถํ์์ ๋ response๊ฐ ๋ฐ๋ก ๋์์ค์ง ๋ชปํฉ๋๋ค.
I/O ์ฒ๋ฆฌ์ค์ด๊ธฐ ๋๋ฌธ์ ์ค๋ ๋์ blocking์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฌผ๋ก ์ค๋ ๋๊ฐ ํ๊ฐ๋ง ์๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์, ๋ฉ์ผ ์ ์ก์ ํ๊ณ ์๋ ์ค์๋ ๋ค๋ฅธ api๋ฅผ ํธ์ถํ๋๋ฐ๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ๋๋ค.
ํ์ง๋ง ์ฌ์ฉํ ์ ์๋ ์ค๋ ๋๊ฐ ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ์ ์ฒด์ ์ธ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ ๊ฒ์ด๋ผ๊ณ ์ถ์ธกํ ์ ์์ต๋๋ค.
๋ํ api๋ฅผ ํธ์ถํ์์ ๋ ๋ต์ด ๋์์ค๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์๋ ์ข์ง ์์ ์ํฅ์ ๋ฏธ์น ๊ฒ ์
๋๋ค.
โฒ ์ง์ ๋ฉ์ผ์ ์ ์กํ์์ ๋ ์๋ต์ ๊ฑธ๋ฆฐ ์๊ฐ
Product ๋ชจ๋์ด ๋ฉ์ผ์ ์ ๋ถ ์ ์กํ๊ณ ๋์์ผ api ํธ์ถ์ ๊ดํ response๋ฅผ ๋ฐ์ ์ ์์์ต๋๋ค.
200ํต์ ์ ์กํ๋๋ฐ 1๋ถ 22์ด์ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋ณด๋ด์ผ ํ ์ฌ๋์ด ๋์ด๋๋ฉด ๋์ด๋ ์๋ก ์๋ต์๊ฐ์ ์ ์ ๊ธธ์ด์ง ๊ฒ์
๋๋ค.
2. ์นดํ์นด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ผ ์ ์กํ๊ธฐ
์ด๋ฒ์ ์นดํ์นด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ผ์ ์ ์กํด๋ณด๊ฒ ์ต๋๋ค.
โฒ ์นดํ์นด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ผ ์๋ฒ์ ๋ฉ์ผ ์ ์ก ์์ฒญ
โฒ ์นดํ์นด๋ฅผ ์ด์ฉํ์ฌ ๋ฉ์ผ์ ์ ์ก ์๋ต์ ๊ฑธ๋ฆฐ ์๊ฐ
์ง์ ๋ฉ์ผ์ ์ ์กํ์์ ๋์ ๋ค๋ฅด๊ฒ, ์นดํ์นด๋ฅผ ์ด์ฉํ์์ ๋๋ ์๋ต์ด 1์ด ์์ผ๋ก ๊ธ๋ฐฉ ๋์์์ต๋๋ค.
์ค๋ ๋๋ ์นดํ์นด์๊ฒ ๋ฉ์ผ ์ ์ก ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์นดํ์นด๊ฐ ๋ฉ์ผ์ ์ ๋ถ ์ ์กํ๋ ๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ ์ง์ ์ ์กํ๋ ๊ฒ๊ณผ ๋น์ทํ 1๋ถ 20์ด ์ ๋๊ฐ ๊ฑธ๋ ธ์ต๋๋ค. ์ค์ ์ ๋ฐ๋ผ์ ์ ์ก์ด ์๋ฃ๋๋ ์๊ฐ์ ๋ฌ๋ผ์ง ์ ์์ ๊ฒ์ ๋๋ค.
๋ฉ์ผ์ ์ ์ก ์ฃผ๊ธฐ๋ ์นดํ์นด์์ ์ค์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ ์ํฉ, ๋ฉ์ผ ์๋ฒ์ ์ํฉ์ ๋ง์ถ์ด ์ ์ก ์๋๋ฅผ ์กฐ์ ํ ๊ฒ๋ ์นดํ์นด๋ฅผ ์ฐ๋ ์ฅ์ ์ด๋ผ๊ณ ํ ์ ์๊ฒ ์ต๋๋ค.