์ธ์คํด์ค
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์์ ์ธ์คํด์ค(instance)๋ ํด๋น ํด๋์ค์ ๊ตฌ์กฐ๋ก ์ปดํจํฐ ์ ์ฅ๊ณต๊ฐ์์ ํ ๋น๋ ์ค์ฒด๋ฅผ ์๋ฏธํ๋ค. ์ฌ๊ธฐ์ ํด๋์ค๋ ์์ฑ๊ณผ ํ์๋ก ๊ตฌ์ฑ๋ ์ผ์ข ์ ์ค๊ณ๋์ด๋ค. OOP์์ ๊ฐ์ฒด๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ํฌํจํ ๊ฐ๋ ์ด๋ค.
ํธ์คํ
ํธ์คํ (hosting)์ด๋ ์๋ฒ ์ปดํจํฐ์ ์ ์ฒด ๋๋ ์ผ์ ๊ณต๊ฐ์ ์ด์ฉํ ์ ์๋๋ก ์๋ํด ์ฃผ๋ ์๋น์ค๋ฅผ ๋งํ๋ค. PC ์๋ฒ๋ก ์น ์ฌ์ดํธ๋ฅผ ์ด์ํ๋ ค๋ฉด 24์๊ฐ 365์ผ ์ผ์ผ ํ๋ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ํธ์คํ ์ ์ฒด๊ฐ ๋ฏธ๋ฆฌ ์ฌ๋ฌ ๋์ ์๋ฒ๋ก ์ด์ฉ์๋ค์๊ฒ ์๋ํด ์ฃผ๊ณ ๊ทธ ๋๊ฐ๋ฅผ ๋ฐ๋ ์๋น์ค๊ฐ ํธ์คํ ์ด๋ค.
์๋ฃจ์
์ฌ์ฉ์ ์๊ตฌ์ ์ ํฉํ๋ฉด์ ํน์ ํ ํํ์ ์ปดํจํฐ ์ํํธ์จ์ด ํจํค์ง๋ ์์ฉํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ณ๋ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด ์ฃผ๋ ํ๋์จ์ด ๋๋ ์ํํธ์จ์ด๋ฅผ ์๋ฏธํ๋ค.
ํด๋ฌ์คํฐ
์ฌ๋ฌ ๋์ ์ปดํจํฐ๋ฅผ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฐ๊ฒฐํ์ฌ ํ๋์ ๋จ์ผ ์ปดํจํฐ์ฒ๋ผ ๋์ํ๋๋ก ์ ์ํ ์ปดํจํฐ๋ฅผ ๋งํ๋ค.
์ฟผ๋ฆฌ
์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ๊ฒ์ด๋ค. ์ฟผ๋ฆฌ๋ ์น ์๋ฒ์ ํน์ ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ๋ฌ๋ผ๋ ์น ํด๋ผ์ด์ธํธ ์์ฒญ(์ฃผ๋ก ๋ฌธ์์ด์ ๊ธฐ๋ฐ์ผ๋ก ํ ์์ฒญ์ด๋ค)์ ์ํ ์ฒ๋ฆฌ์ด๋ค.
์ธํฐํ์ด์ค
์ปดํจํฐ, ์์คํ , ์ฌ๋ ๋ฑ ๊ฒฝ๊ณ์ ์๋ ์ ์ ํน์ ๊ทธ ์ ์ ์์ ๋์์ ์ฃผ๋ ์์คํ (JAVA : ํด๋์ค์ ๋ผ๋๋ฅผ ๋ง๋ค์ด ๋์ ๊ฒ )
API
์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก, ์ด์ ์ฒด์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ดํ ์ ์๊ฒ ๋ง๋ ์ธํฐํ์ด์ค๋ฅผ ๋ปํ๋ค.
REST API
https://www.inflearn.com/questions/126743
๊ณ ๊ฐ์ฉ์ฑ(High Availability, HA)
๊ณ ๊ฐ์ฉ์ฑ(้ซๅฏ็จๆง, HA, High Availability)์ด๋ ์๋ฒ์ ๋คํธ์ํฌ, ํ๋ก๊ทธ๋จ ๋ฑ์ ์ ๋ณด ์์คํ ์ด ์๋นํ ์ค๋ ๊ธฐ๊ฐ ๋์ ์ง์์ ์ผ๋ก ์ ์ ์ด์์ด ๊ฐ๋ฅํ ์ฑ์ง์ ๋งํ๋ค. ๊ณ (้ซ)๊ฐ์ฉ์ฑ์ด๋ "๊ฐ์ฉ์ฑ์ด ๋๋ค"๋ ๋ป์ผ๋ก์, "์ ๋ ๊ณ ์ฅ ๋์ง ์์"์ ์๋ฏธํ๋ค. ๊ณ ๊ฐ์ฉ์ฑ์ ํํ ๊ฐ์ฉํ ์๊ฐ์ ๋น์จ์ 99%, 99.9% ๋ฑ๊ณผ ๊ฐ์ ํผ์ผํฐ์ง๋ก ํํํ๋๋ฐ, 1๋ ์ ๊ณํ๋ ๊ฒ ์ ์ธ 5๋ถ 15์ด ์ดํ์ ์ฅ์ ์๊ฐ์ ํ์ฉํ๋ค๋ ์๋ฏธ์ ํ์ด๋ธ ๋์ธ์ค(5 nines), ์ฆ 99.999%๋ ๋งค์ฐ ๋์ ์์ค์ผ๋ก ๊ณ ํ์ง์ ๋ฐ์ดํฐ์ผํฐ์์ ๋ชฉํ๋ก ํ๋ค๊ณ ์๋ ค์ ธ ์๋ค. ํ๋์ ์ ๋ณด ์์คํ ์ ๊ณ ๊ฐ์ฉ์ฑ์ด ์๊ตฌ๋๋ค๋ฉด, ๊ทธ ์์คํ ์ ๋ชจ๋ ๋ถํ๊ณผ ๊ตฌ์ฑ ์์๋ค์ ๋ฏธ๋ฆฌ ์ ์ค๊ณ๋์ด์ผ ํ๋ฉฐ, ์ค์ ๋ก ์ฌ์ฉ๋๊ธฐ ์ ์ ์์ ํ๊ฒ ์ํ๋์ด์ผ ํ๋ค.
๊ณ ๊ฐ์ฉ์ฑ ์๋ฃจ์ (HACMP)[1]์ ์ด์ฉํ๋ฉด, ๊ฐ ์์คํ ๊ฐ์ ๊ณต์ ๋์คํฌ๋ฅผ ์ค์ฌ์ผ๋ก ์ง๋จํํ์ฌ ํด๋ฌ์คํฐ๋ก ์ฎ์ด์ง๊ฒ ๋ง๋ค ์ ์๋ค. ๋์์ ๋ค์์ ์์คํ ์ ํด๋ฌ์คํฐ๋ก ์ฐ๊ฒฐํ ์ ์์ง๋ง ์ฃผ๋ก 2๊ฐ์ ์๋ฒ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๋ค. ๋ง์ฝ ํด๋ฌ์คํฐ๋ก ๋ฌถ์ธ 2๊ฐ์ ์๋ฒ ์ค 1๋์ ์๋ฒ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์๋ฒ๊ฐ ์ฆ์ ๊ทธ ์ ๋ฌด๋ฅผ ๋์ ์ํํ๋ฏ๋ก, ์์คํ ์ฅ์ ๋ฅผ ๋ถ๊ณผ ๋ช ์ด๋ง์ ๋ณต๊ตฌํ ์ ์๋ค. ๊ณ ๊ฐ์ฉ์ฑ ์ ์ฅ ์ฅ์น๋ก ๋ ์ด๋(RAID) ๋ฐฉ์๊ณผ ์(SAN) ๋ฐฉ์์ด ๋ง์ด ์ด์ฉ๋๊ณ ์๋ค.
๋คํธ์ํฌ ํ ํด๋ก์ง
ํ ํด๋ก์ง(์์ด: topology, ๋ฌธํ์ด: ๋ง๊ตฌ์ฑ๋ฐฉ์)๋ ์ปดํจํฐ ๋คํธ์ํฌ์ ์์๋ค(๋งํฌ, ๋ ธ๋ ๋ฑ)์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐํด ๋์ ๊ฒ, ๋๋ ๊ทธ ์ฐ๊ฒฐ ๋ฐฉ์์ ๋งํ๋ค. ๋ก์ปฌ ์์ญ ๋คํธ์ํฌ(LAN)์ ๋ฌผ๋ฆฌ์ ํ ํด๋ก์ง์ ๋ ผ๋ฆฌ์ ํ ํด๋ก์ง ๋ ๋ค ๋ณด์ฌ ์ค ์ ์๋ ๋คํธ์ํฌ์ ํ ์์ด๋ค. ๋ ์์ ์ด๋ ํ ๋ ธ๋๋ ๋คํธ์ํฌ ์์์ ํ๋ ์ด์์ ๋ค๋ฅธ ๋ ธ๋์ ํ๋ ์ด์์ ๋งํฌ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ ๊ทธ๋ํ ์์ ์ด๋ฌํ ๋งํฌ์ ๋ ธ๋๋ค์ ๋คํธ์ํฌ์ ๋ฌผ๋ฆฌ์ ํ ํด๋ก์ง๋ฅผ ์ ์ค๋ช ํด ์ฃผ๊ณ ์๋ค. ์ด์ ๋น์ทํ๊ฒ ๋คํธ์ํฌ ์์์ ๋ ธ๋๋ผ๋ฆฌ์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋คํธ์ํฌ์ ๋ ผ๋ฆฌ์ ํ ํด๋ก์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ๋ฌผ๋ฆฌ์ ํ ํด๋ก์ง์ ๋ ผ๋ฆฌ์ ํ ํด๋ก์ง๋ ํน์ ๋คํธ์ํฌ์์ ์์ฃผ ๋์ผํ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์๋ค.
๋ถํ๋ถ์ฐ(Load Balancing, LB)
๋ถํ๋ถ์ฐ ๋๋ ๋ก๋ ๋ฐธ๋ฐ์ฑ(load balancing)[1]์ ์ปดํจํฐ ๋คํธ์ํฌ ๊ธฐ์ ์ ์ผ์ข ์ผ๋ก ๋ ํน์ ์ ์ด์์ ์ค์์ฒ๋ฆฌ์ฅ์น ํน์ ์ ์ฅ์ฅ์น์ ๊ฐ์ ์ปดํจํฐ ์์๋ค์๊ฒ ์์ ์ ๋๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ก์จ ๊ฐ์ฉ์ฑ ๋ฐ ์๋ต์๊ฐ์ ์ต์ ํ ์ํฌ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ์ธํ๋ ์ 1๋(๋จ์ผ ๊ตฌ์ฑ์ฒด) ๋ณด๋ค IA-32์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์๋ฒ(๋ณตํฉ ๊ตฌ์ฑ์ฒด)๊ฐ ์์ ์ฑ ๋ฉด์์ ์ ๋ฆฌํ ์์น์ ์๋ค. ๋ถํ๋ถ์ฐ ์๋น์ค๋ ๊ทธ์ ์ ํฉํ ํ๋์จ์ด์ ์ํํธ์จ์ด์ ์ํด ์ ๊ณต๋๋ค. ์ด ๊ธฐ์ ์ ๋ณดํต ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ์ด์ฉํ ๋ณ๋ ฌ์ฒ๋ฆฌ(ํนํ, ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณ๋ ฌ์ฒ๋ฆฌ)์ ์ฌ์ฉ๋๋ค.
๋ถํ๋ถ์ฐ์ ์ํ ๋๋ถ๋ถ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์์ ์๋ฒ(๋ค๋ฅธ ๋ง๋ก, ์๋ฒ ํ)๋ฅผ ๊ฐ์ง๊ณ ํ ๊ฐ์ง ์ข ๋ฅ์ ์ธํฐ๋ท ์๋น์ค๋ฅผ ์ง์ํ๋ ๋ฐฉ์์ด๋ค. ๋ณดํต ๋ถํ ๋ถ์ฐ์ ํธ๋ํฝ์ด ๋ง์ ์น ์ฌ์ดํธ, IRC ๋คํธ์ํฌ, FTP ์ฌ์ดํธ, NNTP ์๋ฒ ๊ทธ๋ฆฌ๊ณ DNS์๋ฒ์ ์ ์ฉ์ด ๋๊ณ ์๋ค.
์ธํฐ๋ท ์๋น์ค๋ฅผ ์ํด์๋ ์ํํธ์จ์ด๋ฅผ ์ด์ฉํ ๋ถํ๋ถ์ฐ์ด ์ ์ฉ๋๋ฉฐ, ์ด ์ํํธ์จ์ด๋ ์ค๊ฐ์ ์์น์ ์ค์ ์๋น์คํ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ํฌํธ๋ฅผ ์ด์ฉํด ์ค๊ฐํ๊ณ ์๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ ์ด๋ฅผ ์์์ฐจ๋ฆฌ์ง ๋ชปํ๋ค. ์ด๋ฅผ ํฌ๋ช ์ฑ์ด๋ผํ๋ค.
๋ํ, ๋ณด์์ด๋ผ๋ ์ธก๋ฉด์์ ๋ด๋ถ ๋คํธ์ํฌ ๊ตฌ์กฐ๋ฅผ ์จ๊น์ผ๋ก์ ํฌ๋ํน์ ๋ง์ ์ ์๋ค.
์ผ๋ถ ๋ถํ๋ถ์ฐ ์ํํธ์จ์ด๋ ์ค์๋น์ค ์๋ฒ๋ค์ ๊ด๋ฆฌํ๋ ์ญํ ์ ์ํํ๊ธฐ๋ ํ๋ค. (์๋ฅผ ๋ค์ด, ์๋ฒ ๋ค์ด ํน์ ๋ฐฑ์ ์ ๊ด๋ จ๋ ์์ ๊ณผ ๊ฐ์)
๋ถํ๋ถ์ฐ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก๋ Round Robin DNS ๋ผ๊ณ ํ๋ ํน๋ณํ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด๊ฐ ํ์๊ฐ ์๋ ๋ฐฉ์์ด ์๋ค. ์ด ๋ฐฉ์์์๋ ์ฌ๋ฌ ๊ฐ์ IP์ฃผ์๋ฅผ ๋์ผํ ๋๋ฉ์ธ ๋ค์์ ์ฐ๊ด์ง์ด ๋๊ณ ํด๋ผ์ด์ธํธ๋ค์ด ์ด๋ค ์๋ฒ๋ฅผ ์ฌ์ฉํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๊ฒ ํ๋ ๋ฐฉ์์ด๋ค. ์ผ๋ฐ์ ์ธ ๋ถํ๋ถ์ฐ๊ณผ๋ ๋ค๋ฅด๊ฒ "ํฌ๋ช ์ฑ"์ด ์กด์ฌํ์ง ์๋๋ค. ์๋ํ๋ฉด ์ด๋ฏธ ๋ด๋ถ์ ์๋ฒ๋ค์ ์ฃผ์๊ฐ ์ด๋ฏธ ๋ ธ์ถ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๋ฐฉ์์ ์ฅ๋จ์ ์ด ํผ์ฌ๋์ด ์๋ค. DNS์๋ฒ์ ๋ํ ์์กด๋๊ฐ ๋๊ณ ๋ถํ๋ถ์ฐ์ด ์ํ๋ ๋๋ก ๋ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์คํ๋ฆฟ ๋ธ๋ ์ธ(Split-Brain)
์คํ๋ฆฟ ๋ธ๋ ์ธ(Split Brain)์ด๋ ํน์ํ ์ํฉ ๋๋ ๋คํธ์ํฌ ํ ํด๋ก์ง๋ฅผ ๊ฐ๋ Production ํ๊ฒฝ์์, ๋คํธ์ํฌ ํํฐ์ ๋ ์ฅ์ ๋ก ์ธํด ์์คํ ์ด Sub-Cluster๋ก ์ชผ๊ฐ์ง์ ๋ฐ๋ผ ๊ฐ Sub-Cluster๊ฐ ์ค์ค๋ก๋ฅผ Primary ๋๋ ์ ์์ ์ธ ์๋น์ค๋ผ๊ณ ์ธ์ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ๊ด์ ์์คํ ์ ์ํด ํํธ๋นํธ ๋ฑ์ผ๋ก Alive ์ ๋ฌด๊ฐ ์ฒดํฌ๋๋ ์๋น์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ํํธ๋นํธ ํต์ ์ด ๋จ์ ๋์ด ์๋น์ค ํด๋ฌ์คํฐ๊ฐ ์ฅ์ ์ํ๋ผ๊ณ ์ธ์ํ๊ณ ์๋น์ค๋ฅผ ๋์์ ๊ตฌ๋ํ๋ ๊ฒฝ์ฐ, ๋๋ ๋ ๋ฆฝ์ ์ธ ๋ ๊ฐ์ ์์คํ ์ด ๋น์ ์์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ก๊ฐ Primary๋ผ๊ณ ๋ฏฟ๊ฒ ๋๋ ํ์ ๋ฑ์ ๋ชจ๋ ํฌํจํ๋ค.
์ผ๋ฐ์ ์ธ MSA ๊ตฌ์กฐ์ฒ๋ผ LB๋ฅผ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋์ด ํน์ ์๋น์ค ๋ ธ๋๊ฐ ์ฅ์ ๊ฐ ์๊ธธ ์ HA๋ฅผ ์ ๊ณตํ๋๋ก ๊ตฌ์ฑํ ํ ํด๋ก์ง๋ผ๋ฉด ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ์ผ์ด๋์ง ์๋๋ค. ์คํ๋ฆฟ ๋ธ๋ ์ธ์ ๋ชจ๋ ์ํฉ์์ ๋ฐ์ํ๋ ๊ฒ์ ์๋๋ฉฐ, ํํธ๋นํธ ๋คํธ์ํฌ์ ๊ด๋ฆฌ ๋คํธ์ํฌ, ๋๋ ์๋น์ค ๋คํธ์ํฌ๊ฐ ๋ณ๋๋ก ๊ตฌ์ฑ๋์ด ๋์ํ ๋ ๋คํธ์ํฌ ๋จ์ ๋ก ์ธํ ํต์ ์ฅ์ ๋ก ์ธํ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค. ์ฆ, ์๋น์ค ๋คํธ์ํฌ ๋๋ ๊ฒฉ๋ฆฌ ๋คํธ์ํฌ๋ ์ ์์ ์ผ๋ก ์๋ํ๊ณ ์์ด LB๋ฅผ ํตํด ์ธ๋ถ์์ ์๋น์ค๋ก ์ ๊ทผํ๊ฑฐ๋ ๋ ธ๋ ๋ด๋ถ์ ์๋น์ค์์ ์ธ๋ถ๋ก์ ํต์ ์์ฒด๋ ๊ฐ๋ฅํ์ง๋ง, ํํธ๋นํธ์ ์ ๋ฌ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒฝ์ฐ์ด๋ค. ์คํ๋ฆฟ ๋ธ๋ ์ธ์ 2๊ฐ ์ด์์ ๋คํธ์ํฌ ํ ํด๋ก์ง๋ก ๊ตฌ์ฑ๋ ํ๊ฒฝ, ์๋ฅผ ๋ค์ด MariaDB๊ฐ ๋ถ์ฐ๋์ด ์คํ๋๋ ํ๊ฒฝ ๋๋ ๋คํธ์ํฌ ์ฅ์น๋ฅผ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ๋ vSphare ๊ฐ์ํ ํ๊ฒฝ ๋ฑ์์ ์ข ์ข ๋ฐ์ํ๊ณค ํ๋ค.

์คํ๋ฆฟ ๋ธ๋ ์ธ์ด ๋ฌธ์ ๊ฐ ๋๋ ์ด์ ๋ (1) ์์คํ ์ ์๋น์ค ์ฅ์ ๋ผ๊ณ ์ธ์ํด ์๋ก์ด ์๋น์ค๊ฐ ์ฌ์์๋์ง๋ง, ์ค์ค๋ก๊ฐ ์ ์์ ์ด๋ผ๊ณ ํ๋จํ๋ ๋ค๋ฅธ ํ ์ชฝ์ ๊ธฐ์กด ์๋น์ค๋ ์ฌ์ ํ ์คํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด์ค๊ธฐ๋ ํ์์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ด๋ฉฐ, (2) 2๊ฐ ์ด์์ ์ค๋ณต๋๋ ๋์ผํ ์๋น์ค๊ฐ ๋์์ ์คํ ๋ฆฌ์ง์ ์ ๊ทผํจ์ผ๋ก์จ ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐ ๋ณต์ ๋ฑ์ ์์ด ๋น์ ์์ ์ธ ํธ๋์ ์ ์ ๊ฐ๊ฒ ๋๋ค๋ ์ ๋ฑ์ ๋ค ์ ์๋ค. ๋ฌผ๋ก (1)๋ก ๋ง๋ฏธ์์ ์๊ฒจ๋๋ ๋ฌธ์ ๋ (2) ๋ฟ๋ง ์๋๋ผ ์ค๋ณต ์ฃผ์ ํ ๋น ๋ฌธ์ , ์๋น์ค ๋ฐ์ดํฐ ์ค๋ณต ์ ์ก, ์ฌ์ง์ด ์๋น์ค ์ ๊ณต ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ ์ํฉ ๋ฑ ์ฌ๋ฌ ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์๋น์ค์ ์ค์ Production ๋์ ์ ๋ฐ๋์ ๋ ์ฌ๊ฒจ๋ณผ ๋ฌธ์ ์ค ํ๋์ด๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํ๋ค. ์๋ก๋ถํฐ ๊ฐ์ข ๋ถ์ฐ ์์คํ ์ ์ ์ฉ๋์ด ์ฌ์ฉ๋๊ณ ์๋ ์ฟผ๋ผ(Quorum)์ ํ์๋ก ๊ตฌ์ฑํด ์ ์กฑ์ ํฌํ๋ฅผ ์งํํ๊ฑฐ๋, ํํธ๋นํธ ๋คํธ์ํฌ๋ฅผ ๊ฒฉ๋ฆฌ ๋คํธ์ํฌ ๋๋ ์๋น์ค ๋คํธ์ํฌ์ ๋ถ๋ฆฌ์ํค์ง ์๊ณ ํ๋๋ก ํตํฉํ๋ ๊ฒ์ด๋ค. ์๋น์ค ์ด์ ์ ์๋ ๋ง์ด ํ์๋๋ ๋ฌธ์ ์ค ํ๋๋ค ๋ณด๋, ๊ฐ ์์คํ ์ ๋ง๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋์์๋ค๋ฉด ๊ทธ ๋ํ ์ฐธ๊ณ ํ๋ ๊ฒ์ด ์ข๋ค. ๋ฌผ๋ก ๊ฐ์ฅ ์ค์ํ ๊ฒ์, ์ธํ๋ผ ๊ด๋ฆฌ์ ๋ฐ Operation ํ๊ฒฝ ๊ด๋ฆฌ์์ ๋ฌธ์ ํด๊ฒฐ ์ญ๋์ด ๋๊ฒ ์ง๋ง ใ ใ ..
์ฟผ๋ผ(Quorum)
์ฟผ๋ผ(quorum)์ ๋ธ๋ก์ฒด์ธ ์์คํ ์์ ํฉ์๋ฅผ ์ด๋ฃจ๊ธฐ ์ํ ์ต์ํ์ ํฌํ์๋ฅผ ๊ฐ์ง ์๊ทธ๋ฃน์ ๋งํ๋ค. ์ ์กฑ์(ๅฎ่ถณๆธ)๋ผ๊ณ ํ ์ ์๋ค. ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ์ฐธ์ฌํ๋ ๊ฐ ๋ ธ๋๋ค์ ์ผ์ ํ ์ ์กฑ์๋ก ๊ตฌ์ฑ๋ ์๊ทธ๋ฃน์ธ ์ฟผ๋ผ์ ๊ตฌ์ฑํ๊ณ , ์ ์ฒด ๋ ธ๋์ ํฉ์๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์์ ์ด ์ ๋ขฐํ๋ ๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ์๊ทธ๋ฃน์ธ ์ฟผ๋ผ์ ๊ฒฐ์ ์ ๋ฐ๋ฆ์ผ๋ก์จ ๋ณด๋ค ๋น ๋ฅธ ์์ฌ๊ฒฐ์ ๊ณผ ํฉ์๋ฅผ ์ด๋ฃฐ ์ ์๋ค
RAFT
Raft Consensus Algorithm
What is Raft? Raft is a consensus algorithm that is designed to be easy to understand. It's equivalent to Paxos in fault-tolerance and performance. The difference is that it's decomposed into relatively independent subproblems, and it cleanly addresses all
raft.github.io
page out
Page out์ ๊ธฐ์กด์ ์ฌ์ฉ์ค์ธ ํ์ด์ง ํ๋ ์์ ๋ด์ฉ์ ์ค์ ์คํ์ด์ค์ ์ ์ฅํ๊ณ ๊ทธ ํ์ด์ง ํ๋ ์์ ํ์ฌ ํ์๋ก ํ๋ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ฃผ๋ ๊ฒ์ ๋งํ๋ค. ๋ฐ๋๋ก page in์ ์ค์ ์คํ์ด์ค์ ๋จธ๋ฌผ๋ฌ ์๋ ๋ด์ฉ์ ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ถ๋ฌ๋ค์ฌ ํ์ด์ง ํ๋ ์์ ์ ๊ณตํ๋ ๊ฒ์ ๋งํ๋ค. ํ๋ก๊ทธ๋จ์ด ์ํ๋ ๋๋ง๋ค ์ฌ๋น ๋ฅด๊ฒ ๋งคํ ์์ผ์ฃผ๊ธฐ ์ํด์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ์ง ์๊ณ ์๋ free page๊ฐ ํ์ํ๋ฐ free page๊ฐ ๋ชจ์๋ผ๊ฒ ๋๋ฉด page out์ด ๋ฐ์ํ๋ค.
ํ์ด๋ก๋(payload)
ํ์ด๋ก๋๋ผ๋ ์ฉ์ด๋ ํฐ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ ์ค์ 'ํฅ๋ฏธ ์๋' ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด ์ฉ์ด๋ ์ด์ก์ ์์ ๋น๋กฏํ์๋๋ฐ, ์ง๊ธ(pay)ํด์ผ ํ๋ ์ ํ๋ฌผ(load)์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, ์ ์กฐ์ ํธ๋ญ์ด 20ํค์ ๊ธฐ๋ฆ์ ์ด๋ฐํ๋ค๋ฉด ํธ๋ญ์ ์ด ๋ฌด๊ฒ๋ ์ฐจ์ฒด, ์ด์ ์ ๋ฑ์ ๋ฌด๊ฒ ๋๋ฌธ์ ๊ทธ๊ฒ๋ณด๋ค ๋ ๋ ๊ฒ์ด๋ค. ์ด ๋ชจ๋ ๋ฌด๊ฒ๋ฅผ ์ด์กํ๋๋ฐ ๋น์ฉ์ด ๋ค์ง๋ง, ๊ณ ๊ฐ์ ์ค์ง ๊ธฐ๋ฆ์ ๋ฌด๊ฒ๋ง์ ์ง๊ธ(pay)ํ๊ฒ ๋๋ค. ๊ทธ๋์ 'pay-load'๋ ๋ง์ด ๋์จ ๊ฒ์ด๋ค.
ํ๋ก๊ทธ๋๋ฐ์์ ์ฃผ๋ก ๋ฉ์์ง ํ๋กํ ์ฝ(message protocols) ์ค์ ํ๋กํ ์ฝ ์ค๋ฒํค๋(protocol overhead)์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ณํ ๋ ์ฌ์ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์น ์๋น์ค ์๋ต(web service response)์ด ์๋์ JSON์ด๋ผ ํ๋ฉด:
{ "status":"OK", "data": { "message":"Hello, world!" } }
์ฌ๊ธฐ์ "Hello, world!"๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ๊ด์ฌ์ ๊ฐ์ง๋ ํ์ด๋ก๋์ด๋ค. ๋๋จธ์ง ๋ถ๋ถ์, ์ค์ํ๊ธด ํ์ง๋ง, ํ๋กํ ์ฝ ์ค๋ฒํค๋์ด๋ค.
Thead Safe
์ค๋ ๋ ์์ (thread ๅฎๅ จ, ์์ด: thread safety)์ ๋ฉํฐ ์ค๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ค ํจ์๋ ๋ณ์, ํน์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ ์ค๋ ๋๋ก๋ถํฐ ๋์์ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ ธ๋ ํ๋ก๊ทธ๋จ์ ์คํ์ ๋ฌธ์ ๊ฐ ์์์ ๋ปํ๋ค.
Footprint
์ ๋ณด๊ธฐ์ ์์, footprint๋ ํน์ ํ๋์จ์ด๋ ์ํํธ์จ์ด ๋จ์๊ฐ ์ฐจ์งํ๊ณ ์๋ ๊ณต๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋งํ๋ค. ์ต๊ทผ์ ์ด ์ฉ์ด๋, ์ปดํจํฐ์ ๋ด๋ถ ๊ณต๊ฐ์ ์ ๊ฒ ์ฐจ์งํ๋ ๋ง์ดํฌ๋ก์ปดํฌ๋ํธ๋ค์ด๋, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ฐจ์งํ๋ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฆฌํค๋๋ฐ ์ฌ์ฉ๋๋ค.
- Code size refers to the number of lines of a program. Itโs also known as the code footprint of a program.
Code Footprint๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ๋ช ์ค์ด๋ ๋๋์ง๋ฅผ ์๋ฏธ.
Semantics
ํ๋ก๊ทธ๋๋ฐ์์,์๋งจํฑ์ ์ฝ๋ ์กฐ๊ฐ์ ์๋ฏธ๋ฅผ ๋ํ๋ ๋๋ค โ ์๋ฅผ ๋ค์ด ("์ด๊ฒ ์ด๋ป๊ฒ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ง๊น?" ๋ณด๋ค)"์ด Javascript ๋ผ์ธ์ ์คํํ๋ ๊ฒ์ ์ด๋ค ํจ๊ณผ๊ฐ ์๋๊ฐ?", ํน์ "์ด HTML ์๋ฆฌ๋จผํธ๊ฐ ๊ฐ์ง ๋ชฉ์ ์ด๋ ์ญํ ์ ๋ฌด์์ธ๊ฐ?"
Persistence vs Durability
Persistence vs. Durability in Messaging. Do you know the difference? | Red Hat Developer
Messaging is a critical aspect of integrating systems, and while there are many different messaging platforms and infrastructures, a common request is for "zero loss of messages." From there, the terms "Persistence" and "Durability" often get thrown arou
developers.redhat.com
SSL: ๋ณด์ ์์ผ ๊ณ์ธต(Secure Sockets Layer, SSL)
SSL์ ์น์ฌ์ดํธ์ ๋ธ๋ผ์ฐ์ (ํน์, ๋ ์๋ฒ) ์ฌ์ด์ ์ ์ก๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ธํฐ๋ท ์ฐ๊ฒฐ์ ๋ณด์์ ์ ์งํ๋ ํ์ค ๊ธฐ์ ์ ๋๋ค. ์ด๋ ํด์ปค๊ฐ ๊ฐ์ธ ์ ๋ณด ๋ฐ ๊ธ์ต ์ ๋ณด๋ฅผ ํฌํจํ ์ ์ก๋๋ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ด๋ํ๊ฑฐ๋ ํ์น๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
TLS: ์ ์ก ๊ณ์ธต ๋ณด์(Transport Layer Security, TLS)
TLS๋ ๊ฐ์ฅ ์ต์ ๊ธฐ์ ๋ก ๋ ๊ฐ๋ ฅํ ๋ฒ์ ์ SSL์
๋๋ค. ๊ทธ๋ฌ๋ SSL์ด ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฉ์ด์ด๊ธฐ์, ์ฌ์ ํ ๋ณด์ ์ธ์ฆ์๋ SSL์ด๋ผ ๋ถ๋ฆฝ๋๋ค.
QoS
Quality of Service : ๋คํธ์ํฌ ์์ ํ๋ฅด๋ ๋ฐ์ดํฐ์ ์ค์๋๋ฅผ ๋ถ๋ฅํ์ฌ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ค. ์ฐ์ ์์๊ฐ ๋์ ์๋ก ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ์ ์ก์ด ๋ณด์ฅ๋๋ค.
Netsplit
์์ด์์ ๋ฒ์ญ๋จ-์ปดํจํฐ ๋คํธ์ํน, ํนํ ์ธํฐ๋ท ๋ฆด๋ ์ด ์ฑํ ์์ netsplit์ ๋ ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ์ ๋๋ ๊ฒ์ ๋๋ค. ๋ ์๋ฒ๊ฐ์ ๋ถํ ํ๋ฉด ์ ์ฒด ๋คํธ์ํฌ๊ฐ ๋ ์กฐ๊ฐ์ผ๋ก ๋ถํ ๋ฉ๋๋ค
'๐ป > ์ธํ๋ผ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] ๋ช ๋ น์ด ๋ชจ์ (0) | 2021.07.30 |
---|---|
[Linux] There are stopped jobs (0) | 2021.07.30 |
[Linux] ๋๋ ํ ๋ฆฌ ํ์ผ ์์คํ (0) | 2021.07.28 |
[RabbitMQ] RabbitMQ? (0) | 2021.07.01 |
[๋ฆฌ๋ ์ค] ๋ ธํธ๋ถ์ Ubuntu ํํฐ์ ๋ถํ ์ค์น (1) | 2020.12.30 |