๊ทธ์ ๋ณด๊ณ ์์์ Andrey Borodin์ ์ฐ๊ฒฐ ํ๋ฌ๋ฅผ ์ค๊ณํ ๋ PgBouncer ํ์ฅ ๊ฒฝํ์ ์ด๋ป๊ฒ ๊ณ ๋ คํ๋์ง ์ค๋ช
ํฉ๋๋ค.
๋น๋์ค :
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! ๋ด ์ด๋ฆ์ ์ค๋๋ฅ์ ๋๋ค.
Yandex์์ ์ ๋ ์คํ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ค๋์ ์ฐ๊ฒฐ ํ๋ฌ ์ฐ๊ฒฐ์ ๋ํ ์ฃผ์ ๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
๋ฌ์์์ด๋ก ์ฐ๊ฒฐ ํ๋ฌ๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค๋ฉด ์๋ ค์ฃผ์ญ์์ค. ๋๋ ๊ธฐ์ ๋ฌธํ์์ ํ๋ฆฝ๋์ด์ผ ํ ์ข์ ๊ธฐ์ ์ฉ์ด๋ฅผ ์ ๋ง๋ก ์ฐพ๊ณ ์ถ์ต๋๋ค.
๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ํ๋ฌ๊ฐ ๋ด์ฅ๋์ด ์๊ณ ์ด์ ๋ํด ์ ํ์์กฐ์ฐจ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ ๋ ๋งค์ฐ ๋ณต์กํฉ๋๋ค. ๋ฌผ๋ก ๊ณณ๊ณณ์ ๋ช ๊ฐ์ง ์ค์ ์ด ์์ง๋ง Postgres์์๋ ๊ทธ๋ฐ ์์ผ๋ก ์๋ํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์์ (HighLoad++ 2019์์) Postgres์ ์ฟผ๋ฆฌ ์ค์ ์ ๋ํ Nikolai Samokhvalov์ ๋ณด๊ณ ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์ดํดํ๊ธฐ๋ก๋ ์ด๋ฏธ ์ฟผ๋ฆฌ๋ฅผ ์๋ฒฝํ๊ฒ ๊ตฌ์ฑํ ์ฌ๋๋ค์ด ์ฌ๊ธฐ์ ์๊ณ , ์ด๋ค์ ๋คํธ์ํฌ ๋ฐ ๋ฆฌ์์ค ํ์ฉ๊ณผ ๊ด๋ จ๋ ์ข ๋ ๋๋ฌธ ์์คํ ๋ฌธ์ ์ ์ง๋ฉดํ ์ฌ๋๋ค์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ณณ์์๋ ๋ฌธ์ ๊ฐ ๋ช ํํ์ง ์๋ค๋ ์ ์์ ์๋นํ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
Yandex์๋ Postgres๊ฐ ์์ต๋๋ค. ๋ง์ Yandex ์๋น์ค๊ฐ Yandex.Cloud์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Postgres์๋ ์ด๋น ์ต์ ๋ฐฑ๋ง ๊ฑด์ ์์ฒญ์ ์์ฑํ๋ ์ ํํ๋ฐ์ดํธ์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์๋น์ค์ ๋ํด ์๋นํ ํ์ค์ ์ธ ํด๋ฌ์คํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ ธ๋์ ๊ธฐ๋ณธ ๊ธฐ๋ณธ ๋ ธ๋, ์ผ๋ฐ์ ์ธ ๋ ๊ฐ์ ๋ณต์ ๋ณธ(๋๊ธฐ์ ๋ฐ ๋น๋๊ธฐ์), ๋ฐฑ์ , ๋ณต์ ๋ณธ์ ๋ํ ์ฝ๊ธฐ ์์ฒญ ํ์ฅ์ ๋๋ค.
๊ฐ ํด๋ฌ์คํฐ ๋ ธ๋๋ Postgres์ด๋ฉฐ, Postgres ๋ฐ ๋ชจ๋ํฐ๋ง ์์คํ ์ธ์๋ ์ฐ๊ฒฐ ํ๋ฌ๋ ์ค์น๋ฉ๋๋ค. ์ฐ๊ฒฐ ํ๋ฌ๋ ํ์ฑ ๋ฐ ์ฃผ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๊ฒฐ ํ๋ฌ์ ์ฃผ์ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น?
Postgres๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ํ๋ก์ธ์ค ๋ชจ๋ธ์ ์ฑํํฉ๋๋ค. ์ด๋ ํ๋์ ์ฐ๊ฒฐ์ด ํ๋์ ํ๋ก์ธ์ค, ํ๋์ Postgres ๋ฐฑ์๋์์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐฑ์๋์๋ ๋ค์ํ ์บ์๊ฐ ๋ง์ด ์๋๋ฐ, ์ด๋ ์๋ก ๋ค๋ฅธ ์ฐ๊ฒฐ์ ๋ํด ๋ค๋ฅด๊ฒ ๋ง๋๋ ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
๋ํ Postgres ์ฝ๋์๋ procArray๋ผ๋ ๋ฐฐ์ด์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ์ ๋ชจ๋ procArray ์ฒ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํ์ ๋ณต์ก์ฑ์ ๊ฐ์ง๋ฉฐ ์ ์ฒด ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋ฐฐ์ด์์ ์คํ๋ฉ๋๋ค. ์ด๋ ๋งค์ฐ ๋น ๋ฅธ ์ฃผ๊ธฐ์ด์ง๋ง ๋ค์ด์ค๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋ง์์ง๋ฉด ๋น์ฉ์ด ์กฐ๊ธ ๋ ๋์์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ฉ์ด ์กฐ๊ธ ๋ ๋น์ธ์ง๋ฉด ๋ง์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํด ๋งค์ฐ ๋์ ๋น์ฉ์ ์ง๋ถํ๊ฒ ๋ ์ ์์ต๋๋ค.
๊ฐ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ 3๊ฐ์ง์ ๋๋ค.
- ์์ฉ ํ๋ก๊ทธ๋จ ์ธก๋ฉด์์.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธก.
- ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฌ์ด์๋ ๋ชจ๋ ์ข ๋ฅ์ ์กฐํฉ์ด ์์ต๋๋ค.
์ํ๊น๊ฒ๋ ๋ด์ฅ ํ๋ฌ๋ ํ์ฌ ๊ฐ๋ฐ ์ค์ ๋๋ค. PostgreSQL Professional์ ์น๊ตฌ๋ค์ด ์ฃผ๋ก ์ด๋ฐ ์ผ์ ํฉ๋๋ค. ์ธ์ ๋ํ๋ ์ง๋ ์์ธกํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ค์ ๋ก ๊ฑด์ถ๊ฐ๊ฐ ์ ํํ ์ ์๋ ๋ ๊ฐ์ง ์๋ฃจ์ ์ด ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ธก ํ๊ณผ ํ๋ก์ ํ์ ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ธก ํ์ด ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ์ ๋ชจ๋ ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ฆ, ์๋ฐฑ๋ง ๊ฐ์ ์ฐ๊ฒฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์์ญ ๊ฐ์ ์ฐ๊ฒฐ๋ก ์ฝ๋์ ํ์ํฉ๋๋ค.
๋ฐ์ํ๋ ๋ฌธ์ ๋ ๋ฐฑ์๋๋ฅผ ํ์ฅํ๊ณ ์ถ์ ํน์ ์์ ์์ ์ด๋ฅผ ๋ง์ ๊ฐ์ ๋จธ์ ์ ๋ฐฐํฌํ๊ณ ์ถ๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ฐ์ฉ์ฑ ์์ญ๊ณผ ๋ฐ์ดํฐ ์ผํฐ๊ฐ ์ฌ๋ฌ ๊ฐ ๋ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ ์ธก ํ๋ง ์ ๊ทผ ๋ฐฉ์์ ๋ ํฐ ์ซ์๋ก ์ด์ด์ง๋๋ค. ํฐ ์ฐ๊ฒฐ์ ์ฝ 10๊ฐ์ ๋๋ค. ์ ์์ ์ผ๋ก ์๋ํ ์ ์๋ ์ฃ์ง์ ๋๋ค.
ํ๋ก์ ํ๋ฌ์ ๊ดํด ์ด์ผ๊ธฐํ๋ฉด ๋ง์ ์ผ์ ํ ์ ์๋ ๋ ๋ช
์ ํ๋ฌ๊ฐ ์์ต๋๋ค. ๊ทธ๋ค์ ๋จ์ง ํ๋ฌ๊ฐ ์๋๋๋ค. ๊ทธ๋ค์ ํ๋ฌ + ๋ ๋ฉ์ง ๊ธฐ๋ฅ์
๋๋ค. ์ด๊ฒ
๊ทธ๋ฌ๋ ๋ถํํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ์ด ์ถ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ํ๋ฌ๊ฐ ์ธ์ ํ๋ง(์: ํ๋์ ์์ ํด๋ผ์ด์ธํธ, ํ๋์ ๋ฐ์ ํด๋ผ์ด์ธํธ)๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ง์ํ๋ค๋ ์ฌ์ค๋ก ์ด์ด์ง๋๋ค.
์ด๋ ์ฐ๋ฆฌ ๋ชฉ์ ์ ๊ทธ๋ค์ง ์ ํฉํ์ง ์์ผ๋ฏ๋ก ํธ๋์ญ์ ํ๋ง์ ๊ตฌํํ๋ PgBouncer๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, ์๋ฒ ์ฐ๊ฒฐ์ ํธ๋์ญ์ ๊ธฐ๊ฐ ๋์์๋ง ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ๊ณผ ์ผ์น๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ์์ ๋์์๋ ์ด๊ฒ์ด ์ฌ์ค์ ๋๋ค. ํ์ง๋ง ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค..
๋ค์ด์ค๋ ๋ชจ๋ ์ฐ๊ฒฐ์ด ๋ก์ปฌ์ด๊ธฐ ๋๋ฌธ์ ์ธ์ ์ ์ง๋จํ๋ ค๊ณ ํ ๋ ๋ฌธ์ ๊ฐ ์์๋ฉ๋๋ค. ๋ชจ๋๊ฐ ๋ฃจํ๋ฐฑ์ ๊ฐ์ง๊ณ ์๊ณ ์ ์ง ์ธ์ ์ ์ถ์ ํ๊ธฐ๊ฐ ์ด๋ ค์์ก์ต๋๋ค.
๋ฌผ๋ก application_name_add_host๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ Bouncer ์ธก์์ application_name์ IP ์ฃผ์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ application_name์ ์ถ๊ฐ ์ฐ๊ฒฐ์ ์ํด ์ค์ ๋ฉ๋๋ค.
์ด ๊ทธ๋ํ์์ ๋ ธ๋์ ์ ์ ์ค์ ์์ฒญ์ด๊ณ ํ๋์ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ ๋๋ ์์ฒญ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ฐจ์ด์ ์ ์ ํํ ์ถ์ ์๋ง ํ์ํ์ง๋ง ์ ํ ๋ฌด๋ฃ๊ฐ ์๋ application_name์ ์ค์น์ ๋๋ค.
๋ํ Bouncer์์๋ ํ๋์ ํ, ์ฆ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋น ํน์ ์ฌ์ฉ์๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ฌด์์ผ๋ก ์ด์ด์ง๋๊ฐ? C++๋ก ์์ฑ๋ ๋ก๋๋ ์๋น์ค๊ฐ ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฌด๋ฐ ๋ฌธ์ ๋ ์ผ์ผํค์ง ์๋ ๋ ธ๋์ ์์ ์๋น์ค ๊ทผ์ฒ ์ด๋๊ฐ์ ๋๋ผ์ด๋ฒ๊ฐ ์๋ํ์ง ์์ต๋๋ค. 20๊ฐ์ ์ฐ๊ฒฐ์ด ์ด๋ฆฌ๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ฝ๋๋ ์ ์์ ๋๋ค.
๋ฌผ๋ก ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ๋ฅผ ํ๋ก ์ ํํ๋ ์ค์ ์ ์ถ๊ฐํ๋ Bouncer์ฉ ์์ ํจ์น๋ฅผ ์์ฑํ์ต๋๋ค.
Postgres ์ธก์์ ์ด๋ฅผ ์ํํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, ์ฐ๊ฒฐ ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ญํ ์ ์ ํํฉ๋๋ค.
๊ทธ๋ฌ๋ ์๋ฒ์ ์ฐ๊ฒฐ๋์ง ์์ ์ด์ ๋ฅผ ์ดํดํ๋ ๋ฅ๋ ฅ์ ์๊ฒ ๋ฉ๋๋ค. PgBouncer๋ ์ฐ๊ฒฐ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์์ผ๋ฉฐ ํญ์ ๋์ผํ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ดํดํ์ง ๋ชปํ ์๋ ์์ต๋๋ค. ๋น๋ฐ๋ฒํธ๊ฐ ๋ณ๊ฒฝ๋์์ ์๋ ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ค๋์์ ์๋ ์๊ณ , ๋ญ๊ฐ ์๋ชป๋์์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๋จ์ ์์ต๋๋ค. ์ธ์ ์ ์ค์ ํ ์ ์์ผ๋ฉด ์ ์ค์ ํ ์ ์๋์ง ์ ์ ์์ต๋๋ค.
ํน์ ์์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ทธ๋ํ๋ฅผ ๋ณด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ํ์ง ์๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
์๋จ์ ๋ณด๊ณ Bouncer๊ฐ ๋จ์ผ ์ค๋ ๋์ธ์ง ํ์ธํ์ธ์. ์ด๊ฒ์ ์๋น์ค ์ธ์์ ์ ํ์ ์ ๋๋ค. ๋น์ ์ XNUMX๋ ๋ฐ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฅ์ ์ค๋นํ๊ณ ์์๊ณ ํ๋ฌ๋ฅผ ํ์ฅํด์ผ ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ ๋ง์ PgBouncer๊ฐ ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค.
๋ฐ์ด์๊ฐ ์ฝ๊ฐ ํจ์น๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ TCP ํฌํธ๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ Bouncer๋ฅผ ์ฌ๋ฆด ์ ์๋๋ก ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ์ฒด์ ๋ ๋ผ์ด๋ ๋ก๋น์ ์ฌ์ฉํ์ฌ ์ด๋ค ๊ฐ์ ๋ค์ด์ค๋ TCP ์ฐ๊ฒฐ์ ์๋์ผ๋ก ์ ์กํฉ๋๋ค.
์ด๋ ํด๋ผ์ด์ธํธ์๊ฒ ํฌ๋ช ํฉ๋๋ค. ์ฆ, ํ๋์ Bouncer๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์คํ ์ค์ธ Bouncer ์ฌ์ด์ ์ ํด ์ฐ๊ฒฐ์ด ์กฐ๊ฐํ๋์ด ์์์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ค ์๊ฐ์๋ ์ด 3๋ช ์ ๋ฐ์ด์๊ฐ ๊ฐ๊ฐ ์ฝ์ด๋ฅผ 100% ์๋ชจํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ฝค ๋ง์ ๊ฒฝ๋น์์ด ํ์ํฉ๋๋ค. ์?
TLS๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ํธํ๋ ์ฐ๊ฒฐ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ TLS๊ฐ ์๊ฑฐ๋ ์๋ Postgres๋ฅผ ๋ฒค์น๋งํนํ๋ฉด TLS ํธ๋์ ฐ์ดํฌ๊ฐ CPU ๋ฆฌ์์ค๋ฅผ ์๋นํ๊ธฐ ๋๋ฌธ์ ์ํธํ๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ์ค์ ๋ ์ฐ๊ฒฐ ์๊ฐ ๊ฑฐ์ XNUMX๋ฐฐ ์ ๋ ๊ฐ์ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋จ์๋ ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ด ์์ ๋ ์คํ๋๋ ๋ช ๊ฐ์ง ์ํธํ ๊ธฐ๋ฅ์ ๋ณผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์์ญ์ ๊ฐ์ฉ์ฑ ์์ญ ๊ฐ์ ์ ํํ ์ ์์ผ๋ฏ๋ก ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ๋ฌผ๊ฒฐ์ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์ํฉ์ ๋๋ค. ์ฆ, ์ด๋ค ์ด์ ๋ก ์ด์ ๊ธฐ๋ณธ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์ด ์ ์ฒด ๋ก๋๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ผํฐ๋ก ์ ์ก๋์์ต๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ ๋์์ TLS์ ์ธ์ฌํ๋ฌ ์ฌ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์์ TLS ์ ์๋ ๋ ์ด์ Bouncer์๊ฒ ์ธ์ฌํ์ง ์์ ์๋ ์์ง๋ง ๊ทธ์ ๋ชฉ์ ์ฅ์ด์ง๊ฒ ๋ ๊ฒ์ ๋๋ค. ์๊ฐ ์ด๊ณผ๋ก ์ธํด ๋ค์ด์ค๋ ์ฐ๊ฒฐ์ ์จ์ด๋ธ๊ฐ ๊ฐ์ ๋์ง ์์ ์ ์์ต๋๋ค. ์ง์ ๋ฐฑ์คํ ์์ด ๋ฒ ์ด์ค๋ก ์ฌ์๋ํ๋ฉด ์ผ๊ด์ฑ ์๋ ์จ์ด๋ธ๋ก ๊ณ์ํด์ ์ค์ง ์์ ๊ฒ์ ๋๋ค.
๋ค์์ 16๊ฐ ์ฝ์ด๋ฅผ 16% ๋ก๋ํ๋ 100๊ฐ PgBouncer์ ์์ ๋๋ค.
์ฐ๋ฆฌ๋ ์บ์ค์ผ์ด๋ PgBouncer์ ์์ต๋๋ค. ์ด๋ Bouncer๋ฅผ ์ฌ์ฉํ ๋ก๋์์ ๋ฌ์ฑํ ์ ์๋ ์ต์์ ๊ตฌ์ฑ์ ๋๋ค. ์ธ๋ถ ๋ฐ์ด์๋ TCP ํธ๋์ ฐ์ดํฌ์ ์ฌ์ฉ๋๊ณ ๋ด๋ถ ๋ฐ์ด์๋ ์ค์ ํ๋ง์ ์ฌ์ฉ๋๋ฏ๋ก ์ธ๋ถ ์ฐ๊ฒฐ์ ๋๋ฌด ๋ง์ด ์กฐ๊ฐํํ์ง ์์ต๋๋ค.
์ด ๊ตฌ์ฑ์์๋ ์ํํ ์ฌ์์์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด 18๊ฐ์ ๋ฐ์ด์๋ฅผ ๋ชจ๋ ํ๋์ฉ ๋ค์ ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ฌํ ๊ตฌ์ฑ์ ์ ์งํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ์์คํ ๊ด๋ฆฌ์, DevOps ๋ฐ ์ด ์๋ฒ๋ฅผ ์ค์ ๋ก ๋ด๋นํ๋ ์ฌ๋๋ค์ ์ด ๋ฐฐ์ด์ ๋ณ๋ก ๋ง์กฑํ์ง ์์ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ ๋ชจ๋ ๊ฐ์ ์ฌํญ์ ์คํ ์์ค๋ก ์น๊ฒฉ๋ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง Bouncer๋ ์ ์ง์๋์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ํฌํธ์์ ์ฌ๋ฌ PgBouncer๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ์ ํ ๋ฌ ์ ์ ์ปค๋ฐ๋์์ต๋๋ค. ๋ช ๋ ์ ์ ์ด ๊ธฐ๋ฅ์ ๋ํ ๋์ด์ค๊ธฐ ์์ฒญ์ด ์์์ต๋๋ค.
์๋๋ฉด ํ๋ ๋ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. Postgres์์๋ ๋ถํ์ํ ์ธ์ฆ ์์ด ๋ค๋ฅธ ์ฐ๊ฒฐ์ ๋น๋ฐ์ ์ ์กํ์ฌ ์งํ ์ค์ธ ์์ฒญ์ ์ทจ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ถ ํด๋ผ์ด์ธํธ๋ ๋จ์ํ TCP ์ฌ์ค์ ์ ๋ณด๋ ๋๋ค. ์ฆ, ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๋์ด์ง๋๋ค. ๊ฒฝ๋น์์ ๋ฌด์์ ํ ๊ฒ์ธ๊ฐ? ๊ทธ๋ ์๋ฌด๊ฒ๋ ํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ณ์ํด์ ์์ฒญ์ ์คํํฉ๋๋ค. ์์ ์์ฒญ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑํ ์์ฒญ๋ ์์ ์ฐ๊ฒฐ์ ๋ฐ์ ๊ฒฝ์ฐ Bouncer์์ ์ฐ๊ฒฐ์ ๋๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํ ์ค์ธ ํด๋น ์์ฒญ๋ ์๋ฃํด์ผ ํฉ๋๋ค.
์ด๋ ํจ์น๋์์ผ๋ฉฐ ์ด ๋ฌธ์ ๋ ์์ง Bouncer์ ์ ์คํธ๋ฆผ์ ๋ณํฉ๋์ง ์์์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ์์ ํ ์ ์๊ณ ๋ฌผ๋ก ๋ฉํฐ์ค๋ ๋์ฌ์ผ ํ๋ ๊ฐ๋ฐ ๋ฐ ํจ์น๊ฐ ๊ฐ๋ฅํ ์์ฒด ์ฐ๊ฒฐ ํ๋ฌ๊ฐ ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ฉํฐ์ค๋ ๋ฉ์ ์ฃผ์ ์์ ์ผ๋ก ์ค์ ํ์ต๋๋ค. ๋ค์ด์ค๋ TLS ์ฐ๊ฒฐ์ ๋ฌผ๊ฒฐ์ ์ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๊ธฐ๊ณ ์ํ๋ฅผ ์์ฐจ ์ฝ๋๋ก ๊ธฐ์ ํ๋๋ก ์ค๊ณ๋ Machinarium์ด๋ผ๋ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฐํด์ผ ํ์ต๋๋ค. libpq ์์ค ์ฝ๋๋ฅผ ๋ณด๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ณ "๋์ค์ ์ ํํ์ธ์. "๋ผ๊ณ ๋งํ ์ ์๋ ๊ฝค ๋ณต์กํ ํธ์ถ์ ๋ณผ ์ ์์ต๋๋ค. ์ง๊ธ ๋น์ฅ์ IO๊ฐ ์์ง๋ง IO๊ฐ ์ฌ๋ผ์ง๋ฉด ํ๋ก์ธ์์ ๋ถํ๊ฐ ๊ฑธ๋ฆฌ๊ฒ ๋ฉ๋๋ค.โ ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ค๋จ๊ณ ๊ณํ์ ๋๋ค. ๋คํธ์ํฌ ํต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ํ ๋จธ์ ์ผ๋ก ์ค๋ช ๋ฉ๋๋ค. "์ด์ ์ N ํฌ๊ธฐ์ ํจํท ํค๋๋ฅผ ๋ฐ์๋ค๋ฉด ์ด์ N ๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.", "SYNC ํจํท์ ๋ณด๋๋ค๋ฉด ์ด์ ๊ฒฐ๊ณผ ๋ฉํ๋ฐ์ดํฐ๊ฐ ์๋ ํจํท์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค."์ ๊ฐ์ ๋ง์ ๊ท์น์ด ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ ๋ง์น ๋ฏธ๋ก๊ฐ ๋ผ์ธ ์ค์บ์ผ๋ก ๋ณํ๋ ๊ฒ์ฒ๋ผ ๋ค์ ์ด๋ ต๊ณ ์ง๊ด์ ๋ฐํ๋ ์ฝ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ํ ๋จธ์ ๋์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ผ๋ฐ์ ์ธ ๋ช ๋ นํ ์ฝ๋ ํํ๋ก ์ํธ ์์ฉ์ ์ฃผ์ ๊ฒฝ๋ก๋ฅผ ์ค๋ช ํ๋๋ก ๋ง๋ค์์ต๋๋ค. ์ด ๋ช ๋ นํ ์ฝ๋์์๋ ๋คํธ์ํฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ์คํ ์ํ์ค๋ฅผ ์ค๋จํ๊ณ ์คํ ์ปจํ ์คํธ๋ฅผ ๋ค๋ฅธ ์ฝ๋ฃจํด(๋ น์ ์ค๋ ๋)์ผ๋ก ์ ๋ฌํด์ผ ํ๋ ์์น๋ฅผ ์ฝ์ ํด์ผ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฏธ๋ก์์ ๊ฐ์ฅ ์์๋๋ ๊ฒฝ๋ก๋ฅผ ์ฐ์์ผ๋ก ๊ธฐ๋กํ ๋ค์ ๊ฑฐ๊ธฐ์ ๋ถ๊ธฐ๋ฅผ ์ถ๊ฐํ๋ค๋ ์ฌ์ค๊ณผ ์ ์ฌํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ฐ๋ฆฌ๋ TCP๋ฅผ ์๋ฝํ๊ณ ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ผ๋ก TPC ์ฐ๊ฒฐ์ ๋ง์ ์์ ์์๊ฒ ์ ๋ฌํ๋ ํ๋์ ์ค๋ ๋๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ด ๊ฒฝ์ฐ ๊ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ํญ์ ํ๋์ ํ๋ก์ธ์์์ ์คํ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์บ์ ์นํ์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
๋ํ ์์คํ TCP ์คํ์ ์ํํ๊ธฐ ์ํด ์์ ํจํท์ ํ๋์ ํฐ ํจํท์ผ๋ก ์์งํ๋ ๊ธฐ๋ฅ์ ์ฝ๊ฐ ๊ฐ์ ํ์ต๋๋ค.
๋ํ Odyssey๊ฐ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์คํจ ์ CANCEL ๋ฐ ROLLBACK์ ๋ณด๋ผ ์ ์๋ค๋ ์ ์์ ํธ๋์ญ์ ํ๋ง์ ๊ฐ์ ํ์ต๋๋ค. ์ฆ, ์๋ฌด๋ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ง ์์ผ๋ฉด Odyssey๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฒญ์ ์๋ํ์ง ๋ง๋ผ๊ณ ์ง์ํฉ๋๋ค. ๊ท์คํ ์์์ ๋ญ๋นํ ์ ์๋ ์์ฒญ์ ์ดํํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ ๋๋ง๋ค ๋์ผํ ํด๋ผ์ด์ธํธ์ ๋ํ ์ฐ๊ฒฐ์ ์ ์งํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด application_name_add_host๋ฅผ ๋ค์ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ง๋จ์ ํ์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ค์ ํ ํ์๊ฐ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ Yandex.Cloud์ ์ด์ต์ ์ํด ์ผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ด๋ฆฌํ PostgreSQL์ ์ฌ์ฉํ๊ณ ์ฐ๊ฒฐ ํ๋ฌ๊ฐ ์ค์น๋ ๊ฒฝ์ฐ ์ธ๋ถ๋ก ๋ ผ๋ฆฌ์ ๋ณต์ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฆ, ์ํ๋ ๊ฒฝ์ฐ ๋ ผ๋ฆฌ์ ๋ณต์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๋ฆฌ๋ฅผ ๋ ๋ ์ ์์ต๋๋ค. Bouncer๋ ์ธ๋ถ์์ ๋ ผ๋ฆฌ์ ๋ณต์ ํ๋ฆ์ ํด์ ํ์ง ์์ต๋๋ค.
๋ ผ๋ฆฌ์ ๋ณต์ ๋ฅผ ์ค์ ํ๋ ์์ ๋๋ค.
๋ํ ์ธ๋ถ๋ก์ ๋ฌผ๋ฆฌ์ ๋ณต์ ๋ ์ง์๋ฉ๋๋ค. ๋ฌผ๋ก ํด๋ผ์ฐ๋์์๋ ์ด๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์๋ํ๋ฉด ํด๋ฌ์คํฐ๊ฐ ์์ฒด์ ๋ํด ๋๋ฌด ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค์น ์ Odyssey์ ์ฐ๊ฒฐ ํ๋ฌ๋ฅผ ํตํด ๋ฌผ๋ฆฌ์ ๋ณต์ ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
Odyssey๋ PgBouncer์ ์๋ฒฝํ๊ฒ ํธํ๋๋ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ฑฐ์ ๋ชจ๋ ๋์ผํ ๋ช ๋ น์ ์คํํ๋ ๋์ผํ ์ฝ์์ด ์์ต๋๋ค. ๋๋ฝ๋ ํญ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ ๋์ด์ค๊ธฐ ์์ฒญ์ ๋ณด๋ด๊ฑฐ๋ ์ต์ํ GitHub์์ ๋ฌธ์ ๋ฅผ ๋ณด๋ด์ฃผ์๋ฉด ํ์ํ ๋ช ๋ น์ ์๋ฃํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ PgBouncer ์ฝ์์ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
๋ฌผ๋ก ์ ๋ฌ ์ค๋ฅ๋ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณด๊ณ ๋ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค. ๊ทํ๋ ๊ทํ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌํจ๋์ง ์์ ์ด์ ๋ฟ๋ง ์๋๋ผ ๊ทํ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌํจ๋์ง ์์ ์ด์ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค.
PgBouncer์ 100% ํธํ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ ์ด ๊ธฐ๋ฅ์ ๋นํ์ฑํ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์์ ์ ์ํด Bouncer์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ํ ์ ์์ต๋๋ค.
ะ ะฐะทัะฐะฑะพัะบะฐ
Odyssey ์์ค ์ฝ๋์ ๋ํ ๋ช ๋ง๋.
์๋ฅผ ๋ค์ด '์ผ์ ์ค์ง/์ฌ๊ฐ' ๋ช ๋ น์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Postgres๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ํ๋ฌ์์ ์ผ์ ์ค์งํ๊ณ pg_upgrade๋ฅผ ์ํํ ๋ค์ ๋ค์ ์์ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ณด๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋๊ฐ ๋จ์ํ ๋๋ ค์ง๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ๊ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ปค๋ฎค๋ํฐ์ ์ฌ๋๋ค์ ์ํด ์ ๊ณต๋์์ต๋๋ค. ๊ทธ๋ ๋ ์์ง ์ผ์ง ์์์ง๋ง ๊ณง ๋ชจ๋ ๊ฒ์ด ์ผ๊ฒ ๋ ๊ฒ์ ๋๋ค. (์ด๋ฏธ ๋๋)
๋ํ PgBouncer์ ์๋ก์ด ๊ธฐ๋ฅ ์ค ํ๋๋ Yandex.Cloud์์ ์ผํ์ง ์๋ ์ฌ๋์ด ์ ๊ณตํ SCRAM ์ธ์ฆ ์ง์์ ๋๋ค. ๋ ๋ค ๊ธฐ๋ฅ์ด ๋ณต์กํ๊ณ ์ค์ํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ง๊ธ ์ฝ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด Odyssey๊ฐ ๋ฌด์์ผ๋ก ๋ง๋ค์ด์ก๋์ง ์๋ ค๋๋ฆฌ๊ณ ์ถ์ต๋๋ค.
๋ ๊ฐ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ Odyssey ์์ค ๊ธฐ๋ฐ์ด ์์ต๋๋ค. Kiwi ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Postgres ๋ฉ์์ง ํ๋กํ ์ฝ์ ๊ตฌํ์ ๋๋ค. ์ฆ, Postgres์ ๊ธฐ๋ณธ proto 3์ ํ๋ฐํธ์๋์ ๋ฐฑ์๋๊ฐ ๊ตํํ ์ ์๋ ํ์ค ๋ฉ์์ง์ ๋๋ค. ์ด๋ Kiwi ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๊ตฌํ๋ฉ๋๋ค.
Machinarium ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค๋ ๋ ๊ตฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ด ๋จธ์๋๋ฆฌ์์ ์์ ์กฐ๊ฐ์ ์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ก ์์ฑ๋์์ต๋๋ค. ํ์ง๋ง ๋๋ผ์ง ๋ง์ธ์. ์ค์ 15๊ฐ๋ฟ์ ๋๋ค.
์ค๋์ธ์ด ์ํคํ ์ฒ. ์ฝ๋ฃจํด์ด ์คํ๋๋ ๊ธฐ๋ณธ ๋จธ์ ์ด ์์ต๋๋ค. ์ด ์์คํ ์ ๋ค์ด์ค๋ TCP ์ฐ๊ฒฐ์ ์๋ฝํ๊ณ ์ด๋ฅผ ์์ ์ ๊ฐ์ ๋ฐฐํฌํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ๋ํ ํธ๋ค๋ฌ๊ฐ ํ๋์ ์์ ์ ๋ด์์ ์๋ํ ์ ์์ต๋๋ค. ๋ํ ๋ฉ์ธ ์ค๋ ๋๋ ํ์์ ๋ ์ด์ ํ์ํ์ง ์์ ์ฐ๊ฒฐ์ ์ญ์ ํ๊ธฐ ์ํด ์ฝ์ ๋ฐ ํฌ๋ก ์์ ์ฒ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค.
Odyssey๋ ํ์ค Postgres ํ ์คํธ ์ค์ํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋์์ต๋๋ค. Bouncer์ Odyssey๋ฅผ ํตํด ์ค์น ํ์ธ์ ์คํํ๋ฉด null div๊ฐ ํ์๋ฉ๋๋ค. Bouncer์ Odyssey์์ ์ ํํ ๋์ผํ๊ฒ ํต๊ณผํ์ง ๋ชปํ๋ ๋ ์ง ํ์๊ณผ ๊ด๋ จ๋ ์ฌ๋ฌ ํ ์คํธ๊ฐ ์์ต๋๋ค.
๋ํ ์์ฒด ํ ์คํธ๋ฅผ ์ํํ๋ ๋๋ผ์ด๋ฒ๋ ๋ง์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๋ค์ ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ Odyssey๋ฅผ ํ ์คํธํฉ๋๋ค.
๋ํ ์บ์ค์ผ์ด๋ ๊ตฌ์ฑ์ผ๋ก ์ธํด Postgres + Odyssey, PgBouncer + Odyssey, Odyssey + Odyssey์ ๊ฐ์ ๋ค์ํ ๋ฒ๋ค์ ํ ์คํธํ์ฌ Odyssey๊ฐ ์บ์ค์ผ์ด๋์ ์ผ๋ถ์ ํฌํจ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ ํ ์๋ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ํ ๋๋ก.
๋ ์ดํฌ
์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ Odyssey๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ๋ค๊ณ ๋งํ๋ฉด ๊ณตํํ์ง ์์ ๊ฒ์ ๋๋ค. ์๋์, ๊ทธ๋ ์ต๋๋ค. ํ์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๋์ ์์๋ ๋ชจ๋ ๊ฒ์ด ์ ๋๋ก ์๋ํ๋๋ฐ PostgreSQL Professional์ ์น๊ตฌ๋ค์ด ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ค๊ณ ๋งํ์ต๋๋ค. ์ ๋ง ๊ทธ๋ฌ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ฐ๋ก์ก์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๊ฐ๋จํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฐ๊ฒฐ ํ๋ฌ์ ๋ค์ด์ค๋ TLS ์ฐ๊ฒฐ๊ณผ ๋๊ฐ๋ TLS ์ฐ๊ฒฐ์ด ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๊ฒฐ์๋ ํด๋ผ์ด์ธํธ ์ธ์ฆ์์ ์๋ฒ ์ธ์ฆ์๊ฐ ํ์ํฉ๋๋ค.
Bouncer ๋ฐ Odyssey ์๋ฒ ์ธ์ฆ์๋ ํด๋น pcache์์ ๋ค์ ์ฝํ์ง๋ง ํด๋ผ์ด์ธํธ ์ธ์ฆ์๋ pcache์์ ๋ค์ ์ฝ์ ํ์๊ฐ ์์ต๋๋ค. ํ์ฅ ๊ฐ๋ฅํ Odyssey๊ฐ ๊ถ๊ทน์ ์ผ๋ก ์ด ์ธ์ฆ์๋ฅผ ์ฝ๋ ์์คํ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๊ฐ ์ ํญํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ๋๋ผ์ด ์ผ์ด์์ต๋๋ค. ์ฒ์์๋ ์ ํ์ ์ผ๋ก ํ์ฅ๋์์ง๋ง 20๊ฐ์ ๋์ ์ฐ๊ฒฐ์ด ๋ค์ด์ค๋ ์ดํ์ ์ด ๋ฌธ์ ๊ฐ ๋๋ฌ๋ฌ์ต๋๋ค.
ํ๋ฌ๊ทธํ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋ด์ฅ๋ Lunux ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํ๋ ๊ธฐ๋ฅ์ ๋๋ค. PgBouncer์์๋ PAM์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋ณ๋์ ์ค๋ ๋๊ฐ ์๊ณ ํ์ฌ ์ฐ๊ฒฐ์ ์๋น์คํ๊ณ PAM ์ค๋ ๋์ ์กด์ฌํ๋๋ก ์์ฒญํ ์ ์๋ ๊ธฐ๋ณธ PgBouncer ์ค๋ ๋๊ฐ ์๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ํ ๊ฐ์ง ๊ฐ๋จํ ์ด์ ๋ก ์ด๊ฒ์ ๊ตฌํํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ๋ ๋ง์ ์ค๋ ๋๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด ์ ํ์ํ๊ฐ์?
์ด๋ก ์ธํด PAM ์ธ์ฆ๊ณผ ๋นPAM ์ธ์ฆ์ด ์๋ ๊ฒฝ์ฐ PAM ์ธ์ฆ์ด ๋๋์ผ๋ก ๋ฐ์ํ๋ฉด ๋นPAM ์ธ์ฆ์ด ์๋นํ ์ง์ฐ๋ ์ ์๋ค๋ ์ ์์ ๊ถ๊ทน์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํ์ง ๋ชปํ ๋ฌธ์ ์ค ํ๋์ ๋๋ค. ํ์ง๋ง ๋ฌธ์ ๋ฅผ ๊ณ ์น๊ณ ์ถ๋ค๋ฉด ์ด๋ ๊ฒ ํ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ๋ค์ด์ค๋ ๋ชจ๋ ์ฐ๊ฒฐ์ ํ์ฉํ๋ ํ๋์ ์ค๋ ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ TLS ํธ๋์ ฐ์ดํฌ๊ฐ ์ํ๋๋ ์์ ์ ํ๋ก ์ ์ก๋ฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, 20๊ฐ์ ์ผ๊ด๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์๋ค๋ฉด ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ ์ธก์์ libpq๋ ์๊ฐ ์ด๊ณผ ๋ณด๊ณ ๋ฅผ ์์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก 000์ด์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ชจ๋๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด๊ฐ ์ ์๋ค๋ฉด, ๋น์ง์ ์ฌ์๋๋ก ์ด ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ํ์ฉํ๋ TCP ์ฐ๊ฒฐ ์๋ฅผ ์ ํํ๋ค๋ ์ฌ์ค๊ณผ ํจ๊ป PgBouncer์ ๊ตฌ์ฑํ๋ฅผ ์ฌ๊ธฐ์์ ๋ณต์ฌํ๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค.
์ฐ๊ฒฐ์ ์๋ฝํ๊ณ ์์ง๋ง ๊ถ๊ทน์ ์ผ๋ก ํธ๋์ ฐ์ดํฌํ ์๊ฐ์ด ์๋ ๊ฒฝ์ฐ CPU ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ์ง ์๋๋ก ํด๋น ์ฐ๊ฒฐ์ ๋๊ธฐ์ด์ ๋ฃ์ต๋๋ค. ์ด๋ก ์ธํด ๋์ฐฉํ ๋ชจ๋ ์ฐ๊ฒฐ์ ๋ํด ๋์ ํธ๋์ ฐ์ดํฌ๊ฐ ์ํ๋์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ถํ๊ฐ ์๋นํ ํฌ๋๋ผ๋ ์ ์ด๋ ๋๊ตฐ๊ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ด๊ฐ ๊ฒ์ ๋๋ค.
๋ก๋๋งต
์์ผ๋ก Odyssey์์ ๋ฌด์์ ๋ณด๊ณ ์ถ๋์? ์ฐ๋ฆฌ๋ ์ค์ค๋ก ๋ฐ์ ํ ์ค๋น๊ฐ ๋์ด ์์ผ๋ฉฐ, ์ปค๋ฎค๋ํฐ์์ ๋ฌด์์ ๊ธฐ๋ํฉ๋๊น?
2019๋ XNUMX์ ๊ธฐ์ค.
XNUMX์ Odyssey ๋ก๋๋งต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฐ๋ฆฌ๋ SCRAM ๋ฐ PAM ์ธ์ฆ์ ์ํ์ต๋๋ค.
- ์ฐ๋ฆฌ๋ ์ฝ๊ธฐ ์์ฒญ์ ๋๊ธฐ๋ก ์ ๋ฌํ๊ณ ์ถ์์ต๋๋ค.
- ์จ๋ผ์ธ์ผ๋ก ๋ค์ ์์ํ๊ณ ์ถ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์๋ฒ์์ ์ผ์ ์ ์งํ๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.
์ด ๋ก๋๋งต์ ์ ๋ฐ์ ์๋ฃ๋์์ผ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ์๋ฃํ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ข์ ๊ฒ์ ๋๋ค. ๊ทธ๋ผ ๋จ์ ๋ด์ฉ์ ๋ํด ๋ ผ์ํ๊ณ ๋ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์์น์ ์ผ๋ก Postgres์์๋ 10๋ถํฐ ์ ์ ์ session_attrs๋ฅผ ์ง์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ฐ๊ฒฐ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์คํธ๋ฅผ ๋์ดํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ํ๋ ์ด์ (์ฐ๊ธฐ ๋๋ ์ฝ๊ธฐ ์ ์ฉ)๋ฅผ ๋งํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ผ์ด๋ฒ๋ ๋ชฉ๋ก์์ ์์ ์ด ๊ฐ์ฅ ์ข์ํ๋ ์ฒซ ๋ฒ์งธ ํธ์คํธ๋ฅผ ์ ํํ๊ฒ ๋๋ฉฐ, ์ด๋ session_attrs์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์ ์ ์ ๋ณต์ ์ง์ฐ์ ์ ์ดํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ๋๋ค. ์๋น์ค์ ๋ํด ํ์ฉํ ์ ์๋ ์๊ฐ ๋์ ์ง์ฐ๋ ์ผ๋ถ ๋ณต์ ๋ณธ์ด ์์ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ์์ ์ฝ๊ธฐ ์ฟผ๋ฆฌ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์คํํ๋ ค๋ฉด ์ฝ์ ์ ์์ ๋ ์คํ๋์ง ์๋ Odyssey ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํด์ผ ํฉ๋๋ค.
Odyssey๋ ์์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ์ ๋ณต์ ๊ฑฐ๋ฆฌ๋ฅผ ์์ฒญํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ ๊ฐ์ ๋๋ฌํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ ์์ฒญ์ ํ์ฉํ์ง ๋ง๊ณ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๋ค์ ์์ํด์ผ ํ๋ค๊ณ ์๋ฆฌ๊ณ ์์ฒญ์ ์คํํ ๋ค๋ฅธ ํธ์คํธ๋ฅผ ์ ํํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ณต์ ์ง์ฐ์ ์ ์ํ๊ฒ ๋ณต์ํ๊ณ ์์ฒญ์ ์๋ตํ๊ธฐ ์ํด ๋ค์ ๋์์ฌ ์ ์์ต๋๋ค.
์คํ์์ค์ด๊ธฐ ๋๋ฌธ์ ๊ตฌํ ์๊ธฐ๋ฅผ ๋ง์๋๋ฆฌ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ํ์ง๋ง PgBouncer์ ๋๋ฃ๋ค์ฒ๋ผ 2,5๋ ์ ์๋๊ธธ ๋ฐ๋๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ์ค๋์ธ์ด์์ ๋ณด๊ณ ์ถ์ ๊ธฐ๋ฅ์ ๋๋ค.
๊ทธ๋ฌ๋ proto3์ ๋ฉ์์ง ํ๋กํ ์ฝ ์์ค์๋ ์ค๋น๋ ๋ช ๋ น๋ฌธ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋น๋ ๋ช ์ธ์๊ฐ ์์ฑ๋๋ค๋ ์ ๋ณด๊ฐ ๊ตฌ์กฐํ๋ ํํ๋ก ๋ค์ด์ค๋ ๊ณณ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ์๋ฒ ์ฐ๊ฒฐ์์ ํด๋ผ์ด์ธํธ๊ฐ ์ค๋น๋ ๋ช ๋ น๋ฌธ์ ์์ฑํ๋๋ก ์์ฒญํ๋ค๋ ์ดํด๋ฅผ ์ง์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋๋ผ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ์งํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์์ ๋ํ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์ข ๋ฅ์ ์ค๋น๋ ๋ช ๋ น๋ฌธ์ ์์ฑํ๋์ง ์ดํดํ๊ณ ์ด ์๋ฒ ์ฐ๊ฒฐ์ ์์ฑํ ๋ชจ๋ ํด๋ผ์ด์ธํธ, ์ฆ ์ค๋น๋ ๋ช ๋ น๋ฌธ์ ์์ฑํ ๋ชจ๋ ํด๋ผ์ด์ธํธ ๊ฐ์ ์๋ฒ ์ฐ๊ฒฐ์ ๊ณต์ ํด์ผ ํ๋ค๊ณ ๋งํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Andres Freund๋ ๋ค๋ฅธ ์๋ฒ ์ฐ๊ฒฐ์์ ์ด๋ฏธ ์ค๋น๋ ์ง์ ์ ์์ฑํ ํด๋ผ์ด์ธํธ๊ฐ ๋น์ ์๊ฒ ์ค๋ฉด ๊ทธ๋ฅผ ์ํด ๊ทธ๊ฒ์ ์์ฑํ๋ค๊ณ ๋งํ์ต๋๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒ์ ์กฐ๊ธ ์๋ชป๋ ๊ฒ ๊ฐ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ ์์ฉํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ ์์ฑํ๋ ๊ฐ๋ฐ์์ ๊ด์ ์์๋ ๋จ์ํ ๋คํธ์ํฌ ์ฐ๊ฒฐ๋ง ์ ๊ณต๋๋ค๋ฉด ํธ๋ฆฌํ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ์ค๋น๋ ์ฟผ๋ฆฌ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ตฌํํด์ผ ํ ๊ธฐ๋ฅ์ด ํ๋ ๋ ์์ต๋๋ค. ์ด์ PgBouncer์ ํธํ๋๋ ๋ชจ๋ํฐ๋ง์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ํ๊ท ์ฟผ๋ฆฌ ์คํ ์๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ๊ท ์๊ฐ์ ๋ณ์์ ํ๊ท ์จ๋์ ๋๋ค. ์ผ๋ถ๋ ์ถฅ๊ณ ์ผ๋ถ๋ ๋ฐ๋ปํฉ๋๋ค. ํ๊ท ์ ์ผ๋ก ๋ชจ๋๊ฐ ๊ฑด๊ฐํฉ๋๋ค. ์ฌ์ค์ด ์๋๋๋ค.
๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ๊ณ ๋ชจ๋ํฐ๋ง์ ๋ณด๋ค ์์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๋๋ฆฐ ์ฟผ๋ฆฌ๊ฐ ์์์ ๋ํ๋ด๋ ๋ฐฑ๋ถ์์์ ๋ํ ์ง์์ ๊ตฌํํด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฒ์ 1.0์ ์ํ๋ค๋ ๊ฒ์ ๋๋ค(๋ฒ์ 1.1์ ์ด๋ฏธ ์ถ์๋์์ต๋๋ค). ์ฌ์ค Odyssey๋ ํ์ฌ ๋ฒ์ 1.0rc, ์ฆ ๋ฆด๋ฆฌ์ค ํ๋ณด์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ๋์ดํ ๋ชจ๋ ๋ฌธ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ ์ธํ๊ณ ๋ ์ ํํ ๋์ผํ ๋ฒ์ ์ผ๋ก ์์ ๋์์ต๋๋ค.
๋ฒ์ 1.0์ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์ฐ๋ฆฌ๋ Odyssey๋ฅผ ๊ธฐ์ง์ ์ถ์ํ๊ณ ์์ต๋๋ค. ์ด๋ฏธ ์ฐ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํ๋๊ณ ์์ง๋ง ์ด๋น 1 ์์ฒญ ์ง์ ์ ๋๋ฌํ๋ฉด ์ด๊ฒ์ด ๋ฆด๋ฆฌ์ค ๋ฒ์ ์ด๋ผ๊ณ ๋งํ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ด 000์ด๋ผ๊ณ ํ ์ ์๋ ๋ฒ์ ์ ๋๋ค.
์ปค๋ฎค๋ํฐ์ ๋ช๋ช ์ฌ๋๋ค์ ๋ฒ์ 1.0์ ์ผ์์ ์ง ๋ฐ SCRAM์ด ํฌํจ๋๋๋ก ์์ฒญํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ SCRAM์ด๋ ์ผ์ ์ค์ง๊ฐ ์์ง ์ข ๋ฃ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฒ์ ์ ํ๋ก๋์ ์ ์ถ์ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ง๋ ์ด ๋ฌธ์ ๋ ๋งค์ฐ ๋นจ๋ฆฌ ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.
๋๋ ๋น์ ์ ํ ๋ฆฌํ์คํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. Bouncer์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง๋ ๋ฃ๊ณ ์ถ์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋ํด ํ ๋ก ํด ๋ด ์๋ค. ์๋ง๋ ํ์ํ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ๋ด ์ญํ ์ ๋์ ๋๋ค. ๋น์ ์ ๋ง์ ๋ฃ๊ณ ์ถ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
์ง๋ฌธ
๋ด ์์ ์ application_name์ ์ค์ ํ๋ฉด Odyssey์ ํธ๋์ญ์ ํ๋ง์ ํฌํจํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ฌ๋ฉ๋๊น?
์ค๋์ธ์ด ๋๋ ๋ฐ์ด์?
์ค๋์ธ์ด์์. Bouncer์์๋ ๋์ ธ์ง๋๋ค.
์ฐ๋ฆฌ๋ ์ธํธ๋ฅผ ํ ๊ฒ์ ๋๋ค.
์ค์ ์ฐ๊ฒฐ์ด ๋ค๋ฅธ ์ฐ๊ฒฐ๋ก ์ ํํ๋ฉด ์ ์ก๋๋์?
๋ชฉ๋ก์ ๋์ด๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์ ์ธํธ๋ฅผ ๋ง๋ญ๋๋ค. application_name์ด ์ด ๋ชฉ๋ก์ ์๋์ง ์ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๊ทธ๋ฅผ ๋ณธ ๊ฒ ๊ฐ์์. ์ฐ๋ฆฌ๋ ๋ชจ๋ ๋์ผํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ค์ ํฉ๋๋ค. ํ ๋ฒ์ ์์ฒญ์ผ๋ก ์ธํธ๋ ์์ ์ค์ ํด๋ผ์ด์ธํธ๊ฐ ์ค์นํ ๋ชจ๋ ์์ ์ ์ํํฉ๋๋ค.
๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค, Andrey! ์ข์ ๋ณด๊ณ ์์ ๋๋ค! ์ค๋์ธ์ด๊ฐ ๋งค๋ถ๋ง๋ค ์ ์ ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ด์ ๊ธฐ์๋ค์. ๋๋ ์ด๋๋ก ๊ณ์ํ๊ณ ์ถ๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฏธ Odyssey๊ฐ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ฆ ๋ง์คํฐ ์ฌ๋ ์ด๋ธ์ ๋์์ ์ฐ๊ฒฐํ ์ ์๋๋ก ๋ค์ค ๋ฐ์ดํฐ ์์ค ์ฐ๊ฒฐ์ ์์ฒญํ ๋ค์ ์ฅ์ ์กฐ์น ํ ์๋์ผ๋ก ์ ๋ง์คํฐ์ ์ฐ๊ฒฐํ ์ ์๋๋ก ์์ฒญํ์ต๋๋ค.
๋ค, ์ด ํ ๋ก ์ด ๊ธฐ์ต๋๋ ๊ฒ ๊ฐ์์. ์ด์ ์ฌ๋ฌ ์ ์ฅ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ค ์ฌ์ด์๋ ์ ํ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ ์ธก์์๋ ์๋ฒ๊ฐ ์์ง ์ด์ ์๋์ง ํด๋งํ๊ณ pg_recovery๋ฅผ ํธ์ถํ๋ ์ฅ์ ์กฐ์น๊ฐ ๋ฐ์ํ์์ ์ดํดํด์ผ ํฉ๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ์ฃผ์ธ์๊ฒ ์ค์ง ์์๋ค๋ ๊ฒ์ ์ดํดํ๋ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ค์๋ก๋ถํฐ ์ด๋ป๊ฒ๋ ์ดํดํด์ผ ํฉ๋๊น? ์ฆ, ์์ด๋์ด๊ฐ ํฅ๋ฏธ๋กญ๊ณ ๋ ผ์๋๊ณ ์์ต๋๋ค. ๋ ๋ง์ ๋๊ธ์ ์์ฑํ์ธ์. C๋ฅผ ์๋ ์์ ์๊ฐ ์๋ค๋ฉด ์ข์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ ๋ณต์ ๋ ํด๋ฌ์คํฐ๋ฅผ ์ต๋ํ ๊ฐ๋จํ๊ฒ ์ฑํํ ์ ์๋๋ก ํ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ ๋ณต์ ๋ณธ ์ ์ฒด์ ๊ฑธ์ณ ํ์ฅํ๋ ๋ฌธ์ ์๋ ๊ด์ฌ์ด ์์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ ๋ง์ ์๊ฒฌ, ์ฆ ์ ํํ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง, ์ด๋ป๊ฒ ํ๋ฉด ์ ํด์ผ ํ๋์ง์ ๋ํ ์๊ฒฌ์ด ํ์ํฉ๋๋ค.
๋ฌธ์ ๋ ๋ณต์ ๋ณธ์ ๊ดํ ๊ฒ์ด๊ธฐ๋ ํฉ๋๋ค. ๋ง์คํฐ์ ์ฌ๋ฌ ๋ณต์ ๋ณธ์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐจ์ด๊ฐ ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ์ ์ํด ๋ง์คํฐ๋ณด๋ค ๋ณต์ ๋ณธ์ผ๋ก ์ด๋ํ๋ ๋น๋๊ฐ ์ ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ๋ฐ์ดํฐ์ ์ฐจ์ด๊ฐ ๋๋ฌด ์ปค์ ๋น์ฆ๋์ค๋ฅผ ๋ง์กฑ์ํค์ง ๋ชปํ ์ ์์ผ๋ฉฐ ๋ณต์ ๋ ๋๊น์ง ๊ฑฐ๊ธฐ์ ๊ฐ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋ง์ํ์ จ์ต๋๋ค. ๋์์ ์ค๋ซ๋์ ๊ฑฐ๊ธฐ์ ๊ฐ์ง ์์๋ค๊ฐ ๊ฐ๊ธฐ ์์ํ๋ฉด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, ์ง์์ ์ผ๋ก ๋ง์คํฐ๋ก ์ด๋ํ๋ฉด ์บ์๊ฐ ์๋ฐ์ ๋์ง๋ง ๋ณต์ ๋ณธ์์๋ ์บ์๊ฐ ์ฝ๊ฐ ์ง์ฐ๋ฉ๋๋ค.
๊ทธ๋ ๊ทธ๊ฑด ์ฌ์ค์ด์ผ. pcache์๋ ์ํ๋ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์์ผ๋ฉฐ ์ค์ ์บ์์๋ ์ํ๋ ํ ์ด๋ธ์ ๋ํ ์ ๋ณด๊ฐ ์์ผ๋ฉฐ ๊ณํ์๋ ๊ตฌ๋ฌธ ๋ถ์๋ ์ฟผ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ์ ํ ์๋ฌด๊ฒ๋ ์์ต๋๋ค.
์ด๋ค ์ข ๋ฅ์ ํด๋ฌ์คํฐ๊ฐ ์๊ณ ๊ฑฐ๊ธฐ์ ์ ๋ณต์ ๋ณธ์ ์ถ๊ฐํ๋ฉด ์์ํ๋ ๋์ ๋ชจ๋ ๊ฒ์ด ์๋ชป๋ฉ๋๋ค. ์ฆ, ์บ์๊ฐ ๋์ด๋ฉ๋๋ค.
๋๋ ์์ด๋์ด๋ฅผ ์ป์๋ค. ์ฌ๋ฐ๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋จผ์ ๋ณต์ ๋ณธ์์ ์ ์ ๋น์จ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์บ์๋ฅผ ์ค๋นํ๋ ๊ฒ์ ๋๋ค. ๋๋ต์ ์ผ๋ก ๋งํ๋ฉด ๋ง์คํฐ๋ณด๋ค 10์ด ์ด์ ๋ฆ์ง ์์์ผ ํ๋ค๋ ์กฐ๊ฑด์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์กฐ๊ฑด์ ํ๋์ ๋ฌผ๊ฒฐ์ ํฌํจ๋์ง ์์ง๋ง ์ผ๋ถ ๊ณ ๊ฐ์๊ฒ๋ ์ํํ๊ฒ ํฌํจ๋ฉ๋๋ค.
์, ์ฒด์ค์ ๋๋ ค๋ผ.
์ด๊ฒ์ ์ข์ ์๊ฐ์ ๋๋ค. ํ์ง๋ง ๋จผ์ ์ด ์ข ๋ฃ๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค. ๋จผ์ ์ ์์ ๊บผ์ผ ํ๊ณ , ๊ทธ๋ฐ ๋ค์ ์ผ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ํํ๊ฒ ํ์ฑํํ ์ ์๋ ์ข์ ๊ธฐ๋ฅ์ ๋๋ค.
Nginx์๋ ์ด ์ต์
์ด ์์ต๋๋ค slowly start
์๋ฒ์ฉ ํด๋ฌ์คํฐ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ์ ์ฐจ์ ์ผ๋ก ๋ถํ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
๋ค, ์ข์ ์๊ฐ์ด์์. ๊ธฐํ๊ฐ ์๊ธฐ๋ฉด ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com