Tsuru (https://github.com/globocom/tsuru)๋ ์ด๋ ์ค์ ๊ตฌํ ๋ ๋ ๋ค๋ฅธ ์คํ ์์ค ํ๋ก๊ทธ๋จ์ด๋ฉฐ flynn-spec์ ์ ์ ๋ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ๊ณต์ ํฉ๋๋ค.
์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ์ฌ ๋์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ด๋ป์ต๋๊น?
์ด๊ฒ์ golang-nuts์์ ๋ ผ์๋์์ต๋๋ค . ๋ด ์ธ์์ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋น์ทํ์ง๋ง ํต์ฌ ๋ชฉํ๋ ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋๋ค.
/ cc @fsouza
@titanous ๋๋์ด ์ค๋ ๋๋ฅผ ๋ณด์๋ค. tsuru์ flynn ์ฌ์ด์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๊ฐ tsuru ์ธ ๊ฒฝ์ฐ ์น์ ๊ตญํ๋ ๊ฒฝ์ฐ ์ฝ๊ฐ์ ๋ ธ๋ ฅ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค.
๋ ํ๋ก์ ํธ๊ฐ ํฉ์ณ์ง๋ฉด์ด ํ๋ก์ ํธ์ ๋ ์ข์ ๊ฒ์ด๋ฉฐ rails + merb์์ ์ผ์ด๋ ๊ฒ์ฒ๋ผ์ด ์๋ก์ด ํ๋ก์ ํธ (tsuru + flynn)๋ฅผ ๋ง๋ค๊ณ ์ ์งํ๊ธฐ ์ํด ๋ ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ๋ ์ฌ์ ์ง ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
ํ์ฌ ๊ณํ์ค์ธ ๊ตฌ์ฑ ์์์ ๋ชฉํ๋ฅผ ์์ธํ ์ค๋ช ํ๋๋ณด๋ค ์์ ํ ์ฌ์์ ์์ ์ค์ ๋๋ค. ๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ ๋ฌธ์๋ฅผ ํธ์ ํ ๋๊น์ง์ด ํ ๋ก ์ ๊ฑด์ค์ ์ผ๋ก ์ฐ๊ธฐ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ด์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ๋ ๋ถ๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น? ๋ช ํํ์ง ์์ต๋๋ค. ์ํ์ค์ธ ๋ชจ๋ PaaS ์์ ์ ์ดํดํ ์์๋ ์ถ์ฒ ํ ์์๋ ์์ค๊ฐ ์์ต๋๊น?
์กฐ์ฌ๋ฅผ ํตํด ์์ ๋ด๋ ค๊ณ ๋ ธ๋ ฅํ์ง๋ง Docker๋ก ์ ์ ๋ ๋ง์ PaaS ์์คํ ์ด ๋ง๋ค์ด์ง๋ ๊ฒ์ ๋ํด ๊ณ์ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ ์ก๊ธฐ๊ฐ ์ ๋ง ์ด๋ ต์ต๋๋ค ...์ด ์์คํ ๋ค ๊ฐ๊ฐ์ ์ค์ ํ๊ณ ์๋ํ๋ ๋ฐ ์๊ฐ๊ณผ ํ์ ์ด ํ์ํฉ๋๋ค. ์ค์ ๋ก ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ์๊ธฐ ์ ์ ์๋ํด๋ณด์ธ์.์ด ๊ณผ์ ์์ ์ผ์ด๋๋ ๋ชจ๋ ํ๋ก์ ํธ์ ๋ํด ๋ ์ฝ๊ฒ ์ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ์ง ์๊ณ ๋์๋ ํ ๋ผ ๊ตด์ด ์๋ ๊ณต๊ฐ?
์ง๊ธ๊น์ง ๋ณธ ๊ฒ์์ Flynn์ ๊ฝค ๋ฌ์ฝค ํด ๋ณด์ ๋๋ค. ๊ณง ์ฌ์ฉํด ๋ณผ ์์์ด ๊ธฐ์ฉ๋๋ค.
PS I got here by Googling "tsuru flynn"
@keyvanfatehi ๊ด์ฌ์
ํนํ ๋ง์ ์ฌ๋๋ค์ด ๋น๊ณต๊ฐ ๋๋ ์ผ๊ด์ฑ์๋ ๋ก๋๋งต์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ PaaS ํ๋ก์ ํธ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก Flynn๊ณผ ๋๋ถ๋ถ์ ๋ค๋ฅธ PaaS ํ๋ก์ ํธ ๊ฐ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค (tsuru์์ ์ง์ ์ ์ธ ๋น๊ต๊ฐ ์๋๋ผ ์ผ๋ฐ์ ์ธ ๊ณต๊ฐ).
ํ๋ฆฐ ์ ๋ ์ผ์ฌ์ ์ ๋๋ค. Flynn์ ์ํ ์ ์ฅ ์๋น์ค๋ฅผ ํฌํจํ์ฌ Linux์์ ์คํ๋๋ ๋ชจ๋ ๊ฒ์ ์คํํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋์ด ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ Flynn๊ณผ ํจ๊ป ๊ณตํต ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํจํค์งํ๋ฏ๋ก โโ๋๋ถ๋ถ์ ์ฌ์ฉ์์ ํ๋ก์ ํธ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค์ ์๋์ผ๋ก ๊ด๋ฆฌํ์ง ์์ต๋๋ค. Flynn์ ๊ตฌ์ฑ ์์๋ ๋ชจ๋ ์์ด๋ฏ๋ก ์ฝ๊ฒ ์ฌ์ฌ์ฉ, ์์ ๋ฐ ๊ต์ฒดํ์ฌ ์๊ตฌ ์ฌํญ์ ์ ํฉํ ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ Flynn์ด ๋ชจ๋ ํ๋ก์ ํธ์ ์กฐ์ง์ ์์ ์ "ํด๊ฒฐ"ํ๋ ๋จ์ผ ํดํท์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋คํธ์ํน ๋ฐ ๊ฐ๋ฐ ์ํฌ ํ๋ก๋ฅผ์ํ ์ฐจ์ธ๋ ์๋ฃจ์ ๊ณผ ํจ๊ป ๋ก๊ทธ ์ง๊ณ, ๋ฉํธ๋ฆญ, ์ง์์ ์ธ ํตํฉ์ ๋น๋กฏํ ํจ์ฌ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค.
๋๋ถ๋ถ์ ๋ค๋ฅธ PaaS ํ๋ก์ ํธ ๋ ์ค์ ๋ฐ ๋ฐฐํฌ๊ฐ ์ด๋ ต๊ฑฐ๋ ๋๋ฆฌ๋ฉฐ ํน์ ์ข ๋ฅ์ ์ฑ์๋ง ์ ์ฉํ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์ค๊ณํด์ผํ๋ฉฐ ๋ชจ ๋๋ฆฌ ์์ ๋๋ค. ์์ปจ๋, Flynn์ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ๋ ธ๋ ฅํ์ง๋ง ๋๋ถ๋ถ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ์ฐ๋ น, ๊ธฐ์กด ์ฌ์ฉ์ ๊ธฐ๋ฐ ๋ฐ ๋์์ธ ๋๊ธฐ๋ก ์ธํด ํด๊ฒฐํ์ง ์์ต๋๋ค.
Flynn์ด ์์ฐ ์์ ์ฑ๊ณผ ๊ธฐ๋ฅ ์์ฑ์ ๋๋ฌํ๋ฉด ํ๋ก์ ํธ๋ณ๋ก ์ฐจ์ด์ ์ ๋ฌธ์ํํ๋ ค๊ณ ํฉ๋๋ค.
@danielsiders ๊ฐ์ฌํฉ๋๋ค! ์ฌ๋ฌ๋ถ์ด์ด ๊ณต๊ฐ์์ ํ์ ํ๋ ๋ชจ์ต์๋ณด๊ณ ์ถ์ต๋๋ค. ๋๋ ๋ด ์ด๊นจ์ ๋๋ฌด ๋ง์ ์์ ์ ์ํํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ต๋๋ค (Docker์ ๊ทธ ์ฃผ๋ณ์ ๋๊ตฌ๋ฅผ ๋ณด๋ ์ด์ ). ๋๋ ์์ ์ ํด๊ฒฐํ ์ ์๋ค๊ณ ๋ฏฟ๊ณ ์ถ์ต๋๋ค.
์ง๊ธ๊น์ง ๋ด ๊ฒฝํ์ deis์ฒ๋ผ ๋ณด์ด๋ flynn-demo (์ฑ๊ณต์ ์ผ๋ก)๋ฅผ ์ฌ์ฉํ์ต๋๋ค (์ง์ ์๋ํ์ง๋ ์์์ง๋ง heroku์ ๊ฐ์ ๋์์ ๋ณด์ฌ์ฃผ๋ ๋ฉ์ง ๋ฃจํ ๋น๋์ค๊ฐ ์์ต๋๋ค). ๋ฐ๋ผ์์ด ์์ ์์ค์์ deis, flynn ๋ฐ heroku๋ ๋์ผํ๊ฒ ๋ณด์ ๋๋ค.
๊ทธ๊ฒ์ ๊ฐ์ธ ๋ก๋๋งต์ ๋ํ ์ข์ ์ ์ ๋๋ค. ๋ชจ๋ ๊ฒ์ ๋๋ฌ์ผ ๋ด ๋จธ๋ฆฌ๋ฅผ ๊ฐ์ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ ๊ฒ์ ์กฐ๊ธ ์ด๋ฅด๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ถ์ ํ๊ณ , ์ฐจ์ด์ ์ ๋ถ๋ณํ๊ณ , ๊ฐ ๋ ธ๋ ฅ์ ํ๋จํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ๊ฒ๋ณด๋ค ํ ๊ฐ์ง ๋ ธ๋ ฅ์๋ง ์ ๋ ํ๋ ๊ฒ์ด ํจ์ฌ ์ฌ์ ๋ณด์ ๋๋ค. ๊ฐ ๋ ธ๋ ฅ์ ํ์ ์ ์ด๊ณ ํฅ๋ฏธ ๋กญ์ต๋๋ค!
์ด์จ๋ , ํฅ๋ฏธ ์ง์งํ ์๊ฐ๋ค-์์ง ์์ ํ ์ดํดํ์ง ๋ชปํ๋๋ผ๋์ด ๋ชจ๋ ์ผ์ด ์ผ์ด๋๊ฒ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :)
@keyvanfatehi ๋๋ถ๋ถ์ PaaS๋ ์ ํ๋ฆฌ์ผ์ด์ ์ Heroku ์คํ์ผ (git push) ๋ฐฐํฌ๋ฅผ ์ง์ํฉ๋๋ค. ์ ๋ง ๋ค๋ฅธ ์ ์ ๋ฐฐํฌ ํ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ณผ ์ฑ ๋ฐฐํฌ ํ ๋ฐ์ํ๋ ์ผ์ ๋๋ค.
(nb : Flynn์ ๋ํ docker pull ๋ฐ git pull ๋ฐ ๋น๋ํ๋ ค๋ ๋ค๋ฅธ ๋ชจ๋ ๋ฐฐํฌ ํจ๋ฌ๋ค์์ ์ง์ํฉ๋๋ค. FTP๋ ์ด๋ ต์ง ์์ต๋๋ค.)
@keyvanfatehi , Tsuru์์๋ ํ๊ฒฝ ๋ณ ๊ตฌ์ฑ ๋ฐ ์ ์ ํ์ผ์ ๋ํ ๊ฐ์ฒด ์ ์ฅ์ ์ฌ์ฉ๊ณผ ๊ฐ์ ์์ ์์ฉ ํ๋ก๊ทธ๋จ ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ : ๋ฌธ์ ์์ด ์ํ์ผ๋ก ํ์ฅํด์ผํฉ๋๋ค.) ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๋ค์ด ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๊ทธ๊ฒ์ ์ป์ ์์์ ์ ๋๋ก ์ ํด๋๊ณ , ์ด๋ฏธ ์ฌ๊ธฐ (Globo.com์์) ์์ฐ์ค์ธ ์ ํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์๋น์ค์ ๊ดํด์๋ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ ์ฒ๋ฆฌํ๊ธฐ์๋ ๋๋ฌด ๊ตฌ์ฒด์ ์
๋๋ค (๋ฐ์ดํฐ๋ฒ ์ด์ค, nosql, redis, memcached, elasticsearch, ๊ฐ์ฒด ์คํ ๋ฆฌ์ง ๋ฑ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ธ ์ง ์์ํด๋ณด์ญ์์ค). ์ฐ๋ฆฌ๋ ์๋น์ค api (์๋น์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ฐฐ์น ๋ ์์น)๋ฅผ ์ง์ ํ๋ ๊ฒ์ ์ ํธํ์ผ๋ฉฐ tsuru๋ ์ด๋ค ์๋น์ค ๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฌด๋ฆฌ ๋ค๋ฅด๋๋ผ๋ ์๊ด ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋งค์ฐ ์น์ ํ๋ฉฐ ๊ธฐ์ฌ์ ์๋ก์ด ์์ด๋์ด์ ์ ์ ์ผ๋ก ์ด๋ ค ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๋จ์ผ ์๋ฃจ์ ์ผ๋ก flynn๊ณผ ํจ๊ป ์์ ํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง (๋ฏธ๋์ flynn ์ด์์ ์ถฉ์กฑ์ํค๊ธฐ ์ํด tsuru๋ฅผ ํ์ฅ ํ ์ ์์), ์ฐ๋ฆฌ์ ๊ฐ์ ์ผ๋ง์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ค์ ์๊ฒฌ๊ณผ ๋น์ ์ ์ ์ ์ผ๋ก ์กด์คํฉ๋๋ค :-)
TL; DR
์ฐ๋ฆฌ๋ ์๋น์ค๊ฐ ์ผ๋ง๋ ์ค์ํ์ง ์๊ณ ์์ผ๋ฏ๋ก ์ด๋ฌํ ์๊ตฌ ์ฌํญ์ ์ฒ๋ฆฌํ๋ ์ฐ์ํ ๋ฐฉ๋ฒ์ ๊ฐ๋ฐํฉ๋๋ค. Tsuru๋ ์ ์ ์ ๋ ์๋น์ค API (์์ฑ, ์ ๊ฑฐ, ๋ฐ์ธ๋ฉ, ๊ณํ๊ณผ ๊ฐ์ ๊ฐ๋จํ ์ง์
์ ํฌํจ)๋ก ๋ชจ๋ ์๋น์ค๋ฅผ ์ฒ๋ฆฌ ํ ์ โโ์์ต๋๋ค. ๋ฐ๋ผ์ ํน์ ์๋น์ค์ ๋ชจ๋ ๋ณต์ก์ฑ์ ์์ฒด ์๋น์ค API์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค. Redis API์ ๋ํ ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. # tsuru service-add redis (servicename) redis_blognews (serviceinstancename) plus (plan)์ ์คํํ๋ฉด redis_blognews๋ผ๋ ์ด๋ฆ์ผ๋ก redis ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ plan plus (2 ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ ๊ณตํ๋)๊ฐ ์์ฑ๋ฉ๋๋ค. ๊ณ ๊ฐ์ฉ์ฑ์ ๊ฐ์ง redis์). Tsuru๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋ง๋ค์ด ์ง์ง ๋ชจ๋ฅด์ง๋ง (๊ณ ๊ฐ์ฉ์ฑ์ ๊ฐ์ง์ง๋ผ๋), ๊ทธ๊ฒ์ ์ ์ ์ผ๋ก service-api์ ์ํด ์ฒ๋ฆฌ ๋ ๊ฒ์
๋๋ค. ๋ํ tsuru ์ฝ๋๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์๋น์ค API๋ฅผ ์์ฑํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ธ๋ถ (๋
์ ์ ์ธ) ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋น์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ ์ฐํ๊ณ Tsuru์ ๋ณต์ก์ฑ ์ฆ๊ฐ๋ฅผ ํผํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ # tsuru bind redis_blognews --app yourblognewsapp๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ tsuru๋ ์๋น์ค ์๊ฒฉ ์ฆ๋ช
์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ์
ํฉ๋๋ค.
์ ๋ PaaSes๋ฅผ ์ฒ์ ์ฌ์ฉํ๋ฉฐ ํผ๋ ์ค๋ฝ์ต๋๋ค. ๋๋ ์ธ ๋ฃจ๋ฅผ ๊ณจ ๋๊ณ ๋๋ ๊ทธ๊ฒ์ ์กฐ๊ธ ์๋ง์ผ๋ก ๋ง๋ค์๋ค. ํ๋ฆฐ์ ๋ชฉํ์ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๋น์ค API๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ์ ์ฅ์ ์คํํ ์ ์์ผ๋ฉฐ tsuru-api, docker-cluster, gandalf ๋ฑ์ด์๋ ๋งค์ฐ ๋ชจ๋ ์์ ๋๋ค.
๋ ธ๋ ฅ์ ํฉ์น๋ฉด ๋ ์ข์ ์ ํ์ด ๋์ฌ์ง ๊ถ๊ธํฉ๋๋ค.
์ฌ๊ธฐ์ @msabramo์ ๋์ํด์ผํฉ๋๋ค. Tsuru์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ ์๋ก์ด PaaS๋ฅผ ๊ตฌ์ถํ๋ ์ด์ ์ ๋ํด์๋ ์ฌ์ ํ ์ข์ ์ ์ด ์์ต๋๋ค. ๋๋ ๋ํ ๋ ธ๋ ฅ์ ๊ฒฐํฉํ๋ฉด ๋ฉ์ง ์ ํ์ด ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ์ @msabramo์ ๋์ํด์ผํฉ๋๋ค. Tsuru์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ ์๋ก์ด PaaS๋ฅผ ๊ตฌ์ถํ๋ ์ด์ ์ ๋ํด์๋ ์ฌ์ ํ ์ข์ ์ ์ด ์์ต๋๋ค. ๋๋ ๋ํ ๋ ธ๋ ฅ์ ๊ฒฐํฉํ๋ฉด ๋ฉ์ง ์ ํ์ด ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค.