๐Study
-
์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ณต์ ํ์ ์ ๋ณธ์ธ์๊ฒ ๋ง๊ฒ ์ปค์คํ ํด์ ์ฌ์ฉํ์ธ์ : ) ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๋งํฌ Notion ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ ๊ทผ๋ก์๋ค์ด ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๋ฐ์ ์ ์๋ ์ฐ์ฐจ์ ๋จ์ ์ฐ์ฐจ ์ผ์๋ฅผ ๊ณ์ฐํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ๊ทผ๋ก๋ฒ์ ๋ฐ๋ผ ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ์ฐ์ฐจ ์ผ์๊ฐ ๋ค๋ฅด๊ฒ ์ง๊ธ๋๋ฉฐ, ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉ ooweat.notion.site
[Notion] ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ณต์ ํ์ ์ ๋ณธ์ธ์๊ฒ ๋ง๊ฒ ์ปค์คํ ํด์ ์ฌ์ฉํ์ธ์ : ) ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ๋งํฌ Notion ์ฐ์ฐจ๊ณ์ฐ๊ธฐ ํ ํ๋ฆฟ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ ๊ทผ๋ก์๋ค์ด ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ๋ฐ์ ์ ์๋ ์ฐ์ฐจ์ ๋จ์ ์ฐ์ฐจ ์ผ์๋ฅผ ๊ณ์ฐํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ๊ทผ๋ก๋ฒ์ ๋ฐ๋ผ ๊ทผ์ ๊ธฐ๊ฐ์ ๋ฐ๋ผ ์ฐ์ฐจ ์ผ์๊ฐ ๋ค๋ฅด๊ฒ ์ง๊ธ๋๋ฉฐ, ์ฐ์ฐจ ๊ณ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉ ooweat.notion.site
2023.10.11 -
๋ด์ฉ ์ ์ฐ ํ์ด์ง์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ ์ค ์ฃผ์ฐจ๋ฅผ ๊ตฌํ๋ Function ์ด ํ์ํ๊ฒ ๋์๋ค. ์์ฝ๊ฒ๋ MariaDB์ ๋ด์ฅ๋ ํจ์ ์ค์ WEEKOFMONTH ๋ ์์ด์ SELECT ๋ฌธ์ผ๋ก ๊ตฌํํ์๋ค. SELECT CEILING((DAY(NOW()) - (6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')))) / 7) + CASE WHEN 6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')) > 0 THEN 1 ELSE 0 END WEEK_OF_MONTH;
[MariaDB] ์ ์ค ์ฃผ์ฐจ ๊ตฌํ๊ธฐ WeekOfMonth๋ด์ฉ ์ ์ฐ ํ์ด์ง์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ ์ค ์ฃผ์ฐจ๋ฅผ ๊ตฌํ๋ Function ์ด ํ์ํ๊ฒ ๋์๋ค. ์์ฝ๊ฒ๋ MariaDB์ ๋ด์ฅ๋ ํจ์ ์ค์ WEEKOFMONTH ๋ ์์ด์ SELECT ๋ฌธ์ผ๋ก ๊ตฌํํ์๋ค. SELECT CEILING((DAY(NOW()) - (6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')))) / 7) + CASE WHEN 6 - WEEKDAY(DATE_FORMAT(NOW(), '%Y-%m-01')) > 0 THEN 1 ELSE 0 END WEEK_OF_MONTH;
2023.09.15 -
ํ์ฅ์ ๋ณํ https://convertio.co/kr/ Convertio — ํ์ผ ๋ณํ๊ธฐ 300๊ฐ์ง ์ด์์ ํฌ๋งท ์ง์ ์ ํฌ๋ 300๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ํ์ผ ํฌ๋งท ๊ฐ์ 25600๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ๋ณํ์ ์ง์ํฉ๋๋ค. ๋ค๋ฅธ ์ด๋ค ๋ณํ๊ธฐ๋ณด๋ค ๋ง์ ์์ ๋๋ค. ์ ์ ๋ฐ ๊ฐ๋จ ํ์ด์ง์ ๊ฐ๋จํ convertio.co
ํ์ฅ์ ํ์ผ ๋ณํ๊ธฐํ์ฅ์ ๋ณํ https://convertio.co/kr/ Convertio — ํ์ผ ๋ณํ๊ธฐ 300๊ฐ์ง ์ด์์ ํฌ๋งท ์ง์ ์ ํฌ๋ 300๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ํ์ผ ํฌ๋งท ๊ฐ์ 25600๊ฐ์ง ์ด์์ ์๋ก ๋ค๋ฅธ ๋ณํ์ ์ง์ํฉ๋๋ค. ๋ค๋ฅธ ์ด๋ค ๋ณํ๊ธฐ๋ณด๋ค ๋ง์ ์์ ๋๋ค. ์ ์ ๋ฐ ๊ฐ๋จ ํ์ด์ง์ ๊ฐ๋จํ convertio.co
2023.09.15 -
๋ฐ๋จ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ Scale-up ์ ํ ๊ฒ์ธ์ง Scale-out ์ ํ ๊ฒ์ธ์ง ๊ณ ๋ฏผํ๊ณ ์์๋ค. ๊ทธ๋ฌ๋ ์ค, ์ฐ์์ด ์๋ ์ผ๋ถ ์๋ฒ๋ค์ ๋ฐฐํฐ๋ฆฌ๊ฐ ๋ค์ด๋๊ณ , ์คํ ๋ฆฌ์ง๊ฐ ํ๋ ๋ ๋ง๊ฐ๊ธฐ ์์ํ๊ณ Scale-up ์ผ๋ก ์งํํ๊ธฐ๋ก ํ๋ค. (ํ์ญ์ผ๋ก ๋ช ๋ ๋ ๋ธ ์ ์์ง๋ง, ์ฌ๊ณ ๋ฅผ ๊ตฌํ๋ ค๋ฉด ์ค๊ณ ๋ฐ์ ๋ต์ด ์์๋ค.) ๊ฒฐ์ Scale-up ์ ํ๋ ๊น์ ํํํ ๋ฆฌํฉํ ๋ง ๊ธฐํ๋ฅผ ๋ ธ๋ฆฌ๋ Legacy ํ๋ก์ ํธ ์์ค๋ค๋ ์ฐจ์ธ๋ ์์ ์ ์งํํ๊ธฐ๋ก ํ๋ค. ์ด ํ๋ก์ ํธ๋ค์ ๋ด๋นํ๋ ๋ด๋น์๋ค๋ ๊ธฐํ๋ฅผ ๋ ธ๋ ธ์ผ๋ ASAP ํ๋ก์ ํธ๋ค์ ๋ฐ๋ ค ๋ฏธ๋ฃจ๊ณ ๋ฏธ๋ค์ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๋์ฑ '์ง๊ธ์ด ์๋๋ฉด ์๋๋ค' ๋ผ๋ ์๊ฐ์ด ์ง๋ฐฐ์ ์ด์๋ค. ๊ธฐ์กด ์๋ฒ๋ ์คํ ์ด์ง ์๋ฒ, CI/CD ์๋ฒ, ๊ฐ๋ฐ์๋ฒ๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , ์ง๊ธ ๊ตฌ์กฐ์ ๋์ผํ..
์ฐจ์ธ๋ ํ๋ก์ ํธ ๋์ ๊ธฐ ํ๊ณ #1๋ฐ๋จ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ Scale-up ์ ํ ๊ฒ์ธ์ง Scale-out ์ ํ ๊ฒ์ธ์ง ๊ณ ๋ฏผํ๊ณ ์์๋ค. ๊ทธ๋ฌ๋ ์ค, ์ฐ์์ด ์๋ ์ผ๋ถ ์๋ฒ๋ค์ ๋ฐฐํฐ๋ฆฌ๊ฐ ๋ค์ด๋๊ณ , ์คํ ๋ฆฌ์ง๊ฐ ํ๋ ๋ ๋ง๊ฐ๊ธฐ ์์ํ๊ณ Scale-up ์ผ๋ก ์งํํ๊ธฐ๋ก ํ๋ค. (ํ์ญ์ผ๋ก ๋ช ๋ ๋ ๋ธ ์ ์์ง๋ง, ์ฌ๊ณ ๋ฅผ ๊ตฌํ๋ ค๋ฉด ์ค๊ณ ๋ฐ์ ๋ต์ด ์์๋ค.) ๊ฒฐ์ Scale-up ์ ํ๋ ๊น์ ํํํ ๋ฆฌํฉํ ๋ง ๊ธฐํ๋ฅผ ๋ ธ๋ฆฌ๋ Legacy ํ๋ก์ ํธ ์์ค๋ค๋ ์ฐจ์ธ๋ ์์ ์ ์งํํ๊ธฐ๋ก ํ๋ค. ์ด ํ๋ก์ ํธ๋ค์ ๋ด๋นํ๋ ๋ด๋น์๋ค๋ ๊ธฐํ๋ฅผ ๋ ธ๋ ธ์ผ๋ ASAP ํ๋ก์ ํธ๋ค์ ๋ฐ๋ ค ๋ฏธ๋ฃจ๊ณ ๋ฏธ๋ค์ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ๋์ฑ '์ง๊ธ์ด ์๋๋ฉด ์๋๋ค' ๋ผ๋ ์๊ฐ์ด ์ง๋ฐฐ์ ์ด์๋ค. ๊ธฐ์กด ์๋ฒ๋ ์คํ ์ด์ง ์๋ฒ, CI/CD ์๋ฒ, ๊ฐ๋ฐ์๋ฒ๋ก ์ฌ์ฉํ๊ธฐ๋ก ํ๊ณ , ์ง๊ธ ๊ตฌ์กฐ์ ๋์ผํ..
2023.07.27 -
๋๋ฉ์ธ(Domain-Driven Design) ์ด๋ฏธ ๋ชจ๋๊ฐ ์๊ณ ์์ง๋ง ์๋ฒฝํ ์ดํดํ๊ณ ์ ์ํ๊ธฐ๋ ์ฝ์ง ์๊ธฐ์ ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด์. ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, ์ํ์ ์ฃผ๋ฌธํ๋ ํ์์ด ์์ด์ผํ๊ณ ์ฃผ๋ฌธ ์์คํ , ์ํ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ ์กฐํ, ์ํ ๋ฐฐ์ก, ๊ฒฐ์ ๋ฑ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ด์ผ ํ๋ค. ์ด ๋, '์จ๋ผ์ธ ์ผํ๋ชฐ' ์ ๋ฌธ์ ์์ญ์ธ ์ต์์ ๋๋ฉ์ธ์ ํด๋น๋๊ณ , ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ณผ์ ๋ฑ์ ๋๋ฉ์ธ ์ง์(Domain Knowledge)๋ค์ ์์ ๋๋ฉ์ธ์ ํด๋น๋๋ค. ์์๋๋ฉ์ธ ํ์ ๋๋ฉ์ธ์ ์์ ๋๋ฉ์ธ์ ์ด๋ฃจ์ด์ง๊ฒํ๋ ํ์ ๊ตฌ์ฑ์ฒด์ด๋ค. ํ์๋๋ฉ์ธ ํ์: ํ์์ ๋ณด ์ํ: ๊ณต๊ธ์ฒ, ํ๋งค์ฒ, ์ํ ์ ๋ณด ์ฃผ๋ฌธ: ์ฃผ๋ฌธ ์ํ์ ๋ณด, ์ฃผ๋ฌธํ ํ์, ๋ฐฐ์ก์ง ... ๊ฒฐ์ : ๊ฒฐ์ ์ ๋ณด ๋ฐฐ์ก: ๋ฐฐ์ก์ง, ๋ฐฐ์ก๋ฒํธ, ๋ฐฐ์ก์ ๋ณด....
DDD ๋?๋๋ฉ์ธ(Domain-Driven Design) ์ด๋ฏธ ๋ชจ๋๊ฐ ์๊ณ ์์ง๋ง ์๋ฒฝํ ์ดํดํ๊ณ ์ ์ํ๊ธฐ๋ ์ฝ์ง ์๊ธฐ์ ํ ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด์. ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๋ง๋ ๋ค๊ณ ๊ฐ์ ํ๋ค๋ฉด, ์ํ์ ์ฃผ๋ฌธํ๋ ํ์์ด ์์ด์ผํ๊ณ ์ฃผ๋ฌธ ์์คํ , ์ํ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ ์กฐํ, ์ํ ๋ฐฐ์ก, ๊ฒฐ์ ๋ฑ์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ด์ผ ํ๋ค. ์ด ๋, '์จ๋ผ์ธ ์ผํ๋ชฐ' ์ ๋ฌธ์ ์์ญ์ธ ์ต์์ ๋๋ฉ์ธ์ ํด๋น๋๊ณ , ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ณผ์ ๋ฑ์ ๋๋ฉ์ธ ์ง์(Domain Knowledge)๋ค์ ์์ ๋๋ฉ์ธ์ ํด๋น๋๋ค. ์์๋๋ฉ์ธ ํ์ ๋๋ฉ์ธ์ ์์ ๋๋ฉ์ธ์ ์ด๋ฃจ์ด์ง๊ฒํ๋ ํ์ ๊ตฌ์ฑ์ฒด์ด๋ค. ํ์๋๋ฉ์ธ ํ์: ํ์์ ๋ณด ์ํ: ๊ณต๊ธ์ฒ, ํ๋งค์ฒ, ์ํ ์ ๋ณด ์ฃผ๋ฌธ: ์ฃผ๋ฌธ ์ํ์ ๋ณด, ์ฃผ๋ฌธํ ํ์, ๋ฐฐ์ก์ง ... ๊ฒฐ์ : ๊ฒฐ์ ์ ๋ณด ๋ฐฐ์ก: ๋ฐฐ์ก์ง, ๋ฐฐ์ก๋ฒํธ, ๋ฐฐ์ก์ ๋ณด....
2023.07.25 -
- CQRS (Command Query Responsibility Segregation) * CQRS ๋? ๐์ง์ญํ์๋ฉด ๋ช ๋ น๊ณผ ์ฟผ๋ฆฌ์ ์ญํ ์ ๊ตฌ๋ถํ๋ค๋ ๊ฒ์ด๋ค. Create-Insert, Update, Delete ์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ Select-Read ์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒ ๋ ๊ฐ์ง์ ์ฑ ์์ ๋ถ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค. * ์ ์ฌ์ฉํ ๊น? ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋(ํน์ ์ฌ์ฉํ๋) ์ ํต์ ์ธ CRUD ์ํคํ ์ณ ๊ธฐ๋ฐ์์ ์์คํ ์ ์ ์ง๋ณด์ํ๋ค ๋ณด๋ฉด, ์ถ๊ฐ์ ์ธ ์๊ตฌ์ฌํญ๊ณผ ์ ์ฑ ์ ๋ณํ๋ค๋ก ์์ฐ์ค๋ฝ๊ฒ ๋ก์ง์์ Domain Model ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ฒ ๋๋ค. ์๊ฐ์ด ๊ฐ ์๋ก ์ ์ง๋ณด์ ๋น์ฉ์ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋๋ฉฐ ํด๋น ์์คํ ์ ์ฒซ ๊ธฐํ์๋์๋ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋ณ์ง๋๋ ์ผ์ด์ค๋ฅผ ์ข ์ข ๋ณผ ์ ์๋ค. ๊ทธ๋ ๊ฒ ๋ชจ๋ ์๊ตฌ์ฌ..
[MSA] CQRS ์ด๋ฐ๊ฑฐ์์ด?- CQRS (Command Query Responsibility Segregation) * CQRS ๋? ๐์ง์ญํ์๋ฉด ๋ช ๋ น๊ณผ ์ฟผ๋ฆฌ์ ์ญํ ์ ๊ตฌ๋ถํ๋ค๋ ๊ฒ์ด๋ค. Create-Insert, Update, Delete ์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๊ณผ Select-Read ์ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒ ๋ ๊ฐ์ง์ ์ฑ ์์ ๋ถ๋ฆฌํ๋ค๋ ๊ฒ์ด๋ค. * ์ ์ฌ์ฉํ ๊น? ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋(ํน์ ์ฌ์ฉํ๋) ์ ํต์ ์ธ CRUD ์ํคํ ์ณ ๊ธฐ๋ฐ์์ ์์คํ ์ ์ ์ง๋ณด์ํ๋ค ๋ณด๋ฉด, ์ถ๊ฐ์ ์ธ ์๊ตฌ์ฌํญ๊ณผ ์ ์ฑ ์ ๋ณํ๋ค๋ก ์์ฐ์ค๋ฝ๊ฒ ๋ก์ง์์ Domain Model ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ฒ ๋๋ค. ์๊ฐ์ด ๊ฐ ์๋ก ์ ์ง๋ณด์ ๋น์ฉ์ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋๋ฉฐ ํด๋น ์์คํ ์ ์ฒซ ๊ธฐํ์๋์๋ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋ณ์ง๋๋ ์ผ์ด์ค๋ฅผ ์ข ์ข ๋ณผ ์ ์๋ค. ๊ทธ๋ ๊ฒ ๋ชจ๋ ์๊ตฌ์ฌ..
2023.03.06