์๋
ํ์ธ์, ํ๋ธ๋กํ์คํฌ ์ฃผ๋ฏผ ์ฌ๋ฌ๋ถ. ๋ ๊ทธ๋ ๋ฏ, ์ฐ๋ฆฌ๋ ์๋ก์ด ๊ฐ์ข ์์์ ์์ ํฅ๋ฏธ๋ก์ด ์๋ฃ๋ฅผ ๊ณ์ํด์ ๊ณต์ ํ๊ณ ์์ต๋๋ค. ์ค๋์ ํนํ ์ฌ๋ฌ๋ถ์ ์ํด ๊ณผ์ ๊ฐ์ค์ ๋ง์ถฐ Google Cloud Spanner์ ๋ํ ๊ธฐ์ฌ๋ฅผ ๊ฒ์ํ์ต๋๋ค.
์๋ ์ถํ๋ ์๊ธฐ
์ ์ธ๊ณ ์๋งค์
์ฒด, ๋ ์คํ ๋ ๊ฒฝ์์, ์จ๋ผ์ธ ํ๋งค์์๊ฒ ๋ค์ํ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ POS ์๋ฃจ์
์ ์ ๊ณตํ๋ ํ์ฌ์ธ Lightspeed๋ ๋ค์ํ ๊ฑฐ๋, ๋ถ์ ๋ฐ ๊ฒ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์ฌ๋ฌ ์ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ซํผ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ซํผ์ ๊ฐ๊ฐ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ Google์ด ์ฌ์ค์ ๋ฌด์ ํ์ ์ํ ํ์ฅ์ฑ๊ณผ 99,999% SLA(์๋น์ค ์์ค ๊ณ์ฝ) ๋ฑ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๊ณ์์๋ ๋ณผ ์ ์๋ ์ ๋งํ ๊ธฐ๋ฅ์ธ Cloud Spanner๋ฅผ ์์ฅ์ ์ถ์ํ์ ๋, โ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์์ ๋ฃ์ ๊ธฐํ๋ฅผ ๋์น ์ ์์์ต๋๋ค!
Cloud Spanner ์ฌ์ฉ ๊ฒฝํ๊ณผ ์ฌ์ฉ๋ ํ๊ฐ ๊ธฐ์ค์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ค์ ์ฃผ์ ๋ฅผ ๋ค๋ฃน๋๋ค.
- ์ฐ๋ฆฌ์ ํ๊ฐ ๊ธฐ์ค
- ๊ฐ๋จํ ๋งํด์ Cloud Spanner
- ์ฐ๋ฆฌ์ ํ๊ฐ
- ์ฐ๋ฆฌ์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ
1. ๋น์ฌ์ ํ๊ฐ ๊ธฐ์ค
Cloud Spanner์ ์ธ๋ถ ์ฌํญ, ์์ค์ ๋ค๋ฅธ ์๋ฃจ์ ๊ณผ์ ์ ์ฌ์ ๋ฐ ์ฐจ์ด์ ์ ์ดํด๋ณด๊ธฐ ์ ์ ๋จผ์ ์ธํ๋ผ์์ Cloud Spanner๋ฅผ ๋ฐฐํฌํ ์์น๋ฅผ ๊ณ ๋ คํ ๋ ์ผ๋์ ๋ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
- (์ฃผ์) ๊ธฐ์กด SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃจ์ ์ ๋์ฒดํฉ๋๋ค.
- OLAP๋ฅผ ์ง์ํ๋ OLTP ์๋ฃจ์ ๋ฐฉ๋ฒ
์ฐธ๊ณ : ๋จ์์ฑ๊ณผ ์ฉ์ดํ ๋น๊ต๋ฅผ ์ํด ์ด ๋ฌธ์์์๋ Cloud Spanner๋ฅผ GCP Cloud SQL ๋ฐ Amazon AWS RDS ์๋ฃจ์ ์ ํ๊ตฐ์ MySQL ๋ณํ๊ณผ ๋น๊ตํฉ๋๋ค.
Cloud Spanner๋ฅผ ๊ธฐ์กด SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฃจ์ ์ ๋์ฒดํ์ผ๋ก ์ฌ์ฉ
ํ๊ฒฝ์์ ์ ํต์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ์๋ต ์๊ฐ์ด ๋ฏธ๋ฆฌ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์๊ณ๊ฐ์ ์ ๊ทผํ๊ฑฐ๋ ์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ(์ฃผ๋ก ์ฌ์ฉ์ ๋ฐ/๋๋ ์์ฒญ ์์ ์ฆ๊ฐ๋ก ์ธํด) ์๋ต ์๊ฐ์ ํ์ฉ ๊ฐ๋ฅํ ์์ค์ผ๋ก ์ค์ด๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์๋ฃจ์ ์ ๋๋ถ๋ถ์๋ ์๋ ๊ฐ์ ์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ํํด์ผ ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๋ค์ํ ์ฑ๋ฅ ๊ด๋ จ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋งค๊ฐ๋ณ์๋ฅผ ์ดํด๋ณด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ฉ ์ฌ๋ก ํจํด์ ๊ฐ์ฅ ์ ์ผ์นํ๋๋ก ์กฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ง ๋๋ ์ํ์ผ๋ก ํ์ฅํ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์์ง์ ์ผ๋ก ํ์ฅํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ง์ ํ๋ก์ธ์/์ฝ์ด, ๋ ๋ง์ RAM, ๋ ๋น ๋ฅธ ์คํ ๋ฆฌ์ง ๋ฑ์ ์ถ๊ฐํ์ฌ ์๋ฒ ์ธ์คํด์ค๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค. ๋ ๋ง์ ํ๋์จ์ด ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํ๋ฉด ์ฃผ๋ก ์ด ๋จ์ ํธ๋์ญ์ ๋ฐ OLTP ์์คํ ์ ํธ๋์ญ์ ๋๊ธฐ ์๊ฐ์ผ๋ก ์ธก์ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค. MySQL๊ณผ ๊ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ (๋ฉํฐ ์ค๋ ๋ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ)์ ์์ง์ ์ผ๋ก ์ ํ์ฅ๋ฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์๋ ๋ช ๊ฐ์ง ๋จ์ ์ด ์์ง๋ง ๊ฐ์ฅ ๋ถ๋ช ํ ๊ฒ์ ์์ฅ์ ๋์ ์๋ ์ต๋ ์๋ฒ ํฌ๊ธฐ์ ๋๋ค. ๊ฐ์ฅ ํฐ ์๋ฒ ์ธ์คํด์ค์ ํ๊ณ์ ๋๋ฌํ๋ฉด ์ํ ํ์ฅ์ด๋ผ๋ ํ๋์ ์ต์ ๋ง ๋จ์ต๋๋ค.
์ํ์ ํ์ฅ์ ํด๋ฌ์คํฐ์ ๋ ๋ง์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ ์ ๊ทผ ๋ฐฉ์์ผ๋ก, ์ด์์ ์ผ๋ก๋ ์๋ฒ ์๊ฐ ์ถ๊ฐ๋จ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค. ๋ค์ ์ ํต์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ํ์ ์ผ๋ก ์ ํ์ฅ๋์ง ์๊ฑฐ๋ ์ ํ ํ์ฅ๋์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด MySQL์ ์ฌ๋ ์ด๋ธ ๋ฆฌ๋๋ฅผ ์ถ๊ฐํ์ฌ ์ฝ๊ธฐ ์์ ์ ์ํด ์ํ์ผ๋ก ํ์ฅํ ์ ์์ง๋ง ์ฐ๊ธฐ๋ฅผ ์ํด ์ํ์ผ๋ก ํ์ฅํ ์๋ ์์ต๋๋ค.
๋ฐ๋ฉด Cloud Spanner๋ ๊ทธ ํน์ฑ์ ์ต์ํ์ ๊ฐ์ ์ผ๋ก ์ฝ๊ฒ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์๋น์ค๋ก์์ DBMS ๋ค์ํ ๊ฐ๋์์ ํ๊ฐํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ํด๋ผ์ฐ๋์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ DBMS์ธ Google์ ๊ฒฝ์ฐ GCP Cloud SQL๊ณผ Amazon์ ๊ฒฝ์ฐ AWS RDS๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ํ๊ฐ์์ ์ฐ๋ฆฌ๋ ๋ค์ ๋ฒ์ฃผ์ ์ค์ ์ ๋์์ต๋๋ค.
- ๊ธฐ๋ฅ ๋งคํ: ๋ฒ์ SQL, DDL, DML; ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/์ปค๋ฅํฐ, ํธ๋์ญ์ ์ง์ ๋ฑ.
- ๊ฐ๋ฐ ์ง์: ์์ฌ์ด ๊ฐ๋ฐ ๋ฐ ํ ์คํธ.
- ๊ด๋ฆฌ ์ง์: ์ธ์คํด์ค ๊ด๋ฆฌ(์: ์ธ์คํด์ค ํ์ฅ/์ถ์ ๋ฐ ์ ๊ทธ๋ ์ด๋) SLA, ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ; ๋ณด์/์ก์ธ์ค ์ ์ด.
Cloud Spanner๋ฅผ OLAP ์ง์ OLTP ์๋ฃจ์ ์ผ๋ก ์ฌ์ฉ
Google์ Cloud Spanner๊ฐ ๋ถ์ ์ฒ๋ฆฌ์ฉ์ผ๋ก ์ค๊ณ๋์๋ค๊ณ ๋ช ์์ ์ผ๋ก ์ฃผ์ฅํ์ง๋ ์์ง๋ง OLAP ์ํฌ๋ก๋์ฉ์ผ๋ก ์ค๊ณ๋ Apache Impala & Kudu ๋ฐ YugaByte์ ๊ฐ์ ๋ค๋ฅธ ์์ง๊ณผ ์ผ๋ถ ์์ฑ์ ๊ณต์ ํฉ๋๋ค.
Cloud Spanner์ (๋ค์) ์ฌ์ฉ ๊ฐ๋ฅํ OLAP ๊ธฐ๋ฅ ์ธํธ๊ฐ ํฌํจ๋ ์ผ๊ด๋ ์ํ ํ์ฅ HTAP(ํ์ด๋ธ๋ฆฌ๋ ํธ๋์ญ์ /๋ถ์ ์ฒ๋ฆฌ) ์์ง์ด ํฌํจ๋ ๊ฐ๋ฅ์ฑ์ด ์ ๋๋ผ๋ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฅผ ์ผ๋์ ๋๊ณ ๋ค์ ๋ฒ์ฃผ๋ฅผ ์ดํด๋ณด์์ต๋๋ค.
- ๋ฐ์ดํฐ ๋ก๋ฉ, ์ธ๋ฑ์ค ๋ฐ ํํฐ์ ๋ ์ง์
- ์ฟผ๋ฆฌ ์ฑ๋ฅ ๋ฐ DML
2. Cloud Spanner ์์ฝ
Google Spanner๋ Google์ด ์ฌ๋ฌ ์์ฒด ์๋น์ค์ ์ฌ์ฉํ๋ ํด๋ฌ์คํฐํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์ ๋๋ค. Google์ 2017๋ ์ด์ Google Cloud Platform ์ฌ์ฉ์์๊ฒ ์ด ๊ธฐ๋ฅ์ ์ผ๋ฐ ๊ณต๊ฐํ์ต๋๋ค.
Cloud Spanner ์์ฑ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ผ๊ด์ฑ์ด ๋ฐ์ด๋๊ณ ํ์ฅ ๊ฐ๋ฅํ RDBMS ํด๋ฌ์คํฐ: ํ๋์จ์ด ์๊ฐ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ํ ์ด๋ธ ๊ฐ ํธ๋์ญ์ ์ง์: ํธ๋์ญ์ ์ ์ฌ๋ฌ ํ ์ด๋ธ์ ๊ฑธ์ณ ์์ ์ ์์ผ๋ฉฐ Apache HBase ๋๋ Apache Kudu์ ๋ฌ๋ฆฌ ๋ฐ๋์ ๋จ์ผ ํ ์ด๋ธ๋ก ์ ํ๋์ง๋ ์์ต๋๋ค.
- ๊ธฐ๋ณธ ํค ๊ธฐ๋ฐ ํ
์ด๋ธ: ๋ชจ๋ ํ
์ด๋ธ์๋ ํ
์ด๋ธ์ ์ฌ๋ฌ ์ด๋ก ๊ตฌ์ฑ๋ ์ ์๋ ์ ์ธ๋ ๊ธฐ๋ณธ ํค(PC)๊ฐ ์์ด์ผ ํฉ๋๋ค. ํ
์ด๋ธ ํ์์ ๋ฐ์ดํฐ๋ PC ์์๋๋ก ์ ์ฅ๋๋ฏ๋ก PC ๊ฒ์์ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ๋น ๋ฆ
๋๋ค. ๋ค๋ฅธ PC ๊ธฐ๋ฐ ์์คํ
๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌํ์ ์ฌ์ ์ค๊ณ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ผ๋์ ๋๊ณ ๋ชจ๋ธ๋ง๋์ด์ผ ํฉ๋๋ค.
์ต๊ณ ์ ์ฑ๋ฅ . - ์คํธ๋ผ์ดํ ํ ์ด๋ธ: ํ ์ด๋ธ์ ์๋ก ๋ฌผ๋ฆฌ์ ์ข ์์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค. ํ์ ํ ์ด๋ธ์ ํ์ ์์ ํ ์ด๋ธ์ ํ๊ณผ ์ผ์น์ํฌ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๊ณ ๊ฐ ๋ฐ ์ก์ฅ ๊ณต๋ ๋ฐฐ์น์ ๊ฐ์ด ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋จ๊ณ์์ ์๋ณํ ์ ์๋ ๊ด๊ณ ๊ฒ์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
- ์์ธ: Cloud Spanner๋ ๋ณด์กฐ ์์ธ์ ์ง์ํฉ๋๋ค. ์ธ๋ฑ์ค๋ ์ธ๋ฑ์ค๋ ์ด๊ณผ ๋ชจ๋ PC ์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค์๋ ์ธ๋ฑ์ฑ๋์ง ์์ ๋ค๋ฅธ ์ด๋ ํฌํจ๋ ์ ์์ต๋๋ค. ์ฟผ๋ฆฌ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ์ธ๋ฑ์ค๋ฅผ ์์ ํ ์ด๋ธ๊ณผ ์ธํฐ๋ฆฌ๋ธํ ์ ์์ต๋๋ค. ์ธ๋ฑ์ค์ ์ ์ฅ๋๋ ์ถ๊ฐ ์ด์ ์ต๋ ์์ ๊ฐ์ ๋ช ๊ฐ์ง ์ ํ ์ฌํญ์ด ์ธ๋ฑ์ค์ ์ ์ฉ๋ฉ๋๋ค. ๋ํ ์ธ๋ฑ์ค๋ฅผ ํตํ ์ฟผ๋ฆฌ๋ ๋ค๋ฅธ RDBMS๋งํผ ๊ฐ๋จํ์ง ์์ ์ ์์ต๋๋ค.
โCloud Spanner๋ ๋๋ฌธ ๊ฒฝ์ฐ์๋ง ์์ธ์ ์๋์ผ๋ก ์ ํํฉ๋๋ค. ํนํ ์ฟผ๋ฆฌ๊ฐ ์ ์ฅ๋์ง ์์ ์ด์ ์์ฒญํ๋ ๊ฒฝ์ฐ Cloud Spanner๋ ์๋์ผ๋ก ๋ณด์กฐ ์์ธ์ ์ ํํ์ง ์์ต๋๋ค.
- SLA(์๋น์ค ์์ค ๊ณ์ฝ): SLA 99,99%๋ก ํ ์ง์ญ์ ๋ฐฐํฌํฉ๋๋ค. 99,999% SLA๋ฅผ ๊ฐ์ถ ๋ค์ค ์ง์ญ ๋ฐฐํฌ. SLA ์์ฒด๋ ๋จ์ง ๊ณ์ฝ์ผ ๋ฟ ์ด๋ค ์ข ๋ฅ์ ๋ณด์ฅ๋ ์๋์ง๋ง Google ์ง์์ ๊ทธ๋ ๊ฒ ๊ฐ๋ ฅํ ์ฃผ์ฅ์ ํ ์ ์๋ ํ์คํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค. (์ฐธ๊ณ ๋ก 99,999%๋ ์ 26,3์ด์ ์๋น์ค ๋ถ๊ฐ๋ฅผ ์๋ฏธํฉ๋๋ค.)
- ๋๋ณด๊ธฐ :
https://cloud.google.com/spanner/
์ฐธ๊ณ : Apache Tephra ํ๋ก์ ํธ๋ Apache HBase์ ํฅ์๋ ํธ๋์ญ์ ์ง์์ ์ถ๊ฐํฉ๋๋ค(ํ์ฌ Apache Phoenix์์๋ ๋ฒ ํ๋ก ๊ตฌํ๋จ).
3. ์ฐ๋ฆฌ์ ํ๊ฐ
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋์ ์ผ๊ด์ฑ๊ณผ ๋งค์ฐ ๋์ SLA๋ฅผ ์ ์งํ๋ฉด์ ์ฌ์ค์ ๋ฌด์ ํ์ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํ Cloud Spanner์ ์ด์ ์ ๋ํ Google์ ์ฃผ์ฅ์ ๋ชจ๋ ์ฝ์์ต๋๋ค. ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ฌ์ฑํ๊ธฐ ๋งค์ฐ ์ด๋ ต์ง๋ง ์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ด๋ฅผ ๋ฐ๋ฐํ๋ ๊ฒ์ด ์๋๋๋ค. ๋์ ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๊ฐ ๊ด์ฌ์ ๊ฐ๋ ๋ค๋ฅธ ์ฌํญ์ธ ํจ๋ฆฌํฐ์ ์ ์ฉ์ฑ์ ์ด์ ์ ๋ง์ถ๊ฒ ์ต๋๋ค.
์ค๋ฉ๋ MySQL์ ๋์ฒดํ ์ ํ์ผ๋ก Cloud Spanner๋ฅผ ํ๊ฐํ์ต๋๋ค.
ํด๋ผ์ฐ๋ ์์ฅ์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ OLTP DBMS ์ค ํ๋์ธ Google Cloud SQL๊ณผ Amazon AWS RDS๋ ๋งค์ฐ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋จ์ผ ๋ ธ๋ ํฌ๊ธฐ ์ด์์ผ๋ก ํ์ฅํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๋ถํ ์ ์ํํด์ผ ํฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ด๋ฆฌ ๋ชจ๋์ ์ถ๊ฐ์ ์ธ ๋ณต์ก์ฑ์ ์ผ๊ธฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ Spanner๊ฐ ์ฌ๋ฌ ์ค๋๋ฅผ ๋จ์ผ ์ธ์คํด์ค๋ก ๊ฒฐํฉํ๋ ์๋๋ฆฌ์ค์ ์ด๋ป๊ฒ ์ ํฉํ๊ณ ์ด๋ค ๊ธฐ๋ฅ(์๋ ๊ฒฝ์ฐ)์ ํฌ์ํด์ผ ํ๋์ง ์ดํด๋ณด์์ต๋๋ค.
SQL, DML, DDL์ ๋ฌผ๋ก ์ปค๋ฅํฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊น์ง ์ง์ํฉ๋๊น?
๋จผ์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ํ ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์์ฑํด์ผ ํฉ๋๋ค. JDBC Spanner๋ฅผ ์ฆ๊ฒจ ์ฌ์ฉํ๋ SQL ๋๊ตฌ์ ์ฐ๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํ๋ค๋ฉด ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ ์๋ ์์ง๋ง ํ ์ด๋ธ์ ์์ฑํ๊ฑฐ๋ ์์ (DDL)ํ๊ฑฐ๋ ์ฝ์ /์ ๋ฐ์ดํธ/์ญ์ ํ๋ ๋ฐ ์ฌ์ฉํ ์๋ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ์์ (DML). Google์ ๊ณต์ JDBC๋ ์ด๋ค ์ค ํ๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
"๋๋ผ์ด๋ฒ๋ ํ์ฌ DML ๋๋ DDL ๋ฌธ์ ์ง์ํ์ง ์์ต๋๋ค."
์คํจ๋ ๋ฌธ์
GCP ์ฝ์์ ์ํฉ์ ๊ทธ๋ค์ง ์ข์ง ์์ต๋๋ค. SELECT ์ฟผ๋ฆฌ๋ง ๋ณด๋ผ ์ ์์ต๋๋ค. ๋คํํ ์ปค๋ฎค๋ํฐ์๋ ํธ๋์ญ์
์ ํฌํจํ์ฌ DML ๋ฐ DDL์ ์ง์ํ๋ JDBC ๋๋ผ์ด๋ฒ๊ฐ ์์ต๋๋ค.
Cloud Spanner ์ปค์คํ API๋ฅผ ๊ฑฐ์ ํ์๋ก ์ฌ์ฉํ๋ฉด(JDBC์ DDL ๋ฐ DML์ด ์๊ธฐ ๋๋ฌธ์) ์ฐ๊ฒฐ ํ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ธ๋ฉ ํ๋ ์์ํฌ(์: Spring MVC)์ ๊ฐ์ ๊ด๋ จ ์ฝ๋ ์์ญ์ ์ผ๋ถ ์ ํ์ด ๋ฐ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก JDBC๋ฅผ ์ฌ์ฉํ ๋ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ ์ ์๋ํ๋ ์ ํธํ๋ ์ฐ๊ฒฐ ํ(์: HikariCP, DBCP, C3PO ๋ฑ)์ ์์ ๋กญ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์ปค์คํ Spanner API์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ง๋ ํ๋ ์์ํฌ/๋ฐ์ธ๋ฉ ํ/์ธ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ํค(PC) ์ค์ฌ ์ค๊ณ๋ฅผ ํตํด Cloud Spanner๋ PC๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ก์ธ์คํ ๋ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด์ง๋ง ๋ช ๊ฐ์ง ์ฟผ๋ฆฌ ๋ฌธ์ ๋ ๋ฐ์ํฉ๋๋ค.
- ๊ธฐ๋ณธ ํค ๊ฐ์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ๋จผ์ ์๋ PC์์ ํญ๋ชฉ์ ์ญ์ ํ๊ณ ์ ๊ฐ์ผ๋ก ๋ค์ ์ฝ์ ํด์ผ ํฉ๋๋ค. (์ด๋ ๋ค๋ฅธ PC ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค/์คํ ๋ฆฌ์ง ์์ง๊ณผ ์ ์ฌํฉ๋๋ค.)
- ๋ชจ๋ UPDATE ๋ฐ DELETE ๋ฌธ์ WHERE์ PC๋ฅผ ์ง์ ํด์ผ ํ๋ฏ๋ก DELETE ๋ชจ๋ ๋ฌธ์ด ๋น์ด ์์ ์ ์์ต๋๋ค. ํญ์ ํ์ ์ฟผ๋ฆฌ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์: UPDATE xxx WHERE id IN (SELECT id FROM table1)
- ์๋ ์ฆ๊ฐ ์ต์ ์ด๋ PC ํ๋์ ์์๋ฅผ ์ค์ ํ๋ ์ ์ฌํ ์ต์ ์ด ๋ถ์กฑํฉ๋๋ค. ์ด๊ฒ์ด ์๋ํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ธก์์ ํด๋น ๊ฐ์ ์์ฑํด์ผ ํฉ๋๋ค.
๋ณด์กฐ ์ธ๋ฑ์ค?
Google Cloud Spanner์๋ ๋ณด์กฐ ์์ธ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์๋ฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ๊ธฐ์ ์๋ ํญ์ ์กด์ฌํ์ง ์๋ ์์ฃผ ์ข์ ๊ธฐ๋ฅ์ ๋๋ค. Apache Kudu๋ ํ์ฌ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์ ํ ์ง์ํ์ง ์์ผ๋ฉฐ Apache HBase๋ ์ธ๋ฑ์ค๋ฅผ ์ง์ ์ง์ํ์ง ์์ง๋ง Apache Phoenix๋ฅผ ํตํด ์ถ๊ฐํ ์ ์์ต๋๋ค.
Kudu ๋ฐ HBase์ ์ธ๋ฑ์ค๋ ๊ธฐ๋ณธ ํค์ ๊ตฌ์ฑ์ด ๋ค๋ฅธ ๋ณ๋์ ํ ์ด๋ธ๋ก ๋ชจ๋ธ๋งํ ์ ์์ง๋ง ์์ ํ ์ด๋ธ ๋ฐ ๊ด๋ จ ์ธ๋ฑ์ค ํ ์ด๋ธ์์ ์ํ๋๋ ์์ ์ ์์์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์์ ์ํ๋์ด์ผ ํ๋ฉฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๋ ๊ฒ์ด ์ฝ์ง ์์ต๋๋ค.
Cloud Spanner ๊ฒํ ์์ ์ธ๊ธํ๋ฏ์ด ํด๋น ์์ธ์ MySQL ์์ธ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ํ๋กํ์ผ๋งํ ๋ ํ์ํ ๊ณณ์ ์ ์ ํ ์ธ๋ฑ์ค๊ฐ ์ฌ์ฉ๋๋๋ก ํน๋ณํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค.
๋ํ?
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋งค์ฐ ์ธ๊ธฐ ์๊ณ ์ ์ฉํ ๊ฐ์ฒด๋ ๋ทฐ์ ๋๋ค. ์ด๋ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ๋ ๊ฐ์ง๋ ๋ ผ๋ฆฌ์ ์ถ์ํ ๊ณ์ธต๊ณผ ๋ณด์ ๊ณ์ธต์ ๋๋ค. ์ํ๊น๊ฒ๋ Cloud Spanner๋ ๋ทฐ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ทฐ๊ฐ ์คํ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด ๋ ์ ์๋ ์ด ์์ค์ ์ก์ธ์ค ๊ถํ์ ๋ํ ์ธ๋ถ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๋ถ๋ถ์ ์ผ๋ก๋ง ์ ํ๋ฉ๋๋ค.
ํ ๋น๋ ๋ฐ ์ ํ์ฌํญ์ ์์ธํ ์ค๋ช
ํ๋ ์น์
์ Cloud Spanner ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์(
๊ฐ๋ฐ ์ง์?
Cloud Spanner๋ API ์์ ์ ์ํ ๊ฝค ๊ด์ฐฎ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ง์์ ์ ๊ณตํฉ๋๋ค. ๊ณต์์ ์ผ๋ก ์ง์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ C#, Go, Java, node.js, PHP, Python ๋ฐ Ruby ์์ญ์ ์์ต๋๋ค. ๋ฌธ์๋ ๋งค์ฐ ์์ธํ์ง๋ง ๋ค๋ฅธ ๊ณ ๊ธ ๊ธฐ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ ์ ๋นํด ์ปค๋ฎค๋ํฐ๊ฐ ๋งค์ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋ ๋ง์ ์๊ฐ์ ์๋นํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ง์ญ ๋ฐ์ ์ ์ง์ํ๋ ๊ฒ์ ์ด๋จ๊น์?
์จํ๋ ๋ฏธ์ค์์ Cloud Spanner ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ป์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ์ Docker ์ด๋ฏธ์ง์์ต๋๋ค.
ํ์ ์ง์?
Cloud Spanner ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ค์ค ์ง์ญ ๋๋ ๋จ์ผ ์ง์ญ ์ธ์คํด์ค ์์ฑ ์ค์์ ์ ํํ๊ณ ์ง์ญ๊ณผ ๋ ธ๋ ์๋ฅผ ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. XNUMX๋ถ ์ด๋ด์ ์ธ์คํด์ค๊ฐ ์์๋์ด ์คํ๋ฉ๋๋ค.
Google Console์ Spanner ํ์ด์ง์์ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ์ธก์ ํญ๋ชฉ์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ธก์ ํญ๋ชฉ ๊ธฐ์ค์ ๊ณผ ์๋ฆผ ์ ์ฑ ์ ์ค์ ํ ์๋ ์๋ Stackdriver๋ฅผ ํตํด ๋ ์์ธํ ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์์ ๋ํ ์ ๊ทผ?
MySQL์ ์ฌ์ฉ์ ๊ถํ/์ญํ ์ ๋ํด ๊ด๋ฒ์ํ๊ณ ๋งค์ฐ ์ธ๋ถ์ ์ธ ์ค์ ์ ์ ๊ณตํฉ๋๋ค. ํน์ ํ ์ด๋ธ ๋๋ ํด๋น ์ด์ ํ์ ์งํฉ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Cloud Spanner๋ ๋งค์ฐ ๋์ ์์ค์ ์ ์ฑ ๊ณผ ๊ถํ๋ง ์ค์ ํ ์ ์๋ Google์ ID ๋ฐ ์ก์ธ์ค ๊ด๋ฆฌ(IAM) ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ฅ ์ธ๋ถ์ ์ธ ์ต์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค ํด๊ฒฐ๋ก, ์ด๋ ๋๋ถ๋ถ์ ํ๋ก๋์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ์ง ์์ต๋๋ค. ์ด๋ฌํ ์ ํ์ผ๋ก ์ธํด Spanner ๋ฆฌ์์ค์ ๋ฌด๋จ ์ฌ์ฉ์ ๋ฐฉ์งํ๋ ค๋ฉด ์ฝ๋, ์ธํ๋ผ ๋๋ ๋ ๋ค์ ์ถ๊ฐ ๋ณด์ ์กฐ์น๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๋ฐฑ์ ?
๊ฐ๋จํ ๋งํด์ Cloud Spanner์๋ ๋ฐฑ์ ์ด ์์ต๋๋ค. Google์ ๋์ SLA ์๊ตฌ ์ฌํญ์ ํ๋์จ์ด ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ, ์ฌ๋์ ์ค์, ์ ํ๋ฆฌ์ผ์ด์ ๊ฒฐํจ ๋ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๊ฐ ์์ค๋์ง ์๋๋ก ๋ณด์ฅํ ์ ์์ง๋ง, ์ฐ๋ฆฌ ๋ชจ๋๋ ๊ท์น์ ์๊ณ ์์ต๋๋ค. ๊ณ ๊ฐ์ฉ์ฑ์ ๊ฑด์ ํ ๋ฐฑ์ ์ ๋ต์ ๋์ฒดํ ์ ์์ต๋๋ค. ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณ๋์ ์คํ ๋ฆฌ์ง ํ๊ฒฝ์ผ๋ก ์คํธ๋ฆฌ๋ฐํ๋ ๊ฒ์ ๋๋ค.
์ฟผ๋ฆฌ ์ฑ๋ฅ?
์ฐ๋ฆฌ๋ Yahoo!๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ํ ์คํธํ์ต๋๋ค. ํด๋ผ์ฐ๋ ์๋น์ค ๋ฒค์น๋งํฌ. ์๋ ํ๋ ์ฝ๊ธฐ 95% ๋ ์ฐ๊ธฐ ๋น์จ 5%์ YCSB ์ํฌ๋ก๋ B๋ฅผ ๋ณด์ฌ์ค๋๋ค.
* ๋ถํ ํ
์คํธ๋ n1-standard-32 Compute Engine(CE)(32 vCPU, 120GB ๋ฉ๋ชจ๋ฆฌ)์์ ์คํ๋์์ผ๋ฉฐ, ํ
์คํธ ์ธ์คํด์ค์์๋ ํ
์คํธ์์ ๋ณ๋ชฉ ํ์์ด ํ ๋ฒ๋ ๋ฐ์ํ์ง ์์์ต๋๋ค.
** ๋จ์ผ YCSB ์ธ์คํด์ค์ ์ต๋ ์ค๋ ๋ ์๋ 400๊ฐ์
๋๋ค. ์ด 2400๊ฐ์ ์ค๋ ๋๋ฅผ ์ป์ผ๋ ค๋ฉด ์ด XNUMX๊ฐ์ YCSB ํ
์คํธ ๋ณ๋ ฌ ์ธ์คํด์ค๋ฅผ ์คํํด์ผ ํ์ต๋๋ค.
๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ, ํนํ CPU ๋ก๋์ TPS์ ์กฐํฉ์ ์ดํด๋ณด๋ฉด Cloud Spanner์ ํ์ฅ์ฑ์ด ๋งค์ฐ ์ฐ์ํ๋ค๋ ๊ฒ์ ๋ถ๋ช ํ ์ ์ ์์ต๋๋ค. ๋ง์ ์์ ์ค๋ ๋๋ก ์ธํด ๋ฐ์ํ๋ ๊ณผ๋ํ ๋ก๋๋ Cloud Spanner ํด๋ฌ์คํฐ์ ๋ง์ ์์ ๋ ธ๋๋ก ์์๋ฉ๋๋ค. ํนํ 2400๊ฐ์ ์ค๋ ๋๋ก ์คํํ๋ ๊ฒฝ์ฐ ๋๊ธฐ ์๊ฐ์ด ์๋นํ ๊ธธ์ด ๋ณด์ด์ง๋ง ๋ ์ ํํ ์์น๋ฅผ ์ป์ผ๋ ค๋ฉด 6๊ฐ์ ๋ ์์ ์ปดํจํ ์์ง ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ํ ์คํธํด์ผ ํ ์๋ ์์ต๋๋ค. ๊ฐ ์ธ์คํด์ค๋ 6๊ฐ์ ๋ณ๋ ฌ ํ ์คํธ๊ฐ ํฌํจ๋ ํ๋์ ๋ํ CE ์ธ์คํด์ค ๋์ ํ๋์ YCSB ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Cloud Spanner ์์ฒญ ์ง์ฐ ์๊ฐ๊ณผ Cloud Spanner์ ํ ์คํธ๋ฅผ ์คํํ๋ CE ์ธ์คํด์ค ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ๋ก ์ธํด ์ถ๊ฐ๋๋ ์ง์ฐ ์๊ฐ์ ๋ ์ฝ๊ฒ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
Cloud Spanner๋ OLAP์ผ๋ก์ ์ด๋ป๊ฒ ์๋ํ๋์?
ํํฐ์ ๋?
๋ฐ์ดํฐ๋ฅผ ํํฐ์ ์ด๋ผ๊ณ ํ๋ ๋ฌผ๋ฆฌ์ ๋ฐ/๋๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ ๋ฆฝ๋ ์ธ๊ทธ๋จผํธ๋ก ๋๋๋ ๊ฒ์ ๋๋ถ๋ถ์ OLAP ์์ง์์ ํํ ๋ณผ ์ ์๋ ๊ฐ๋ ์ ๋๋ค. ํํฐ์ ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ํํฐ์ ๋์ ๋ํ ๋ ์์ธํ ๋ด์ฉ์ ๋ณ๋์ ๊ธฐ์ฌ์ด๋ฏ๋ก ํํฐ์ ๋ ๋ฐ ํ์ ํํฐ์ ๋ ์ฒด๊ณ์ ์ค์์ฑ์ ๋ํด ์ธ๊ธํ๊ฒ ์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ํํฐ์ ์ผ๋ก ๋๋๊ณ ๋ ๋์๊ฐ ํ์ ํํฐ์ ์ผ๋ก ๋๋๋ ๊ธฐ๋ฅ์ ๋ถ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ํต์ฌ์ ๋๋ค.
Cloud Spanner๋ ํํฐ์ ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ ๋งํ๋ ๊ฒ์ผ๋ก ๋๋๋๋ค. ๋ถ์ด- ๊ธฐ๋ณธ ํค ๋ฒ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. Cloud Spanner ํด๋ฌ์คํฐ์ ๋ถํ ๋ถ์ฐ์ ์ํด ํํฐ์ ๋๋๊ธฐ๊ฐ ์๋์ผ๋ก ์ํ๋ฉ๋๋ค. Cloud Spanner์ ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ ์์ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ๋ก๋(๋ค๋ฅธ ํ ์ด๋ธ๊ณผ ์ธํฐ๋ฆฌ๋ธ๋์ง ์์ ํ ์ด๋ธ)๋ฅผ ๋ถํ ํ๋ ๊ฒ์ ๋๋ค. Spanner๋ ๋ค์ ํญ๋ชฉ์ด ํฌํจ๋์ด ์๋์ง ์๋์ผ๋ก ๊ฐ์งํฉ๋๋ค. ๋ถ์ด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ณด๋ค ๋ ์์ฃผ ์ฝํ๋ ๋ฐ์ดํฐ ๋ถ์ด-์, ๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ ๋ณ๊ฑฐ๋ฅผ ๊ฒฐ์ ํ ์๋ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ ๋ง์ ๋ ธ๋๊ฐ ์์ฒญ์ ํฌํจ๋ ์ ์์ผ๋ฉฐ, ์ด๋ ์ฒ๋ฆฌ๋๋ ํจ๊ณผ์ ์ผ๋ก ์ฆ๊ฐ์ํต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ก๋ ์ค์ด์ ๊ฐ์?
๋๋ ๋ฐ์ดํฐ์ Cloud Spanner ๋ฐฉ๋ฒ์ ์ผ๋ฐ ๋ก๋์ ๋์ผํฉ๋๋ค. ์ต๋ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ค๋ฉด ๋ค์์ ํฌํจํ ๋ช ๊ฐ์ง ์ง์นจ์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
- ๊ธฐ๋ณธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํฉ๋๋ค.
- 10*์ผ๋ก ๋๋์ธ์๋ ธ๋ ์ ๋ณ๋์ ์น์ .
- ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ๋ก๋ํ๋ ์์ ์ธํธ๋ฅผ ๋ง๋ญ๋๋ค.
์ด ๋ฐ์ดํฐ ๋ก๋์๋ ๋ชจ๋ Cloud Spanner ๋ ธ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ YCSB ์ํฌ๋ก๋ A๋ฅผ ์ฌ์ฉํ์ฌ 10์ฒ๋ง ํ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์์ฑํ์ต๋๋ค.
* ๋ถํ ํ
์คํธ๋ n1-standard-32 ์ปดํจํ
์์ง(vCPU 32๊ฐ, 120GB ๋ฉ๋ชจ๋ฆฌ)์์ ์คํ๋์์ผ๋ฉฐ, ํ
์คํธ ์ธ์คํด์ค์์๋ ํ
์คํธ์์ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ์ง ์์์ต๋๋ค.
**๋ชจ๋ ํ๋ก๋์
์ํฌ๋ก๋์๋ ๋จ์ผ ๋
ธ๋ ์ค์ ์ด ๊ถ์ฅ๋์ง ์์ต๋๋ค.
์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ Cloud Spanner๋ ๋ก๋์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ถํ ์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฌ๋ฌ ๋ฒ ์ฐ์ ํ ์คํธ๋ฅผ ๋ฐ๋ณตํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ํฅ์๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์ ์๋ ๊ฒฐ๊ณผ๋ ์ฐ๋ฆฌ๊ฐ ์ป์ ์ต์์ ๊ฒฐ๊ณผ์ ๋๋ค. ์์ ์์น๋ฅผ ๋ณด๋ฉด ํด๋ฌ์คํฐ์ ๋ ธ๋ ์๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ Cloud Spanner๊ฐ ์ด๋ป๊ฒ ํ์ฅ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๋์ ๋๋ ์์น๋ ๋งค์ฐ ๋ฎ์ ํ๊ท ์ง์ฐ ์๊ฐ์ผ๋ก, ์ด๋ ์ ์น์ ์ ์ค๋ช ๋ ํผํฉ ์ํฌ๋ก๋(95% ์ฝ๊ธฐ ๋ฐ 5% ์ฐ๊ธฐ)์ ๊ฒฐ๊ณผ์ ๋์กฐ๋ฉ๋๋ค.
์ค์ผ์ผ๋ง?
Cloud Spanner ๋ ธ๋ ์๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๋ ๊ฒ์ ์ํด๋ฆญ ์์ ์ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋ก๋ํ๋ ค๋ฉด ์ธ์คํด์ค๋ฅผ ์ต๋์น(์ด ๊ฒฝ์ฐ ๋ฏธ๊ตญ ๋๋ถ ์ง์ญ์ ๋ ธ๋๋ 25๊ฐ)๊น์ง ๋๋ฆฌ๊ณ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ก๋๋๋ฉด ์ผ๋ฐ ๋ก๋์ ์ ํฉํ ๋ ธ๋ ์๋ฅผ ์ค์ด๋ ๊ฒ์ด ์ข์ต๋๋ค. 2TB/๋ ธ๋ ์ ํ์ ์ฐธ์กฐํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค.
ํจ์ฌ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ด๋ฌํ ์ ํ์ ์๊ธฐํ๊ฒ ๋์์ต๋๋ค. ์ฌ๋ฌ ๋ฒ ๋ก๋ ํ ์คํธ๋ฅผ ์คํํ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๊ธฐ๋ ์ฝ 155GB์์ผ๋ฉฐ 1๋ ธ๋ ์ธ์คํด์ค๋ก ์ถ์ํ์ ๋ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ธ์คํด์ค๋ฅผ 25๊ฐ์์ 2๊ฐ๋ก ์ถ์ํ์ง๋ง ๋
ธ๋ XNUMX๊ฐ์ ๊ฐํ ์์์ต๋๋ค.
Cloud Spanner ํด๋ฌ์คํฐ์ ๋ ธ๋ ์๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ด๋ ์์ ์ REST API๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ ์ ๋ฌด ์๊ฐ ๋์ ์ฆ๊ฐ๋ ์์คํ ๋ถํ๋ฅผ ์ค์ด๋ ๋ฐ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค.
OLAP ์ฟผ๋ฆฌ์ ์ฑ๋ฅ?
์๋ ์ฐ๋ฆฌ๋ ์ด ๋ถ๋ถ์ ๋ํด Spanner๋ฅผ ํ๊ฐํ๋ ๋ฐ ์๋นํ ์๊ฐ์ ํ ์ ํ ๊ณํ์ด์์ต๋๋ค. ์ฌ๋ฌ ๋ฒ์ SELECT COUNT ํ์ ์ฐ๋ฆฌ๋ ํ ์คํธ ์๊ฐ์ด ์งง๊ณ Spanner๊ฐ OLAP์ ์ ํฉํ ์์ง์ด ์๋๋ผ๋ ๊ฒ์ ์ฆ์ ๊นจ๋ฌ์์ต๋๋ค. ํด๋ฌ์คํฐ์ ๋ ธ๋ ์์ ๊ด๊ณ์์ด 10์ฒ๋ง ํ ํ ์ด๋ธ์์ ํ ์๋ฅผ ์ ํํ๋ ๋ฐ๋ง 55~60์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค. ๋ํ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ์ฟผ๋ฆฌ๋ OOM ์ค๋ฅ๋ก ์ธํด ์คํจํ์ต๋๋ค.
SELECT COUNT(DISTINCT(field0)) FROM usertable; โ (10M distinct values)-> SpoolingHashAggregateIterator ran out of memory during new row.
TPC-H ์ฟผ๋ฆฌ์ ๋ํ ์ผ๋ถ ์ซ์๋ Todd Lipcon์ ๊ธฐ์ฌ์์ ์ฐพ์ ์ ์์ต๋๋ค.
4. ์ฐ๋ฆฌ์ ๊ฒฐ๋ก
Cloud Spanner ๊ธฐ๋ฅ์ ํ์ฌ ์ํ๋ฅผ ๊ณ ๋ คํ ๋, ํนํ ์๊ตฌ ์ฌํญ์ด ๋๋ฌด ๋ง์์ง๋ฉด ๊ธฐ์กด OLTP ์๋ฃจ์ ์ ๊ฐ๋จํ ๋์ฒดํ ์ ์๋ค๊ณ ์์ํ๊ธฐ ์ด๋ ต์ต๋๋ค. Cloud Spanner์ ๋จ์ ์ ํด๊ฒฐํ๋ ์๋ฃจ์ ์ ๊ตฌ์ถํ๋ ค๋ฉด ์๋นํ ์๊ฐ์ด ์์๋ฉ๋๋ค.
Cloud Spanner๋ฅผ ํ๊ฐํ๊ธฐ ์์ํ์ ๋ ์ฐ๋ฆฌ๋ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ๋ค๋ฅธ Google SQL ์๋ฃจ์ ๊ณผ ๋๋ฑํ๊ฑฐ๋ ์ ์ด๋ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ ๊ฒ์ผ๋ก ์์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐฑ์ ์ด ์์ ํ ๋ถ์กฑํ๊ณ ๋ฆฌ์์ค ์ก์ธ์ค์ ๋ํ ์ ์ด๊ฐ ๋งค์ฐ ์ ํ๋์ด ์๋ค๋ ์ ์ ๋๋์ต๋๋ค. ๋ทฐ ์์, ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ ์์, ์ง์๋์ง ์๋ ์ํ์ค, DML ๋ฐ DDL ์ง์์ด ์๋ JDBC ๋ฑ์ ๋งํ ๊ฒ๋ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํธ๋์ญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฅํด์ผ ํ๋ ์ฌ๋์ ์ด๋๋ก ๊ฐ๋์? ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๋ ๋จ์ผ ์๋ฃจ์ ์ ์์ฅ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ํ ๋ฐ ์คํ ์์ค ์๋ฃจ์ ์ด ๋ง์ด ์์ผ๋ฉฐ(์ด ๊ธฐ์ฌ์์ ์ผ๋ถ ์ธ๊ธ๋จ) ๊ฐ๊ฐ ๊ณ ์ ํ ์ฅ๋จ์ ์ด ์์ง๋ง ๊ทธ ์ค ์ด๋ ๊ฒ๋ 99,999% SLA์ ๋์ ์ผ๊ด์ฑ์ ๊ฐ์ถ SaaS๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋์ SLA๊ฐ ์ฃผ์ ๋ชฉํ์ด๊ณ ์ปค์คํ ๋ฉํฐ ํด๋ผ์ฐ๋ ์๋ฃจ์ ์ ๊ตฌ์ถํ ์ํฅ์ด ์๋ค๋ฉด Cloud Spanner๊ฐ ์ฐพ๊ณ ์๋ ์๋ฃจ์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ ๊ทธ๊ฒ์ ๋ชจ๋ ํ๊ณ๋ฅผ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
๊ณตํํ๊ฒ ๋งํ๋ฉด Cloud Spanner๋ 2017๋
๋ด์์ผ ๋์ค์๊ฒ ์ถ์๋์์ผ๋ฏ๋ก ํ์ฌ์ ๋จ์ ์ค ์ผ๋ถ๊ฐ ๊ฒฐ๊ตญ ์ฌ๋ผ์ง ๊ฒ์ด๋ผ๊ณ ์์ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ฉฐ(๋ฐ๋ผ๊ฑด๋), ๊ทธ๋ ๊ฒ ๋๋ฉด ๊ฒ์ ์ฒด์ธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. ๊ฒฐ๊ตญ Cloud Spanner๋ Google์ ๋จ์ํ ์ฌ์ด๋ ํ๋ก์ ํธ๊ฐ ์๋๋๋ค. Google์ ์ด๋ฅผ ๋ค๋ฅธ Google ์ ํ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Google์ด ์ต๊ทผ Google Cloud Storage์ Megastore๋ฅผ Cloud Spanner๋ก ๊ต์ฒดํ๋ฉด์ Google Cloud Storage๊ฐ ๊ธ๋ก๋ฒ ๊ท๋ชจ์ ๊ฐ์ฒด ๋ชฉ๋ก์ ๋ํด ๊ณ ๋์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๊ฒ ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์ง ํฌ๋ง์ ์์ต๋๋ค... ์ฐ๋ฆฌ๋ ํฌ๋งํฉ๋๋ค.
๊ทธ๊ฒ ๋ค์ผ. ๊ธฐ์ฌ ์์ฑ์์ฒ๋ผ ์ฐ๋ฆฌ๋ ๊ณ์ ํฌ๋งํ๊ณ ์์ง๋ง ์ด์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ๋๊ธ์ ์ ์ด์ฃผ์ธ์
์ฐ๋ฆฌ๋ ๋ชจ๋ ์ฌ๋์ ์ฐ๋ฆฌ๋ฅผ ๋ฐฉ๋ฌธํ๋๋ก ์ด๋ํฉ๋๋ค
์ถ์ฒ : habr.com