๐ ๋ฐ์ดํฐ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ
โ๋ฐ์ดํฐ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณโ ์จ์คํ๋ผ์ธ ์คํฐ๋ ๋ด์ฉ๊ณผ ๊ธฐํ ์ฐธ๊ณ ์๋ฃ๋ฅผ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
Contents
Intro
์์ฒญ๋ ์์ ํธ๋ํฝ, ๊ฐ๋ฐ์ฃผ๊ธฐ ๋จ์ถ, ์์ ์คํ์์ค ์ํํธ์จ์ด, ๋ณ๋ ฌ์ฒ๋ฆฌ์ ์ฆ๊ฐ, ์๋น์คํ ์ธํ๋ผ(IaaS), ๊ณ ๊ฐ์ฉ์ฑ ์๊ตฌ ๋ฑ์ผ๋ก ๊ธฐ์ ์ ๋ฐ์ ํ์ต๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ๋ฐ์ ๊ณผ ๋๋ถ์ด ๋จ์ํ ๊ณ์ฐ ์ค์ฌ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ๋ฐ์ดํฐ์ ์, ๋ณต์ก์ฑ, ๋ฐ์ดํฐ์ ๋ณํ ์๋ ๋ฑ์ ๊ณ ๋ คํ๋ ๋ฐ์ดํฐ ์ค์ฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
- ํ๋ก(Hadoop): ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์คํ ์์ค ํ๋ ์์ํฌ๋ก, ๋ถ์ฐ ์ ์ฅ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
- ์คํํฌ(Spark): ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๋ถ์์ ์ํ ํด๋ฌ์คํฐ ์ปดํจํ ํ๋ ์์ํฌ๋ก, ๋น ๋ฅธ ์๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- NoSQL: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ์ ๋ฐ๋ฅด์ง ์๋ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ก, ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ด ๊ฐ์กฐ๋ฉ๋๋ค.
- ๋น ๋ฐ์ดํฐ: ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๊ตฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ก, ๋ค์ํ ์ ํ๊ณผ ์์ค์์ ์์ฑ๋ ์ ์์ต๋๋ค.
- ์ค๋ฉ(Sharding): ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ธฐ์ ๋ก, ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ฐ๋ด์ด ์ ์ฅํฉ๋๋ค.
- ์ต์ข ์ ์ผ๊ด์ฑ(Eventual Consistency): ๋ถ์ฐ ์์คํ ์์ ์ผ์ ์๊ฐ์ด ์ง๋ ํ์๋ ๋ชจ๋ ๋ณต์ ๋ณธ์ด ๋์ผํ ์ํ๊ฐ ๋๋ ์ผ๊ด์ฑ ๋ชจ๋ธ์ ๋๋ค.
- ACID: ํธ๋์ญ์ ์ ์์ฑ์ ๋ํ๋ด๋ ๋ค ๊ฐ์ง ์์ฑ์ธ ์์์ฑ(Atomicity), ์ผ๊ด์ฑ(Consistency), ๊ณ ๋ฆฝ์ฑ(Isolation), ์ง์์ฑ(Durability)์ ์๋ฏธํฉ๋๋ค.
- CAP ์ ๋ฆฌ(CAP Theorem): ๋ถ์ฐ ์์คํ ์์ ์ผ๊ด์ฑ(Consistency), ๊ฐ์ฉ์ฑ(Availability), ๋ถํ ๋ด์ฑ(Partition Tolerance) ์ค์์ ๋ ๊ฐ์ง๋ง ๋ณด์ฅํ ์ ์๋ค๋ ์ด๋ก ์ ๋๋ค.
- ๋งต๋ฆฌ๋์ค(MapReduce): ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ณ๋ ฌ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๋ก, ๋ถ์ฐ ์ปดํจํ ํ๊ฒฝ์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฒ ์คํฐ๋์์ ๊ฐ์ธ์ ์ผ๋ก ๋ฐ์ดํฐ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ค์ ๋ก ๋ํ ์น์ฌ์ดํธ์ ์๋น์ค๋ค์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง์ ๋ํ ๋ถ๋ถ์ ์ค์ ์ ์ผ๋ก ์ดํดํ๊ณ ๋์ด๊ฐ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
01. ์ ๋ขฐํ ์ ์๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์ ํ๋ฆฌ์ผ์ด์
๋ฐ์ดํฐ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ๋ฒ ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ตํด์ ๋ค์ ์ฝ๊ธฐ ์์ด ์ํ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ์บ์, ์ฌ์ฉ์๊ฐ ํค์๋๋ก ๊ฒ์ํ๊ฑฐ๋ ํํฐ๋ง์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ์ ์์ธ, ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์คํธ๋ฆผ ์ฒ๋ฆฌ, ์ฃผ๊ธฐ์ ์ผ๋ก ๋ค๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ์ผ๊ด ์ฒ๋ฆฌ(batch processing)๋ฅผ ํ์๋ก ํฉ๋๋ค.
์์ฆ์ ๋ฉ์์ง ํ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์คํ ์ด์ธ ๋ ๋์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฒ๋ผ ์ง์์ฑ์ ๋ณด์ฅํ๋ ์ํ์น ์นดํ์นด์ ๊ฐ์ด ๊ทธ ๊ฒฝ๊ณ๊ฐ ํ๋ ค์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์์คํ ์ด๋ผ๋ ํฌ๊ด์ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ task๊ฐ ๋ง์์ง์ ๋ฐ๋ผ ์ฌ๋ฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ ์บ์ ๊ณ์ธต๊ณผ full-text ๊ฒ์ ์๋ฒ์ ์บ์๋ ์์ธ์ ์ ์งํ๋ ๊ฒ์ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ก ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. ์ฆ, ๊ฐ๋ฐ์๋ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ ์์คํ ์ค๊ณ์์ด๊ธฐ๋ ํฉ๋๋ค.
- ์๋ผ์คํฑ์์น(Elasticsearch): ๋ถ์ฐํ ๊ฒ์ ๋ฐ ๋ถ์ ์์ง์ผ๋ก, ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ฒ ๊ฒ์ํ๊ณ ๋ถ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์คํ ์์ค์ด๋ฉฐ, ์ค์๊ฐ ๋ฐ์ดํฐ ๊ฒ์๊ณผ ๋ถ์์ ์ง์ํฉ๋๋ค.
- ์๋ผ(Solr): ์๋ผ์คํฑ์์น์ ์ ์ฌํ ์คํ ์์ค ๊ฒ์ ํ๋ซํผ์ผ๋ก, Apache Lucene ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์์ธํ๊ณ ๊ฒ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๊ณ ์ฑ๋ฅ์ ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ ๋ขฐ์ฑ(Reliability)
ํ๋์จ์ด๋ ์ํํธ์จ์ด์ ๊ฒฐํจ, ์ฌ์ง์ด ์ธ์ ์ค๋ฅ์ ๊ฐ์ ์ญ๊ฒฝ์๋ ์์คํ ์ ์ง์์ ์ผ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํด์ผ ํฉ๋๋ค. ์ฆ, ๊ฒฐํจ์ด ์์ด๋ ์ ์์ ์ผ๋ก ๋์ํด์ผ ํ๋ค๋ ๊ฒ์ธ๋ฐ ์ฌ๊ธฐ์ ๊ฒฐํจ์ ์ฅ์ ์ ๋์ผํ์ง ์์ต๋๋ค. ์ฅ์ ๋ ์ฌ์ฉ์์๊ฒ ํ์ํ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง ๋ชปํ๊ณ ์์คํ ์ ์ฒด๊ฐ ๋ฉ์ถ๊ฒ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋งํฉ๋๋ค. ๊ฒฐํจ์ผ๋ก ์ธํ ์ฅ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๋ด๊ฒฐํจ์ฑ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ์ข์๋ฐ ๋ทํ๋ฆญ์ค ์นด์ค์ค ๋ชฝํค๊ฐ ์ด๋ฐ ์ ๊ทผ ๋ฐฉ์์ ํ ์์ ๋๋ค.
- ๋ทํ๋ฆญ์ค ์นด์ค์ค ๋ชฝํค(Chaos Monkey)
- ์นด์ค์ค ๋ฉํค๋ ์ด๋ค ์ฅ์ ๊ฐ ๋ฐ์ํ ์ง ๋ชจ๋ฅด๋ ์ํฉ์ ์ํด ์๋น์ค๋ฅผ ๊ณต๊ธํ๋ ์ธ์คํด์ค๋ฅผ ๋ฌด์์๋ก ์ ง๋ค์ด์์ผ๋ฒ๋ฆฌ๋ ๊ฒ์ผ๋ก ์ง๊ธ์ ์ด์ ์ด์ ํ ์คํธ๋ฅผ ์ํ ๊ฐ๋ฐ ์์น์ผ๋ก ์๋ฆฌ์ก์์ต๋๋ค. ๋ทํ๋ฆญ์ค๋ ์์ฌ์ ๋ด๊ฒฐํจ์ฑ ์ ๋ต์ โ์คํจ๋ฅผ ํผํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ง์์ ์ผ๋ก ์คํจํ๋ ๊ฒโ์ผ๋ก ์ผ๊ณ ์นด์ค์ค ์์ง๋์ด๋ง์ ์ํํ๋ค๊ณ ํฉ๋๋ค.
- ์คํ๋ง๋ถํธ ์นด์ค์ค ๋ฉํค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ํ๋์จ์ด ์ค๋ฅ
ํ๋๋์คํฌ์ ํ๊ท ์ฅ์ ์๊ฐ์ ์ฝ 10~50๋
์ผ๋ก ๋ณด๊ณ ๋์ผ๋ฉฐ, 10,000๊ฐ์ ๋์คํฌ๋ก ๊ตฌ์ฑ๋ ์ ์ฅ ํด๋ฌ์คํฐ๋ ํ๊ท ์ ์ผ๋ก ํ๋ฃจ์ ํ ๊ฐ์ ๋์คํฌ๊ฐ ์ฃฝ๋๋ค๊ณ ์์ํด์ผ ํฉ๋๋ค.
์์คํ
์ฅ์ ์จ์ ์ค์ด๊ธฐ ์ํด์๋ ์ค๋ณต์ ์ถ๊ฐํด ๊ตฌ์ฑํ ์ ์์์ผ๋ฉฐ ์ผ๋ถ ๊ณ ๊ฐ์ฉ์ฑ์ด ํ์ํ ์์์ ์ ํ๋ฆฌ์ผ์ด์
์ ํํด ๋ค์ค ์ฅ๋น ์ค๋ณต์ผ๋ก ๋ง๋ค์์ต๋๋ค.
- ์ค๋ณต์ ์ถ๊ฐํ๋ค๋ ๊ฒ์ ๋์คํฌ RAID ๊ตฌ์ฑ, ์๋ฒ์ ์ด์ค ์ ์ ๋๋ฐ์ด์ค, ํซ ์ค์์ด ๊ฐ๋ฅํ CPU, ๋ฐ์ดํฐ์ผํฐ์ ๊ฑด์ ์ง์ ์๋น ์ ์์ฉ ๋์ ค ๋ฐ์ ๊ธฐ์ ๊ฐ์ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ต๊ทผ์๋ ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ ๊ฐ์ด ๋ค์ค ์ฅ๋น๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ฌ์์ก์ง๋ง ๊ฐ ์ฅ๋น ์ธ์คํด์ค์ ์ ๋ขฐ์ฑ๋ณด๋ค ์ ์ฐ์ฑ๊ณผ ํ๋ ฅ์ฑ์ ์ฐ์ ์ ์ผ๋ก ํ ๊ฒฝ์ฐ์ ์ ํฉํ ๋ฐฉ์์ ๋๋ค.
- ์ด๋ ์ ๋ ๊ท๋ชจ๊ฐ ์๋ ์์คํ ์์๋ ๋จ์ผ ์๋ฒ ์์คํ ๋ณด๋ค๋ ์ํ์ ์ ๊ทธ๋ ์ด๋๊ฐ ๊ฐ๋ฅํ๋๋ก ์ฅ๋น ์ฅ์ ๋ฅผ ๊ฒฌ๋ ์ ์๋ ์ค๊ณ๊ฐ ํ์ํฉ๋๋ค.
์ํํธ์จ์ด ์ค๋ฅ
๋ค์์ ํ๋์จ์ด ๊ตฌ์ฑ์์์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ๋ ์๊ณ , ์์คํ
๋ด ์ฒด๊ณ์ ์ค๋ฅ๋ก ์ผ๋ถ ํ๋ก์ธ์ค์ ๊ณต์ ์์์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฏ๋ก ๋ค๋ฅธ ๊ตฌ์ฑ์์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ๋ ์์๋ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ํ
์คํธ, ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ, ๋ชจ๋ํฐ๋ง ๋ฑ์ผ๋ก ์ง์์ ์ผ๋ก ํ์ธํ ํ์๊ฐ ์์ต๋๋ค.
- ๋ฆฌ๋ ์ค ์ปค๋์ ๋ฒ๊ทธ๋ก ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ผ์ ํ ๋ฉ์ถฐ๋ฒ๋ฆฐ ์์ธ์ด ๋ 2012๋ 6์ 30์ผ ์ค์ด
์ธ์ ์ค๋ฅ
์ด์์์ ์ค์ ์ค๋ฅ ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ๋ขฐ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. (๋ฒ๊ทธ๋ ์์ฐ์ฑ ์ ํ์ ์์ธ์ด ๋๊ณ , ์ฌ์ดํธ ์ค๋จ์ ๋งค์ถ ์์ค๊ณผ ๋ช
์ฑ์ ํ๊ฒฉ์ ์ฃผ๊ธฐ ๋๋ฌธ)
- ์ธํฐํ์ด์ค, API์ ๊ฐ์ ์ถ์ํ
- ์ค์๋ก ์ธํ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ถ๋ถ์ ๋ถ๋ฆฌํด ์ค์ ์ฌ์ฉ์์๊ฒ ๋น ํ๋ก๋์ ์๋๋ฐ์ค ์ ๊ณต
- ๋จ์ํ
์คํธ์ ํตํฉํ
์คํธ
- ์ ์์ ์ธ ๋์์์ ๋ฐ์ํ์ง ์๋ ์ฝ๋ ์ผ์ด์ค๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ฉ์ด
- ๋ฐ์ดํฐ ์ฌ๊ณ์ฐ ๋๊ตฌ๋ฅผ ์ ๊ณต
- ์ฑ๋ฅ์งํ์ ๋ช ํํ ๋ชจ๋ํฐ๋ง ๋์ฑ ๋ง๋ จ
ํ์ฅ์ฑ(Scalability)
์์คํ ์ ๋ฐ์ดํฐ ์, ํธ๋ํฝ ์, ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ฉด์ ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ์ ์ ํ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค. ๊ท๋ชจ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ๋ถํ๊ฐ ์ฆ๊ฐ๋๊ธฐ ๋๋ฌธ์ธ๋ฐ, ๋จ์ํ ํ์ฅ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ณด๋ค๋ ํน์ ๋ฐฉ์์ผ๋ก ์์คํ ์ด ์ปค์ก์ ๋ ๋์ฒ๋ฐฉ์, ์ถ๊ฐ ๋ถํ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๊ณ์ฐ ์์์ ํฌ์ ๋ฑ๊ณผ ๊ฐ์ ์ง๋ฌธ์ ํ ํ์๊ฐ ์์ต๋๋ค. ๋ถํ๋ ๋ถํ ๋งค๊ฐ๋ณ์๋ก ๋ํ๋ผ ์ ์๋๋ฐ ์๋ฅผ ๋ค๋ฉด, ์น ์๋ฒ์ ์ด๋น ์์ฒญ ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ๊ธฐ ๋ ์ฐ๊ธฐ ๋น์จ, ๋ํ๋ฐฉ์ ๋์ ํ์ฑ ์ฌ์ฉ์, ์บ์ ์ ์ค๋ฅ ๋ฑ์ด ์์ต๋๋ค.
ํธ์ํฐ ์ฌ๋ก
ํธ์ํฐ์ ํ ํ์๋ผ์ธ์ ์๊ฐํด๋ด ์๋ค. ํ ์ ์ ๊ฐ ํธ์์ ์์ฑํ์ ๋, ์ด ์ ์ ์ ํ๋ก์๋ค์ ํ ํ์๋ผ์ธ์์ ์ ์ ๊ฐ ์์ฑํ ์๋ก์ด ํธ์์ ๋ณผ ์ ์์ด์ผ ํฉ๋๋ค.
- ๊ฐ ํ๋ก์๋ค์ด ํ ํ์๋ผ์ธ์ ์ฌ๋ ์์ ์ ์๊ธฐ๊ฐ ํ๋ก์ฐ ํ๋ ์ฌ๋๋ค์ ํธ์์ ์ฐพ๊ณ ์๊ฐ์์ผ๋ก ๋์ดํด์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ํํ ์ ์์ ๊ฒ ์ ๋๋ค.
- ์บ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ๋น ๋ฅด๊ฒ ํ ํ์๋ผ์ธ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ค์ํ๊ณ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณตํด์ ์ง์ํด ์ฌ ํ์๊ฐ ์๋ค๋ฉด, ํ ํ์๋ผ์ธ์ ๋ด์ฉ์ ์บ์์ ๋๊ณ ๋ฐ๋ณต์ ์ธ ์์ฒญ์ ๊ธฐ์ตํด ๋์๋ค๊ฐ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ค์ ๋ก ํธ์ํฐ์์ ํธ์ ๊ฒ์ ์์ฒญ๋์ด ํ ํ์๋ผ์ธ ์ฝ๊ธฐ ์์ฒญ๋์ ๋นํด ํจ์ฌ ์ ๊ธฐ ๋๋ฌธ์, ํธ์์ ์์ฑํ๋ฉด ๊ทธ ์ ์ ๋ฅผ ํ๋ก์ฐํ๋ ์ฌ๋๋ค์ ๊ฐ๊ฐ์ ํ ํ์๋ผ์ธ ์บ์์ ์ต์ ํธ์์ ์ฝ์ ํ๋ ๋ฐฉ์์ผ๋ก ์ฐ๊ธฐ ์์ ์ ๋ ๋ง์ ์ผ์ ํ๋๋ก ํ์ต๋๋ค.
ํ์ง๋ง ์ธํ๋ฃจ์ธ์ค์ ๊ฐ์ด ํ๋ก์ฐ๊ฐ ๋ง์ ์ฌ๋์ด ํธ์์ ์ด๋ค๋ฉด ์ด๋จ๊น์?
ํธ์ ์์ฑ์์ ์ ์ฐ๊ธฐ ์์ฒญ์ด ๋ง์์ง๊ณ ์ ์์ ํธ์์ ์ ์กํด์ผํ๋ค๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํธ์ํฐ๋ ์ต์ข
์ ์ผ๋ก ๋๋ถ๋ถ 2์ ๋ฐฉ๋ฒ๋๋ก ํธ์์ ์ฝ๊ธฐ ์์
์ ์บ์ํํ๋,
ํน์ ์ฌ์ฉ์์ ํํ์ฌ ํฌ ์์์์ ์ ์ธํ๊ณ ์ ๋ช
์ธ์ ํธ์์ ํ๋ก์ฐ ํ๋ ๊ฒฝ์ฐ๋ ๋ค์ 1๋ฒ์ ๋ฐฉ๋ฒ์ฒ๋ผ ์ฝ๋ ์์ ์ ํ ํ์๋ผ์ธ์ ํฉ์ณ์ ์ ๊ณตํ๋ ๋ฐฉ์์ ํํ์ต๋๋ค.
์ง์ฐ์๊ฐ๊ณผ ์๋ต์๊ฐ
์๋ต์๊ฐ์ ํด๋ผ์ด์ธํธ ๊ณผ์ ์์ ๋ณธ ์๊ฐ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ฐ ์ค์ ์๊ฐ ์ธ์๋ ๋คํธ์ํฌ ์ง์ฐ๊ณผ ํ ์ง์ฐ๋ ํฌํจ๋ ๊ฐ๋
์
๋๋ค. ๋ฐ๋ฉด, ์ง์ฐ์๊ฐ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ผ๋ก ์๋น์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ํด์ง ์ํ์ธ ์๊ฐ์ ๋งํฉ๋๋ค.
์๋ต์๊ฐ์ ์ธก์ ๊ฐ๋ฅํ ๊ฐ์ ๋ถํฌ๋ก ํ๊ท ๊ฐ์ผ๋ก ์๊ฐํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก๋ ๋ฐฑ๋ถ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ผ๋ง๋ ์ค๋ซ๋์ ๊ธฐ๋ค๋ ค์ผํ๋์ง ์๋ ค๋ฉด ์ค์๊ฐ์, ํน์ด ๊ฐ์ด ์ผ๋ง๋ ์ข์ง ์์์ง ์์๋ณด๋ ค๋ฉด ์์ ๋ฐฑ๋ถ์๋ฅผ ์ดํด๋ณด๋ ๊ฒ๋ ์ข์ต๋๋ค.
์์ ๋ฐฑ๋ถ์๋ ๊ผฌ๋ฆฌ ์ง์ฐ ์๊ฐ(tail latency)์ด๋ผ๊ณ ๋ ํ๋ฉฐ, 95๋ถ์ ์๋ต์๊ฐ์ด 1.5์ด๋ผ๊ณ ํ๋ฉด 1.5์ด ๋ฏธ๋ง์ธ ์์ฒญ์ด 100๊ฐ ์ค์ 95๊ฐ์ธ ๊ฒ์ ๋งํฉ๋๋ค.
- ์๋ต์๊ฐ์ ๋์ฒด๋ก ์์ฒญ๋ง๋ค ๋ค์ํ ๊ฐ์ ์ป๊ฒ ๋๋๋ฐ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค์ ์ปจํ ์คํธ ์ค์์น, ๋คํธ์ํฌ ํจํท ์์ค๊ณผ TCP ์ฌ์ ์ก, ๊ฐ๋น์ง ์ปฌ๋ ์ ํด์ง, ๋์คํฌ์์ ์ฝ๊ธฐ๋ฅผ ๊ฐ์ ํ๋ ํ์ด์ง ํดํธ, ์๋ฒ ๋ ์ ๊ธฐ๊ณ์ ์ธ ์ง๋ ๋ฑ์ด ์์ธ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์๋น์ค ์์ค ๋ชฉํ(SLO), ์๋น์ค ์์ค ํ์ฝ์(SLA)
- ์ ๋ ์ฐจ๋จ(head-of-line blocking): ์๋ฒ์์ ํ์ ์์ฒญ์ด ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋๋ผ๋ ์ด์ ์์ฒญ์ด ์๋ฃ๋๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ ๋๋ฌธ์ ์ ์ฒด์ ์ธ ์๋ต์๊ฐ์ด ๋๋ฆฌ๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
- ๊ผฌ๋ฆฌ ์ง์ฐ ์ฆํญ: ์ฌ๋ฌ ๋ฒ์ ๋ฐฑ์๋ ํธ์ถ๋ก ๋๋ฆฐ ํธ์ถ์ด ๋๊ณ ์๋ต์๊ฐ์ด ๋๋ ค์ง๊ฒ ๋๋ ํจ๊ณผ
๋ถํ ๋์ ์ ๊ทผ ๋ฐฉ์
์ํคํ ์ฒ๋ฅผ ๊ฒฐ์ ํ๋ ์์๋ ์ฝ๊ธฐ์ ์, ์ฐ๊ธฐ์ ์, ์ ์ฅํ ๋ฐ์ดํฐ์ ์, ๋ฐ์ดํฐ์ ๋ณต์ก๋, ์๋ต ์๊ฐ ์๊ตฌ์ฌํญ, ์ ๊ทผ ํจํด ๋ฑ์ด ์์ต๋๋ค.
- ์ฉ๋ ํ์ฅ(scaling up)ย ยป ์์ง ํ์ฅ(vertical scaling)
- ๊ท๋ชจ ํ์ฅ(scaling out)ย ยป ์ํ ํ์ฅ(horizontal scaling)
- ํ๋ ฅ์ ์ธ ์์คํ ์ ๋ถํ๋ฅผ ์์ธกํ ์ ์์ ๋งํผ ๋์ ๊ฒฝ์ฐ์ ์ ์ฉํ์ง๋ง ์๋์ ์ผ๋ก ํ์ฅํ๋ ์์คํ ์ด ๋ ๊ฐ๋จํ๊ณ ์ด์์ ์์์น ๋ชปํ ์ผ์ด ๋ ์ ์ต๋๋ค.
- ์คํํธ์ ์ด๊ธฐ ๋จ๊ณ๋ ๊ฒ์ฆ๋์ง ์์ ์ ํ์ ๊ฒฝ์ฐ์ ๋ฏธ๋๋ฅผ ๊ฐ์ดํ ๋ถํ์ ๋๋นํด ํ์ฅํ๊ธฐ๋ณด๋ค๋ ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํด์ ์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ ์์ ์ด ์ข ๋ ์ค์ํฉ๋๋ค.
์ ์ง๋ณด์์ฑ(Maintainability)
๋ชจ๋ ์ฌ์ฉ์๊ฐ ์์คํ ์์์ ์์ฐ์ ์ผ๋ก ์์ ํ ์ ์๊ฒ ํด์ผ ํฉ๋๋ค.
- ์ด์์ฑ: ์ด์ํ์ด ์์คํ ์ ์ํํ๊ฒ ์ด์ํ ์ ์๊ฒ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ
- ๋จ์์ฑ: ๋ณต์ก๋๋ฅผ ์ต๋ํ ์ ๊ฑฐํด ์๋ก์ด ์์ง๋์ด๊ฐ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋๋ ๊ฒ
- ์ฐ๋ฐ์ ๋ณต์ก๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ถ์ํ๋ฅผ ์ด์ฉํด์ ์ธ๋ถ ๊ตฌํ ์ฌํญ์ ์จ๊ธธ ์ ์์ต๋๋ค.
- ๋ฐ์ ์ฑ: ์์ง๋์ด๊ฐ ์ดํ์ ์ฝ๊ฒ ๋ฉด๊ฒฝํ ์ ์๊ฒ ํ๋ ๊ฒ
02. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ง์ ์ธ์ด
๊ด๊ณํ ๋ชจ๋ธ๊ณผ ๋ฌธ์ ๋ชจ๋ธ
๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ฐ์ดํฐ์ ๊ด๊ณ, ํ๋ฆ์ ํ์ํ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ํ ์ถ์ํ๋ ๋ชจํ์ ๋๋ค. ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํตํด ์ด ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์์ฑ๋์๋์ง ๋ฌธ์ ์ ๋ํ ์ ๊ทผ๋ฐฉ๋ฒ์ ๋ํด ์ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฏ๋ก์จ ๊ณ์ธต ๊ฐ์ ๋ณต์ก์ฑ์ ์จ๊ธธ ์ ์์ต๋๋ค. ์ฆ, ์ถ์ํ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฌ์ฉํ๋ค๊ฑฐ๋ ๋จ์ํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ๋์จ์ด ๊ฐ๋ฐ์๋ค์ด ํจ์จ์ ์ผ๋ก ์ผํ ์ ์๊ฒ ํฉ๋๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ NoSQL ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ด๊ณ(relation)์ ๋ฐํ์ผ๋ก ํํ๊ณผ ๋ก์ฐ๋ฅผ ๊ฐ์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ๊ฐ์ฒด, XML, ๋คํธ์ํฌ ๋ชจ๋ธ๋ค์๋ ๋ถ๊ตฌํ๊ณ ๊ด๊ณํ ๋ชจ๋ธ์ด ์ฌ์ ํ ๋น์ฆ๋์ค ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฐ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. NoSQL์ Not Only SQL๋ก ์ฌํด์๋์ด ์ฐ๊ธฐ ์ฒ๋ฆฌ๋์ด ๋์ ๊ฒฝ์ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณด์ํ ์ ์๋ ์ด์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ํ์ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ NoSQL์ ํจ๊ป ์ฌ์ฉํด์ ๋ค์ค ์ ์ฅ์ ์ง์์ฑ์ ์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ๋ฐฉ์์ผ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์์ด ๋ง์ด ์ ์ฉ๋๊ณ ์์ต๋๋ค.
๊ฐ์ฒด์ ์ํด ๋ชจ๋ธ ์ฌ์ด์ ์ํผ๋์ค ๋ถ์ผ์น๊ฐ ๋ฐ์ํ๋๋ฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ง์์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ์์ ๋ฌธ์ ๋ฅผ ๋งํฉ๋๋ค. ORM์ ์ง์์๋ ํ๊ณ๊ฐ ์๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณต์กํ ์ฐธ์กฐ ์ฒ๋ฆฌ๋ก ๋ถํ์ํ ํ ์ด๋ธ์ด ๋ค๋ ์์ฑ๋๊ธฐ๋ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ, ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์ค๊ธฐ ์ํด ๋ง์ ์กฐ์ธ ์ฒ๋ฆฌ๋ก ์ฑ๋ฅ ๋ํ ์ ํ๋ ์ ์์ต๋๋ค.
๋ฌธ์ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฌธ์ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค(๋ชฝ๊ณ , ๋ฆฌ์ฑํฌ, ์นด์ฐ์น ๋ฑ)์์๋ JSON, XML์ ์ง์ํด์ ์คํค๋ง๋ณด๋ค ๋ ๋์ ์ง์ญ์ฑ์ ๊ฐ์ ์ ์์ต๋๋ค. ์คํค๋ง๊ฐ ์๋ค๋ ๊ฒ์ ๋ฌธ์์ ํฌํจ๋ ํ๋์ ์กด์ฌ๋ฅผ ๋ณด์ฅํ์ง ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์กฐ์ธ์ ๋ํ ์ง์์ด ๋ถ์กฑํฉ๋๋ค. ์์ ๋ ์ฝ๋ ๋ด์ ์ค์ฒฉ๋ ๋ ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ๋๋ค. ๊ด๊ณํ์ ์ธ๋ ํค์ ๋ฌ๋ฆฌ ๋ฌธ์ํ ๋ชจ๋ธ์์๋ ๋ฌธ์ ์ฐธ์กฐ(document reference)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ํ ์ง์ ์ธ์ด
SQL์ ์ ์ธํ ์ง์์ด์ธ ๋ฐ๋ฉด IMS์ ์ฝ๋ค์ค์ ๋ช ๋ นํ ์ฝ๋๋ฅผ ์ด์ฉํ ์ง์์ ๋๋ค. ๋ช ๋ นํ ์ง์๋ ํน์ ์์๋ก ํน์ ์ฐ์ฐ์ ์ํํ๊ฒ ์ง์ํ๊ณ , ์ ์ธํ ์ง์๋ ์ข ์ข ๋ณ๋ ฌ ์คํ์ ์ ํฉํ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ง ๊ตญํ๋๋ ๊ฒ์ด ์๋๋ผ ๋ค๋ฅธ ํ๊ฒฝ์์๋ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๋งต๋๋ฆฌ์ค ์ง์๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ชจ๋ธ๋ก ์ผ๋ถ NoSQL์์ ์ง์ํ๊ณ ์์ต๋๋ค. ์ฃผ๋ก ๋ง์ ๋ฌธ์๋ฅผ ๋์์ผ๋ก read-only ์ง์ ์ํ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ ์์ค์ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๋ก ์ฃผ๋ก ๋ถ์ฐ ์์คํ ์์ ์ฌ์ฉ๋๋ฉฐ ๋งต(map) ๋จ๊ณ์์๋ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ ์์ผ๋ก ๋ณํํ๊ณ ๋ณ๋ ฌ๋ก ๋์ ์ฒ๋ฆฌํ๋ฉฐ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค. ๋ฆฌ๋์ค(reduce) ๋จ๊ณ์์๋ ๋งต ๋จ๊ณ์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ทธ๋ฃนํํ๊ณ ์ง๊ณํฉ๋๋ค. ๋ฆฌ๋์ค ํจ์๋ฅผ ์ฌ์ฉํด์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณํ๊ณ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ํํ ๋ฐ์ดํฐ ๋ชจ๋ธ
๊ทธ๋ํํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ค๋๋ค ๊ด๊ณ๊ฐ ์ผ๋ฐ์ ์ธ ๋ชจ๋ธ์์ ์ ์ ๊ณผ ๊ฐ์ ์ด๋ผ๋ ๊ฐ์ฒด๋ก ์ด๋ค์ง ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋งํฉ๋๋ค. ์ด๋ ๋์ข ๋ฐ์ดํฐ์ ๊ตญํ๋์ง ์์ต๋๋ค.
์์ฑ ๊ทธ๋ํ ๋ชจ๋ธ
์์ฑ ๊ทธ๋ํ ๋ชจ๋ธ์ ๊ณ ์ ํ ์๋ณ์ / ์ ์ถ ๊ฐ์ ์งํฉ / ์ ์
๊ฐ์ ์งํฉ / ์์ฑ ์ปฌ๋ ์
์ ์ ์ ์ผ๋ก ๊ฐ์ง๋ฉฐ, ์ ์ ์ ๋ค๋ฅธ ์ ์ ๊ณผ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ผ๋ จ์ ์ ์ ์ ๋ฐ๋ผ ์๋ค ๋ฐฉํฅ์ผ๋ก ์ํํ๊ธฐ์ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ตฌ์กฐ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ ์
๋๊ฐ ๋ค์ํ ๊ฒฝ์ฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ฌ์ดํผ ์ง์ ์ธ์ด
์์ฑ ๊ทธ๋ํ๋ฅผ ์ํ ์ ์ธํ ์ง์ ์ธ์ด๋ก Neo4j ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ์ผ๋ก ์ ์๋์์ต๋๋ค. ์ ์ ์ id๋ก ์ง์ ํ๊ณ , ๊ฐ์ ์ (๊ผฌ๋ฆฌ๋
ธ๋ id) -[:๊ฐ์ label]=>(๋จธ๋ฆฌ๋
ธ๋ id)
์ ํํ๋ก ์์ฑํฉ๋๋ค. ์ ์ธํ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ์ง์ ์ต์ ํ๊ธฐ๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ธ ์ ๋ต์ ์๋์ ์ผ๋ก ์ ํํฉ๋๋ค.
ํธ๋ฆฌํ ์ ์ฅ์์ ์คํํด ํธ๋ฆฌํ ์ ์ฅ์๋ ์์ฑ ๊ทธ๋ํ ๋ชจ๋ธ๊ณผ ๊ฑฐ์ ์ ์ฌํ๋ฉฐ, ๋ชจ๋ ์ ๋ณด๋ฅผ (์ฃผ์ด, ์์ ์, ๋ชฉ์ ์ด)์ ๊ฐ์ ๊ตฌ๋ฌธ์ ํ์์ผ๋ก ๋๋์ด ์ ์ฅํฉ๋๋ค. ์ฌ๊ธฐ์ ํธ๋ฆฌํ์ ์ฃผ์ด๋ ๊ทธ๋ํ์ ์ ์ ๊ณผ ๋๋ฑํ๋ฉฐ ๋ชฉ์ ์ด๋ ๋ฌธ์์ด์ด๋ ์ซ์ ๊ฐ์ ์์ ๋ฐ์ดํฐ ํ์ ์ด๊ฑฐ๋ ๊ทธ๋ํ์ ๋ค๋ฅธ ์ ์ ์ค ํ๋๋ฅผ ์๋ฏธํฉ๋๋ค.
_:lucy a :Person; :name "Lucy"; :bornIn _:idaho._
์คํํด ์ง์ ์ธ์ด๋ RDF(Resource Description Framework) ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ ํธ๋ฆฌํ ์ ์ฅ์ ์ง์ ์ธ์ด์ ๋๋ค. ์ฌ์ดํผ๋ณด๋ค ๋จผ์ ๋ง๋ค์ด์ก๊ณ ์ฌ์ดํผ ํจํด ๋งค์นญ์ผ๋ก ์ ์ฌํ ํํ๋ฅผ ๋๋๋ค.
๋ฐ์ดํฐ ๋ก๊ทธ
์คํํด์ด๋ ์ฌ์ดํผ๋ณด๋ค ๋ ์ค๋๋ ์ธ์ด๋ก ์์ ์ด๋ก ์์ฑํ๋ฉฐ select๋ก ๋ฐ๋ก ์ง์ํ๋ ๊ฒ์ด ์๋๋ผ ๋จ๊ณ๋ฅผ ๋๋ ์ ์กฐ๊ธ์ฉ ์ง์ํ๋ ๋ฐฉ์์
๋๋ค.
// ๋ฐ์ดํฐ ์ ์
name(namerica, 'North America').
type(namerica, continent).
// rule ์ ์
within_recursive(Location, name) :- name(Location, name).
within_recursive(Location, name) :- within(Location, Via),
within_recursive(Via, Name).
migrated(Name, BorIn, LivingIn) :- name(Person, Name),
born_in(Person, BornLoc),
...
within_recursive(LivingLoc, LivingIn).
๋ค๋ฅธ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ์ ์ฐจ์ด
๊ทธ๋ํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋คํธ์ํฌ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๋ฌ๋ฆฌ, vertex๋ edge๋ก ๋ค๋ฅธ vertex์ ์์ ๋กญ๊ฒ ์ฐ๊ฒฐ๋๊ณ ๊ณ ์ id๋ฅผ ์ฌ์ฉํด ๋น ๋ฅด๊ฒ ํ์์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ์ ๋ ฌ ์์ ๋ํ ๋ค๋ฅธ๋ฐ ๊ทธ๋ํ ๋ชจ๋ธ์ ์ฝ๊ธฐ ์ง์์ ์ ์ฐํ๊ฒ ์ ๋ ฌ๋ฉ๋๋ค. ๋ํ ๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌ๋ฆฌ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ชจ๋ ๊ฒ์ด ์ ์ฌ์ ์ผ๋ก ๊ด๋ จ์ด ์๋ค๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
03. ์ ์ฅ์์ ๊ฒ์
์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น?
์ ํ๋ฆฌ์ผ์ด์
์ ์ ํฉํ ๋ฐ์ดํฐ ์์ง์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ณ ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ์์ง์ ๋ฐ๋ผ ํธ๋์ น์
์ฒ๋ฆฌ์ ์ ํฉํ๊ฑฐ๋ ๋ถ์์ ์ ํฉํ ๊ฒ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ก๊ทธ๋ ์ฐ์๋ ์ถ๊ฐ ๋ ์ฝ๋๋ฅผ ๋งํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฑฐ์ ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ ์ถ๊ฐ์์
๋ฐฉ์์
๋๋ค. ๋ก๊ทธ์ ํํ๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ ๋ฟ๋ง ์๋๋ผ ๋ฐ์ด๋๋ฆฌ ํ์์ ๊ฒฝ์ฐ๋ ํฌํจ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๊ฒ์์ ์ฉ์ดํ๊ฒ ํ๋ ์์ธ์ด๋ผ๋ ๊ฒ๋ ์๋๋ฐ ๋ถ๊ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ๋ก ๊ธฐ์กด ๋ฐ์ดํฐ์๋ ๋ณ๊ฐ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์์ธ์ ์ด์ฉํ๋ฉด ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ์์์ด ์์ธ์ ์ด์ฉํ ๊ฒ์์ผ๋ก ํด๋น ์์น๋ฅผ ๋ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฐ๊ธฐ ์์
์์ ์์ธ๋ ๊ฐ์ด ๊ฐฑ์ ํด์ผํ๋ฏ๋ก ํ์ ์ด์์ ์ค๋ฒํค๋๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ ํ ํธ๋ ์ด๋ ์คํ๋ฅผ ๊ณ ๋ คํ ์ฌ์ฉ์ด ์๊ตฌ๋ฉ๋๋ค.
ํด์ ์์ธ
ํค-๊ฐ ์์ผ๋ก ์ด๋ค์ ธ ํด์ ๋งต ๋๋ ํด์ ํ
์ด๋ธ์ ์ด์ฉํด ๋ฐ์ดํฐ ํ์ผ์์ ์คํ์
์ ์ฐพ์ ํด๋น ๊ฐ์ ์์น๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉํฉ๋๋ค. ๋ํ์ ์ผ๋ก ๋นํธ์บ์คํฌ(Bitcask)๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ด ์์ฃผ ๊ฐฑ์ ๋๋ ๊ฒฝ์ฐ์ ์ ๋ฆฌํฉ๋๋ค. ์ฑ
์์๋ ๋์์์ url์ด ํค์ด๊ณ , ๋์์ ํด๋ฆญ ์์ ๊ฐ์ด ๊ณ์ ์์ฃผ ์
๋ฐ์ดํธ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ผ๋ก ๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๊ณ ์์ต๋๋ค.
ํ์ผ์ ์ถ๊ฐ๋ง ํ๋ฉด ๋์คํฌ ์ฉ๋์ด ์ปค์ง ์ ์์ด ๊ฐ์ฅ ์ต๊ทผ์ ๊ฐ๋ง ์ ์ฅํ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธ๊ทธ๋จผํธ๋ฅผ ๋ณํฉํด์ ๋ ์์ ์ปดํฉ์
ํ๋ฅผ ๊ฑฐ์น ์ธ๊ทธ๋จผํธ๋ก ๋ง๋ค๊ธฐ๋ ํฉ๋๋ค. ์ธ๊ทธ๋จผํธ๋ ๋ฎ์ด ์ธ ์ ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ธ๊ทธ๋จผํธ๋ ์ญ์ ํ๊ณ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ฅผ ์์ฑํฉ๋๋ค.
๊ตฌํ์์๋ ์๋ ์ฌํญ๋ค์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ํ์ผ ํ์ ์์ฒด๋ ๋ฐ์ด๋๋ฆฌ ํ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋น ๋ฅด๊ณ ๊ฐํธํฉ๋๋ค.
- ํค์ ๊ด๋ จ๋ ๊ฐ์ ์ญ์ ํ๊ธฐ ์ํด์๋ ํน์ํ ์ญ์ ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค,
- ๋ฐ์ดํ ๋ฒ ์ด์ค๊ฐ ์ฌ์์๋๋ฉด ์ธ๋ฉ๋ชจ๋ฆฌ ํด์ ๋งต์ ์์ค๋๋ฏ๋ก ๋ค์ ์ฒ์๋ถํฐ ์ฝ๊ณ ๊ฐ ํค ๋ํ ์ต์ ๊ฐ์ ์คํ์ ์ ํ์ธํด์ ๋ณต์ํด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ก๊ทธ์ ๋ ์ฝ๋๋ฅผ ์ฐ๋ ๋์์๋ ์ฃฝ์ ์ ์์ต๋๋ค.
- ์ฐ๊ธฐ์ ๋ํ ๋ค์ค ์ค๋ ๋๋ก ๊ด๋ฆฌํ ๊ฒ์ธ์ง ์์ฐจ์ ์ธ ํ๋์ ์ฐ๊ธฐ ์ค๋ ๋๋ก ๋์์ฑ์ ๊ด๋ฆฌํ ์ง์ ๋ํ ๋ถ๋ถ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
ํด์ํ ์ด๋ธ์ ํค๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ ๋์คํฌ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆด ์ ์๊ณ , ๋ชจ๋ ๊ฐ๋ณ ํค๋ฅผ ์กฐํํด์ผ ํ๋ค๋ ์ ์์ ํจ์จ์ ์ด์ง ์์ต๋๋ค.
SS ํ
์ด๋ธ๊ณผ LSM ์์ธ
SS ํ
์ด๋ธ์ ์ ๋ ฌ๋ ๋ฌธ์ ํ
์ด๋ธ์ด๋ผ๊ณ ๋ ํ๋ฉฐ, ํค๋ก ์ ๋ ฌ๋ ํ์์ ๋งํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ ํค๋ ๊ฐ ์ธ๊ทธ๋จผํธ์์ ํ ๋ฒ์ฉ๋ง ๋ํ๋์ผ ํฉ๋๋ค. ํน์ ํค๋ฅผ ์ฐพ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์์ธ์ ํค ์คํ์
์ ํ์ธํด์ ๊ทธ ์คํ์
์ ํด๋นํ๋ ๋์คํฌ์ ์ธ๊ทธ๋จผํธ๋ฅผ ํ์ธํด์ ๋น ๋ฅด๊ฒ ์ค์บํ ์ ์์ต๋๋ค.
์๋ก์ด ํค-๊ฐ ์์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ๋ ๊ธฐ์กด์ ๋์คํฌ์ ์๋ ์ ๋ ฌ๋ ์ธ๊ทธ๋จผํธ ์ธ์ ์ธ๋ฉ๋ชจ๋ฆฌ์ ๋ฉคํ
์ด๋ธ(memtable)์ ๋๊ณ ๊ด๋ฆฌํฉ๋๋ค. ๋ฉคํ
์ด๋ธ์ด ํน์ ์๊ณ๊ฐ์ ๋๋ ๊ฒฝ์ฐ ์๋ก์ด ์ธ๊ทธ๋จผํธ๋ก ๋์คํฌ์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ ์ฅ์ ์์ง์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฒ์์ ๋ฉคํ
์ด๋ธ ๊ฒ์ ํ ๋์คํฌ์ ์ต์ ์ ์ธ๊ทธ๋จผํธ๋ฅผ ์กฐํํ๋ ์์๋ก ์ด๋ค์ง๊ฒ ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ ์ฅ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฉคํ
์ด๋ธ์ด ์์ค๋๋ ๊ฒ์ ์ฐ๋ คํด ๋์คํฌ์ ๋ก๊ทธ๋ฅผ ๋์ด ๋ณต์์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
LSM ํธ๋ฆฌ๋ Log-Structured Merge Tree๋ก ์ ๋ ฌ๋ ํ์ผ ๋ณํฉ๊ณผ ์ปดํฉ์
์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ ์ฅ์ ์์ง์ ๋งํฉ๋๋ค. ๋ฉคํ
์ด๋ธ์ ์๋ ํค๋ฅผ ์ฐพ๊ธฐ ์ํด ์ค๋๋ ์ธ๊ทธ๋จผํธ๊น์ง ์กฐํํ๋ ๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ต์ ํ๋ฅผ ์ํด์๋ ๋ธ๋ฃธ ํํฐ๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ธ๋ฃธ ํํฐ๋ ํค๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ์ง ์์์ ์๋ ค์ฃผ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋์คํฌ ์ฝ๊ธฐ๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค. SS ํ
์ด๋ธ์ ์ปดํฉ์
์ ๋ต์ ํฌ๊ธฐ ๊ณ์ธต ์ปดํฉ์
๊ณผ ๋ ๋ฒจ ์ปดํฉ์
์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ํฌ๊ธฐ ๊ณ์ธต ์ปดํฉ์
์ ์๋กญ๊ณ ์์ SS ํ
์ด๋ธ์ ์๋์ ์ผ๋ก ์ค๋๋ SS ํ
์ด๋ธ์ ๋ณํฉํ๊ณ , ๋ ๋ฒจ ์ปดํฉ์
์ SS ํ
์ด๋ธ์ ๋ ์๊ฒ ๋๋๊ณ ์ค๋๋ ๋ฐ์ดํฐ๋ ๊ฐ๋ณ ๋ ๋ฒจ๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์ ๋์คํฌ ๊ณต๊ฐ์ ๋ ์ฌ์ฉํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
B ํธ๋ฆฌ
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์์ธ ์ ํ์ผ๋ก ๊ณ ์ ํฌ๊ธฐ ๋ธ๋ก์ด๋ ํ์ด์ง๋ก ๋๋๊ณ ํ ๋ฒ์ ํ๋์ ํ์ด์ง ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ๋ฅผ ํ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์์ธ์์ ํค๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ root์์ ์์ํ๊ณ ํค๊ฐ ํด๋นํ๋ ๋ฒ์์ leaf page์ ๋๋ฌํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ํ์ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ๋ ์๋ฅผ ๋ถ๊ธฐ ๊ณ์๋ผ๊ณ ํฉ๋๋ค. ํค ๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด์๋ ํด๋น ํค๊ฐ ์ํ๋ ํ์ด์ง๋ฅผ ์ฐพ๊ณ ๊ฑฐ๊ธฐ์ ํค๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ํ๊ฑฐ๋, ํ์ด์ง ๊ณต๊ฐ์ด ์๋ค๋ฉด ํ์ด์ง๋ฅผ ๋๋๊ณ ์์ ํ์ด์ง์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ผ๋ก ๊ฐฑ์ ํ ์ ์์ต๋๋ค. B ํธ๋ฆฌ์ ์ฐ๊ธฐ ์์
์ ์ฐ๊ธฐ ์ ๋ก๊ทธ๋ฅผ ๋น์์์ ๋๋นํด ๋๊ณ , ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ ์์ ํ์ด์ง ๋ฎ์ด์ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํฉ๋๋ค. ๋์์ฑ ์ ์ด๋ฅผ ์ํด ๋์น(latch, ๊ฐ๋ฒผ์ด ์ ๊ธ)๋ก ํธ๋ฆฌ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ณดํธํ๊ณ ๋ค๋ฅธ ์ค๋ ๋์ ์ํฅ์ ๋ฐ์ง ์๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. B ํธ๋ฆฌ๋ ํฌ์ธํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ํ์ด์ง์ ํค๋ฅผ ์ถ์ฝํด์ ์ด๋ค๊ฑฐ๋ ํ๋ ๋ฐฉ์์ผ๋ก ์ต์ ํ๋ฅผ ํ ์ ์์ต๋๋ค.
LSM ํธ๋ฆฌ์ B ํธ๋ฆฌ์ ์ฐจ์ด
- ์ผ๋ฐ์ ์ผ๋ก LSM ํธ๋ฆฌ๊ฐ ๋ณดํต ์ฐ๊ธฐ์์ ๋น ๋ฅด๊ณ B ํธ๋ฆฌ๊ฐ ์ฝ๊ธฐ์์ ๋น ๋ฅธ ํธ์ ๋๋ค. LSM ํธ๋ฆฌ๋ ๊ฐ ์ปดํฉ์ ๋จ๊ณ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ SS ํ ์ด๋ธ์ ํ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- LSM ํธ๋ฆฌ๋ B ํธ๋ฆฌ๋ณด๋ค ์ฐ๊ธฐ ์ฒ๋ฆฌ๋์ ๋๊ฒ ์ ์งํ ์ ์์ต๋๋ค. LSM ํธ๋ฆฌ๊ฐ ์๋์ ์ผ๋ก ์ฆํญ์ด ๋ ๋ฎ๊ณ ํธ๋ฆฌ์์ ์ฌ๋ฌ ํ์ด์ง๋ฅผ ๋ฎ์ด ์ฐ๋ ๊ฒ์ด ์๋๋ผ ์์ฐจ์ ์ผ๋ก ์ปดํฉ์ ๋ SS ํ ์ด๋ธ ํ์ผ์ ์ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- LSM ํธ๋ฆฌ๋ ์์ถ๋ฅ ์ด ์ข์ต๋๋ค.
- B ํธ๋ฆฌ๋ ์ฅ์ ์ ๊ฐ ํค๊ฐ ์์ธ์ ํ ๊ณณ์๋ง ์ ํํ๊ฒ ์กด์ฌํฉ๋๋ค. ๋ก๊ทธํ ๊ตฌ์กฐํ ์ ์ฅ์ ์์ง์ ๋ค๋ฅธ ์ธ๊ทธ๋จผํธ์ ๊ฐ์ ํค์ ๋ค์ค ๋ณต์ฌ๋ณธ์ด ์กด์ฌํ ์ ์์ต๋๋ค.
04. ๋ถํธํ์ ๋ฐ์
์ฝ๊ธฐ ์คํค๋ง(์คํค๋ง๋ฆฌ์ค) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์คํค๋ง๋ฅผ ๊ฐ์ํ์ง ์์ผ๋ฏ๋ก ๋ค๋ฅธ ์์ ์ ์ฐ์ฌ์ง ์ด์ง ๋ฐ์ดํฐ ํ์
๊ณผ ์๋ก์ด ๋ฐ์ดํฐ ํ์
์ด ์์ฌ ํฌํจ๋ ์ ์์ต๋๋ค. ๋๊ท๋ชจ ์์คํ
์์๋ ๋
ธ๋๊ฐ ๋ง์์ ์ํ์ ์
๊ทธ๋ ์ด๋๋ฅผ ํ๋ฏ๋ก ๋ฐ์ดํฐ ํ์
์ด๋ ์คํค๋ง ๋ณ๊ฒฝ์ ๋ํ ๋ด์ฉ์ ์ฆ์ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฆ, ์ด์ ์ฝ๋์ ๋ฐ์ดํฐ ํ์
์ ๊ณต์กด์ผ๋ก ์ธํด ํธํ์ฑ์ด๋ผ๋ ๋ถ๋ถ์ด ์ค์ํฉ๋๋ค. ์์ ํธํ์ฑ์ ์๋ก์ด ์ฝ๋๊ฐ ๊ธฐ๋กํ ๋ฐ์ดํฐ๋ฅผ ์ด์ ์ฝ๋๋ ์ฝ์ ์ ์์ด์ผ ํ๋ ๋ถ๋ถ์ผ๋ก ๋ ์ด๋ ค์ด ๋ฌ์ฑํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋๋ก ํ์ ํธํ์ฑ์ ๊ธฐ์กด ์ฝ๋์ ๋ฐ์ดํฐ ํ์
์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์๋ก์ด ์ฝ๋๊ฐ ์ดํดํ๊ณ ์ ์ฉํ๋ ๊ฒ์ ์ฝ์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๋ถํธํ ํ์๋ค์ ์ดํด๋ด
์๋ค.
๋ฐ์ดํฐ ๋ถํธํ ํ์
์ฌ๊ธฐ์ ๋งํ๋ ๋ถํธํ๋ ์ธ๋ฉ๋ชจ๋ฆฌ ํํ์์ ๋ฐ์ดํธ์ด๋ก์ ์ ํ์ ๋งํ๋ฉฐ, ์ง๋ ฌํ ๋๋ ๋ง์ฌ๋ง์ด๋ผ๊ณ ๋ ํฉ๋๋ค. (์๋ฐ์ Serializable, ๋ฃจ๋น์ Marshal) ๋ฐ๋๋ ๋ณตํธํ(ํ์ฑ, ์ญ์ง๋ ฌํ, ์ธ๋ง์ ํ)์ ๋๋ค. (์ฑ ์์๋ ์ง๋ ฌํ๋ผ๋ ๋ง์ด ํธ๋์ญ์ ๋จ์์์ ํผ๋์ ํผํ๊ธฐ ์ํด ๋ถํธํ๋ก ํํ)
XML๊ณผ JSON
ํ์คํ๋ ๋ถํธํ๋ก๋ JSON๊ณผ XML์ด ์์ต๋๋ค. ๊ฐ์ฅ ๋ณดํธ์ ์ด์ง๋ง ์๋ฅผ ๋ค๋ฃฐ ๋ JSON์ ๋ถ๋์์์ ์๋ฅผ ๊ตฌ๋ณํ์ง ์๊ณ , XML๊ณผ CSV๋ ์์ ์ซ์์ ๋ฌธ์์ด์ ๊ตฌ๋ถํ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ ๋ค ์ด์ง ๋ฌธ์์ด์ ์ง์ํ์ง ์์ผ๋ฉฐ Base64๋ก ๋ถํธํ ๋์ด ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ ํน์ง์ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ค์คํค๋ง๋ฅผ ์ง์ํฉ๋๋ค.
ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ด์ง ๋ถํธํ๋ ํ๋ ๊ฒ์ด ๋ง๋๊ฐ์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ๋์ค๋๋ฐ, ํฌ๊ธฐ๊ฐ ํ์ ํ๊ฒ JSON ๋ถํธํ์ ์ฐจ์ด ๋์ง ์๋๋ค๋ฉด ๊ฐ๋ ์ฑ์ ํด์น ์ ๋๋ก ๊ฐ์น๊ฐ ์์ง๋ ์์ต๋๋ค. ๋ฉ์์งํฉ์ ์ด์ฉํ ์ด์ง ๋ถํธํ์ JSON ๋ถํธํ(๊ทธ๋ฆผ 4-1.)์ ๋ณด๋ฉด ๋ถํธํ ๊ฐ๋ ์ฑ์ ๋ํด ์๊ฐํ์ ๋ (์์์ ํํด์) JSON์ด ๋ ์ ํฉํ๊ฒ ๋๊ปด์ก์ต๋๋ค. ํ์ฌ ํ์ฌ์์๋ ์ด์ง ๋ถํธํ๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ, ์คํค๋ง๋ก ์ด์ง ๋ถํธํ๋จ์ ์๋ ค์ฃผ๋ ํํ๋ก ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๊ทธ๋ฅ ์๋ฃ ํ์ค์ ๋ฐ๋ผ XML ํํ๋ก ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ค์ด ์์ต๋๋ค.
ํ๋กํ ์ฝ ๋ฒํผ์ ์ค๋ฆฌํํธ, ์๋ธ๋ก๋ ์คํค๋ง๋ฅผ ์ด์ฉํด ์ด์ง ๋ถํธํ ํ์์ ๊ธฐ์ ํฉ๋๋ค.
ํ๋กํ ์ฝ ๋ฒํผ์ ์ค๋ฆฌํํธ
ํ๋ก์ฝํจ ๋ฒํผ๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ๊ณ , ์ค๋ฆฌํํธ๋ ํ์ด์ค๋ถ์์ ๊ฐ๋ฐ๋์์ต๋๋ค. ๋ ๋ค ์คํค๋ง๋ฅผ ์ ์ํ๊ณ ์คํค๋ง ๊ตฌํ ํด๋์ค๋ฅผ ์ํํฉ๋๋ค. ์ด๋ฅผ ์ด์ฉํด์ ์คํค๋ง์ ๋ ์ฝ๋๋ฅผ ๋ถํธํ, ๋ณตํธํํ ์ ์์ต๋๋ค. ์ค๋ฆฌํํธ๋ ๋ ๊ฐ์ง ์ด์ง ๋ถํธํ ํ์์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฐ์ด๋๋ฆฌํ๋กํ ์ฝ๋ณด๋ค ์ปดํฉํธํ๋กํ ์ฝ์ ์ฌ์ฉํ์ ๋ ํ๋ ์ด๋ฆ์ ํ๋ ํ๊ทธ๋ก ํ๊ธฐํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํธ๋ฅผ ๋ ์ค์ฌ์ 34๋ฐ์ดํธ๋ก ๋ถํธํ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค. ํ๋กํ ์ฝ ๋ฒํฐ๋ 33๋ฐ์ดํธ๋ก ์ค๋ฆฌํํธ์ ์ปดํฉํธํ๋กํ ์ฝ๊ณผ ์ ์ฌํ๊ฒ ๋ถํธํ๋ฉ๋๋ค.
์คํค๋ง ๋ฐ์ ์ ์ง์ํ๊ธฐ ์ํด ํ๋ ํ๊ทธ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ธ์์ ๋ถ๊ฐ๋ฅํ๊ฒ ํ ์ ์์ด ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํธํ์ฑ ์ธก๋ฉด์์ ํ์ ํธํ์ฑ์ ์ด์ ๋ฐ์ดํฐ์ ์๋ก์ด ํ๋๋ฅผ required ํ ์ ์๊ธฐ ๋๋ฌธ์ optional ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ํธํ์ฑ ์ธก๋ฉด์์ ๋ณด๋ฉด optional ํ๋๋ง ์ญ์ ๊ฐ ๊ฐ๋ฅํ๊ณ required ํ๋๋ ์ญ์ ํ ์ ์์ต๋๋ค. ์๊ฐํด๋ณด๋ฉด ํธํ์ฑ ๋ถ๋ถ์ ๋น์ฐํ๊ธฐ ๋๋ฌธ์ ์ดํด๋ง ํ๊ณ ๋์ด๊ฐ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๋กํ ์ฝ ๋ฒํผ์๋ repeatable์ด๋ผ๋ ํ์์๊ฐ ์์ด์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ optional ํ๋๋ฅผ ๋ง์ง๋ง ์๋ฆฌ๋จผํธ๋ง ๋ณด๊ฒ ๋ฉ๋๋ค. ์ค๋ฆฌํํธ๋ ์ ์ฉ ๋ชฉ๋ก ๋ฐ์ดํฐํ์
์ ๋๊ณ ์์ด ์ค์ฒฉ๋ ๋ชฉ๋ก์ ์ง์ํฉ๋๋ค.
์๋ธ๋ก
์ค๋ฆฌํํธ๊ฐ ํ๋ก์ ์ ํฉํ์ง ์์ ๊ฐ๋ฐ๋์์ต๋๋ค. ์คํค๋ง๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋์ผํ์ง๋ง JSON ๊ธฐ๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ๊ณ ํ๊ทธ ๋ฒํธ๊ฐ ์์ผ๋ฉฐ ๊ฐ์ฅ ์งง์ 32๋ฐ์ดํธ ๋ถํธํ๊ฐ ๋ฉ๋๋ค. ํ๋๊ฐ ๋ฐ์ดํฐํ์
์ ์ํ ์๋ณ ์ ๋ณด๊ฐ ์์ผ๋ฉฐ, ์ฝ๊ธฐ๋ฅผ ์ํด์๋ ์ฝ๋๊ฐ ์ ํํ ๊ฐ์ ์คํค๋ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ์ฌ๋ฐ๋ฅด๊ฒ ๋ณตํธํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์๋ธ๋ก์ ์์ํธํ์ฑ์ ์๋ก์ด ๋ฒ์ ์ ์ฐ๊ธฐ ์คํค๋ง์ ์์ ๋ฒ์ ์ ์ฝ๊ธฐ ์คํค๋ง๋ฅผ ๊ฐ์ง ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋๋ก ํ์ ํธํ์ฑ์ ์๋ก์ด ๋ฒ์ ์ ์ฝ๊ธฐ ์คํค๋ง์ ์ด์ ๋ฒ์ ์ ์ฐ๊ธฐ ์คํค๋ง๋ฅผ ๊ฐ์ง ์ ์์์ ์๋ฏธํฉ๋๋ค.
์ด์ธ์๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋์ ํนํ๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๋ณตํธํํ๋ ๋๋ผ์ด๋ฒ(ODBC, JDBC)๋ค์ด ์์ต๋๋ค.
๋ฐ์ดํฐํ๋ก ๋ชจ๋
์๋ก์ด ๋ฒ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ธฐ๋กํ ๋ฐ์ดํฐ๋ฅผ ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐฑ์ ํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ์ค ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ผ์ด๋์ง๋ ์๊ณ , ๋๋ถ๋ถ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ null์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ๋ ์คํค๋ง์ ์ถ๊ฐ๋ฅผ ํ์ฉํ๊ณ ์์ต๋๋ค. ์๋๋ฉด ์ค๋ ์ท๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋ฐฑ์ ์ผ๋ก ๋ฐ์ดํฐ ๋คํ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์๋น์ค๋ฅผ ํตํ ๋ฐ์ดํฐํ๋ก
์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๋ถํธํ๋ ์๋น์ค API ๋ฒ์ ๊ฐ ํธํ์ด ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์น ์๋น์ค์์ REST๋ HTTP ์์น์ ํ ๋๋ก ํ ์ค๊ณ์ฒ ํ์ด๊ณ , SOAP๋ ๋คํธ์ํฌ API ์์ฒญ์ ์ํ XML ๊ธฐ๋ฐ ํ๋กํ ์ฝ์
๋๋ค. SOAP๋ WSDL ์ธ์ด๋ก ๊ธฐ์ ํ๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ก์ปฌ ํด๋์ค์ ๋ฉ์๋ ํธ์ถ๋ก ์๊ฒฉ ์๋น์ค์ ์ ๊ทผํ๋ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๊ฒฉ ํ๋ก์์ ํธ์ถ(RPC)์ ๋คํธ์ํฌ ์์ฒญ์ผ๋ก ์์ธก์ด ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์คํจ ์ฒ๋ฆฌ์ ๋ํ ๋์ฑ
์ด ํ์ํฉ๋๋ค.